goocanvas 0.90.6-x86-mingw32
Sign up to get free protection for your applications and to get access to all the features.
- data/ChangeLog +87 -0
- data/README +37 -0
- data/Rakefile +14 -0
- data/ext/goocanvas/depend +5 -0
- data/ext/goocanvas/extconf.rb +66 -0
- data/ext/goocanvas/goocanvas.def +2 -0
- data/ext/goocanvas/rbgoocairo.c +74 -0
- data/ext/goocanvas/rbgoocanvas.c +236 -0
- data/ext/goocanvas/rbgoocanvas.h +66 -0
- data/ext/goocanvas/rbgoocanvasellipse.c +50 -0
- data/ext/goocanvas/rbgoocanvasgroup.c +41 -0
- data/ext/goocanvas/rbgoocanvasimage.c +45 -0
- data/ext/goocanvas/rbgoocanvasitem.c +358 -0
- data/ext/goocanvas/rbgoocanvaspolyline.c +102 -0
- data/ext/goocanvas/rbgoocanvasrect.c +47 -0
- data/ext/goocanvas/rbgoocanvasstyle.c +61 -0
- data/ext/goocanvas/rbgoocanvastable.c +41 -0
- data/ext/goocanvas/rbgoocanvastext.c +58 -0
- data/ext/goocanvas/rbgoocanvaswidget.c +48 -0
- data/ext/goocanvas/rbgooutils.c +44 -0
- data/extconf.rb +49 -0
- data/lib/1.8/goocanvas.so +0 -0
- data/lib/1.9/goocanvas.so +0 -0
- data/lib/goocanvas.rb +145 -0
- data/sample/demo-arrowhead.rb +315 -0
- data/sample/demo-fifteen.rb +218 -0
- data/sample/demo-primitives.rb +720 -0
- data/sample/demo.rb +84 -0
- data/sample/flower.png +0 -0
- data/sample/scalability-demo.rb +130 -0
- data/sample/simple-demo.rb +35 -0
- data/sample/table-demo.rb +137 -0
- data/sample/toroid.png +0 -0
- data/sample/units-demo.rb +80 -0
- data/sample/widgets-demo.rb +197 -0
- data/vendor/local/bin/libgoocanvas-3.dll +0 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvas.h +334 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasatk.h +22 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasellipse.h +120 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasenumtypes.h +33 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasgrid.h +153 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasgroup.h +109 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasimage.h +121 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasitem.h +479 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasitemmodel.h +275 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasitemsimple.h +247 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasmarshal.h +61 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvaspath.h +116 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvaspolyline.h +176 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasprivate.h +59 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasrect.h +121 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasstyle.h +110 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvastable.h +139 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvastext.h +133 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvasutils.h +333 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/goocanvaswidget.h +66 -0
- data/vendor/local/include/goocanvas-1.0.0/goocanvas/stamp-goocanvasmarshal.h +1 -0
- data/vendor/local/lib/libgoocanvas.a +0 -0
- data/vendor/local/lib/libgoocanvas.dll.a +0 -0
- data/vendor/local/lib/pkgconfig/goocanvas.pc +13 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvas.html +1982 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasEllipse.html +269 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasEllipseModel.html +274 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasGrid.html +469 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasGridModel.html +476 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasGroup.html +183 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasGroupModel.html +184 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasImage.html +247 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasImageModel.html +252 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasItem.html +3014 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasItemModel.html +1764 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasItemModelSimple.html +298 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasItemSimple.html +809 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasPath.html +279 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasPathModel.html +280 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasPolyline.html +369 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasPolylineModel.html +375 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasRect.html +247 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasRectModel.html +252 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasStyle.html +489 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasTable.html +452 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasTableModel.html +452 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasText.html +324 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasTextModel.html +287 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/GooCanvasWidget.html +266 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/ch01.html +53 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/ch02.html +50 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/ch03.html +62 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/ch04.html +60 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/ch05.html +33 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-GooCanvas-Types.html +815 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-architecture.html +157 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-coordinates.html +106 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-creating-items.html +420 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-model-view-canvas.html +246 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-overview.html +106 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-simple-canvas.html +238 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas-wysiwyg.html +84 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas.devhelp +608 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/goocanvas.devhelp2 +639 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/home.png +0 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/index.html +138 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/index.sgml +814 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/left.png +0 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/right.png +0 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/style.css +257 -0
- data/vendor/local/share/gtk-doc/html/goocanvas/up.png +0 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/dummy.sgml +0 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvas-unused.sgml +0 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvas.sgml +536 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasellipse.sgml +82 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasellipsemodel.sgml +82 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasgrid.sgml +176 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasgridmodel.sgml +176 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasgroup.sgml +58 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasgroupmodel.sgml +58 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasimage.sgml +81 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasimagemodel.sgml +81 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasitem.sgml +773 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasitemmodel.sgml +490 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasitemmodelsimple.sgml +135 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasitemsimple.sgml +254 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvaspath.sgml +64 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvaspathmodel.sgml +64 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvaspolyline.sgml +109 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvaspolylinemodel.sgml +109 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasrect.sgml +72 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasrectmodel.sgml +72 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasstyle.sgml +186 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvastable.sgml +158 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvastablemodel.sgml +158 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvastext.sgml +103 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvastextmodel.sgml +93 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvasutils.sgml +241 -0
- data/vendor/local/share/gtk-doc/tmpl/goocanvas/goocanvaswidget.sgml +73 -0
- metadata +218 -0
@@ -0,0 +1,157 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
+
<title>Underlying Architecture</title>
|
6
|
+
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
7
|
+
<link rel="home" href="index.html" title="GooCanvas Reference Manual">
|
8
|
+
<link rel="up" href="ch01.html" title="Introduction">
|
9
|
+
<link rel="prev" href="goocanvas-model-view-canvas.html" title="Model/View Canvas Example">
|
10
|
+
<link rel="next" href="goocanvas-coordinates.html" title="Coordinate Spaces and Limits">
|
11
|
+
<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
|
12
|
+
<link rel="stylesheet" href="style.css" type="text/css">
|
13
|
+
</head>
|
14
|
+
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
15
|
+
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
|
16
|
+
<td><a accesskey="p" href="goocanvas-model-view-canvas.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
|
17
|
+
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
|
18
|
+
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
|
19
|
+
<th width="100%" align="center">GooCanvas Reference Manual</th>
|
20
|
+
<td><a accesskey="n" href="goocanvas-coordinates.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
|
21
|
+
</tr></table>
|
22
|
+
<div class="refentry" title="Underlying Architecture">
|
23
|
+
<a name="goocanvas-architecture"></a><div class="titlepage"></div>
|
24
|
+
<div class="refnamediv"><table width="100%"><tr>
|
25
|
+
<td valign="top">
|
26
|
+
<h2><span class="refentrytitle">Underlying Architecture</span></h2>
|
27
|
+
<p>Underlying Architecture — how the canvas fits together.</p>
|
28
|
+
</td>
|
29
|
+
<td valign="top" align="right"></td>
|
30
|
+
</tr></table></div>
|
31
|
+
<div class="refsect1" title="Underlying Architecture">
|
32
|
+
<a name="architecture"></a><h2>Underlying Architecture</h2>
|
33
|
+
<div class="refsect2" title="The GooCanvas Widget">
|
34
|
+
<a name="widget"></a><h3>The GooCanvas Widget</h3>
|
35
|
+
<p>
|
36
|
+
<a class="link" href="GooCanvas.html" title="GooCanvas"><span class="type">GooCanvas</span></a> is a <span class="type">GtkWidget</span> (it is actually a subclass of
|
37
|
+
<span class="type">GtkContainer</span>), and so can be placed in an interface just like
|
38
|
+
any normal widget. Usually a <a class="link" href="GooCanvas.html" title="GooCanvas"><span class="type">GooCanvas</span></a> widget would be placed inside
|
39
|
+
a <span class="type">GtkScrolledWindow</span> in order to enable scrolling of the canvas.
|
40
|
+
</p>
|
41
|
+
<p>
|
42
|
+
The size of the canvas can be set explicitly using
|
43
|
+
<a class="link" href="GooCanvas.html#goo-canvas-set-bounds" title="goo_canvas_set_bounds ()"><code class="function">goo_canvas_set_bounds()</code></a>, or if the <a class="link" href="GooCanvas.html#GooCanvas--automatic-bounds" title='The "automatic-bounds" property'><span class="type">"automatic-bounds"</span></a>
|
44
|
+
property is set to <code class="literal">TRUE</code> the bounds will be automatically calculated
|
45
|
+
to include all of the canvas items. The units used in the canvas can
|
46
|
+
be set with the <a class="link" href="GooCanvas.html#GooCanvas--units" title='The "units" property'><span class="type">"units"</span></a> property. The canvas units can be
|
47
|
+
pixels, points, inches or millimeters and apply to the canvas and
|
48
|
+
all items.
|
49
|
+
</p>
|
50
|
+
</div>
|
51
|
+
<hr>
|
52
|
+
<div class="refsect2" title="The Structure of the Simple Canvas">
|
53
|
+
<a name="simple-structure"></a><h3>The Structure of the Simple Canvas</h3>
|
54
|
+
<p>
|
55
|
+
The simple canvas consists of a hierarchy of canvas items.
|
56
|
+
The root item is automatically created by the canvas and can be
|
57
|
+
accessed using <a class="link" href="GooCanvas.html#goo-canvas-get-root-item" title="goo_canvas_get_root_item ()"><code class="function">goo_canvas_get_root_item()</code></a>. New items and groups can
|
58
|
+
then be created and added to the root item.
|
59
|
+
</p>
|
60
|
+
<p>
|
61
|
+
Each item in the canvas keeps a <a class="link" href="goocanvas-GooCanvas-Types.html#GooCanvasBounds" title="GooCanvasBounds"><span class="type">GooCanvasBounds</span></a> structure which
|
62
|
+
stores the bounding rectangle of the item and all of its descendants.
|
63
|
+
This makes it easy to find out which items in the canvas need repainting
|
64
|
+
or which item the mouse is over. (The bounds are stored in the canvas
|
65
|
+
coordinate space, which is the coordinate space of the entire canvas,
|
66
|
+
after any item transformation matrices have been applied.)
|
67
|
+
</p>
|
68
|
+
</div>
|
69
|
+
<hr>
|
70
|
+
<div class="refsect2" title="The Structure of the Model/View Canvas">
|
71
|
+
<a name="model-view-structure"></a><h3>The Structure of the Model/View Canvas</h3>
|
72
|
+
<p>
|
73
|
+
The model/view canvas consists of a hierarchy of item models, and an
|
74
|
+
identical hierarchy of canvas items, with each canvas item
|
75
|
+
corresponding to one item model.
|
76
|
+
</p>
|
77
|
+
<p>
|
78
|
+
The hierarchy of item models can be used in several <a class="link" href="GooCanvas.html" title="GooCanvas"><span class="type">GooCanvas</span></a>
|
79
|
+
widgets, to allow multiple views of the same model.
|
80
|
+
Though different canvas items will be used in each <a class="link" href="GooCanvas.html" title="GooCanvas"><span class="type">GooCanvas</span></a>.
|
81
|
+
</p>
|
82
|
+
<p>
|
83
|
+
The root item model is set with <a class="link" href="GooCanvas.html#goo-canvas-set-root-item-model" title="goo_canvas_set_root_item_model ()"><code class="function">goo_canvas_set_root_item_model()</code></a>.
|
84
|
+
The canvas will automatically create canvas items to display
|
85
|
+
the hierarchy of item models, and will automatically add and
|
86
|
+
remove canvas items as the item model hierarchy is changed.
|
87
|
+
</p>
|
88
|
+
</div>
|
89
|
+
<hr>
|
90
|
+
<div class="refsect2" title="The Update Procedure">
|
91
|
+
<a name="updates"></a><h3>The Update Procedure</h3>
|
92
|
+
<p>
|
93
|
+
When items are added to the canvas or their properties are changed
|
94
|
+
they may need to recalculate their bounds. To do this they set an
|
95
|
+
internal flag such as <em class="parameter"><code>need_update</code></em>, and make a call to
|
96
|
+
<a class="link" href="GooCanvasItem.html#goo-canvas-item-request-update" title="goo_canvas_item_request_update ()"><code class="function">goo_canvas_item_request_update()</code></a>.
|
97
|
+
</p>
|
98
|
+
<p>
|
99
|
+
<a class="link" href="GooCanvas.html" title="GooCanvas"><span class="type">GooCanvas</span></a> handles all the update requests at once, to avoid multiple
|
100
|
+
redraws of the same parts of the canvas. To do this it installs
|
101
|
+
an idle handler, <code class="function">goo_canvas_idle_handler()</code>, which is called as soon
|
102
|
+
as the application is idle (and before any part of the canvas is
|
103
|
+
redrawn).
|
104
|
+
</p>
|
105
|
+
<p>
|
106
|
+
The idle handler calls <a class="link" href="GooCanvasItem.html#goo-canvas-item-update" title="goo_canvas_item_update ()"><code class="function">goo_canvas_item_update()</code></a> on the root item,
|
107
|
+
which recursively calls <a class="link" href="GooCanvasItem.html#goo-canvas-item-update" title="goo_canvas_item_update ()"><code class="function">goo_canvas_item_update()</code></a> on any items as
|
108
|
+
necessary, recalculating their bounds and requesting redraws as
|
109
|
+
appropriate.
|
110
|
+
</p>
|
111
|
+
<p>
|
112
|
+
If a container item (e.g. <a class="link" href="GooCanvasGroup.html" title="GooCanvasGroup"><span class="type">GooCanvasGroup</span></a>) is changed it needs to
|
113
|
+
ensure that all descendants recalculate their bounds so it
|
114
|
+
calls <a class="link" href="GooCanvasItem.html#goo-canvas-item-update" title="goo_canvas_item_update ()"><code class="function">goo_canvas_item_update()</code></a> for all of its children with the
|
115
|
+
<em class="parameter"><code>entire_tree</code></em> argument set to <code class="literal">TRUE</code>.
|
116
|
+
</p>
|
117
|
+
</div>
|
118
|
+
<hr>
|
119
|
+
<div class="refsect2" title="How Changes to Items are Handled">
|
120
|
+
<a name="simple-updates"></a><h3>How Changes to Items are Handled</h3>
|
121
|
+
<p>
|
122
|
+
When an item is changed (e.g. if the <a class="link" href="GooCanvasRect.html#GooCanvasRect--x" title='The "x" property'><span class="type">"x"</span></a> property of
|
123
|
+
a <a class="link" href="GooCanvasRect.html" title="GooCanvasRect"><span class="type">GooCanvasRect</span></a> is changed), the item calls
|
124
|
+
<a class="link" href="GooCanvasItemSimple.html#goo-canvas-item-simple-changed" title="goo_canvas_item_simple_changed ()"><code class="function">goo_canvas_item_simple_changed()</code></a> with a flag indicating if the
|
125
|
+
bounds of the item need to be recalculated.
|
126
|
+
</p>
|
127
|
+
<p>
|
128
|
+
If the bounds don't need to be recalculated, then
|
129
|
+
<a class="link" href="GooCanvas.html#goo-canvas-request-redraw" title="goo_canvas_request_redraw ()"><code class="function">goo_canvas_request_redraw()</code></a> is called to simply request that the
|
130
|
+
item is redrawn. This results in a call to <code class="function">gdk_window_invalidate_rect()</code>
|
131
|
+
and the redraw proceeds just like a normal <span class="type">GtkWidget</span>.
|
132
|
+
</p>
|
133
|
+
<p>
|
134
|
+
However, if the bounds do need to be recalculated then
|
135
|
+
<a class="link" href="GooCanvasItem.html#goo-canvas-item-request-update" title="goo_canvas_item_request_update ()"><code class="function">goo_canvas_item_request_update()</code></a> is called to request that the item
|
136
|
+
be updated the next time the canvas performs an update.
|
137
|
+
</p>
|
138
|
+
</div>
|
139
|
+
<hr>
|
140
|
+
<div class="refsect2" title="How Changes are Handled in the Model/View Canvas">
|
141
|
+
<a name="model-view-updates"></a><h3>How Changes are Handled in the Model/View Canvas</h3>
|
142
|
+
<p>
|
143
|
+
In the Model/View canvas it is the underlying item models which are
|
144
|
+
initially changed. The item models emit "changed" signals which the
|
145
|
+
items respond to. For the standard canvas items the
|
146
|
+
<code class="function">goo_canvas_item_model_simple_changed()</code> signal handler is called,
|
147
|
+
which calls <a class="link" href="GooCanvasItemSimple.html#goo-canvas-item-simple-changed" title="goo_canvas_item_simple_changed ()"><code class="function">goo_canvas_item_simple_changed()</code></a> and the
|
148
|
+
procedure continues as in the simple canvas case above.
|
149
|
+
</p>
|
150
|
+
</div>
|
151
|
+
</div>
|
152
|
+
</div>
|
153
|
+
<div class="footer">
|
154
|
+
<hr>
|
155
|
+
Generated by GTK-Doc V1.14</div>
|
156
|
+
</body>
|
157
|
+
</html>
|
@@ -0,0 +1,106 @@
|
|
1
|
+
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
|
2
|
+
<html>
|
3
|
+
<head>
|
4
|
+
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
|
5
|
+
<title>Coordinate Spaces and Limits</title>
|
6
|
+
<meta name="generator" content="DocBook XSL Stylesheets V1.75.2">
|
7
|
+
<link rel="home" href="index.html" title="GooCanvas Reference Manual">
|
8
|
+
<link rel="up" href="ch01.html" title="Introduction">
|
9
|
+
<link rel="prev" href="goocanvas-architecture.html" title="Underlying Architecture">
|
10
|
+
<link rel="next" href="goocanvas-creating-items.html" title="Creating New Items">
|
11
|
+
<meta name="generator" content="GTK-Doc V1.14 (XML mode)">
|
12
|
+
<link rel="stylesheet" href="style.css" type="text/css">
|
13
|
+
</head>
|
14
|
+
<body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF">
|
15
|
+
<table class="navigation" id="top" width="100%" summary="Navigation header" cellpadding="2" cellspacing="2"><tr valign="middle">
|
16
|
+
<td><a accesskey="p" href="goocanvas-architecture.html"><img src="left.png" width="24" height="24" border="0" alt="Prev"></a></td>
|
17
|
+
<td><a accesskey="u" href="ch01.html"><img src="up.png" width="24" height="24" border="0" alt="Up"></a></td>
|
18
|
+
<td><a accesskey="h" href="index.html"><img src="home.png" width="24" height="24" border="0" alt="Home"></a></td>
|
19
|
+
<th width="100%" align="center">GooCanvas Reference Manual</th>
|
20
|
+
<td><a accesskey="n" href="goocanvas-creating-items.html"><img src="right.png" width="24" height="24" border="0" alt="Next"></a></td>
|
21
|
+
</tr></table>
|
22
|
+
<div class="refentry" title="Coordinate Spaces and Limits">
|
23
|
+
<a name="goocanvas-coordinates"></a><div class="titlepage"></div>
|
24
|
+
<div class="refnamediv"><table width="100%"><tr>
|
25
|
+
<td valign="top">
|
26
|
+
<h2><span class="refentrytitle">Coordinate Spaces and Limits</span></h2>
|
27
|
+
<p>Coordinate Spaces and Limits — how coordinates are used.</p>
|
28
|
+
</td>
|
29
|
+
<td valign="top" align="right"></td>
|
30
|
+
</tr></table></div>
|
31
|
+
<div class="refsect1" title="Coordinate Spaces">
|
32
|
+
<a name="coordinates"></a><h2>Coordinate Spaces</h2>
|
33
|
+
<p>
|
34
|
+
Items in the canvas typically have a number of properties specifying
|
35
|
+
their location and size. For example the <a class="link" href="GooCanvasRect.html" title="GooCanvasRect"><span class="type">GooCanvasRect</span></a> item has
|
36
|
+
<a class="link" href="GooCanvasRect.html#GooCanvasRect--x" title='The "x" property'><span class="type">"x"</span></a>, <a class="link" href="GooCanvasRect.html#GooCanvasRect--y" title='The "y" property'><span class="type">"y"</span></a>, <a class="link" href="GooCanvasRect.html#GooCanvasRect--width" title='The "width" property'><span class="type">"width"</span></a> and
|
37
|
+
<a class="link" href="GooCanvasRect.html#GooCanvasRect--height" title='The "height" property'><span class="type">"height"</span></a> properties.
|
38
|
+
</p>
|
39
|
+
<p>
|
40
|
+
However, items can also have a transformation matrix (e.g. the
|
41
|
+
<a class="link" href="GooCanvasItem.html#GooCanvasItem--transform" title='The "transform" property'><span class="type">"transform"</span></a> property).
|
42
|
+
Transformation matrices modify the item's coordinate space in some
|
43
|
+
way. Modifications include translation (moving the origin), rotation,
|
44
|
+
scaling, and skewing, or combinations of these. Thus the final
|
45
|
+
position of the item on the canvas can be altered dramatically.
|
46
|
+
</p>
|
47
|
+
<p>
|
48
|
+
The simple animation features in <a class="link" href="GooCanvas.html" title="GooCanvas"><span class="type">GooCanvas</span></a> are accomplished by
|
49
|
+
modifying the item's transformation matrix over time.
|
50
|
+
(See <a class="link" href="GooCanvasItem.html#goo-canvas-item-animate" title="goo_canvas_item_animate ()"><code class="function">goo_canvas_item_animate()</code></a>.)
|
51
|
+
</p>
|
52
|
+
<p>
|
53
|
+
Since items are in a hierarchy it is possible to move or rotate an
|
54
|
+
entire group of items by simply changing the transformation matrix
|
55
|
+
of the group containing them.
|
56
|
+
</p>
|
57
|
+
<p>
|
58
|
+
The coordinate space used within the item itself (e.g. where the
|
59
|
+
<a class="link" href="GooCanvasRect.html#GooCanvasRect--x" title='The "x" property'><span class="type">"x"</span></a> and <a class="link" href="GooCanvasRect.html#GooCanvasRect--y" title='The "y" property'><span class="type">"y"</span></a> properties of a <a class="link" href="GooCanvasRect.html" title="GooCanvasRect"><span class="type">GooCanvasRect</span></a>
|
60
|
+
are specified)
|
61
|
+
is referred to as "Item Space". The coordinate space used by
|
62
|
+
the entire canvas is referred to as "Canvas Space" (or "Device Space").
|
63
|
+
"Item Space" and "Canvas Space" may or may not be the same, depending
|
64
|
+
on whether
|
65
|
+
the item or any of its ancestors have a transformation matrix set.
|
66
|
+
(Note that the entire canvas may also be scrolled and/or zoomed,
|
67
|
+
which means that there may be additional transformations above
|
68
|
+
"Canvas Space".)
|
69
|
+
</p>
|
70
|
+
<p>
|
71
|
+
Functions are provided to convert between coordinate spaces,
|
72
|
+
e.g. <a class="link" href="GooCanvas.html#goo-canvas-convert-to-item-space" title="goo_canvas_convert_to_item_space ()"><code class="function">goo_canvas_convert_to_item_space()</code></a> and
|
73
|
+
<a class="link" href="GooCanvas.html#goo-canvas-convert-from-item-space" title="goo_canvas_convert_from_item_space ()"><code class="function">goo_canvas_convert_from_item_space()</code></a> convert canvas space coordinates
|
74
|
+
to item space and vice versa.
|
75
|
+
</p>
|
76
|
+
<div class="refsect2" title="Coordinate Limits">
|
77
|
+
<a name="coordinate-limits"></a><h3>Coordinate Limits</h3>
|
78
|
+
<p>
|
79
|
+
GooCanvas uses the Cairo graphics library to render canvas items.
|
80
|
+
For performance reasons Cairo uses 32-bit fixed point integers
|
81
|
+
internally when rendering graphics, with 24 bits used for the integer
|
82
|
+
part of values and 8 bits used for the fractional part.
|
83
|
+
This means that values are limited to roughly +/- 8,388,608.
|
84
|
+
(Prior to Cairo 1.6 16 bits were used for the integer part and 16 bits
|
85
|
+
for the fractional part, meaning values were limited to +/- 32,768.)
|
86
|
+
</p>
|
87
|
+
<p>
|
88
|
+
GooCanvas includes code to work around the Cairo limits to some extent.
|
89
|
+
Subclasses of GooCanvasItemSimple (including all builtin items) can
|
90
|
+
use any desired translation using a transformation matrix.
|
91
|
+
But item space coordinates (modified by any scale, rotation or skew)
|
92
|
+
must be within the Cairo limits.
|
93
|
+
</p>
|
94
|
+
<p>
|
95
|
+
It is possible to create new canvas items that avoid the Cairo
|
96
|
+
limits completely. For an example of this see the "Large Items" page
|
97
|
+
in the GooCanvas demo application, and the corresponding code.
|
98
|
+
</p>
|
99
|
+
</div>
|
100
|
+
</div>
|
101
|
+
</div>
|
102
|
+
<div class="footer">
|
103
|
+
<hr>
|
104
|
+
Generated by GTK-Doc V1.14</div>
|
105
|
+
</body>
|
106
|
+
</html>
|