~ubuntu-branches/ubuntu/maverick/pygoocanvas/maverick

« back to all changes in this revision

Viewing changes to demo/simple_demo/clipping_demo.py

  • Committer: Bazaar Package Importer
  • Author(s): Jose Carlos Garcia Sogo
  • Date: 2008-05-25 14:24:41 UTC
  • mfrom: (1.2.1 upstream) (5 gutsy)
  • mto: This revision was merged to the branch mainline in revision 9.
  • Revision ID: james.westby@ubuntu.com-20080525142441-i0tdyd3794w0s2zf
Tags: 0.10.0-1
* New upstream version.
* Build-depend on goocanvas 0.10
* Change VCS info to point to git.debian.org
* Bump Standards-Version to 3.7.3
* Change python to Pyhton in short description field
* Update debian/copyright

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
import goocanvas
 
2
import gtk
 
3
import cairo
 
4
 
 
5
def on_button_press (item, target, event, id):
 
6
    print "%s received 'button-press' signal at %f, %f (root: %f, %f)" % \
 
7
           (id, event.x, event.y, event.x_root, event.y_root)
 
8
    return True
 
9
 
 
10
def setup_canvas (canvas):
 
11
    root = canvas.get_root_item ()
 
12
 
 
13
    #Plain items without clip path.
 
14
    item = goocanvas.Ellipse (parent = root,
 
15
                              center_x = 0,
 
16
                              center_y = 0,
 
17
                              radius_x = 50,
 
18
                              radius_y = 30,
 
19
                              fill_color = "blue")
 
20
    item.translate (100, 100)
 
21
    item.rotate (30, 0, 0)
 
22
    item.connect ("button_press_event",
 
23
                  on_button_press, "Blue ellipse (unclipped)")
 
24
 
 
25
    item = goocanvas.Rect (parent = root,
 
26
                           x = 200,
 
27
                           y = 50,
 
28
                           width = 100,
 
29
                           height = 100,
 
30
                           fill_color = "red",
 
31
                           clip_fill_rule = cairo.FILL_RULE_EVEN_ODD)
 
32
    item.connect ("button_press_event",
 
33
                  on_button_press, "Red rectangle (unclipped)")
 
34
 
 
35
    item = goocanvas.Rect (parent = root,
 
36
                           x = 380,
 
37
                           y = 50,
 
38
                           width = 100,
 
39
                           height = 100,
 
40
                           fill_color = "yellow")
 
41
    item.connect ("button_press_event",
 
42
                  on_button_press, "Yellow rectangle (unclipped)")
 
43
 
 
44
    # Clipped items.
 
45
    item = goocanvas.Ellipse (parent = root,
 
46
                              center_x = 0,
 
47
                              center_y = 0,
 
48
                              radius_x = 50,
 
49
                              radius_y = 30,
 
50
                              fill_color = "blue",
 
51
                              clip_path = "M 0 0 h 100 v 100 h -100 Z")
 
52
    item.translate (100, 300)
 
53
    item.rotate (30, 0, 0)
 
54
    item.connect ("button_press_event", on_button_press, "Blue ellipse")
 
55
 
 
56
    item = goocanvas.Rect (parent = root,
 
57
                           x = 200,
 
58
                           y = 250,
 
59
                           width = 100,
 
60
                           height = 100,
 
61
                           fill_color = "red",
 
62
                           clip_path = "M 250 300 h 100 v 100 h -100 Z",
 
63
                           clip_fill_rule = cairo.FILL_RULE_EVEN_ODD)
 
64
    item.connect ("button_press_event", on_button_press, "Red rectangle")
 
65
 
 
66
    item = goocanvas.Rect (parent = root,
 
67
                           x = 380,
 
68
                           y = 250,
 
69
                           width = 100,
 
70
                           height = 100,
 
71
                           fill_color = "yellow",
 
72
                           clip_path = "M480,230 l40,100 l-80 0 z")
 
73
    item.connect ("button_press_event", on_button_press, "Yellow rectangle")
 
74
 
 
75
    # Table with clipped items.
 
76
    table = goocanvas.Table (parent = root)
 
77
    table.translate (200, 400)
 
78
    table.rotate (30, 0, 0)
 
79
 
 
80
    item = goocanvas.Ellipse (parent = table,
 
81
                              center_x = 0,
 
82
                              center_y = 0,
 
83
                              radius_x = 50,
 
84
                              radius_y = 30,
 
85
                              fill_color = "blue",
 
86
                              clip_path = "M 0 0 h 100 v 100 h -100 Z")
 
87
    item.translate (100, 300)
 
88
    item.rotate (30, 0, 0)
 
89
    item.connect ("button_press_event", on_button_press, "Blue ellipse")
 
90
 
 
91
    item = goocanvas.Rect (parent = table,
 
92
                           x = 200,
 
93
                           y = 250,
 
94
                           width = 100,
 
95
                           height = 100,
 
96
                           fill_color = "red",
 
97
                           clip_path = "M 250 300 h 100 v 100 h -100 Z",
 
98
                           clip_fill_rule = cairo.FILL_RULE_EVEN_ODD)
 
99
    item.connect ("button_press_event", on_button_press, "Red rectangle")
 
100
    table.set_child_properties (item, column = 1)
 
101
 
 
102
    item = goocanvas.Rect (parent = table,
 
103
                           x = 380,
 
104
                           y = 250,
 
105
                           width = 100,
 
106
                           height = 100,
 
107
                           fill_color = "yellow",
 
108
                           clip_path = "M480,230 l40,100 l-80 0 z")
 
109
    item.connect ("button_press_event", on_button_press, "Yellow rectangle")
 
110
    table.set_child_properties (item, column = 2)
 
111
 
 
112
def create_clipping_page ():
 
113
    vbox = gtk.VBox (False, 4)
 
114
    vbox.set_border_width (4)
 
115
 
 
116
    scrolled_win = gtk.ScrolledWindow ()
 
117
    scrolled_win.set_shadow_type (gtk.SHADOW_IN)
 
118
 
 
119
    vbox.add (scrolled_win)
 
120
 
 
121
    canvas = goocanvas.Canvas ()
 
122
    canvas.set_size_request (600, 450)
 
123
    canvas.set_bounds (0, 0, 1000, 1000)
 
124
 
 
125
    scrolled_win.add (canvas)
 
126
    setup_canvas (canvas)
 
127
 
 
128
    return vbox
 
129
 
 
130
def main ():
 
131
    vb = create_clipping_page ()
 
132
 
 
133
    win = gtk.Window()
 
134
    win.connect("destroy", gtk.main_quit)
 
135
    win.add(vb)
 
136
    win.show_all()
 
137
 
 
138
    gtk.main()
 
139
 
 
140
if __name__ == "__main__":
 
141
    main ()