annotate src/X_main.c @ 1399:9cebe429508c

Override the clone_from_subtree to setup the parent and children for the coord object. However, the current children is incorrect since we can not copy it from the origin tree. Instead, we need to get coord_t from the cloned group and then modify all coord objects to include correct parent, children, add_shape and clone_from_subtree.
author wycc
date Sun, 03 Apr 2011 11:51:39 +0800
parents d09f603438d8
children
rev   line source
822
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 471
diff changeset
1 // -*- indent-tabs-mode: t; tab-width: 8; c-basic-offset: 4; -*-
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 471
diff changeset
2 // vim: sw=4:ts=8:sts=4
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
3 #include <stdio.h>
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
4 #include <unistd.h>
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
5 #include <sys/time.h>
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
6 #include <sys/select.h>
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
7 #include <X11/Xlib.h>
6
772511b8b9be Cairo specify RGB values in range 0.0 ~ 1.0.
Thinker K.F. Li <thinker@branda.to>
parents: 5
diff changeset
8 #include <X11/Xutil.h>
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
9 #include "mb_graph_engine.h"
278
a90fd749af82 Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents: 186
diff changeset
10 #include <pango/pangocairo.h>
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
11
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents: 3
diff changeset
12 #include <string.h>
186
530bb7728546 Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents: 185
diff changeset
13 #include "mb_shapes.h"
530bb7728546 Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents: 185
diff changeset
14 #include "mb_redraw_man.h"
530bb7728546 Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents: 185
diff changeset
15 #include "mb_paint.h"
530bb7728546 Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents: 185
diff changeset
16 #include "mb_timer.h"
530bb7728546 Move header files to $(top_srcdir)/include/ and prefixed with 'mb_'.
Thinker K.F. Li <thinker@branda.to>
parents: 185
diff changeset
17 #include "mb_animate.h"
1021
4f4abce1b5df Move X_main.c to mb_timer_man_t
Thinker K.F. Li <thinker@codemud.net>
parents: 863
diff changeset
18 #include "mb_backend_utils.h"
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
19
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
20 #define OK 0
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
21 #define ERR -1
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents: 3
diff changeset
22
16
e17e12b112c4 A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 15
diff changeset
23 Display *display;
30
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
24 Window win;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
25
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
26 void hint_shape(redraw_man_t *rdman, shape_t *shape) {
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
27 static shape_t *last_shape = NULL;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
28 if(last_shape != shape) {
33
d82749f77108 Fix bug of demo and remove *_fill() and *_stroke().
Thinker K.F. Li <thinker@branda.to>
parents: 32
diff changeset
29 if(last_shape != NULL && last_shape->stroke != NULL) {
30
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
30 last_shape->stroke_width -= 2;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
31 rdman_shape_changed(rdman, last_shape);
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
32 }
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
33 if(shape != NULL && shape->stroke != NULL) {
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
34 shape->stroke_width += 2;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
35 rdman_shape_changed(rdman, shape);
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
36 }
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
37 }
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
38 last_shape = shape;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
39 }
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
40
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
41 void event_interaction(Display *display,
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
42 redraw_man_t *rdman, int w, int h) {
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
43 XEvent evt;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
44 XMotionEvent *mevt;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
45 int r;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
46 co_aix x, y;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
47 shape_t *shape = NULL;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
48 int in_stroke;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
49
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
50 while(XEventsQueued(display, QueuedAfterReading) > 0) {
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
51 r = XNextEvent(display, &evt);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
52 if(r == -1)
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
53 break;
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
54
30
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
55 switch(evt.type) {
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
56 case MotionNotify:
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
57 mevt = (XMotionEvent *)&evt;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
58 x = mevt->x;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
59 y = mevt->y;
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
60 shape = find_shape_at_pos(rdman, x, y, &in_stroke);
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
61 hint_shape(rdman, shape);
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
62 break;
37
943acee7f346 update exposed area
Thinker K.F. Li <thinker@branda.to>
parents: 35
diff changeset
63 case Expose:
77
Thinker K.F. Li <thinker@branda.to>
parents: 73
diff changeset
64 rdman_redraw_area(rdman, evt.xexpose.x, evt.xexpose.y,
Thinker K.F. Li <thinker@branda.to>
parents: 73
diff changeset
65 evt.xexpose.width, evt.xexpose.height);
37
943acee7f346 update exposed area
Thinker K.F. Li <thinker@branda.to>
parents: 35
diff changeset
66 break;
30
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
67 }
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
68 }
53
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
69 rdman_redraw_changed(rdman);
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
70 XFlush(display);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
71 }
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
72
1024
63f2f1daf5d3 X_main.c works with new backend definition
Thinker K.F. Li <thinker@codemud.net>
parents: 1021
diff changeset
73 void handle_connection(Display *display, mb_timer_man_t *timer_man,
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
74 redraw_man_t *rdman, int w, int h) {
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
75 int xcon;
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
76 fd_set rds;
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
77 int nfds;
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
78 struct timeval tmo;
53
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
79 mb_timeval_t mb_tmo, next_mb_tmo;
1024
63f2f1daf5d3 X_main.c works with new backend definition
Thinker K.F. Li <thinker@codemud.net>
parents: 1021
diff changeset
80 mb_tman_t *tman;
54
Thinker K.F. Li <thinker@branda.to>
parents: 53
diff changeset
81 int r;
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
82
1024
63f2f1daf5d3 X_main.c works with new backend definition
Thinker K.F. Li <thinker@codemud.net>
parents: 1021
diff changeset
83 tman = tman_timer_man_get_tman(timer_man);
63f2f1daf5d3 X_main.c works with new backend definition
Thinker K.F. Li <thinker@codemud.net>
parents: 1021
diff changeset
84
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
85 XSelectInput(display, win, PointerMotionMask | ExposureMask);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
86 XFlush(display);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
87
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
88 xcon = XConnectionNumber(display);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
89 nfds = xcon + 1;
49
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
90
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
91 r = gettimeofday(&tmo, NULL);
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
92 if(r == -1) {
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
93 perror("gettimeofday");
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
94 return;
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
95 }
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
96 MB_TIMEVAL_SET(&mb_tmo, tmo.tv_sec, tmo.tv_usec);
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
97
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
98 while(1) {
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
99 FD_ZERO(&rds);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
100 FD_SET(xcon, &rds);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
101
53
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
102 r = mb_tman_next_timeout(tman, &mb_tmo, &next_mb_tmo);
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
103 if(r != OK)
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
104 r = select(nfds, &rds, NULL, NULL, NULL);
41
400b4b5db0dc Working on animation
Thinker K.F. Li <thinker@branda.to>
parents: 39
diff changeset
105 else {
53
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
106 tmo.tv_sec = MB_TIMEVAL_SEC(&next_mb_tmo);
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
107 tmo.tv_usec = MB_TIMEVAL_USEC(&next_mb_tmo);
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
108 r = select(nfds, &rds, NULL, NULL, &tmo);
41
400b4b5db0dc Working on animation
Thinker K.F. Li <thinker@branda.to>
parents: 39
diff changeset
109 }
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
110
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
111 if(r == -1) {
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
112 perror("select");
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
113 return;
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
114 }
49
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
115
54
Thinker K.F. Li <thinker@branda.to>
parents: 53
diff changeset
116 if(r == 0) {
Thinker K.F. Li <thinker@branda.to>
parents: 53
diff changeset
117 MB_TIMEVAL_ADD(&mb_tmo, &next_mb_tmo);
49
6a3726fa7aad Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents: 48
diff changeset
118
41
400b4b5db0dc Working on animation
Thinker K.F. Li <thinker@branda.to>
parents: 39
diff changeset
119 mb_tman_handle_timeout(tman, &mb_tmo);
42
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
120 rdman_redraw_changed(rdman);
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
121 XFlush(display);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
122 } else if(FD_ISSET(xcon, &rds)) {
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
123 event_interaction(display, rdman, w, h);
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
124 }
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
125 }
30
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
126 }
16
e17e12b112c4 A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 15
diff changeset
127
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
128 void draw_path(mbe_t *cr, int w, int h) {
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
129 mbe_t *tmpcr;
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
130 mbe_surface_t *tmpsuf;
471
e98ae1407ca2 Remove mbe_set_source_surface() from graphic engine.
Thinker K.F. Li <thinker@branda.to>
parents: 451
diff changeset
131 mbe_pattern_t *tmpptn;
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
132 redraw_man_t rdman;
35
581a03196093 Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents: 33
diff changeset
133 shape_t *path1, *path2, *rect;
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
134 coord_t *coord1, *coord2, *coord3;
23
56f592f56ff7 Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents: 22
diff changeset
135 paint_t *fill1, *fill2, *fill3;
55
01ed2bc37eed Radial gradient paint
Thinker K.F. Li <thinker@branda.to>
parents: 54
diff changeset
136 paint_t *text_fill;
01ed2bc37eed Radial gradient paint
Thinker K.F. Li <thinker@branda.to>
parents: 54
diff changeset
137 grad_stop_t text_stops[2];
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
138 paint_t *stroke, *text_stroke;
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
139 shape_t *text;
23
56f592f56ff7 Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents: 22
diff changeset
140 grad_stop_t fill3_stops[3];
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
141 mbe_font_face_t *face;
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
142 struct timeval tv;
1021
4f4abce1b5df Move X_main.c to mb_timer_man_t
Thinker K.F. Li <thinker@codemud.net>
parents: 863
diff changeset
143 mb_timer_man_t *timer_man;
42
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
144 mb_timeval_t mbtv, start, playing;
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
145 mb_progm_t *progm;
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
146 mb_word_t *word;
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
147 mb_action_t *act;
278
a90fd749af82 Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents: 186
diff changeset
148 PangoAttrList *attrs = pango_attr_list_new();
12
79e9edf4c00a Add redraw manager
Thinker K.F. Li <thinker@branda.to>
parents: 11
diff changeset
149
450
a417fd980228 Replace cairo_format_t with mb_img_fmt_t.
Thinker K.F. Li <thinker@branda.to>
parents: 448
diff changeset
150 tmpsuf = mbe_image_surface_create(MB_IFMT_ARGB32, w, h);
471
e98ae1407ca2 Remove mbe_set_source_surface() from graphic engine.
Thinker K.F. Li <thinker@branda.to>
parents: 451
diff changeset
151 tmpptn = mbe_pattern_create_for_surface(tmpsuf);
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
152 tmpcr = mbe_create(tmpsuf);
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
153
471
e98ae1407ca2 Remove mbe_set_source_surface() from graphic engine.
Thinker K.F. Li <thinker@branda.to>
parents: 451
diff changeset
154 mbe_set_source(cr, tmpptn);
24
e598bc809c0f No more flash when animation.
Thinker K.F. Li <thinker@branda.to>
parents: 23
diff changeset
155 redraw_man_init(&rdman, tmpcr, cr);
19
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
156 coord1 = rdman_coord_new(&rdman, rdman.root_coord);
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
157 coord2 = rdman_coord_new(&rdman, rdman.root_coord);
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
158 coord3 = rdman_coord_new(&rdman, rdman.root_coord);
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents: 3
diff changeset
159
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
160 fill1 = rdman_paint_color_new(&rdman, 1, 1, 0, 0.5);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
161 fill2 = rdman_paint_color_new(&rdman, 0, 1, 1, 0.5);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
162 stroke = rdman_paint_color_new(&rdman, 0.4, 0.4, 0.4, 1);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
163 text_stroke = rdman_paint_color_new(&rdman, 0.5, 0.5, 0.5, 1);
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
164
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
165 face = mbe_get_font_face(tmpcr);
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
166 text = rdman_shape_text_new(&rdman, "hello \xe6\xbc\xa2\xe5\xad\x97",
278
a90fd749af82 Implement the whole tspan attribute. Currently, we can accept font family/font style/font weight and font size.
wycc
parents: 186
diff changeset
167 10, h / 4, 36.0, face, attrs);
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
168 text_fill = rdman_paint_radial_new(&rdman, 100, h / 4, 70);
55
01ed2bc37eed Radial gradient paint
Thinker K.F. Li <thinker@branda.to>
parents: 54
diff changeset
169 grad_stop_init(text_stops, 0, 0.2, 0.9, 0.2, 1);
01ed2bc37eed Radial gradient paint
Thinker K.F. Li <thinker@branda.to>
parents: 54
diff changeset
170 grad_stop_init(text_stops + 1, 1, 0.9, 0.2, 0.2, 0.1);
56
e444a8c01735 Change interface of paint_radial_new()
Thinker K.F. Li <thinker@branda.to>
parents: 55
diff changeset
171 paint_radial_stops(text_fill, 2, text_stops);
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
172 rdman_paint_stroke(&rdman, text_stroke, text);
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
173 text->stroke_width = 0.5;
55
01ed2bc37eed Radial gradient paint
Thinker K.F. Li <thinker@branda.to>
parents: 54
diff changeset
174 rdman_paint_fill(&rdman, text_fill, text);
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
175 rdman_add_shape(&rdman, text, coord3);
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
176
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
177 path1 = rdman_shape_path_new(&rdman, "M 22,89.36218 C -34,-0.63782 39,-9.637817 82,12.36218 C 125,34.36218 142,136.36218 142,136.36218 C 100.66667,125.36218 74.26756,123.42795 22,89.36218 z ");
19
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
178 rdman_paint_fill(&rdman, fill1, path1);
22
8fcf2d878ecd shapes with stroke
Thinker K.F. Li <thinker@branda.to>
parents: 21
diff changeset
179 rdman_paint_stroke(&rdman, stroke, path1);
19
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
180 coord1->matrix[0] = 0.8;
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
181 coord1->matrix[1] = 0;
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
182 coord1->matrix[2] = 20;
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
183 coord1->matrix[4] = 0.8;
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
184 coord1->matrix[5] = 20;
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
185
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
186 path2 = rdman_shape_path_new(&rdman, "M 22,89.36218 C -34,-0.63782 39,-9.637817 82,12.36218 C 125,34.36218 142,136.36218 142,136.36218 C 100.66667,125.36218 74.26756,123.42795 22,89.36218 z ");
19
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
187 rdman_paint_fill(&rdman, fill2, path2);
22
8fcf2d878ecd shapes with stroke
Thinker K.F. Li <thinker@branda.to>
parents: 21
diff changeset
188 rdman_paint_stroke(&rdman, stroke, path2);
19
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
189 coord2->matrix[0] = -0.8;
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
190 coord2->matrix[1] = 0;
20
74d3d5dc9aaa rename XXX_draw() to XXX_fill()
Thinker K.F. Li <thinker@branda.to>
parents: 19
diff changeset
191 coord2->matrix[2] = 180;
19
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
192 coord2->matrix[4] = 0.8;
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
193 coord2->matrix[5] = 20;
27
19c603dd6ff9 Add text shape.
Thinker K.F. Li <thinker@branda.to>
parents: 26
diff changeset
194
19
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
195 rdman_coord_changed(&rdman, coord1);
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
196 rdman_coord_changed(&rdman, coord2);
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
197 rdman_add_shape(&rdman, (shape_t *)path1, coord1);
cf6d65398619 More animation demo
Thinker K.F. Li <thinker@branda.to>
parents: 18
diff changeset
198 rdman_add_shape(&rdman, (shape_t *)path2, coord2);
15
c2ce186a5c37 X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents: 13
diff changeset
199
822
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 471
diff changeset
200
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
201 fill3 = rdman_paint_linear_new(&rdman, 50, 50, 150, 150);
23
56f592f56ff7 Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents: 22
diff changeset
202 grad_stop_init(fill3_stops, 0, 1, 0, 0, 0.5);
56f592f56ff7 Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents: 22
diff changeset
203 grad_stop_init(fill3_stops + 1, 0.5, 0, 1, 0, 0.5);
56f592f56ff7 Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents: 22
diff changeset
204 grad_stop_init(fill3_stops + 2, 1, 0, 0, 1, 0.5);
56f592f56ff7 Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents: 22
diff changeset
205 paint_linear_stops(fill3, 3, fill3_stops);
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
206 rect = rdman_shape_rect_new(&rdman, 50, 50, 100, 100, 20, 20);
35
581a03196093 Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents: 33
diff changeset
207 rdman_paint_fill(&rdman, fill3, rect);
581a03196093 Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents: 33
diff changeset
208 rdman_add_shape(&rdman, (shape_t *)rect, rdman.root_coord);
23
56f592f56ff7 Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents: 22
diff changeset
209
15
c2ce186a5c37 X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents: 13
diff changeset
210 rdman_redraw_all(&rdman);
c2ce186a5c37 X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents: 13
diff changeset
211
16
e17e12b112c4 A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 15
diff changeset
212 XFlush(display);
e17e12b112c4 A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents: 15
diff changeset
213
1021
4f4abce1b5df Move X_main.c to mb_timer_man_t
Thinker K.F. Li <thinker@codemud.net>
parents: 863
diff changeset
214 timer_man = mb_timer_man_new(&tman_timer_factory);
4f4abce1b5df Move X_main.c to mb_timer_man_t
Thinker K.F. Li <thinker@codemud.net>
parents: 863
diff changeset
215 if(timer_man) {
58
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
216 /* Prepare an animation program. */
863
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
217 progm = mb_progm_new(30, &rdman);
822
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 471
diff changeset
218
53
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
219 MB_TIMEVAL_SET(&start, 0, 0);
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
220 MB_TIMEVAL_SET(&playing, 1, 0);
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
221 word = mb_progm_next_word(progm, &start, &playing);
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
222
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
223 act = mb_shift_new(50, 50, coord1, word);
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
224 act = mb_shift_new(-50, 50, coord2, word);
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
225
42
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
226 MB_TIMEVAL_SET(&start, 1, 0);
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
227 MB_TIMEVAL_SET(&playing, 2, 0);
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
228 word = mb_progm_next_word(progm, &start, &playing);
53
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
229
47
f3818d996f4f change interface of creating a animation action
Thinker K.F. Li <thinker@branda.to>
parents: 44
diff changeset
230 act = mb_shift_new(0, 20, coord1, word);
48
bdf711cbf0fb Use absolute time to dispatch animation actions.
Thinker K.F. Li <thinker@branda.to>
parents: 47
diff changeset
231 act = mb_shift_new(0, -20, coord2, word);
57
ab028c9f0930 Ability to hidden shapes and action of visibility.
Thinker K.F. Li <thinker@branda.to>
parents: 56
diff changeset
232 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
822
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 471
diff changeset
233
44
7d9af44f095b Demo of concurrent words
Thinker K.F. Li <thinker@branda.to>
parents: 42
diff changeset
234 MB_TIMEVAL_SET(&start, 3, 0);
7d9af44f095b Demo of concurrent words
Thinker K.F. Li <thinker@branda.to>
parents: 42
diff changeset
235 MB_TIMEVAL_SET(&playing, 2, 0);
42
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
236 word = mb_progm_next_word(progm, &start, &playing);
53
ffed18510d55 Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents: 52
diff changeset
237
47
f3818d996f4f change interface of creating a animation action
Thinker K.F. Li <thinker@branda.to>
parents: 44
diff changeset
238 act = mb_shift_new(0, -20, coord1, word);
48
bdf711cbf0fb Use absolute time to dispatch animation actions.
Thinker K.F. Li <thinker@branda.to>
parents: 47
diff changeset
239 act = mb_shift_new(0, 20, coord2, word);
52
59a295651480 Add action mb_chgcolor_t to change color of paints.
Thinker K.F. Li <thinker@branda.to>
parents: 49
diff changeset
240 act = mb_chgcolor_new(0, 0, 1, 0.5, fill1, word);
59a295651480 Add action mb_chgcolor_t to change color of paints.
Thinker K.F. Li <thinker@branda.to>
parents: 49
diff changeset
241 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
57
ab028c9f0930 Ability to hidden shapes and action of visibility.
Thinker K.F. Li <thinker@branda.to>
parents: 56
diff changeset
242 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
822
586e50f82c1f Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents: 471
diff changeset
243
863
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
244 MB_TIMEVAL_SET(&start, 5, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
245 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
246 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
247
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
248 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
249 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
250 act = mb_chgcolor_new(1, 0, 0, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
251 act = mb_chgcolor_new(0, 0, 1, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
252 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
253
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
254 MB_TIMEVAL_SET(&start, 7, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
255 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
256 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
257
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
258 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
259 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
260 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
261 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
262 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
263
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
264 MB_TIMEVAL_SET(&start, 9, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
265 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
266 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
267
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
268 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
269 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
270 act = mb_chgcolor_new(0, 0, 1, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
271 act = mb_chgcolor_new(1, 0, 0, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
272 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
273
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
274 MB_TIMEVAL_SET(&start, 11, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
275 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
276 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
277
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
278 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
279 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
280 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
281 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
282 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
283
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
284 MB_TIMEVAL_SET(&start, 13, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
285 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
286 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
287
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
288 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
289 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
290 act = mb_chgcolor_new(0, 0, 1, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
291 act = mb_chgcolor_new(1, 0, 0, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
292 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
293
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
294 MB_TIMEVAL_SET(&start, 15, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
295 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
296 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
297
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
298 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
299 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
300 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
301 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
302 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
303
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
304 MB_TIMEVAL_SET(&start, 17, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
305 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
306 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
307
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
308 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
309 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
310 act = mb_chgcolor_new(0, 0, 1, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
311 act = mb_chgcolor_new(1, 0, 0, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
312 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
313
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
314 MB_TIMEVAL_SET(&start, 19, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
315 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
316 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
317
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
318 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
319 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
320 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
321 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
322 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
323
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
324 MB_TIMEVAL_SET(&start, 21, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
325 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
326 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
327
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
328 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
329 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
330 act = mb_chgcolor_new(0, 0, 1, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
331 act = mb_chgcolor_new(1, 0, 0, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
332 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
333
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
334 MB_TIMEVAL_SET(&start, 23, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
335 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
336 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
337
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
338 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
339 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
340 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
341 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
342 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
343
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
344 MB_TIMEVAL_SET(&start, 25, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
345 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
346 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
347
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
348 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
349 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
350 act = mb_chgcolor_new(0, 0, 1, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
351 act = mb_chgcolor_new(1, 0, 0, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
352 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
353
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
354 MB_TIMEVAL_SET(&start, 27, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
355 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
356 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
357
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
358 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
359 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
360 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
361 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
362 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
363
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
364 MB_TIMEVAL_SET(&start, 29, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
365 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
366 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
367
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
368 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
369 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
370 act = mb_chgcolor_new(0, 0, 1, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
371 act = mb_chgcolor_new(1, 0, 0, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
372 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
373
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
374 MB_TIMEVAL_SET(&start, 31, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
375 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
376 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
377
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
378 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
379 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
380 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
381 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
382 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
383
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
384 MB_TIMEVAL_SET(&start, 33, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
385 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
386 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
387
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
388 act = mb_shift_new(0, 20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
389 act = mb_shift_new(0, -20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
390 act = mb_chgcolor_new(0, 0, 1, 1, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
391 act = mb_chgcolor_new(1, 0, 0, 1, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
392 act = mb_visibility_new(VIS_HIDDEN, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
393
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
394 MB_TIMEVAL_SET(&start, 35, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
395 MB_TIMEVAL_SET(&playing, 2, 0);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
396 word = mb_progm_next_word(progm, &start, &playing);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
397
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
398 act = mb_shift_new(0, -20, coord1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
399 act = mb_shift_new(0, 20, coord2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
400 act = mb_chgcolor_new(0, 1, 0, 0.5, fill1, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
401 act = mb_chgcolor_new(1, 0, 0, 0.5, fill2, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
402 act = mb_visibility_new(VIS_VISIBLE, coord3, word);
e6c107b2e271 Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents: 822
diff changeset
403
58
Thinker K.F. Li <thinker@branda.to>
parents: 57
diff changeset
404 /* Start playing the program. */
42
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
405 gettimeofday(&tv, NULL);
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
406 MB_TIMEVAL_SET(&mbtv, tv.tv_sec, tv.tv_usec);
1021
4f4abce1b5df Move X_main.c to mb_timer_man_t
Thinker K.F. Li <thinker@codemud.net>
parents: 863
diff changeset
407 mb_progm_start(progm, timer_man, &mbtv);
42
e3295c07faa9 mb_shift is work
Thinker K.F. Li <thinker@branda.to>
parents: 41
diff changeset
408
1024
63f2f1daf5d3 X_main.c works with new backend definition
Thinker K.F. Li <thinker@codemud.net>
parents: 1021
diff changeset
409 handle_connection(display, timer_man, &rdman, w, h);
41
400b4b5db0dc Working on animation
Thinker K.F. Li <thinker@branda.to>
parents: 39
diff changeset
410
57
ab028c9f0930 Ability to hidden shapes and action of visibility.
Thinker K.F. Li <thinker@branda.to>
parents: 56
diff changeset
411 mb_progm_free(progm);
1021
4f4abce1b5df Move X_main.c to mb_timer_man_t
Thinker K.F. Li <thinker@codemud.net>
parents: 863
diff changeset
412 mb_timer_man_free(&tman_timer_factory, timer_man);
39
db2aa914e14b timer for animation
Thinker K.F. Li <thinker@branda.to>
parents: 37
diff changeset
413 }
30
e06a4a667ce2 Accept mouse/pointer event and hint the shape that the pointer is over.
Thinker K.F. Li <thinker@branda.to>
parents: 27
diff changeset
414
159
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
415 rdman_paint_free(&rdman, fill1);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
416 rdman_paint_free(&rdman, fill2);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
417 rdman_paint_free(&rdman, stroke);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
418 rdman_paint_free(&rdman, text_stroke);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
419 rdman_paint_free(&rdman, text_fill);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
420 rdman_shape_free(&rdman, path1);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
421 rdman_shape_free(&rdman, path2);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
422 rdman_shape_free(&rdman, rect);
b90abd31a281 Postponse free of coords, shapes, and paints when the rdman is dirty.
Thinker K.F. Li <thinker@branda.to>
parents: 77
diff changeset
423 rdman_shape_free(&rdman, text);
15
c2ce186a5c37 X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents: 13
diff changeset
424 redraw_man_destroy(&rdman);
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
425 mbe_destroy(tmpcr);
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
426 mbe_surface_destroy(tmpsuf);
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents: 3
diff changeset
427 }
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents: 3
diff changeset
428
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
429 void drawing(mbe_surface_t *surface, int w, int h) {
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
430 mbe_t *cr;
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
431
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
432 cr = mbe_create(surface);
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
433 mbe_set_source_rgb(cr, 0, 0, 0);
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
434 mbe_paint(cr);
5
9c331ec9e210 SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents: 3
diff changeset
435 draw_path(cr, w, h);
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
436 mbe_destroy(cr);
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
437 }
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
438
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
439 int
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
440 main(int argc, char * const argv[]) {
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
441 Window root;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
442 Visual *visual;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
443 int screen;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
444 XSetWindowAttributes wattr;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
445 int depth;
448
16116d84bc5e Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents: 278
diff changeset
446 mbe_surface_t *surface;
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
447 int w, h;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
448 int x, y;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
449 int r;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
450
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
451 display = XOpenDisplay(":0.0");
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
452 if(display == NULL)
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
453 printf("XOpenDisplay\n");
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
454 screen = DefaultScreen(display);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
455 root = DefaultRootWindow(display);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
456 visual = DefaultVisual(display, screen);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
457 depth = DefaultDepth(display, screen);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
458 wattr.override_redirect = False;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
459 x = 10;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
460 y = 10;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
461 w = 200;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
462 h = 200;
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
463 win = XCreateWindow(display, root,
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
464 x, y,
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
465 w, h,
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
466 1, depth, InputOutput, visual,
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
467 CWOverrideRedirect, &wattr);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
468 r = XMapWindow(display, win);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
469
1073
d09f603438d8 Merge the work of improvement for graphic engine of openvg branch
Thinker K.F. Li <thinker@codemud.net>
parents: 1024
diff changeset
470 surface = mbe_win_surface_create(display, win, visual, w, h);
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
471 if(surface == NULL)
1073
d09f603438d8 Merge the work of improvement for graphic engine of openvg branch
Thinker K.F. Li <thinker@codemud.net>
parents: 1024
diff changeset
472 printf("mbe_win_surface_create\n");
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
473
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
474 drawing(surface, w, h);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
475
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
476 XFlush(display);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
477 sleep(10);
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
478
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
479 XCloseDisplay(display);
10
7cfecdce94cc Remove warning messages
Thinker K.F. Li <thinker@branda.to>
parents: 9
diff changeset
480 return 0;
3
164162781a7a Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff changeset
481 }