Mercurial > MadButterfly
annotate src/X_main.c @ 880:ac3e8492ad74 abs_n_rel_center
Formalize path data for MadButterfly.
Inkscape and other editors would omit 'l' or 'L' after 'm' or 'M'.
MadButterfly can not handle it, now. So, we work around it at SVG
parser.
author | Thinker K.F. Li <thinker@codemud.net> |
---|---|
date | Sat, 25 Sep 2010 18:46:37 +0800 |
parents | e6c107b2e271 |
children | 4f4abce1b5df |
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 | 5 #include <sys/time.h> |
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" |
39 | 18 |
19 #define OK 0 | |
20 #define ERR -1 | |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
3
diff
changeset
|
21 |
16
e17e12b112c4
A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents:
15
diff
changeset
|
22 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
|
23 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
|
24 |
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 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
|
26 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
|
27 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
|
28 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
|
29 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
|
30 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
|
31 } |
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 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
|
33 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
|
34 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
|
35 } |
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 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
|
38 } |
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 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
|
41 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
|
42 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
|
43 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
|
44 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
|
45 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
|
46 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
|
47 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
|
48 |
39 | 49 while(XEventsQueued(display, QueuedAfterReading) > 0) { |
50 r = XNextEvent(display, &evt); | |
51 if(r == -1) | |
52 break; | |
53 | |
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
|
54 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
|
55 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
|
56 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
|
57 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
|
58 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
|
59 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
|
60 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
|
61 break; |
37 | 62 case Expose: |
77 | 63 rdman_redraw_area(rdman, evt.xexpose.x, evt.xexpose.y, |
64 evt.xexpose.width, evt.xexpose.height); | |
37 | 65 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
|
66 } |
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 } |
53
ffed18510d55
Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents:
52
diff
changeset
|
68 rdman_redraw_changed(rdman); |
39 | 69 XFlush(display); |
70 } | |
71 | |
72 void handle_connection(Display *display, mb_tman_t *tman, | |
73 redraw_man_t *rdman, int w, int h) { | |
74 int xcon; | |
75 fd_set rds; | |
76 int nfds; | |
77 struct timeval tmo; | |
53
ffed18510d55
Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents:
52
diff
changeset
|
78 mb_timeval_t mb_tmo, next_mb_tmo; |
54 | 79 int r; |
39 | 80 |
81 XSelectInput(display, win, PointerMotionMask | ExposureMask); | |
82 XFlush(display); | |
83 | |
84 xcon = XConnectionNumber(display); | |
85 nfds = xcon + 1; | |
49
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
86 |
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
87 r = gettimeofday(&tmo, NULL); |
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
88 if(r == -1) { |
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
89 perror("gettimeofday"); |
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
90 return; |
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
91 } |
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
92 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
|
93 |
39 | 94 while(1) { |
95 FD_ZERO(&rds); | |
96 FD_SET(xcon, &rds); | |
97 | |
53
ffed18510d55
Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents:
52
diff
changeset
|
98 r = mb_tman_next_timeout(tman, &mb_tmo, &next_mb_tmo); |
39 | 99 if(r != OK) |
100 r = select(nfds, &rds, NULL, NULL, NULL); | |
41 | 101 else { |
53
ffed18510d55
Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents:
52
diff
changeset
|
102 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
|
103 tmo.tv_usec = MB_TIMEVAL_USEC(&next_mb_tmo); |
39 | 104 r = select(nfds, &rds, NULL, NULL, &tmo); |
41 | 105 } |
39 | 106 |
107 if(r == -1) { | |
108 perror("select"); | |
109 return; | |
110 } | |
49
6a3726fa7aad
Reduce times of invoking gettimeofday()
Thinker K.F. Li <thinker@branda.to>
parents:
48
diff
changeset
|
111 |
54 | 112 if(r == 0) { |
113 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
|
114 |
41 | 115 mb_tman_handle_timeout(tman, &mb_tmo); |
42 | 116 rdman_redraw_changed(rdman); |
39 | 117 XFlush(display); |
118 } else if(FD_ISSET(xcon, &rds)) { | |
119 event_interaction(display, rdman, w, h); | |
120 } | |
121 } | |
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
|
122 } |
16
e17e12b112c4
A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents:
15
diff
changeset
|
123 |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
124 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
|
125 mbe_t *tmpcr; |
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
126 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
|
127 mbe_pattern_t *tmpptn; |
12 | 128 redraw_man_t rdman; |
35
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
129 shape_t *path1, *path2, *rect; |
27 | 130 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
|
131 paint_t *fill1, *fill2, *fill3; |
55 | 132 paint_t *text_fill; |
133 grad_stop_t text_stops[2]; | |
27 | 134 paint_t *stroke, *text_stroke; |
135 shape_t *text; | |
23
56f592f56ff7
Fix bug and add linear gradient paint.
Thinker K.F. Li <thinker@branda.to>
parents:
22
diff
changeset
|
136 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
|
137 mbe_font_face_t *face; |
39 | 138 struct timeval tv; |
139 mb_tman_t *tman; | |
42 | 140 mb_timeval_t mbtv, start, playing; |
141 mb_progm_t *progm; | |
142 mb_word_t *word; | |
143 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
|
144 PangoAttrList *attrs = pango_attr_list_new(); |
12 | 145 |
450
a417fd980228
Replace cairo_format_t with mb_img_fmt_t.
Thinker K.F. Li <thinker@branda.to>
parents:
448
diff
changeset
|
146 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
|
147 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
|
148 tmpcr = mbe_create(tmpsuf); |
27 | 149 |
471
e98ae1407ca2
Remove mbe_set_source_surface() from graphic engine.
Thinker K.F. Li <thinker@branda.to>
parents:
451
diff
changeset
|
150 mbe_set_source(cr, tmpptn); |
24
e598bc809c0f
No more flash when animation.
Thinker K.F. Li <thinker@branda.to>
parents:
23
diff
changeset
|
151 redraw_man_init(&rdman, tmpcr, cr); |
19 | 152 coord1 = rdman_coord_new(&rdman, rdman.root_coord); |
153 coord2 = rdman_coord_new(&rdman, rdman.root_coord); | |
27 | 154 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
|
155 |
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
|
156 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
|
157 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
|
158 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
|
159 text_stroke = rdman_paint_color_new(&rdman, 0.5, 0.5, 0.5, 1); |
27 | 160 |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
161 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
|
162 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
|
163 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
|
164 text_fill = rdman_paint_radial_new(&rdman, 100, h / 4, 70); |
55 | 165 grad_stop_init(text_stops, 0, 0.2, 0.9, 0.2, 1); |
166 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
|
167 paint_radial_stops(text_fill, 2, text_stops); |
27 | 168 rdman_paint_stroke(&rdman, text_stroke, text); |
169 text->stroke_width = 0.5; | |
55 | 170 rdman_paint_fill(&rdman, text_fill, text); |
27 | 171 rdman_add_shape(&rdman, text, coord3); |
172 | |
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
|
173 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 | 174 rdman_paint_fill(&rdman, fill1, path1); |
22 | 175 rdman_paint_stroke(&rdman, stroke, path1); |
19 | 176 coord1->matrix[0] = 0.8; |
177 coord1->matrix[1] = 0; | |
178 coord1->matrix[2] = 20; | |
179 coord1->matrix[4] = 0.8; | |
180 coord1->matrix[5] = 20; | |
27 | 181 |
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
|
182 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 | 183 rdman_paint_fill(&rdman, fill2, path2); |
22 | 184 rdman_paint_stroke(&rdman, stroke, path2); |
19 | 185 coord2->matrix[0] = -0.8; |
186 coord2->matrix[1] = 0; | |
20
74d3d5dc9aaa
rename XXX_draw() to XXX_fill()
Thinker K.F. Li <thinker@branda.to>
parents:
19
diff
changeset
|
187 coord2->matrix[2] = 180; |
19 | 188 coord2->matrix[4] = 0.8; |
189 coord2->matrix[5] = 20; | |
27 | 190 |
19 | 191 rdman_coord_changed(&rdman, coord1); |
192 rdman_coord_changed(&rdman, coord2); | |
193 rdman_add_shape(&rdman, (shape_t *)path1, coord1); | |
194 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
|
195 |
822
586e50f82c1f
Unify coding style tag for emacs and vim.
Shih-Yuan Lee (FourDollars) <fourdollars@gmail.com>
parents:
471
diff
changeset
|
196 |
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
|
197 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
|
198 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
|
199 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
|
200 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
|
201 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
|
202 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
|
203 rdman_paint_fill(&rdman, fill3, rect); |
581a03196093
Support rectangle tag of SVG.
Thinker K.F. Li <thinker@branda.to>
parents:
33
diff
changeset
|
204 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
|
205 |
15
c2ce186a5c37
X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents:
13
diff
changeset
|
206 rdman_redraw_all(&rdman); |
c2ce186a5c37
X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents:
13
diff
changeset
|
207 |
16
e17e12b112c4
A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents:
15
diff
changeset
|
208 XFlush(display); |
e17e12b112c4
A simple animation using rdman_redraw_changed().
Thinker K.F. Li <thinker@branda.to>
parents:
15
diff
changeset
|
209 |
39 | 210 tman = mb_tman_new(); |
211 if(tman) { | |
58 | 212 /* 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
|
213 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
|
214 |
53
ffed18510d55
Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents:
52
diff
changeset
|
215 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
|
216 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
|
217 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
|
218 |
ffed18510d55
Use animate feacilities to demo all animation.
Thinker K.F. Li <thinker@branda.to>
parents:
52
diff
changeset
|
219 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
|
220 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
|
221 |
42 | 222 MB_TIMEVAL_SET(&start, 1, 0); |
223 MB_TIMEVAL_SET(&playing, 2, 0); | |
224 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
|
225 |
47
f3818d996f4f
change interface of creating a animation action
Thinker K.F. Li <thinker@branda.to>
parents:
44
diff
changeset
|
226 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
|
227 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
|
228 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
|
229 |
44
7d9af44f095b
Demo of concurrent words
Thinker K.F. Li <thinker@branda.to>
parents:
42
diff
changeset
|
230 MB_TIMEVAL_SET(&start, 3, 0); |
7d9af44f095b
Demo of concurrent words
Thinker K.F. Li <thinker@branda.to>
parents:
42
diff
changeset
|
231 MB_TIMEVAL_SET(&playing, 2, 0); |
42 | 232 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
|
233 |
47
f3818d996f4f
change interface of creating a animation action
Thinker K.F. Li <thinker@branda.to>
parents:
44
diff
changeset
|
234 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
|
235 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
|
236 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
|
237 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
|
238 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
|
239 |
863
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
240 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
|
241 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
|
242 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
|
243 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
244 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
|
245 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
|
246 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
|
247 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
|
248 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
|
249 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
250 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
|
251 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
|
252 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
|
253 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
254 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
|
255 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
|
256 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
|
257 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
|
258 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
|
259 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
260 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
|
261 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
|
262 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
|
263 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
264 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
|
265 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
|
266 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
|
267 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
|
268 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
|
269 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
270 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
|
271 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
|
272 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
|
273 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
274 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
|
275 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
|
276 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
|
277 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
|
278 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
|
279 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
280 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
|
281 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
|
282 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
|
283 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
284 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
|
285 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
|
286 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
|
287 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
|
288 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
|
289 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
290 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
|
291 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
|
292 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
|
293 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
294 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
|
295 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
|
296 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
|
297 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
|
298 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
|
299 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
300 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
|
301 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
|
302 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
|
303 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
304 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
|
305 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
|
306 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
|
307 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
|
308 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
|
309 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
310 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
|
311 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
|
312 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
|
313 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
314 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
|
315 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
|
316 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
|
317 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
|
318 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
|
319 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
320 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
|
321 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
|
322 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
|
323 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
324 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
|
325 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
|
326 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
|
327 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
|
328 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
|
329 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
330 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
|
331 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
|
332 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
|
333 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
334 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
|
335 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
|
336 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
|
337 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
|
338 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
|
339 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
340 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
|
341 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
|
342 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
|
343 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
344 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
|
345 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
|
346 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
|
347 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
|
348 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
|
349 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
350 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
|
351 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
|
352 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
|
353 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
354 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
|
355 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
|
356 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
|
357 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
|
358 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
|
359 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
360 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
|
361 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
|
362 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
|
363 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
364 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
|
365 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
|
366 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
|
367 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
|
368 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
|
369 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
370 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
|
371 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
|
372 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
|
373 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
374 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
|
375 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
|
376 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
|
377 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
|
378 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
|
379 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
380 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
|
381 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
|
382 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
|
383 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
384 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
|
385 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
|
386 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
|
387 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
|
388 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
|
389 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
390 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
|
391 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
|
392 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
|
393 |
e6c107b2e271
Do more works in X_main.c for profiling
Thinker K.F. Li <thinker@codemud.net>
parents:
822
diff
changeset
|
394 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
|
395 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
|
396 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
|
397 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
|
398 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
|
399 |
58 | 400 /* Start playing the program. */ |
42 | 401 gettimeofday(&tv, NULL); |
402 MB_TIMEVAL_SET(&mbtv, tv.tv_sec, tv.tv_usec); | |
403 mb_progm_start(progm, tman, &mbtv); | |
404 | |
39 | 405 handle_connection(display, tman, &rdman, w, h); |
41 | 406 |
57
ab028c9f0930
Ability to hidden shapes and action of visibility.
Thinker K.F. Li <thinker@branda.to>
parents:
56
diff
changeset
|
407 mb_progm_free(progm); |
39 | 408 mb_tman_free(tman); |
409 } | |
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
|
410 |
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
|
411 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
|
412 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
|
413 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
|
414 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
|
415 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
|
416 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
|
417 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
|
418 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
|
419 rdman_shape_free(&rdman, text); |
15
c2ce186a5c37
X_main uses rdman_redraw_all()
Thinker K.F. Li <thinker@branda.to>
parents:
13
diff
changeset
|
420 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
|
421 mbe_destroy(tmpcr); |
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
422 mbe_surface_destroy(tmpsuf); |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
3
diff
changeset
|
423 } |
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
3
diff
changeset
|
424 |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
425 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
|
426 mbe_t *cr; |
3
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
427 |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
428 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
|
429 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
|
430 mbe_paint(cr); |
5
9c331ec9e210
SVG path is partially supported
Thinker K.F. Li <thinker@branda.to>
parents:
3
diff
changeset
|
431 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
|
432 mbe_destroy(cr); |
3
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
433 } |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
434 |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
435 int |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
436 main(int argc, char * const argv[]) { |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
437 Window root; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
438 Visual *visual; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
439 int screen; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
440 XSetWindowAttributes wattr; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
441 int depth; |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
442 mbe_surface_t *surface; |
3
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
443 int w, h; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
444 int x, y; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
445 int r; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
446 |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
447 display = XOpenDisplay(":0.0"); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
448 if(display == NULL) |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
449 printf("XOpenDisplay\n"); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
450 screen = DefaultScreen(display); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
451 root = DefaultRootWindow(display); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
452 visual = DefaultVisual(display, screen); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
453 depth = DefaultDepth(display, screen); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
454 wattr.override_redirect = False; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
455 x = 10; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
456 y = 10; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
457 w = 200; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
458 h = 200; |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
459 win = XCreateWindow(display, root, |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
460 x, y, |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
461 w, h, |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
462 1, depth, InputOutput, visual, |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
463 CWOverrideRedirect, &wattr); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
464 r = XMapWindow(display, win); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
465 |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
466 surface = mbe_xlib_surface_create(display, win, visual, w, h); |
3
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
467 if(surface == NULL) |
448
16116d84bc5e
Replace Cairo with a abstract layer mb_graph_engine.
Thinker K.F. Li <thinker@branda.to>
parents:
278
diff
changeset
|
468 printf("mbe_xlib_surface_create\n"); |
3
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
469 |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
470 drawing(surface, w, h); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
471 |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
472 XFlush(display); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
473 sleep(10); |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
474 |
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
475 XCloseDisplay(display); |
10 | 476 return 0; |
3
164162781a7a
Test cairo with Xlib surface
Thinker K.F. Li <thinker@branda.to>
parents:
diff
changeset
|
477 } |