8 #define MWINCLUDECOLORS
9 #include <microwin/nano-X.h>
14 time_t start_time, end_time;
24 printf("start=%lu, end=%lu, time=%lu\n",
25 start_time, end_time, end_time-start_time);
37 unsigned long fgColor, bgColor;
39 XPoint points[NUM_POINTS];
42 GR_WINDOW_ID src_pixmap;
43 unsigned char* src_pixmap_buf[320*240*2];
45 GR_POINT points[NUM_POINTS];
48 int c, c1, count=4500;
49 int x, y, x1, y1, x2, y2;
52 if(!(display=XOpenDisplay(""))) {
53 printf("Cannot connect to X.\n");
55 screenNum = DefaultScreen(display);
56 colormap = DefaultColormap(display, screenNum);
58 bgColor = BlackPixel(display, screenNum);
59 fgColor = WhitePixel(display, screenNum);
60 window = XCreateSimpleWindow(display, RootWindow(display, screenNum),
63 src_pixmap = XCreatePixmap(display, window, 320, 240, 16);
64 XMapRaised(display, window);
65 gcValues.background = bgColor;
66 gcValues.foreground = fgColor;
67 gcValues.line_width = 1;
68 gcValues.line_style = LineSolid;
69 gcValues.fill_style = FillSolid;
70 gcValues.fill_rule = WindingRule;
71 gcValues.arc_mode = ArcPieSlice;
72 gc = XCreateGC(display, window,
73 GCForeground | GCBackground | GCLineWidth | GCLineStyle |
79 window = GrNewWindow(GR_ROOT_WINDOW_ID, 0, 0, 639, 479, 0, BLACK, BLUE);
80 src_pixmap = GrNewPixmap(640, 480, src_pixmap_buf);
83 GrSetGCForeground(gc, WHITE);
84 GrSetGCBackground(gc, BLACK);
85 GrSetGCMode(gc, GR_MODE_COPY);
93 ////////////////////////////////////////////////
94 printf("Horizontal Line(XDrawLine)\n");
96 for(c=0; c<count*20; c++)
100 XDrawLine(display, window, gc, 0, y1, 639, y1);
103 GrLine(window, gc, 0, y1, 639, y1);
109 XClearWindow(display, window);
111 GrClearWindow(window, GR_TRUE);
115 /////////////////////////////////////////////////
116 printf("Vertical Line(XDrawLine)\n");
118 for(c=0; c<count*19; c++)
122 XDrawLine(display, window, gc, x1, 0, x1, 479);
125 GrLine(window, gc, x1, 0, x1, 479);
131 XClearWindow(display, window);
133 GrClearWindow(window, GR_TRUE);
137 /////////////////////////////////////////////////
138 printf("General Line(XDrawLine)\n");
140 for(c=0; c<count*22; c++)
147 XDrawLine(display, window, gc, x1, y1, x2, y2);
150 GrLine(window, gc, x1, y1, x2, y2);
156 XClearWindow(display, window);
158 GrClearWindow(window, GR_TRUE);
162 //////////////////////////////////////////////////
165 for(c=0; c<count*25; c++)
170 XDrawPoint(display, window, gc, x1, y1);
173 GrPoint(window, gc, x1, y1);
179 XClearWindow(display, window);
181 GrClearWindow(window, GR_TRUE);
185 //////////////////////////////////////////////////
186 printf("XRectangle\n");
188 for(c=0; c<count*20; c++)
192 x2=random()%(639-x1)+1;
193 y2=random()%(479-y1)+1;
195 XDrawRectangle(display, window, gc, x1, y1, x2, y2);
198 GrRect(window, gc, x1, y1, x2, y2);
204 XClearWindow(display, window);
206 GrClearWindow(window, GR_TRUE);
210 //////////////////////////////////////////////////
211 printf("XFillRectangle\n");
213 for(c=0; c<count*18; c++)
217 x2=random()%(639-x1)+1;
218 y2=random()%(479-y1)+1;
220 XFillRectangle(display, window, gc, x1, y1, x2, y2);
223 GrFillRect(window, gc, x1, y1, x2, y2);
230 XClearWindow(display, window);
232 GrClearWindow(window, GR_TRUE);
236 //////////////////////////////////////////////////
237 printf("XFillPolygon\n");
239 for(c=0; c<count; c++)
241 for(c1=0; c1<NUM_POINTS; c1++)
243 points[c1].x = random()%640;
244 points[c1].y = random()%480;
247 XFillPolygon(display, window, gc, points, NUM_POINTS,
251 GrFillPoly(window, gc, NUM_POINTS, points);
257 XClearWindow(display, window);
259 GrClearWindow(window, GR_TRUE);
264 /////////////////////////////////////////////////
265 printf("XCopyArea\n");
267 for(c=0; c<count*5; c++)
275 XCopyArea(display, src_pixmap, window, gc,
276 0, 0, x2, y2, x1, y1);
279 GrCopyArea(window, gc, x1, y1, x2 ,y2, src_pixmap,
287 XDestroyWindow(display, window);