changeset 117:e4e47d2cdbcd

Tank
author Thinker K.F. Li <thinker@branda.to>
date Sun, 14 Sep 2008 18:51:16 +0800
parents 1d74eb3861b7
children c9c6810a96c1
files Doxyfile dox/first_program.h examples/svg2code_ex/main.c examples/tank/tank_main.c img/core.gaphor img/core.png img/program.png src/Makefile src/animate.c src/animate.h src/rotate.c src/shift.c
diffstat 12 files changed, 199 insertions(+), 27 deletions(-) [+]
line wrap: on
line diff
--- a/Doxyfile	Sun Sep 14 09:42:07 2008 +0800
+++ b/Doxyfile	Sun Sep 14 18:51:16 2008 +0800
@@ -591,7 +591,7 @@
 # directories that contain example code fragments that are included (see 
 # the \include command).
 
-EXAMPLE_PATH           = 
+EXAMPLE_PATH           = examples/
 
 # If the value of the EXAMPLE_PATH tag contains directories, you can use the 
 # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp 
--- a/dox/first_program.h	Sun Sep 14 09:42:07 2008 +0800
+++ b/dox/first_program.h	Sun Sep 14 18:51:16 2008 +0800
@@ -27,5 +27,7 @@
  * and initialize a 'foo' instance.  An instance is released by calling
  * foo_free().
  *
- * - \subpage svg2code_ex
+ * \dontinclude examples/svg2code_ex/main.c
+ * \skip main
+ * \until }
  */
--- a/examples/svg2code_ex/main.c	Sun Sep 14 09:42:07 2008 +0800
+++ b/examples/svg2code_ex/main.c	Sun Sep 14 18:51:16 2008 +0800
@@ -1,4 +1,4 @@
-/*! \page svg2code_ex
+/*! \file
  *
  * svg2code_ex is an example that show programmers how to create a
  * menu with MadButterfly.
--- a/examples/tank/tank_main.c	Sun Sep 14 09:42:07 2008 +0800
+++ b/examples/tank/tank_main.c	Sun Sep 14 18:51:16 2008 +0800
@@ -35,7 +35,8 @@
 struct _tank_rt {
     tank1_t *tank1;
     tank2_t *tank2;
-    tank_en_t *tank_en;
+    int n_enemy;
+    tank_en_t *tank_enemies[10];
     void *map[12][16];
     X_MB_runtime_t *mb_rt;
 };
@@ -88,10 +89,14 @@
     }
 
     tank_rt->tank1 = tank1_new(rdman);
+    CHANGE_POS(tank_rt->tank1, 5 * 50, 11 * 50);
     tank_rt->tank2 = tank2_new(rdman);
-    CHANGE_POS(tank_rt->tank2, 50, 0);
-    tank_rt->tank_en = tank_en_new(rdman);
-    CHANGE_POS(tank_rt->tank_en, 100, 0);
+    CHANGE_POS(tank_rt->tank2, 10 * 50, 11 * 50);
+    for(i = 0; i < 3; i++) {
+	tank_rt->tank_enemies[i] = tank_en_new(rdman);
+	CHANGE_POS(tank_rt->tank_enemies[i], (2 + i * 3) * 50, 0);
+    }
+    tank_rt->n_enemy = i;
 }
 
 int
--- a/img/core.gaphor	Sun Sep 14 09:42:07 2008 +0800
+++ b/img/core.gaphor	Sun Sep 14 18:51:16 2008 +0800
@@ -1,2 +1,3 @@
 <?xml version="1.0" encoding="utf-8"?>
-<gaphor version="3.0" gaphor-version="0.13.0"><Package id="DCE:9C711C86-7F0F-11DD-87F8-"><name><val><![CDATA[New model]]></val></name><ownedClassifier><reflist><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref></reflist></ownedClassifier><ownedDiagram><reflist><ref refid="DCE:9C73163A-7F0F-11DD-87F8-"></ref></reflist></ownedDiagram></Package><Diagram id="DCE:9C73163A-7F0F-11DD-87F8-"><name><val><![CDATA[core]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><canvas><item type="ClassItem" id="DCE:EB8EF5EA-7F0F-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 309.0, 118.0)</val></matrix><width><val>100.0</val></width><height><val>50.0</val></height><subject><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></subject></item><item type="ClassItem" id="DCE:F0D6A19C-7F0F-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 249.0, 237.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></subject></item><item type="ClassItem" id="DCE:F5887742-7F0F-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 420.0, 225.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:033C8536-7F10-11DD-87F8-"><subject><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 344.0, 168.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-57.0, 69.0)]</val></points><head-connection><ref refid="DCE:EB8EF5EA-7F0F-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:F0D6A19C-7F0F-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:0398E356-7F10-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:0399EB2C-7F10-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:05F3DAE0-7F10-11DD-87F8-"><subject><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 374.0, 168.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (110.0, 57.0)]</val></points><head-connection><ref refid="DCE:EB8EF5EA-7F0F-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:F5887742-7F0F-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:0728BDE0-7F10-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:07294116-7F10-11DD-87F8-"></ref></tail-subject></item><item type="ClassItem" id="DCE:DBCD5F62-7F10-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 248.0, 334.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:4A2CCDD6-7F13-11DD-87F8-"><subject><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 297.0, 288.8125)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-1.0, 45.1875)]</val></points><head-connection><ref refid="DCE:F0D6A19C-7F0F-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:4AA87F76-7F13-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:4AA90658-7F13-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:689F96B8-7F13-11DD-87F8-"><subject><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 348.0, 334.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (72.0, -60.0)]</val></points><head-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:F5887742-7F0F-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:69F067D6-7F13-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:69F0E012-7F13-11DD-87F8-"></ref></tail-subject></item><item type="ClassItem" id="DCE:03176E48-7F14-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 427.0, 334.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:1147E3B0-7F14-11DD-87F8-"><subject><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 348.0, 360.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (79.0, 1.0)]</val></points><head-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:12ACC1D0-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:12AD38C2-7F14-11DD-87F8-"></ref></tail-subject></item><item type="ClassItem" id="DCE:1E542FA0-7F14-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 430.0, 423.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:3308A174-7F14-11DD-87F8-"><subject><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 430.0, 449.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-82.0, -63.1875)]</val></points><head-connection><ref refid="DCE:1E542FA0-7F14-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:34147AA2-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:34150922-7F14-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:428B1854-7F14-11DD-87F8-"><subject><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 477.0, 385.8125)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-1.0, 37.1875)]</val></points><head-connection><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:1E542FA0-7F14-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:4340515E-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:4340C8AA-7F14-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:772CEB62-7F14-11DD-87F8-"><subject><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 348.0, 377.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (79.0, 0.0)]</val></points><head-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:78451A2E-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:78460B50-7F14-11DD-87F8-"></ref></tail-subject></item></canvas></Diagram><Class id="DCE:EB8E5F04-7F0F-11DD-87F8-"><name><val><![CDATA[rdman]]></val></name><ownedAttribute><reflist><ref refid="DCE:07294116-7F10-11DD-87F8-"></ref><ref refid="DCE:0399EB2C-7F10-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:EB8EF5EA-7F0F-11DD-87F8-"></ref></reflist></presentation></Class><Class id="DCE:F0D6677C-7F0F-11DD-87F8-"><name><val><![CDATA[goe_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:4AA90658-7F13-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:F0D6A19C-7F0F-11DD-87F8-"></ref></reflist></presentation></Class><Class id="DCE:F58834DA-7F0F-11DD-87F8-"><name><val><![CDATA[coord_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:0728BDE0-7F10-11DD-87F8-"></ref><ref refid="DCE:69F067D6-7F13-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:F5887742-7F0F-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:0398B982-7F10-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:0398E356-7F10-11DD-87F8-"></ref><ref refid="DCE:0399EB2C-7F10-11DD-87F8-"></ref></reflist></memberEnd><name><val><![CDATA[]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:033C8536-7F10-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:0398E356-7F10-11DD-87F8-"><association><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:0399525C-7F10-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[gen_geos]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:81C096D6-7F10-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:0399525C-7F10-11DD-87F8-"></LiteralSpecification><Property id="DCE:0399EB2C-7F10-11DD-87F8-"><association><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref></association><class_><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:039A105C-7F10-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:039A105C-7F10-11DD-87F8-"></LiteralSpecification><Association id="DCE:0728AB5C-7F10-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:0728BDE0-7F10-11DD-87F8-"></ref><ref refid="DCE:07294116-7F10-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:05F3DAE0-7F10-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:0728BDE0-7F10-11DD-87F8-"><association><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref></association><class_><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:0728E4FA-7F10-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:0728E4FA-7F10-11DD-87F8-"></LiteralSpecification><Property id="DCE:07294116-7F10-11DD-87F8-"><association><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref></association><class_><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:07296614-7F10-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:07296614-7F10-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:81C096D6-7F10-11DD-87F8-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><Class id="DCE:DBCD2482-7F10-11DD-87F8-"><name><val><![CDATA[shape_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:4AA87F76-7F13-11DD-87F8-"></ref><ref refid="DCE:69F0E012-7F13-11DD-87F8-"></ref><ref refid="DCE:12AD38C2-7F14-11DD-87F8-"></ref><ref refid="DCE:78460B50-7F14-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:4AA86B8C-7F13-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:4AA87F76-7F13-11DD-87F8-"></ref><ref refid="DCE:4AA90658-7F13-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:4A2CCDD6-7F13-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:4AA87F76-7F13-11DD-87F8-"><association><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:4AA8A744-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[shape]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:53DF705C-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:4AA8A744-7F13-11DD-87F8-"></LiteralSpecification><Property id="DCE:4AA90658-7F13-11DD-87F8-"><association><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:4AA92C14-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[geo]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:564488DE-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:4AA92C14-7F13-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:53DF705C-7F13-11DD-87F8-"><value><val><![CDATA[1]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:564488DE-7F13-11DD-87F8-"><value><val><![CDATA[1]]></val></value></LiteralSpecification><Association id="DCE:69F0555C-7F13-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:69F067D6-7F13-11DD-87F8-"></ref><ref refid="DCE:69F0E012-7F13-11DD-87F8-"></ref></reflist></memberEnd><name><val><![CDATA[]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:689F96B8-7F13-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:69F067D6-7F13-11DD-87F8-"><association><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:69F08E8E-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[coord]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:70B2401C-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:69F08E8E-7F13-11DD-87F8-"></LiteralSpecification><Property id="DCE:69F0E012-7F13-11DD-87F8-"><association><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:69F104FE-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[members]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:8774F73E-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:69F104FE-7F13-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:70B2401C-7F13-11DD-87F8-"><value><val><![CDATA[1]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:8774F73E-7F13-11DD-87F8-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><Class id="DCE:0317364A-7F14-11DD-87F8-"><name><val><![CDATA[paint_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:4340C8AA-7F14-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:12ACAEE8-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:12ACC1D0-7F14-11DD-87F8-"></ref><ref refid="DCE:12AD38C2-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:1147E3B0-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:12ACC1D0-7F14-11DD-87F8-"><association><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:12ACE8B8-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[fill]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:12ACE8B8-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:12AD38C2-7F14-11DD-87F8-"><association><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:12AD5DE8-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:12AD5DE8-7F14-11DD-87F8-"></LiteralSpecification><Class id="DCE:1E53F84E-7F14-11DD-87F8-"><name><val><![CDATA[shnode_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:34150922-7F14-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:1E542FA0-7F14-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:341467E2-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:34147AA2-7F14-11DD-87F8-"></ref><ref refid="DCE:34150922-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:3308A174-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:34147AA2-7F14-11DD-87F8-"><association><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:3414B814-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[shape]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:3C013CB4-7F14-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:3414B814-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:34150922-7F14-11DD-87F8-"><association><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:34152E34-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:34152E34-7F14-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:3C013CB4-7F14-11DD-87F8-"></LiteralSpecification><Association id="DCE:43403E8A-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:4340515E-7F14-11DD-87F8-"></ref><ref refid="DCE:4340C8AA-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:428B1854-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:4340515E-7F14-11DD-87F8-"><association><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:434078B4-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[members]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:49DD0DA4-7F14-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:434078B4-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:4340C8AA-7F14-11DD-87F8-"><association><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:4340EDDC-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:4340EDDC-7F14-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:49DD0DA4-7F14-11DD-87F8-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><Association id="DCE:78450778-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:78451A2E-7F14-11DD-87F8-"></ref><ref refid="DCE:78460B50-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:772CEB62-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:78451A2E-7F14-11DD-87F8-"><association><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:784541F2-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[stroke]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:784541F2-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:78460B50-7F14-11DD-87F8-"><association><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:784630C6-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:784630C6-7F14-11DD-87F8-"></LiteralSpecification></gaphor>
\ No newline at end of file
+<gaphor version="3.0" gaphor-version="0.13.0"><Package id="DCE:9C711C86-7F0F-11DD-87F8-"><name><val><![CDATA[New model]]></val></name><ownedClassifier><reflist><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref><ref refid="DCE:109DAC52-8094-11DD-BE50-"></ref><ref refid="DCE:270D4CC2-8094-11DD-BE50-"></ref><ref refid="DCE:2E04BFF6-8094-11DD-BE50-"></ref><ref refid="DCE:53E8EB66-8094-11DD-BE50-"></ref><ref refid="DCE:558F4D2A-8094-11DD-BE50-"></ref></reflist></ownedClassifier><ownedDiagram><reflist><ref refid="DCE:9C73163A-7F0F-11DD-87F8-"></ref><ref refid="DCE:0801D258-8094-11DD-BE50-"></ref></reflist></ownedDiagram></Package><Diagram id="DCE:9C73163A-7F0F-11DD-87F8-"><name><val><![CDATA[core]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><canvas><item type="ClassItem" id="DCE:EB8EF5EA-7F0F-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 309.0, 118.0)</val></matrix><width><val>100.0</val></width><height><val>50.0</val></height><subject><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></subject></item><item type="ClassItem" id="DCE:F0D6A19C-7F0F-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 249.0, 237.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></subject></item><item type="ClassItem" id="DCE:F5887742-7F0F-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 420.0, 225.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:033C8536-7F10-11DD-87F8-"><subject><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 344.0, 168.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-57.0, 69.0)]</val></points><head-connection><ref refid="DCE:EB8EF5EA-7F0F-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:F0D6A19C-7F0F-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:0398E356-7F10-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:0399EB2C-7F10-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:05F3DAE0-7F10-11DD-87F8-"><subject><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 374.0, 168.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (110.0, 57.0)]</val></points><head-connection><ref refid="DCE:EB8EF5EA-7F0F-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:F5887742-7F0F-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:0728BDE0-7F10-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:07294116-7F10-11DD-87F8-"></ref></tail-subject></item><item type="ClassItem" id="DCE:DBCD5F62-7F10-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 248.0, 334.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:4A2CCDD6-7F13-11DD-87F8-"><subject><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 297.0, 288.8125)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-1.0, 45.1875)]</val></points><head-connection><ref refid="DCE:F0D6A19C-7F0F-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:4AA87F76-7F13-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:4AA90658-7F13-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:689F96B8-7F13-11DD-87F8-"><subject><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 348.0, 334.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (72.0, -60.0)]</val></points><head-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:F5887742-7F0F-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:69F067D6-7F13-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:69F0E012-7F13-11DD-87F8-"></ref></tail-subject></item><item type="ClassItem" id="DCE:03176E48-7F14-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 427.0, 334.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:1147E3B0-7F14-11DD-87F8-"><subject><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 348.0, 360.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (79.0, 1.0)]</val></points><head-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:12ACC1D0-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:12AD38C2-7F14-11DD-87F8-"></ref></tail-subject></item><item type="ClassItem" id="DCE:1E542FA0-7F14-11DD-87F8-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 430.0, 423.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></subject></item><item type="AssociationItem" id="DCE:3308A174-7F14-11DD-87F8-"><subject><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 430.0, 447.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-83.0, -61.1875)]</val></points><head-connection><ref refid="DCE:1E542FA0-7F14-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:34147AA2-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:34150922-7F14-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:428B1854-7F14-11DD-87F8-"><subject><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 477.0, 385.8125)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (-1.0, 37.1875)]</val></points><head-connection><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:1E542FA0-7F14-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:4340515E-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:4340C8AA-7F14-11DD-87F8-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:772CEB62-7F14-11DD-87F8-"><subject><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 348.0, 377.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (79.0, 0.0)]</val></points><head-connection><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></head-connection><tail-connection><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:78451A2E-7F14-11DD-87F8-"></ref></head-subject><tail-subject><ref refid="DCE:78460B50-7F14-11DD-87F8-"></ref></tail-subject></item></canvas></Diagram><Class id="DCE:EB8E5F04-7F0F-11DD-87F8-"><name><val><![CDATA[rdman]]></val></name><ownedAttribute><reflist><ref refid="DCE:07294116-7F10-11DD-87F8-"></ref><ref refid="DCE:0399EB2C-7F10-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:EB8EF5EA-7F0F-11DD-87F8-"></ref></reflist></presentation></Class><Class id="DCE:F0D6677C-7F0F-11DD-87F8-"><name><val><![CDATA[goe_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:4AA90658-7F13-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:F0D6A19C-7F0F-11DD-87F8-"></ref></reflist></presentation></Class><Class id="DCE:F58834DA-7F0F-11DD-87F8-"><name><val><![CDATA[coord_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:0728BDE0-7F10-11DD-87F8-"></ref><ref refid="DCE:69F067D6-7F13-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:F5887742-7F0F-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:0398B982-7F10-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:0398E356-7F10-11DD-87F8-"></ref><ref refid="DCE:0399EB2C-7F10-11DD-87F8-"></ref></reflist></memberEnd><name><val><![CDATA[]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:033C8536-7F10-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:0398E356-7F10-11DD-87F8-"><association><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:0399525C-7F10-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:81C096D6-7F10-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:0399525C-7F10-11DD-87F8-"></LiteralSpecification><Property id="DCE:0399EB2C-7F10-11DD-87F8-"><association><ref refid="DCE:0398B982-7F10-11DD-87F8-"></ref></association><class_><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:039A105C-7F10-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[gen_geos]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:169380E8-8095-11DD-BE50-"></ref></upperValue></Property><LiteralSpecification id="DCE:039A105C-7F10-11DD-87F8-"></LiteralSpecification><Association id="DCE:0728AB5C-7F10-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:0728BDE0-7F10-11DD-87F8-"></ref><ref refid="DCE:07294116-7F10-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:05F3DAE0-7F10-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:0728BDE0-7F10-11DD-87F8-"><association><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref></association><class_><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:0728E4FA-7F10-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:0728E4FA-7F10-11DD-87F8-"></LiteralSpecification><Property id="DCE:07294116-7F10-11DD-87F8-"><association><ref refid="DCE:0728AB5C-7F10-11DD-87F8-"></ref></association><class_><ref refid="DCE:EB8E5F04-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:07296614-7F10-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:07296614-7F10-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:81C096D6-7F10-11DD-87F8-"></LiteralSpecification><Class id="DCE:DBCD2482-7F10-11DD-87F8-"><name><val><![CDATA[shape_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:4AA87F76-7F13-11DD-87F8-"></ref><ref refid="DCE:69F0E012-7F13-11DD-87F8-"></ref><ref refid="DCE:12AD38C2-7F14-11DD-87F8-"></ref><ref refid="DCE:78460B50-7F14-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:DBCD5F62-7F10-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:4AA86B8C-7F13-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:4AA87F76-7F13-11DD-87F8-"></ref><ref refid="DCE:4AA90658-7F13-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:4A2CCDD6-7F13-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:4AA87F76-7F13-11DD-87F8-"><association><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:4AA8A744-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[geo]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:53DF705C-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:4AA8A744-7F13-11DD-87F8-"></LiteralSpecification><Property id="DCE:4AA90658-7F13-11DD-87F8-"><association><ref refid="DCE:4AA86B8C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:F0D6677C-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:4AA92C14-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[shape]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:564488DE-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:4AA92C14-7F13-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:53DF705C-7F13-11DD-87F8-"><value><val><![CDATA[1]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:564488DE-7F13-11DD-87F8-"><value><val><![CDATA[1]]></val></value></LiteralSpecification><Association id="DCE:69F0555C-7F13-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:69F067D6-7F13-11DD-87F8-"></ref><ref refid="DCE:69F0E012-7F13-11DD-87F8-"></ref></reflist></memberEnd><name><val><![CDATA[]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:689F96B8-7F13-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:69F067D6-7F13-11DD-87F8-"><association><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:69F08E8E-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[members]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:70B2401C-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:69F08E8E-7F13-11DD-87F8-"></LiteralSpecification><Property id="DCE:69F0E012-7F13-11DD-87F8-"><association><ref refid="DCE:69F0555C-7F13-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:69F104FE-7F13-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[coord]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:F58834DA-7F0F-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:8774F73E-7F13-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:69F104FE-7F13-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:70B2401C-7F13-11DD-87F8-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:8774F73E-7F13-11DD-87F8-"><value><val><![CDATA[1]]></val></value></LiteralSpecification><Class id="DCE:0317364A-7F14-11DD-87F8-"><name><val><![CDATA[paint_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:4340C8AA-7F14-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:03176E48-7F14-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:12ACAEE8-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:12ACC1D0-7F14-11DD-87F8-"></ref><ref refid="DCE:12AD38C2-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:1147E3B0-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:12ACC1D0-7F14-11DD-87F8-"><association><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:12ACE8B8-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:12ACE8B8-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:12AD38C2-7F14-11DD-87F8-"><association><ref refid="DCE:12ACAEE8-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:12AD5DE8-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[fill]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:12AD5DE8-7F14-11DD-87F8-"></LiteralSpecification><Class id="DCE:1E53F84E-7F14-11DD-87F8-"><name><val><![CDATA[shnode_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:34150922-7F14-11DD-87F8-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:1E542FA0-7F14-11DD-87F8-"></ref></reflist></presentation></Class><Association id="DCE:341467E2-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:34147AA2-7F14-11DD-87F8-"></ref><ref refid="DCE:34150922-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:3308A174-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:34147AA2-7F14-11DD-87F8-"><association><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:3414B814-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:3C013CB4-7F14-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:3414B814-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:34150922-7F14-11DD-87F8-"><association><ref refid="DCE:341467E2-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:34152E34-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[shape]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:34152E34-7F14-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:3C013CB4-7F14-11DD-87F8-"></LiteralSpecification><Association id="DCE:43403E8A-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:4340515E-7F14-11DD-87F8-"></ref><ref refid="DCE:4340C8AA-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:428B1854-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:4340515E-7F14-11DD-87F8-"><association><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:434078B4-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:49DD0DA4-7F14-11DD-87F8-"></ref></upperValue></Property><LiteralSpecification id="DCE:434078B4-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:4340C8AA-7F14-11DD-87F8-"><association><ref refid="DCE:43403E8A-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:4340EDDC-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[members]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:1E53F84E-7F14-11DD-87F8-"></ref></type><upperValue><ref refid="DCE:BDE10634-8094-11DD-BE50-"></ref></upperValue></Property><LiteralSpecification id="DCE:4340EDDC-7F14-11DD-87F8-"></LiteralSpecification><LiteralSpecification id="DCE:49DD0DA4-7F14-11DD-87F8-"></LiteralSpecification><Association id="DCE:78450778-7F14-11DD-87F8-"><memberEnd><reflist><ref refid="DCE:78451A2E-7F14-11DD-87F8-"></ref><ref refid="DCE:78460B50-7F14-11DD-87F8-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:772CEB62-7F14-11DD-87F8-"></ref></reflist></presentation></Association><Property id="DCE:78451A2E-7F14-11DD-87F8-"><association><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref></association><lowerValue><ref refid="DCE:784541F2-7F14-11DD-87F8-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:784541F2-7F14-11DD-87F8-"></LiteralSpecification><Property id="DCE:78460B50-7F14-11DD-87F8-"><association><ref refid="DCE:78450778-7F14-11DD-87F8-"></ref></association><class_><ref refid="DCE:DBCD2482-7F10-11DD-87F8-"></ref></class_><lowerValue><ref refid="DCE:784630C6-7F14-11DD-87F8-"></ref></lowerValue><name><val><![CDATA[stroke]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:0317364A-7F14-11DD-87F8-"></ref></type></Property><LiteralSpecification id="DCE:784630C6-7F14-11DD-87F8-"></LiteralSpecification><Diagram id="DCE:0801D258-8094-11DD-BE50-"><name><val><![CDATA[program]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><canvas><item type="ClassItem" id="DCE:109E2D58-8094-11DD-BE50-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 65.0, 72.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:109DAC52-8094-11DD-BE50-"></ref></subject></item><item type="ClassItem" id="DCE:270D89D0-8094-11DD-BE50-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 61.0, 167.0)</val></matrix><width><val>105.0</val></width><height><val>77.8125</val></height><subject><ref refid="DCE:270D4CC2-8094-11DD-BE50-"></ref></subject></item><item type="ClassItem" id="DCE:2E05013C-8094-11DD-BE50-"><show-attributes><val>1</val></show-attributes><show-operations><val>1</val></show-operations><drawing-style><val>1</val></drawing-style><matrix><val>(1.0, 0.0, 0.0, 1.0, 65.0, 293.0)</val></matrix><width><val>100.0</val></width><height><val>51.8125</val></height><subject><ref refid="DCE:2E04BFF6-8094-11DD-BE50-"></ref></subject></item><item type="AssociationItem" id="DCE:532801EE-8094-11DD-BE50-"><subject><ref refid="DCE:53E8EB66-8094-11DD-BE50-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 116.0, 123.8125)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (0.0, 43.1875)]</val></points><head-connection><ref refid="DCE:109E2D58-8094-11DD-BE50-"></ref></head-connection><tail-connection><ref refid="DCE:270D89D0-8094-11DD-BE50-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:53E92040-8094-11DD-BE50-"></ref></head-subject><tail-subject><ref refid="DCE:53EA10AE-8094-11DD-BE50-"></ref></tail-subject></item><item type="AssociationItem" id="DCE:551C5B30-8094-11DD-BE50-"><subject><ref refid="DCE:558F4D2A-8094-11DD-BE50-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 115.0, 244.8125)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (0.0, 48.1875)]</val></points><head-connection><ref refid="DCE:270D89D0-8094-11DD-BE50-"></ref></head-connection><tail-connection><ref refid="DCE:2E05013C-8094-11DD-BE50-"></ref></tail-connection><show-direction><val>0</val></show-direction><head-subject><ref refid="DCE:558F630A-8094-11DD-BE50-"></ref></head-subject><tail-subject><ref refid="DCE:55904F86-8094-11DD-BE50-"></ref></tail-subject></item><item type="MessageItem" id="DCE:767BDE06-8097-11DD-91F9-"><subject><ref refid="DCE:767D4AFC-8097-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 345.0, 196.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (133.0, -2.0)]</val></points><head-connection><ref refid="DCE:0EA8C1AE-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></tail-connection></item><item type="MessageItem" id="DCE:4C308160-8097-11DD-91F9-"><subject><ref refid="DCE:4CEF3C60-8097-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 256.0, 168.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (89.0, 0.0)]</val></points><tail-connection><ref refid="DCE:0EA8C1AE-8097-11DD-91F9-"></ref></tail-connection></item><item type="LifelineItem" id="DCE:287B2CA2-8097-11DD-91F9-"><matrix><val>(1.0, 0.0, 0.0, 1.0, 557.0, 65.0)</val></matrix><width><val>100.0</val></width><height><val>50.0</val></height><subject><ref refid="DCE:287B13B4-8097-11DD-91F9-"></ref></subject><lifetime-length><val>301.0</val></lifetime-length></item><item type="LifelineItem" id="DCE:1F1D5FCC-8097-11DD-91F9-"><matrix><val>(1.0, 0.0, 0.0, 1.0, 428.0, 63.0)</val></matrix><width><val>100.0</val></width><height><val>50.0</val></height><subject><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></subject><lifetime-length><val>298.0</val></lifetime-length></item><item type="LifelineItem" id="DCE:0EA8C1AE-8097-11DD-91F9-"><matrix><val>(1.0, 0.0, 0.0, 1.0, 295.0, 63.0)</val></matrix><width><val>100.0</val></width><height><val>50.0</val></height><subject><ref refid="DCE:0EA89544-8097-11DD-91F9-"></ref></subject><lifetime-length><val>310.0</val></lifetime-length></item><item type="MessageItem" id="DCE:F1A4438E-8097-11DD-91F9-"><subject><ref refid="DCE:F1A5B2BC-8097-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 478.0, 217.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (129.0, -1.0)]</val></points><head-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:287B2CA2-8097-11DD-91F9-"></ref></tail-connection></item><item type="MessageItem" id="DCE:0CB2E71E-8098-11DD-91F9-"><subject><ref refid="DCE:0CB456F0-8098-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 345.0, 255.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (133.0, 0.0)]</val></points><head-connection><ref refid="DCE:0EA8C1AE-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></tail-connection></item><item type="MessageItem" id="DCE:1939164C-8098-11DD-91F9-"><subject><ref refid="DCE:193A8944-8098-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 478.0, 273.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (129.0, 0.0)]</val></points><head-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:287B2CA2-8097-11DD-91F9-"></ref></tail-connection></item><item type="MessageItem" id="DCE:21F4E098-8098-11DD-91F9-"><subject><ref refid="DCE:21F64D8E-8098-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 345.0, 316.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (133.0, -1.0)]</val></points><head-connection><ref refid="DCE:0EA8C1AE-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></tail-connection></item><item type="MessageItem" id="DCE:2B3F224E-8098-11DD-91F9-"><subject><ref refid="DCE:2B40958E-8098-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 478.0, 331.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (129.0, -1.0)]</val></points><head-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:287B2CA2-8097-11DD-91F9-"></ref></tail-connection></item><item type="MessageItem" id="DCE:498DD4A2-8098-11DD-91F9-"><subject><ref refid="DCE:498F426C-8098-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 345.0, 365.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (133.0, 0.0)]</val></points><head-connection><ref refid="DCE:0EA8C1AE-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></tail-connection></item><item type="MessageItem" id="DCE:50A00D14-8098-11DD-91F9-"><subject><ref refid="DCE:50A17E72-8098-11DD-91F9-"></ref></subject><matrix><val>(1.0, 0.0, 0.0, 1.0, 478.0, 379.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (129.0, -1.0)]</val></points><head-connection><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></head-connection><tail-connection><ref refid="DCE:287B2CA2-8097-11DD-91F9-"></ref></tail-connection></item><item type="Box" id="DCE:83E7A9FA-8098-11DD-91F9-"><matrix><val>(1.0, 0.0, 0.0, 1.0, 318.0, 234.0)</val></matrix><width><val>341.0</val></width><height><val>108.0</val></height></item><item type="CommentItem" id="DCE:8CEE5D8E-8098-11DD-91F9-"><matrix><val>(1.0, 0.0, 0.0, 1.0, 142.0, 373.0)</val></matrix><width><val>180.0</val></width><height><val>42.0</val></height><subject><ref refid="DCE:8CEE37F0-8098-11DD-91F9-"></ref></subject></item><item type="CommentLineItem" id="DCE:C976B562-8098-11DD-91F9-"><matrix><val>(1.0, 0.0, 0.0, 1.0, 236.0, 373.0)</val></matrix><orthogonal><val>0</val></orthogonal><horizontal><val>0</val></horizontal><points><val>[(0.0, 0.0), (83.0, -56.0)]</val></points><head-connection><ref refid="DCE:8CEE5D8E-8098-11DD-91F9-"></ref></head-connection></item></canvas></Diagram><Class id="DCE:109DAC52-8094-11DD-BE50-"><name><val><![CDATA[mb_progm_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:53EA10AE-8094-11DD-BE50-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:109E2D58-8094-11DD-BE50-"></ref></reflist></presentation></Class><Class id="DCE:270D4CC2-8094-11DD-BE50-"><name><val><![CDATA[mb_word_t]]></val></name><ownedAttribute><reflist><ref refid="DCE:55904F86-8094-11DD-BE50-"></ref><ref refid="DCE:6DE1BB7C-8094-11DD-BE50-"></ref><ref refid="DCE:859E6610-8094-11DD-BE50-"></ref></reflist></ownedAttribute><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:270D89D0-8094-11DD-BE50-"></ref></reflist></presentation></Class><Class id="DCE:2E04BFF6-8094-11DD-BE50-"><name><val><![CDATA[mb_action_t]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:2E05013C-8094-11DD-BE50-"></ref></reflist></presentation></Class><Association id="DCE:53E8EB66-8094-11DD-BE50-"><memberEnd><reflist><ref refid="DCE:53E92040-8094-11DD-BE50-"></ref><ref refid="DCE:53EA10AE-8094-11DD-BE50-"></ref></reflist></memberEnd><name><val><![CDATA[]]></val></name><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:532801EE-8094-11DD-BE50-"></ref></reflist></presentation></Association><Property id="DCE:53E92040-8094-11DD-BE50-"><association><ref refid="DCE:53E8EB66-8094-11DD-BE50-"></ref></association><lowerValue><ref refid="DCE:53E97E32-8094-11DD-BE50-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:109DAC52-8094-11DD-BE50-"></ref></type></Property><LiteralSpecification id="DCE:53E97E32-8094-11DD-BE50-"></LiteralSpecification><Property id="DCE:53EA10AE-8094-11DD-BE50-"><association><ref refid="DCE:53E8EB66-8094-11DD-BE50-"></ref></association><class_><ref refid="DCE:109DAC52-8094-11DD-BE50-"></ref></class_><lowerValue><ref refid="DCE:53EA3866-8094-11DD-BE50-"></ref></lowerValue><name><val><![CDATA[words]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:270D4CC2-8094-11DD-BE50-"></ref></type><upperValue><ref refid="DCE:9A5CC720-8094-11DD-BE50-"></ref></upperValue></Property><LiteralSpecification id="DCE:53EA3866-8094-11DD-BE50-"></LiteralSpecification><Association id="DCE:558F4D2A-8094-11DD-BE50-"><memberEnd><reflist><ref refid="DCE:558F630A-8094-11DD-BE50-"></ref><ref refid="DCE:55904F86-8094-11DD-BE50-"></ref></reflist></memberEnd><package><ref refid="DCE:9C711C86-7F0F-11DD-87F8-"></ref></package><presentation><reflist><ref refid="DCE:551C5B30-8094-11DD-BE50-"></ref></reflist></presentation></Association><Property id="DCE:558F630A-8094-11DD-BE50-"><association><ref refid="DCE:558F4D2A-8094-11DD-BE50-"></ref></association><lowerValue><ref refid="DCE:558F8C5E-8094-11DD-BE50-"></ref></lowerValue><presentation><reflist></reflist></presentation><type><ref refid="DCE:270D4CC2-8094-11DD-BE50-"></ref></type></Property><LiteralSpecification id="DCE:558F8C5E-8094-11DD-BE50-"></LiteralSpecification><Property id="DCE:55904F86-8094-11DD-BE50-"><association><ref refid="DCE:558F4D2A-8094-11DD-BE50-"></ref></association><class_><ref refid="DCE:270D4CC2-8094-11DD-BE50-"></ref></class_><lowerValue><ref refid="DCE:559076AA-8094-11DD-BE50-"></ref></lowerValue><name><val><![CDATA[actions]]></val></name><presentation><reflist></reflist></presentation><type><ref refid="DCE:2E04BFF6-8094-11DD-BE50-"></ref></type><upperValue><ref refid="DCE:A1CD0C72-8094-11DD-BE50-"></ref></upperValue></Property><LiteralSpecification id="DCE:559076AA-8094-11DD-BE50-"></LiteralSpecification><Property id="DCE:6DE1BB7C-8094-11DD-BE50-"><class_><ref refid="DCE:270D4CC2-8094-11DD-BE50-"></ref></class_><defaultValue><ref refid="DCE:6DE4BBEE-8094-11DD-BE50-"></ref></defaultValue><lowerValue><ref refid="DCE:6DE44D9E-8094-11DD-BE50-"></ref></lowerValue><name><val><![CDATA[start_time]]></val></name><presentation><reflist></reflist></presentation><typeValue><ref refid="DCE:6DE3F2A4-8094-11DD-BE50-"></ref></typeValue><upperValue><ref refid="DCE:6DE484BC-8094-11DD-BE50-"></ref></upperValue></Property><LiteralSpecification id="DCE:6DE3F2A4-8094-11DD-BE50-"><value><val><![CDATA[float]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:6DE44D9E-8094-11DD-BE50-"></LiteralSpecification><LiteralSpecification id="DCE:6DE484BC-8094-11DD-BE50-"></LiteralSpecification><LiteralSpecification id="DCE:6DE4BBEE-8094-11DD-BE50-"></LiteralSpecification><Property id="DCE:859E6610-8094-11DD-BE50-"><class_><ref refid="DCE:270D4CC2-8094-11DD-BE50-"></ref></class_><defaultValue><ref refid="DCE:85A0FD72-8094-11DD-BE50-"></ref></defaultValue><lowerValue><ref refid="DCE:85A092A8-8094-11DD-BE50-"></ref></lowerValue><name><val><![CDATA[playing_time]]></val></name><presentation><reflist></reflist></presentation><typeValue><ref refid="DCE:85A034C8-8094-11DD-BE50-"></ref></typeValue><upperValue><ref refid="DCE:85A0C872-8094-11DD-BE50-"></ref></upperValue></Property><LiteralSpecification id="DCE:85A034C8-8094-11DD-BE50-"><value><val><![CDATA[float]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:85A092A8-8094-11DD-BE50-"></LiteralSpecification><LiteralSpecification id="DCE:85A0C872-8094-11DD-BE50-"></LiteralSpecification><LiteralSpecification id="DCE:85A0FD72-8094-11DD-BE50-"></LiteralSpecification><LiteralSpecification id="DCE:9A5CC720-8094-11DD-BE50-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:A1CD0C72-8094-11DD-BE50-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:BDE10634-8094-11DD-BE50-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><LiteralSpecification id="DCE:169380E8-8095-11DD-BE50-"><value><val><![CDATA[*]]></val></value></LiteralSpecification><Lifeline id="DCE:287B13B4-8097-11DD-91F9-"><coveredBy><reflist><ref refid="DCE:F3C1C286-8097-11DD-91F9-"></ref><ref refid="DCE:1A6A199C-8098-11DD-91F9-"></ref><ref refid="DCE:2C4038FE-8098-11DD-91F9-"></ref><ref refid="DCE:52583C82-8098-11DD-91F9-"></ref></reflist></coveredBy><name><val><![CDATA[:mb_action_t]]></val></name><presentation><reflist><ref refid="DCE:287B2CA2-8097-11DD-91F9-"></ref></reflist></presentation></Lifeline><Lifeline id="DCE:1F1D4776-8097-11DD-91F9-"><coveredBy><reflist><ref refid="DCE:784FDB1A-8097-11DD-91F9-"></ref><ref refid="DCE:F1A77504-8097-11DD-91F9-"></ref><ref refid="DCE:0E277910-8098-11DD-91F9-"></ref><ref refid="DCE:193C407E-8098-11DD-91F9-"></ref><ref refid="DCE:231F9896-8098-11DD-91F9-"></ref><ref refid="DCE:2B42511C-8098-11DD-91F9-"></ref><ref refid="DCE:4A7C4A42-8098-11DD-91F9-"></ref><ref refid="DCE:50A33CCA-8098-11DD-91F9-"></ref></reflist></coveredBy><name><val><![CDATA[:mb_word_t]]></val></name><presentation><reflist><ref refid="DCE:1F1D5FCC-8097-11DD-91F9-"></ref></reflist></presentation></Lifeline><EventOccurrence id="DCE:784FDB1A-8097-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:767D4AFC-8097-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:767D4AFC-8097-11DD-91F9-"><name><val><![CDATA[mb_word_start()]]></val></name><presentation><reflist><ref refid="DCE:767BDE06-8097-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:784FDB1A-8097-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:767EF910-8097-11DD-91F9-"></ref></sendEvent></Message><Lifeline id="DCE:0EA89544-8097-11DD-91F9-"><coveredBy><reflist><ref refid="DCE:767EF910-8097-11DD-91F9-"></ref><ref refid="DCE:4CF13B1A-8097-11DD-91F9-"></ref><ref refid="DCE:0CB6126A-8098-11DD-91F9-"></ref><ref refid="DCE:21F80D54-8098-11DD-91F9-"></ref><ref refid="DCE:49910262-8098-11DD-91F9-"></ref></reflist></coveredBy><name><val><![CDATA[:mb_progm_t]]></val></name><presentation><reflist><ref refid="DCE:0EA8C1AE-8097-11DD-91F9-"></ref></reflist></presentation></Lifeline><EventOccurrence id="DCE:767EF910-8097-11DD-91F9-"><covered><ref refid="DCE:0EA89544-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:767D4AFC-8097-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:4CF13B1A-8097-11DD-91F9-"><covered><ref refid="DCE:0EA89544-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:4CEF3C60-8097-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:4CEF3C60-8097-11DD-91F9-"><messageSort><val><![CDATA[asynchCall]]></val></messageSort><name><val><![CDATA[mb_progm_start()]]></val></name><presentation><reflist><ref refid="DCE:4C308160-8097-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:4CF13B1A-8097-11DD-91F9-"></ref></receiveEvent></Message><Message id="DCE:F1A5B2BC-8097-11DD-91F9-"><name><val><![CDATA[::start()]]></val></name><presentation><reflist><ref refid="DCE:F1A4438E-8097-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:F3C1C286-8097-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:F1A77504-8097-11DD-91F9-"></ref></sendEvent></Message><EventOccurrence id="DCE:F1A77504-8097-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:F1A5B2BC-8097-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:F3C1C286-8097-11DD-91F9-"><covered><ref refid="DCE:287B13B4-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:F1A5B2BC-8097-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:0CB456F0-8098-11DD-91F9-"><name><val><![CDATA[mb_word_step()]]></val></name><presentation><reflist><ref refid="DCE:0CB2E71E-8098-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:0E277910-8098-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:0CB6126A-8098-11DD-91F9-"></ref></sendEvent></Message><EventOccurrence id="DCE:0CB6126A-8098-11DD-91F9-"><covered><ref refid="DCE:0EA89544-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:0CB456F0-8098-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:0E277910-8098-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:0CB456F0-8098-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:193A8944-8098-11DD-91F9-"><name><val><![CDATA[::step()]]></val></name><presentation><reflist><ref refid="DCE:1939164C-8098-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:1A6A199C-8098-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:193C407E-8098-11DD-91F9-"></ref></sendEvent></Message><EventOccurrence id="DCE:193C407E-8098-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:193A8944-8098-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:1A6A199C-8098-11DD-91F9-"><covered><ref refid="DCE:287B13B4-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:193A8944-8098-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:21F64D8E-8098-11DD-91F9-"><name><val><![CDATA[mb_word_step()]]></val></name><presentation><reflist><ref refid="DCE:21F4E098-8098-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:231F9896-8098-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:21F80D54-8098-11DD-91F9-"></ref></sendEvent></Message><EventOccurrence id="DCE:21F80D54-8098-11DD-91F9-"><covered><ref refid="DCE:0EA89544-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:21F64D8E-8098-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:231F9896-8098-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:21F64D8E-8098-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:2B40958E-8098-11DD-91F9-"><name><val><![CDATA[::step()]]></val></name><presentation><reflist><ref refid="DCE:2B3F224E-8098-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:2C4038FE-8098-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:2B42511C-8098-11DD-91F9-"></ref></sendEvent></Message><EventOccurrence id="DCE:2B42511C-8098-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:2B40958E-8098-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:2C4038FE-8098-11DD-91F9-"><covered><ref refid="DCE:287B13B4-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:2B40958E-8098-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:498F426C-8098-11DD-91F9-"><name><val><![CDATA[mb_word_stop()]]></val></name><presentation><reflist><ref refid="DCE:498DD4A2-8098-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:4A7C4A42-8098-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:49910262-8098-11DD-91F9-"></ref></sendEvent></Message><EventOccurrence id="DCE:49910262-8098-11DD-91F9-"><covered><ref refid="DCE:0EA89544-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:498F426C-8098-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:4A7C4A42-8098-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:498F426C-8098-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Message id="DCE:50A17E72-8098-11DD-91F9-"><name><val><![CDATA[::stop()]]></val></name><presentation><reflist><ref refid="DCE:50A00D14-8098-11DD-91F9-"></ref></reflist></presentation><receiveEvent><ref refid="DCE:52583C82-8098-11DD-91F9-"></ref></receiveEvent><sendEvent><ref refid="DCE:50A33CCA-8098-11DD-91F9-"></ref></sendEvent></Message><EventOccurrence id="DCE:50A33CCA-8098-11DD-91F9-"><covered><ref refid="DCE:1F1D4776-8097-11DD-91F9-"></ref></covered><sendMessage><ref refid="DCE:50A17E72-8098-11DD-91F9-"></ref></sendMessage></EventOccurrence><EventOccurrence id="DCE:52583C82-8098-11DD-91F9-"><covered><ref refid="DCE:287B13B4-8097-11DD-91F9-"></ref></covered><receiveMessage><ref refid="DCE:50A17E72-8098-11DD-91F9-"></ref></receiveMessage></EventOccurrence><Comment id="DCE:8CEE37F0-8098-11DD-91F9-"><body><val><![CDATA[Repeat n times until playing_time
+after the word been started.]]></val></body><presentation><reflist><ref refid="DCE:8CEE5D8E-8098-11DD-91F9-"></ref></reflist></presentation></Comment></gaphor>
\ No newline at end of file
Binary file img/core.png has changed
Binary file img/program.png has changed
--- a/src/Makefile	Sun Sep 14 09:42:07 2008 +0800
+++ b/src/Makefile	Sun Sep 14 18:51:16 2008 +0800
@@ -1,7 +1,7 @@
 SRCS =	coord.c geo.c shape_path.c shape_text.c shape_rect.c \
 	redraw_man.c timer.c animate.c paint.c event.c observer.c \
 	X_supp.c timertool.c tools.c shift.c chgcolor.c \
-	visibility.c
+	visibility.c rotate.c
 OBJS = ${SRCS:C/(.*)\.c/\1.o/g}
 TESTCASE_OBJS = ${SRCS:C/(.*)\.c/testcase-\1.o/g}
 CFLAGS+=	-Wall -I/usr/local/include `pkg-config --cflags cairo`
--- a/src/animate.c	Sun Sep 14 09:42:07 2008 +0800
+++ b/src/animate.c	Sun Sep 14 18:51:16 2008 +0800
@@ -1,10 +1,15 @@
 /*! \file
  * \brief Animation tools.
  *
- * \sa ani
+ * \sa \ref ani
  */
 /*! \page ani What is Animation?
  *
+ * Animation is a program to move, resize, rotate, ..., changing
+ * graphics on the output screen.
+ *
+ * \image html program.png
+ *
  * XXX: Program is a sequence of actions duration a perior.
  * Actions are grouped into words.  A program defines
  * the order and time of playing of words.  A word
@@ -22,7 +27,43 @@
  * with timer for periodic running.  \ref mb_tman_t is timer of
  * MadButterfly.  The update frequence is 10fps by default, now.
  *
- * \sa animate.c
+ * \section use_progm How to Use Animation Program?
+ * Following code block creates a program with 2 words.  First word is
+ * started immediately after the program been started.  It is consisted
+ * for 1 second.  Second word is started 1 second after the program been
+ * started.  It is consisted for 2 seconds.  There are 2 action in
+ * first word, they shift graphics managed by coord1 & coord2 by (50,50) and
+ * (-50,50) pixels, respectly.  The shifting is performed incrementally
+ * in 1 second.  Second word shifts coord1 and coord2, too. And, graphics
+ * managed by coord3 are hidden at end of the word.  At end of code in the
+ * block, mb_progm_start() starts the program.  3rd argument of
+ * mb_progm_start() must be current wall time.
+ *
+ * \code
+ *	progm = mb_progm_new(10, &rdman);
+ *	
+ *	MB_TIMEVAL_SET(&start, 0, 0);
+ *	MB_TIMEVAL_SET(&playing, 1, 0);
+ *	word = mb_progm_next_word(progm, &start, &playing);
+ *
+ *	act = mb_shift_new(50, 50, coord1, word);
+ *	act = mb_shift_new(-50, 50, coord2, word);
+ *
+ *	MB_TIMEVAL_SET(&start, 1, 0);
+ *	MB_TIMEVAL_SET(&playing, 2, 0);
+ *	word = mb_progm_next_word(progm, &start, &playing);
+ *
+ *	act = mb_shift_new(0, 20, coord1, word);
+ *	act = mb_shift_new(0, -20, coord2, word);
+ *	act = mb_visibility_new(VIS_HIDDEN, coord3, word);
+ *
+ *	gettimeofday(&tv, NULL);
+ *	MB_TIMEVAL_SET(&mbtv, tv.tv_sec, tv.tv_usec);
+ *	mb_progm_start(progm, tman, &mbtv);
+ * \endcode
+ *
+ *
+ * \sa \ref animate.c
  */
 #include <stdio.h>
 #include <stdlib.h>
--- a/src/animate.h	Sun Sep 14 09:42:07 2008 +0800
+++ b/src/animate.h	Sun Sep 14 18:51:16 2008 +0800
@@ -5,19 +5,7 @@
 #include "mb_timer.h"
 #include "paint.h"
 
-/*! \defgroup anim Animation
- * \brief Animation is a set of functions to make graph moving.
- * @{
- */
-typedef struct _mb_progm mb_progm_t;
-typedef struct _mb_word mb_word_t;
-typedef struct _mb_action mb_action_t;
-typedef struct _mb_progm_state mb_progm_state_t;
-
-/*! \defgroup act_support Action Supports.
- * @{
- */
-/*! \brief Basic class of nnimation actions.
+/*! \page def_action How to Define An Action?
  *
  * A action must implement following 4 functions.
  * \li start,
@@ -31,6 +19,22 @@
  * It also means *_new() must have an argument with type of
  * (mb_word_t *).
  */
+
+/*! \defgroup anim Animation
+ * \brief Animation is a set of functions to make graph moving.
+ * @{
+ */
+typedef struct _mb_progm mb_progm_t;
+typedef struct _mb_word mb_word_t;
+typedef struct _mb_action mb_action_t;
+
+/*! \defgroup act_support Action Supports.
+ * @{
+ */
+/*! \brief Basic class of nnimation actions.
+ *
+ * \sa \ref def_action
+ */
 struct _mb_action {
     void (*start)(mb_action_t *act,
 		  const mb_timeval_t *now,
@@ -63,6 +67,8 @@
 extern mb_action_t *mb_chgcolor_new(co_comp_t r, co_comp_t g,
 				    co_comp_t b, co_comp_t a,
 				    paint_t *paint, mb_word_t *word);
+extern mb_action_t *mb_rotate_new(float angle1, float angle2,
+				  coord_t *coord, mb_word_t *word);
 
 enum { VIS_VISIBLE, VIS_HIDDEN };
 extern mb_action_t *mb_visibility_new(int visib, coord_t *coord,
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/rotate.c	Sun Sep 14 18:51:16 2008 +0800
@@ -0,0 +1,119 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <math.h>
+#include "animate.h"
+
+static float comp_mb_timeval_ratio(const mb_timeval_t *a,
+				   const mb_timeval_t *b) {
+    float ratio;
+
+    ratio = (float)MB_TIMEVAL_SEC(a) * 1000000.0 + (float)MB_TIMEVAL_USEC(a);
+    ratio /= (float)MB_TIMEVAL_SEC(b) * 1000000.0 + (float)MB_TIMEVAL_USEC(b);
+    return ratio;
+}
+
+/*! \brief Animation action to rotate a coordinate.
+ */
+struct _mb_rotate {
+    mb_action_t action;
+
+    co_aix angle1, angle2;
+    coord_t *coord;
+
+    mb_timeval_t start_time;
+    const mb_timeval_t *playing_time;
+};
+typedef struct _mb_rotate mb_rotate_t;
+
+static void mb_rotate_start(mb_action_t *act,
+			   const mb_timeval_t *now,
+			   const mb_timeval_t *playing_time,
+			   redraw_man_t *rdman) {
+    mb_rotate_t *rotate = (mb_rotate_t *)act;
+    co_aix *matrix;
+    float _sin, _cos;
+
+    _sin = sinf(rotate->angle1);
+    _cos = cosf(rotate->angle1);
+
+    matrix = rotate->coord->matrix;
+    memset(matrix, 0, sizeof(co_aix) * 6);
+    matrix[0] = _cos;
+    matrix[1] = -_sin;
+    matrix[3] = _sin;
+    matrix[4] = _cos;
+    rdman_coord_changed(rdman, rotate->coord);
+
+    MB_TIMEVAL_CP(&rotate->start_time, now);
+    rotate->playing_time = playing_time;
+}
+
+static void mb_rotate_step(mb_action_t *act, const mb_timeval_t *now,
+			   redraw_man_t *rdman) {
+    mb_rotate_t *rotate = (mb_rotate_t *)act;
+    mb_timeval_t diff;
+    co_aix *matrix;
+    float ratio;
+    float angle;
+    float _sin, _cos;
+
+    MB_TIMEVAL_CP(&diff, now);
+    MB_TIMEVAL_DIFF(&diff, &rotate->start_time);
+    ratio = comp_mb_timeval_ratio(&diff, rotate->playing_time);
+
+    angle = rotate->angle1 * (1 - ratio) + rotate->angle2 * ratio;
+    _sin = sinf(angle);
+    _cos = cosf(angle);
+
+    matrix = rotate->coord->matrix;
+    matrix[0] = _cos;
+    matrix[1] = -_sin;
+    matrix[3] = _sin;
+    matrix[4] = _cos;
+    rdman_coord_changed(rdman, rotate->coord);
+}
+
+static void mb_rotate_stop(mb_action_t *act, const mb_timeval_t *now,
+			   redraw_man_t *rdman) {
+    mb_rotate_t *rotate = (mb_rotate_t *)act;
+    co_aix *matrix;
+    float _sin, _cos;
+
+    _sin = sinf(rotate->angle2);
+    _cos = cosf(rotate->angle2);
+
+    matrix = rotate->coord->matrix;
+    matrix[0] = _cos;
+    matrix[1] = -_sin;
+    matrix[3] = _sin;
+    matrix[4] = _cos;
+    rdman_coord_changed(rdman, rotate->coord);
+}
+
+static void mb_rotate_free(mb_action_t *act) {
+    free(act);
+}
+
+mb_action_t *mb_rotate_new(float angle1, float angle2,
+			   coord_t *coord,
+			   mb_word_t *word) {
+    mb_rotate_t *rotate;
+
+    rotate = (mb_rotate_t *)malloc(sizeof(mb_rotate_t));
+    if(rotate == NULL)
+	return NULL;
+
+    rotate->angle1 = angle1;
+    rotate->angle2 = angle2;
+    rotate->coord = coord;
+
+    rotate->action.start = mb_rotate_start;
+    rotate->action.step = mb_rotate_step;
+    rotate->action.stop = mb_rotate_stop;
+    rotate->action.free = mb_rotate_free;
+
+    mb_word_add_action(word, (mb_action_t *)rotate);
+
+    return (mb_action_t *)rotate;
+}
--- a/src/shift.c	Sun Sep 14 09:42:07 2008 +0800
+++ b/src/shift.c	Sun Sep 14 18:51:16 2008 +0800
@@ -13,7 +13,7 @@
 }
 
 typedef struct _mb_shift mb_shift_t;
-/*! \brief Animation action for shift a coordination. */
+/*! \brief Animation action for relative shift a coordination. */
 struct _mb_shift {
     mb_action_t action;
 
@@ -95,5 +95,3 @@
 
     return (mb_action_t *)shift;
 }
-
-