-
Notifications
You must be signed in to change notification settings - Fork 0
/
functions.py
51 lines (41 loc) · 1.88 KB
/
functions.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
import sfml as sf
from gi.repository import Gtk
def rectCollision(rect1,rect2):
return not (rect1.left + rect1.width < rect2.left or \
rect1.left > rect2.left + rect2.width or \
rect1.top + rect1.height < rect2.top or \
rect1.top > rect2.top+rect2.height)
def circle(x, centerx, centery, size):
y1 = (2*centery + sqrt(4*(-(x-centerx)*(x-centerx)+size*size)))/2
y2 = (2*centery - sqrt(4*(-(x-centerx)*(x-centerx)+size*size)))/2
return sf.Vector2f(y1, y2)
def isInEllipse(pos, center, radius):
return (pos.x - center.x)**2 / radius.x**2 + \
(pos.y - center.y)**2 / radius.y**2 <= 1
def isMouseInRect(mousePos, rect):
if mousePos.x > rect.left and\
mousePos.y > rect.top and\
mousePos.x < rect.left + rect.width and\
mousePos.y < rect.top + rect.height :
return True
return False
def copyTreeStore(tree):
newTree = Gtk.TreeStore()
newTree.set_column_types([tree.get_column_type(t) for t in range(tree.get_n_columns())])
if not len(tree):
return newTree
for i in range(len(tree)):
parent=newTree.append(None)
for j in range(tree.get_n_columns()):
newTree.set_value(parent, j, tree.get_value(tree.get_iter(i), j))
copyChildrenOfTreeStore(newTree, tree, getTreeStoreChild(tree, tree.get_iter(i)), parent)
return newTree
def copyChildrenOfTreeStore(newTree, tree, child, parent):
for i in range(len(child)):
numberColumn = tree.get_n_columns()
newParent = newTree.insert_with_values(parent, -1, range(numberColumn), \
[tree.get_value(child[i], val) for val in range(numberColumn)])
copyChildrenOfTreeStore(newTree, tree, getTreeStoreChild(tree, child[i]), child[i])
def getTreeStoreChild(tree, parent):
return [tree.iter_nth_child(parent, i)\
for i in range(tree.iter_n_children(parent))]