mirror of https://github.com/kivy/kivy.git
53 lines
1.3 KiB
Python
53 lines
1.3 KiB
Python
|
'''
|
||
|
Mesh test
|
||
|
=========
|
||
|
|
||
|
'''
|
||
|
|
||
|
from kivy.uix.button import Button
|
||
|
from kivy.uix.widget import Widget
|
||
|
from kivy.uix.boxlayout import BoxLayout
|
||
|
from kivy.app import App
|
||
|
from kivy.graphics import Mesh
|
||
|
from functools import partial
|
||
|
from math import cos, sin, pi
|
||
|
|
||
|
|
||
|
class MeshTestApp(App):
|
||
|
|
||
|
def change_mode(self, mode, *largs):
|
||
|
self.mesh.mode = mode
|
||
|
|
||
|
def build_mesh(self):
|
||
|
vertices = []
|
||
|
indices = []
|
||
|
step = 10
|
||
|
istep = (pi * 2) / float(step)
|
||
|
for i in xrange(step):
|
||
|
x = 300 + cos(istep * i) * 100
|
||
|
y = 300 + sin(istep * i) * 100
|
||
|
vertices.extend([x, y, 0, 0])
|
||
|
indices.append(i)
|
||
|
return Mesh(vertices=vertices, indices=indices)
|
||
|
|
||
|
def build(self):
|
||
|
wid = Widget()
|
||
|
with wid.canvas:
|
||
|
self.mesh = self.build_mesh()
|
||
|
|
||
|
layout = BoxLayout(size_hint=(1, None), height=50)
|
||
|
for mode in ('points', 'line_strip', 'line_loop', 'lines',
|
||
|
'triangle_strip', 'triangle_fan'):
|
||
|
button = Button(text=mode)
|
||
|
button.bind(on_release=partial(self.change_mode, mode))
|
||
|
layout.add_widget(button)
|
||
|
|
||
|
root = BoxLayout(orientation='vertical')
|
||
|
root.add_widget(wid)
|
||
|
root.add_widget(layout)
|
||
|
|
||
|
return root
|
||
|
|
||
|
if __name__ == '__main__':
|
||
|
MeshTestApp().run()
|