-
Notifications
You must be signed in to change notification settings - Fork 0
/
libex_canvas.h
executable file
·533 lines (434 loc) · 31.9 KB
/
libex_canvas.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
/* -------------------------------------------------------------------------- */
/* (c) ali@balarabe.com [libex_canvas.h] */
/* -------------------------------------------------------------------------- */
#if !defined INCLUDED_LIBEX_CANVAS_H
#define INCLUDED_LIBEX_CANVAS_H
#if LX_PLATFORM_WIN32
#include "libex_win32.h"
#endif
#include "libex_canvas.h"
#include "libex_color.h"
/* -------------------------------------------------------------------------- */
LX_NAMESPACE(lx_c)
/* -------------------------------------------------------------------------- */
/* External Types */
typedef enum _lx_shading_enum {
LX_SHADE_SOLID = 0, /* lx_shading_enum * 0 0 0 0 */
LX_SHADE_VERTICAL_SMOOTH = 1, /* lx_shading_enum * 0 0 0 1 */
LX_SHADE_VERTICAL_GLOSSY = 2, /* lx_shading_enum * 0 0 1 0 */
LX_SHADE_HORIZONTAL_SMOOTH = 4, /* lx_shading_enum * 0 1 0 0 */
LX_SHADE_HORIZONTAL_GLOSSY = 8 /* lx_shading_enum * 1 0 0 0 */
}
lx_shading_enum; /*enum*/
typedef struct lx_CanvasFont {
lx_char_t name[32]; /* lx_CanvasFont */
int size; /* lx_CanvasFont */
lx_bool bold; /* lx_CanvasFont */
lx_bool italic; /* lx_CanvasFont */
lx_bool underline; /* lx_CanvasFont */
lx_bool strikeout; /* lx_CanvasFont */
int angle; /* lx_CanvasFont */
}
lx_CanvasFont;
void lx_Canvas_fontSet( /*M*/
lx_CanvasFont* object_, /*-*/
const lx_CanvasFont* font_ ); /*-*/
void lx_Canvas_fontSet7( /*M*/
lx_CanvasFont* object_, /*-*/
lx_chars_t font_name_, /*-*/
const int font_size_, /*-*/
const lx_bool bold_, /*-*/
const lx_bool italic_, /*-*/
const lx_bool underline_, /*-*/
const lx_bool strikeout_, /*-*/
const int angle_ ); /*-*/
#if LX_PLATFORM_WIN32
HFONT_win lx_Canvas_fontHfont( lx_CanvasFont* object_ ); /*M*/
#endif
/* -------------------------------------------------------------------------- */
typedef struct lx_poly_point_t {
lx_pixel_t x; /* lx_poly_point_t */
lx_pixel_t y; /* lx_poly_point_t */
}
lx_poly_point_t;
typedef struct lx_poly_t {
lx_char_t id[32]; /* lx_poly_t */
lx_color_t color; /* lx_poly_t */
lx_poly_point_t* points; /* lx_poly_t */
}
lx_poly_t;
int lx_Poly_count( const lx_poly_t* object_ ); /*P*/
typedef struct lx_rect_t { /* TODO: what is the difference with Rect? */
lx_pixel_t x; /* lx_rect_t */
lx_pixel_t y; /* lx_rect_t */
lx_pixel_t width; /* lx_rect_t */
lx_pixel_t height; /* lx_rect_t */
}
lx_rect_t;
LX_PUBLIC void lx_Rect_clear( lx_rect_t* object_ ); /*M*/
LX_PUBLIC void lx_Rect_setSize( /*M*/
lx_rect_t* object_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_ ); /*-*/
LX_PUBLIC lx_pixel_t lx_Rect_x2( const lx_rect_t* object_ ); /*M*/
LX_PUBLIC lx_pixel_t lx_Rect_y2( const lx_rect_t* object_ ); /*M*/
/* -------------------------------------------------------------------------- */
typedef struct lx_canvas_t {
lx_rect_t area; /* lx_canvas_t */
lx_pixel_t line_width; /* lx_canvas_t */
/* width of lines in pix. */
lx_color_t color; /* lx_canvas_t */
/* Current drawing color */
lx_CanvasFont font; /* lx_canvas_t */
lx_bool attached_canvas; /* lx_canvas_t */
lx_bool is_clipped; /* lx_canvas_t */
lx_bool is_offscreen; /* lx_canvas_t */
lx_bool memory_prepared; /* lx_canvas_t */
#if LX_PLATFORM_WIN32
int old_map_mode; /* lx_canvas_t */
int old_bk_mode; /* lx_canvas_t */
HPEN_win old_pen; /* lx_canvas_t */
HDC_win main_dc; /* lx_canvas_t */
/* Direct device context */
HDC_win mem_dc; /* lx_canvas_t */
/* Memory device context */
HDC_win hdc; /* lx_canvas_t */
/* Active device context */
HRGN_win old_clip_region; /* lx_canvas_t */
HBITMAP_win mem_bitmap; /* lx_canvas_t */
HBITMAP_win old_mem_bitmap; /* lx_canvas_t */
#endif /* LX_PLATFORM_WIN32 */
}
lx_canvas_t;
/* -------------------------------------------------------------------------- */
/* Constructors / Destructor: */
/* Default Constructor */
LX_PUBLIC lx_canvas_t lx_Canvas_init( void ); /*C*/
/* Copy Constructor */
LX_PUBLIC lx_canvas_t lx_Canvas_initCopy( /*C*/
const lx_canvas_t* canvas_ ); /*-*/
/* Copy Constructor */
LX_PUBLIC lx_canvas_t lx_Canvas_initCopyAndPosition( /*C*/
const lx_canvas_t* canvas_, /*-*/
const lx_rect_t rectangle_ ); /*-*/
#if LX_PLATFORM_WIN32
/* Constructor */
LX_PUBLIC lx_canvas_t lx_Canvas_fromDC( const HDC_win hdc_ ); /*C*/
#endif /* LX_PLATFORM_WIN32 */
/* Destructor */
LX_PUBLIC void lx_Canvas_free( lx_canvas_t* object_ ); /*D*/
/* -------------------------------------------------------------------------- */
/* Operators: */
LX_PUBLIC lx_canvas_t* lx_Canvas_opAssign( /*O*/
lx_canvas_t* object_, /*-*/
const lx_canvas_t* copy_from_ ); /*-*/
/* Methods: Public */
LX_PUBLIC void lx_Canvas_set( /*M*/
lx_canvas_t* object_, /*-*/
const lx_canvas_t* canvas_ ); /*-*/
LX_PUBLIC lx_canvas_t* lx_Canvas_screen( void ); /*M*/
LX_PUBLIC void lx_Canvas_attachTo( /*M*/
lx_canvas_t* object_, /*-*/
const lx_canvas_t* canvas_, /*-*/
const lx_bool resize_ ); /*-*/
#if LX_PLATFORM_WIN32
LX_PUBLIC void lx_Canvas_attachToDC( /*M*/
lx_canvas_t* object_, /*-*/
const HDC_win hdc_, /*-*/
const lx_bool resize_ ); /*-*/
#endif
LX_PUBLIC void lx_Canvas_detach( lx_canvas_t* object_ ); /*M*/
LX_PUBLIC void lx_Canvas_resize( lx_canvas_t* object_ ); /*M*/
/* -------------------------------------------------------------------------- */
/* Implementation: lx::lx_CanvasI */
/* Properties: Public */
/* return x-origin of canvas. */
LX_PUBLIC lx_pixel_t lx_Canvas_x( const lx_canvas_t* object_ ); /*P*/
/* return y-origin of canvas. */
LX_PUBLIC lx_pixel_t lx_Canvas_y( const lx_canvas_t* object_ ); /*P*/
/* return width of canvas. */
LX_PUBLIC lx_pixel_t lx_Canvas_width( const lx_canvas_t* object_ ); /*P*/
/* return height of canvas. */
LX_PUBLIC lx_pixel_t lx_Canvas_height( const lx_canvas_t* object_ ); /*P*/
/* return ending x-coordinate of canvas. */
LX_PUBLIC lx_pixel_t lx_Canvas_x2( const lx_canvas_t* object_ ); /*P*/
/* return ending y-coordinate of canvas. */
LX_PUBLIC lx_pixel_t lx_Canvas_y2( const lx_canvas_t* object_ ); /*P*/
/* Methods: Public */
/* set the rectangular area occupied by the canvas. */
LX_PUBLIC void lx_Canvas_area( /*M*/
lx_canvas_t* object_, /*-*/
const lx_rect_t rect_ ); /*-*/
/* set the width of drawn lines. */
LX_PUBLIC void lx_Canvas_lineWidth( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t line_width_ ); /*-*/
/* set the current drawing color. */
LX_PUBLIC void lx_Canvas_color( /*M*/
lx_canvas_t* object_, /*-*/
const lx_color_t color_ ); /*-*/
/* set the current font. Used by text() method. */
LX_PUBLIC void lx_Canvas_font( /*M*/
lx_canvas_t* object_, /*-*/
const lx_CanvasFont* font_ ); /*-*/
/* set the current font by specifying its name and attributes. */
/* Used by text() method. */
LX_PUBLIC void lx_Canvas_font7( /*M*/
lx_canvas_t* object_, /*-*/
lx_chars_t font_name_, /*-*/
const int font_size_, /*-*/
const lx_bool bold_, /*-*/
const lx_bool italic_, /*-*/
const lx_bool underline_, /*-*/
const lx_bool strikeout_, /*-*/
const int angle_ ); /*-*/
/* Erase the entire canvas area, filling it using the specified */
/* color_ or the current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_clear( /*M*/
lx_canvas_t* object_, /*-*/
const lx_color_t color_ ); /*-*/
/* begin buffering output to an internal bitmap, to avoid flicker. */
LX_PUBLIC void lx_Canvas_beginBuffering( lx_canvas_t* object_ ); /*M*/
/* End buffering and copy buffer bitmap to canvas. */
LX_PUBLIC void lx_Canvas_endBuffering( lx_canvas_t* object_ ); /*M*/
LX_PUBLIC void lx_Canvas_clipRect( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_ ); /*-*/
LX_PUBLIC void lx_Canvas_clip( lx_canvas_t* object_ ); /*M*/
LX_PUBLIC void lx_Canvas_unclip( lx_canvas_t* object_ ); /*M*/
/* Plot a single point specified by x_ and y_ coordinates, using the */
/* specified color or the current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_point( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_color_t color_ ); /*-*/
/* draw a line from point given by x1_ and y1_, to point given */
/* by x2_ and y2_, using the specified color or the current */
/* color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_line( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x1_, /*-*/
const lx_pixel_t y1_, /*-*/
const lx_pixel_t x2_, /*-*/
const lx_pixel_t y2_, /*-*/
const lx_color_t color_ ); /*-*/
/* draw a rectangle specified by rectangle_, using the specified color */
/* or the current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_rect( /*M*/
lx_canvas_t* object_, /*-*/
const lx_rect_t* rectangle_, /*-*/
const lx_color_t color_ ); /*-*/
/* draw a rectangle starting at point given by x_ and y_, and having */
/* the given width_ and height_, using the specified color or the */
/* current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_rect5( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_, /*-*/
const lx_color_t color_ ); /*-*/
/* draw a rectangular outline, using starting (x1_, y1_) and */
/* ending (x2_, y2_) coordinates, using the specified color */
/* or the current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_rectTo( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x1_, /*-*/
const lx_pixel_t y1_, /*-*/
const lx_pixel_t x2_, /*-*/
const lx_pixel_t y2_, /*-*/
const lx_color_t color_ ); /*-*/
/* fill a rectangular area using the specified rectangle_. */
/* shade_ can be one of: */
/* LX_SHADE_SOLID, LX_SHADE_VERTICAL_SMOOTH, LX_SHADE_VERTICAL_GLOSSY */
/* LX_SHADE_HORIZONTAL_SMOOTH, LX_SHADE_HORIZONTAL_GLOSSY */
LX_PUBLIC void lx_Canvas_rectFill( /*M*/
lx_canvas_t* object_, /*-*/
const lx_rect_t rectangle_, /*-*/
const lx_color_t color1_, /*-*/
const lx_shading_enum shade_, /*-*/
const lx_color_t color2_or_shine_ ); /*-*/
/* fill a rectangular area, by using coordinates (x_, y_) */
/* and dimensions (width_, height_). */
/* shade_ can be one of: */
/* LX_SHADE_SOLID, LX_SHADE_VERTICAL_SMOOTH, LX_SHADE_VERTICAL_GLOSSY */
/* LX_SHADE_HORIZONTAL_SMOOTH, LX_SHADE_HORIZONTAL_GLOSSY */
LX_PUBLIC void lx_Canvas_rectFill7( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_, /*-*/
const lx_color_t color2_, /*-*/
const lx_shading_enum shade_, /*-*/
const lx_color_t color2_or_shine_ ); /*-*/
/* fill a rectangular area, by using starting (x1_, y1_) */
/* and ending (x2_, y2_) coordinates. */
/* shade_ can be one of: */
/* LX_SHADE_SOLID, LX_SHADE_VERTICAL_SMOOTH, LX_SHADE_VERTICAL_GLOSSY */
/* LX_SHADE_HORIZONTAL_SMOOTH, LX_SHADE_HORIZONTAL_GLOSSY */
LX_PUBLIC void lx_Canvas_rectFillTo( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x1_, /*-*/
const lx_pixel_t y1_, /*-*/
const lx_pixel_t x2_, /*-*/
const lx_pixel_t y2_, /*-*/
const lx_color_t color1_, /*-*/
const lx_shading_enum shade_, /*-*/
const lx_color_t color2_or_shine_ ); /*-*/
/* fill a rounded rectangular area, by using the specified rectangle_. */
/* round_corner_size_ specifies the size of rounded corners. */
LX_PUBLIC void lx_Canvas_roundedRectFill( /*M*/
lx_canvas_t* object_, /*-*/
lx_rect_t rectangle_, /*-*/
const lx_pixel_t round_corner_size_, /*-*/
const lx_color_t color_ ); /*-*/
/* fill a rounded rectangular area, by using coordinates (x_, y_) */
/* and dimensions (width_, height_). round_corner_size_ */
/* specifies the size of rounded corners. */
LX_PUBLIC void lx_Canvas_roundedRectFill6( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_, /*-*/
const lx_pixel_t round_corner_size_, /*-*/
const lx_color_t color_ ); /*-*/
/* fill a rounded rectangular area, by using starting (x1_, y1_) */
/* and ending (x2_, y2_) coordinates. round_corner_size_ */
/* specifies the size of rounded corners. */
LX_PUBLIC void lx_Canvas_roundedRectFillTo( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x1_, /*-*/
const lx_pixel_t y1_, /*-*/
const lx_pixel_t x2_, /*-*/
const lx_pixel_t y2_, /*-*/
const lx_pixel_t round_corner_size_, /*-*/
const lx_color_t color_ ); /*-*/
/* Draw an ellipse enclosed by rectangle_, using the specified */
/* color or the current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_ellipse( /*M*/
lx_canvas_t* object_, /*-*/
const lx_rect_t* rectangle_, /*-*/
const lx_color_t color_ ); /*-*/
/* Draw an ellipse enclosed in a rectangle defined by x_, y_, width_ */
/* and height_, using the specified color or the current */
/* color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_ellipse5( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_, /*-*/
const lx_color_t color_ ); /*-*/
/* Draw an ellipse enclosed in a rectangle stretching from (x1_, y1_) */
/* to (x2_, y2_), using the specified color or the */
/* current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_ellipseTo( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x1_, /*-*/
const lx_pixel_t y1_, /*-*/
const lx_pixel_t x2_, /*-*/
const lx_pixel_t y2_, /*-*/
const lx_color_t color_ ); /*-*/
/* Fill an ellipse enclosed by rectangle_, using the specified color */
/* or the current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_ellipseFill( /*M*/
lx_canvas_t* object_, /*-*/
const lx_rect_t* rectangle_, /*-*/
const lx_color_t color_ ); /*-*/
/* Fill an ellipse enclosed in a rectangle defined by x_, y_, width_ */
/* and height_, using the specified color or the current */
/* color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_ellipseFill5( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_, /*-*/
const lx_color_t color_ ); /*-*/
/* Fill an ellipse enclosed in a rectangle stretching from (x1_, y1_) */
/* to (x2_, y2_), using the specified color or the current */
/* color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_ellipseFillTo( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x1_, /*-*/
const lx_pixel_t y1_, /*-*/
const lx_pixel_t x2_, /*-*/
const lx_pixel_t y2_, /*-*/
const lx_color_t color_ ); /*-*/
/* Draw the specified polygon, displaced by offset_x_ and offset_y_, using */
/* the specified color or the current color if color_ is not specified. */
LX_PUBLIC void lx_Canvas_poly( /*M*/
lx_canvas_t* object_, /*-*/
const lx_poly_t* polygon_, /*-*/
const lx_color_t color_, /*-*/
const lx_pixel_t offset_x_, /*-*/
const lx_pixel_t offset_y_ ); /*-*/
LX_PUBLIC void lx_Canvas_polyFill( /*M*/
lx_canvas_t* object_, /*-*/
const lx_poly_t* polygon_, /*-*/
const lx_color_t color_, /*-*/
const lx_pixel_t offset_x_, /*-*/
const lx_pixel_t offset_y_ ); /*-*/
LX_PUBLIC void lx_Canvas_text( /*M*/
lx_canvas_t* object_, /*-*/
lx_chars_t text_, /*-*/
const lx_color_t color_ ); /*-*/
/* draw the specified text at position (x_, y_), */
/* using the specified color or the current color if color_ */
/* is not specified. */
LX_PUBLIC void lx_Canvas_text4( /*M*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
lx_chars_t text_, /*-*/
const lx_color_t color_ ); /*-*/
/* return the height of a single line of text, */
/* using the currently-selected font. */
LX_PUBLIC lx_pixel_t lx_Canvas_textLineHeight( lx_canvas_t* object_ ); /*M*/
/* return the height of the specified text_, */
/* which can include multiple lines, */
/* using the currently-selected font. */
LX_PUBLIC lx_pixel_t lx_Canvas_textHeight( /*M*/
lx_canvas_t* object_, /*-*/
lx_chars_t text_ ); /*-*/
/* return the width of the specified text_, */
/* using the currently-selected font. */
LX_PUBLIC lx_pixel_t lx_Canvas_textWidth( /*M*/
lx_canvas_t* object_, /*-*/
lx_chars_t text_ ); /*-*/
/* Public: */
LX_PUBLIC void lx_draw_up_down_arrow( /*F*/
lx_canvas_t* object_, /*-*/
const lx_pixel_t x_, /*-*/
const lx_pixel_t y_, /*-*/
const lx_pixel_t width_, /*-*/
const lx_pixel_t height_, /*-*/
const lx_color_t back_color_, /*-*/
const lx_color_t arrow_color_, /*-*/
const lx_color_t border_color_, /*-*/
const lx_bool down_arrow_ ); /*-*/
/* Functions: Public, Static */
#if LX_PLATFORM_WIN32
LX_PUBLIC HRGN_win lx_clip_rect( /*F*/
const HDC_win hdc_, /*-*/
const lx_pixel_t x1_, /*-*/
const lx_pixel_t y1_, /*-*/
const lx_pixel_t x2_, /*-*/
const lx_pixel_t y2_, /*-*/
const lx_bool in_existing_clip_ ); /*-*/
#endif /* LX_PLATFORM_WIN32 */
#if LX_PLATFORM_WIN32
LX_PUBLIC void lx_free_clipping_rect( /*F*/
const HDC_win hdc_, /*-*/
const HRGN_win old_region_ ); /*-*/
#endif /* LX_PLATFORM_WIN32 */
/* Method used for testing new functionality. */
LX_PUBLIC void lx_test_canvas( const lx_canvas_t* object_ ); /*F*/
LX_END_NAMESPACE /*lx_c*/
#endif /*eof*/