comparison src/cs/drivers/drv_app/r2d/r2d_i.h @ 0:4e78acac3d88

src/{condat,cs,gpf,nucleus}: import from Selenite
author Mychaela Falconia <falcon@freecalypso.org>
date Fri, 16 Oct 2020 06:23:26 +0000
parents
children
comparison
equal deleted inserted replaced
-1:000000000000 0:4e78acac3d88
1 /***************************************************************************
2
3 Name R2DI.h
4
5 Function Riviera 2D system : Private API
6
7 Date Modification
8 -----------------------
9 06/12/2001 Create
10 **************************************************************************
11 History
12
13 ****************************************************************************/
14
15
16 #ifndef __R2DI_H_
17 #define __R2DI_H_
18
19 #include "r2d/r2d.h"
20 #include "rvf/rvf_api.h"
21
22
23 /***************************************
24
25 CONSTANTS
26
27 ***************************************/
28
29
30 #if (R2D_ASM == R2D_ON)
31 //////////////////////////////////////////
32 //
33 // R2D ASM API
34 //
35
36 enum{
37 R2D_LCDLCD=1,
38 R2D_COLORCOLOR=2,
39 R2D_COLORLCD=3,
40 R2D_LCDCOLOR=4
41 };
42
43 #endif
44
45
46 /***************************************
47
48 TYPES
49
50 ***************************************/
51
52 ////////////////////////////////////////
53 //
54 // Misc
55 //
56
57 typedef UINT32 R2D_BOOLEAN; // To avoid veneer bug a bool on 16 bits is introduced
58
59 ////////////////////////////////////////
60 //
61 // Arc region
62 //
63
64 // Region delimited by vectors whose scalar
65 // product with (sa,sb) and (ea,eb) is (+,+)
66 // of (-,+) or (+,-)
67 typedef struct R2D_ARC_REGION
68 {
69 INT32 sa,sb,ea,eb;
70 INT16 one_sector;
71 BOOLEAN is_null;
72 } T_R2D_ARC_REGION;
73
74 ////////////////////////////////////////
75 //
76 // Textures
77 //
78 typedef struct R2D_FREE_TEXTURE
79 {
80 INT16 refcount;
81 INT16 size; // Exponent of a power of 2
82 T_R2D_ARGB_COLOR *pattern;
83 } T_R2D_FREE_TEXTURE;
84
85 typedef struct R2D_ANCHORED_TEXTURE
86 {
87 INT16 refcount;
88 INT16 size; // Exponent of a power of 2
89 UINT32 *pattern;
90 } T_R2D_ANCHORED_TEXTURE;
91
92 ///////////////////////////////////////
93 //
94 // FRAMEBUFFER
95 //
96
97
98 typedef struct R2D_FRAMEBUFFER
99 {
100 // Refcounting
101 INT16 refcount;
102 // List of memory words containing the pixels
103 UINT32 *p_memory_words;
104 // End of frameBuffer used to prevent out of
105 // framebuffer access
106 // (It is the last word contained in the framebuffer)
107 // (but that word is used for loops and is never drawn)
108 UINT32 *p_frame_buffer_end;
109 // Kind of framebuffer (LCD or 24 bits)
110 T_R2D_FRAMEBUFFER_KIND kind;
111 // Dimensions of frameBuffer
112 UINT16 width,height;
113 // Semaphore for concurrent accesses to the framebuffer
114 T_RVF_MUTEX * mutex;
115 } T_R2D_FRAMEBUFFER;
116
117 // Font cache framebuffer has other fields required to build
118 // the glyph from a succession of Unicode codes
119 typedef struct R2D_FONT_CACHE_FRAMEBUFFER
120 {
121 // Refcounting
122 INT16 refcount;
123 // List of memory words containing the pixels
124 UINT32 *p_memory_words;
125 // End of frameBuffer used to prevent out of
126 // framebuffer access
127 // (It is the last word contained in the framebuffer)
128 UINT32 *p_frame_buffer_end;
129 // Kind of framebuffer (LCD or 24 bits)
130 T_R2D_FRAMEBUFFER_KIND kind;
131 // Dimensions of frameBuffer
132 UINT16 width,height;
133 // Semaphore for concurrent accesses to the framebuffer
134 T_RVF_MUTEX * mutex;
135 } T_R2D_FONT_CACHE_FRAMEBUFFER;
136
137
138 ////////////////////////////////////////
139 //
140 // LCD API
141 //
142
143 typedef UINT32 (*T_R2D_DRAWING_OP)(UINT32 old,UINT32 value);
144
145
146 typedef T_R2D_DRAWING_OP T_R2D_DRAWING_OPERATORS[10];
147
148 ////////////////////////////////////////
149 //
150 // OBJECTS
151 //
152
153 // Metaclass object describing the classes
154
155
156 typedef struct R2D_CLASS_SHAPE T_R2D_CLASS_SHAPE;
157 typedef struct R2D_SHAPE T_R2D_SHAPE;
158
159 typedef void (*T_R2D_shape_release_funct)(T_R2D_SHAPE *self);
160 typedef void (*T_R2D_shape_draw_funct)(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
161 typedef void (*T_R2D_shape_fill_funct)(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
162 typedef T_R2D_SHAPE_PTR (*T_R2D_shape_clone_funct)(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
163 typedef void (*T_R2D_shape_translate_funct)(T_R2D_SHAPE *self,INT16 dx,INT16 dy);
164 typedef BOOLEAN (*T_R2D_shape_point_testing_funct)(T_R2D_SHAPE *self,INT16 x,INT16 y);
165
166
167 struct R2D_CLASS_SHAPE
168 {
169 void *parent_class;
170 T_R2D_shape_release_funct release;
171 T_R2D_shape_draw_funct draw;
172 T_R2D_shape_fill_funct fill;
173 T_R2D_shape_clone_funct clone;
174 T_R2D_shape_translate_funct translate;
175 T_R2D_shape_point_testing_funct point_in_shape;
176 };
177
178 ////////////////////////////////////////
179 //
180 // SHAPES OBJECTS
181 //
182
183 struct R2D_SHAPE
184 {
185 INT16 refcount;
186 const T_R2D_CLASS_SHAPE *p_r2d_class;
187 };
188
189 typedef struct R2D_RECT
190 {
191 INT16 refcount;
192 const T_R2D_CLASS_SHAPE *p_r2d_class;
193 INT16 ul_x,ul_y,br_x,br_y;
194 } T_R2D_RECTANGLE;
195
196 typedef struct R2D_CIRCLE
197 {
198 INT16 refcount;
199 const T_R2D_CLASS_SHAPE *p_r2d_class;
200 INT16 x,y,r;
201 } T_R2D_CIRCLE;
202
203 typedef T_R2D_RECTANGLE T_R2D_ELLIPSE;
204
205 typedef struct R2D_ROUNDRECT
206 {
207 INT16 refcount;
208 const T_R2D_CLASS_SHAPE *p_r2d_class;
209 INT16 ul_x,ul_y,br_x,br_y;
210 INT16 h,v;
211 } T_R2D_ROUND_RECTANGLE;
212
213 typedef struct R2D_ARC
214 {
215 INT16 refcount;
216 const T_R2D_CLASS_SHAPE *p_r2d_class;
217 INT16 ul_x,ul_y,br_x,br_y;
218 INT16 start_angle,stop_angle;
219 } T_R2D_ARC;
220
221 typedef struct R2D_TEXT
222 {
223 INT16 refcount;
224 const T_R2D_CLASS_SHAPE *p_r2d_class;
225 INT16 x,y;
226 T_R2D_UTF16 *p_text;
227 } T_R2D_TEXT;
228
229
230 ////////////////////////////////////////
231 //
232 // GRAPHIC CONTEXT
233 //
234
235 typedef struct R2D_GC
236 {
237 // Refcounting
238 INT16 refcount;
239 // The framebuffer
240 T_R2D_FRAMEBUFFER_PTR p_frame_buffer;
241 // Clip rectangle (in graphic context coordinates)
242 T_R2D_SHAPE *p_clipping_shape;
243 // Clipping shape in scanning coordinates
244 T_R2D_SHAPE *p_s_clipping_shape;
245 // Foreground pixel value
246 // (on 24 bits per pixel. Conversion done on the fly
247 // according to the kind of framebuffer)
248 T_R2D_ARGB_COLOR foreground_color;
249 // Cache for computed pixel value corresponding
250 // to previous color. Used for LCD with dithering off
251 // to speed drawing
252 UINT32 foreground_pixel_value;
253 // Cache for foreground dithering used when dithering ON
254 UINT32 *p_foreground_dithered_cache;
255 // Background pixel value
256 // (on 24 bits per pixel. Conversion done on the fly
257 // according to the kind of framebuffer)
258 T_R2D_ARGB_COLOR background_color;
259 // Cache for computed pixel value corresponding
260 // to previous color. Used for LCD with dithering off
261 // to speed drawing
262 UINT32 background_pixel_value;
263 // Cache for dithering used when dithering ON
264 UINT32 *p_background_dithered_cache;
265 // Background texture
266 T_R2D_ANCHORED_TEXTURE *background_texture;
267 // Pen position
268 INT16 pen_x,pen_y;
269 // pen_size in pixels
270 INT16 pen_size;
271 // Drawing mode
272 INT16 drawing_mode;
273 // Drawing operator for above drawing mode
274 T_R2D_DRAWING_OP drawing_op;
275 // Context origin (H coordinates of upper-left corner of screen)
276 INT16 org_x,org_y;
277 // Context origin (S coordinates for texture of the point corresponding
278 // to (0,0) H coordinates)
279 INT16 s_org_x,s_org_y;
280 // Dash state
281 BOOLEAN dash;
282 // Text face
283 T_R2D_TEXT_FACE text_face;
284 // Text style
285 // (List of types requested by the user)
286 T_R2D_TEXT_STYLE text_style;
287 // Internal text style
288 // (list of style effect which must be computed since
289 // there are not embedded into the fonts)
290 T_R2D_TEXT_STYLE internal_text_style;
291 // Text size
292 T_R2D_TEXT_SIZE text_size;
293 // Font framebuffer
294 T_R2D_FRAMEBUFFER *font_frame_buffer;
295 // Font metrics pointer
296 INT32 *font_metrics;
297 // Font transcoding table
298 INT32 *font_table;
299 // Script mode (left to right by defaulr)
300 T_R2D_SCRIPT_MODE script_mode;
301 } T_R2D_GC;
302
303 ////////////////////////////////////////
304 //
305 // FONT CONFIG
306 //
307
308 typedef INT32 *T_R2D_FONT_METRICS;
309 typedef INT32 *T_R2D_FONT_TABLE;
310
311 typedef struct R2D_FONT_DESCRIPTION
312 {
313 T_R2D_FONT_TABLE table;
314 T_R2D_FONT_METRICS metrics;
315 T_R2D_FRAMEBUFFER_PTR framebuffer;
316 BOOLEAN compute_bold;
317 } T_R2D_FONT_DESCRIPTION;
318
319
320 /***************************************
321
322 FUNCTIONS
323
324 ***************************************/
325
326 ////////////////////////////////////////
327 //
328 // TOOL
329 // MACROS
330 //
331
332 // One should never call following function directly
333 // because when refcount is reaching 0 an object
334 // has generally subobject torelease before releasing
335 // itself
336
337 // Decrement refcount and autodelete if required
338 #define r2d_release(p) { \
339 if (p) \
340 { \
341 if ((((T_R2D_REFCOUNT*)(p))->refcount)>0) { \
342 ((T_R2D_REFCOUNT*)(p))->refcount--; \
343 if ((((T_R2D_REFCOUNT*)(p))->refcount==0)) \
344 R2D_FREE(p); \
345 } \
346 } \
347 }
348
349
350 // Return refcount of an object
351 #define R2D_REFCOUNT(p) (((T_R2D_REFCOUNT*)(p))->refcount)
352
353 // Compute dithered value
354 // lightness is either the gray intensity (for monochrome)
355 // or the component intensity.
356 // It is coded on at most 8 bits
357 #if (R2D_DITHERING == R2D_ON)
358
359 #define r2d_dithering_group_and_lightness() \
360 lightness = lightness >> (8 - R2D_DITHERING_DIMENSION - R2D_PIXEL_DEPTH); \
361 dithering_group=lightness >> R2D_DITHERING_DIMENSION; \
362 \
363 lightness=lightness & R2D_DITHERED_MASK;
364
365 #define r2d_dithered_value(x,y) \
366 \
367 dvalue=dithering_group; \
368 if (lightness>=r2d_get_dithering_matrix_entry(r2d_g_dithering_matrix,x,y)) \
369 dvalue+=1; \
370 \
371 if (dvalue) \
372 dvalue--;
373 #else
374 #define r2d_dithering_group_and_lightness()
375 #define r2d_dithered_value(x,y)
376 #endif
377
378 extern INT32 r2d_ptree_find(INT32 *tree,INT32 unicode);
379
380 void r2d_arc_region_x_reflect(T_R2D_ARC_REGION *rgn);
381 void r2d_arc_region_y_reflect(T_R2D_ARC_REGION *rgn);
382 void r2d_arc_region_diagonal_reflect(T_R2D_ARC_REGION *rgn);
383 BOOLEAN r2d_check_is_in_arc_region(INT16 x,INT16 y,T_R2D_ARC_REGION *rgn);
384 INT32 r2d_get_point_side(INT16 x,INT16 y,INT32 sa,INT32 sb);
385
386 ////////////////////////////////////////
387 //
388 // LCD
389 // FUNCTIONS
390 //
391
392 extern void r2d_convert_foreground_color(T_R2D_GC *gc,UINT32 color);
393 extern void r2d_convert_background_color(T_R2D_GC *gc,UINT32 color);
394 extern BOOLEAN r2d_lcd_foreground_pixel(UINT32 lcd_value,T_R2D_GC_PTR src_gc);
395 extern UINT32 r2d_color_to_lcd(UINT32 pixel_value,INT16 x,INT16 y);
396 extern UINT32 r2d_lcd_to_color(UINT32 color);
397
398 ////////////////////////////////////////
399 //
400 // SHAPE LOW LEVEL
401 // FUNCTIONS
402 //
403
404 void r2d_release_rectangle(T_R2D_SHAPE *self);
405 void r2d_draw_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
406 void r2d_fill_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
407 T_R2D_SHAPE_PTR r2d_clone_rectangle_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
408
409 void r2d_release_circle(T_R2D_SHAPE *self);
410 void r2d_draw_circle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
411 void r2d_fill_circle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
412 T_R2D_SHAPE_PTR r2d_clone_circle_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
413
414 void r2d_release_ellipse(T_R2D_SHAPE *self);
415 void r2d_draw_ellipse_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
416 void r2d_fill_ellipse_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
417
418 void r2d_release_round_rectangle(T_R2D_SHAPE *self);
419 void r2d_draw_round_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
420 void r2d_fill_round_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
421 T_R2D_SHAPE_PTR r2d_clone_round_rectangle_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
422
423 void r2d_release_arc(T_R2D_SHAPE *self);
424 void r2d_draw_arc_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
425 void r2d_fill_arc_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
426 T_R2D_SHAPE_PTR r2d_clone_arc_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
427
428 void r2d_release_text(T_R2D_SHAPE *self);
429 void r2d_draw_text_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
430 void r2d_fill_text_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
431 T_R2D_SHAPE_PTR r2d_clone_text_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
432
433 void r2d_translate_rectangle_shape(T_R2D_SHAPE *self,INT16 dx,INT16 dy);
434 void r2d_translate_point_shape(T_R2D_SHAPE *self,INT16 dx,INT16 dy);
435
436 BOOLEAN r2d_point_in_rectangle_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
437 BOOLEAN r2d_point_in_circle_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
438 BOOLEAN r2d_point_in_ellipse_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
439 BOOLEAN r2d_point_in_round_rectangle_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
440 BOOLEAN r2d_point_in_not_supported_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
441
442 ////////////////////////////////////////
443 //
444 // FRAMEBUFFER ACCESS
445 // FUNCTIONS
446 //
447
448
449
450 // Write a pixel at position x,y with graphic context gc
451 // pixel_value must be compatible with the framebuffer owned
452 // by the graphic context. No color conversion is done
453 // here
454 extern void r2d_write_lcd_pixel(T_R2D_GC *gc,INT16 x,INT16 y,UINT32 pixel_value);
455 extern void r2d_write_lcd_line(T_R2D_GC* gc,INT16 x,INT16 y,INT16 nb,R2D_BOOLEAN
456 background);
457 extern void r2d_arc_write_lcd_line(T_R2D_GC* gc,INT16 x,INT16 y,INT16 org_x,INT16 org_y,INT16 nb,
458 T_R2D_ARC_REGION *rgn,R2D_BOOLEAN
459 background);
460
461
462 extern T_R2D_DRAWING_OP r2d_get_drawing_op(T_R2D_GC *gc,T_R2D_DRAWING_MODE mode);
463 #if (R2D_ASM == R2D_ON)
464 extern UINT32 * r2d_get_asm_drawing_op(T_R2D_GC *gc,T_R2D_DRAWING_MODE mode);
465
466 #endif
467
468 ////////////////////////////////////////
469 //
470 // COLOR
471 // FUNCTIONS
472 //
473
474 // color conversion : on the fly dithering and color scaling
475 // with final conversion to the format used by the LCD if needed
476 // The dithered matrix or the pixel_value are cached into the gc
477 // structure
478 extern void r2d_convert_foreground_color(T_R2D_GC *gc,UINT32 color);
479 extern void r2d_convert_background_color(T_R2D_GC *gc,UINT32 color);
480
481 // Get value at dithering matrix position
482 #define r2d_get_dithering_matrix_entry(matrix,x,y) \
483 *(matrix+(x&1)+(y&1)*2)
484
485 // Set element (x,y) of dithering or dithered matrix
486 extern void r2d_set_dithering_matrix_entry(UINT32 *matrix,UINT32 elem,INT16 x,INT16 y);
487
488 extern void r2d_convert_foreground_color_color(T_R2D_GC *gc,UINT32 color);
489 extern void r2d_convert_background_color_color(T_R2D_GC *gc,UINT32 color);
490
491 extern UINT16 r2d_max_color(UINT16 red,UINT16 green, UINT16 blue);
492 // Get min component
493 extern UINT16 r2d_min_color(UINT16 red,UINT16 green, UINT16 blue);
494
495 extern UINT32 r2d_get_color_pixel_value(T_R2D_GC *gc,INT16 x,INT16 y);
496
497 ////////////////////////////////////////
498 //
499 // TEXT
500 // FUNCTIONS
501 //
502
503 #define r2d_get_char_x(p) (((INT32*)p)[0])
504
505 ////////////////////////////////////////
506 //
507 // COPY
508 // FUNCTIONS
509 //
510
511 #if (R2D_ASM == R2D_OFF)
512
513 void r2d_blit_lcd_to_lcd(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
514 T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
515 R2D_BOOLEAN use_foreground_color);
516
517 void r2d_blit_color_to_color(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
518 T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
519 R2D_BOOLEAN use_foreground_color);
520
521 void r2d_blit_lcd_to_color(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
522 T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
523 R2D_BOOLEAN use_foreground_color);
524
525 void r2d_blit_color_to_lcd(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
526 T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
527 R2D_BOOLEAN use_foreground_color);
528 #else
529
530 void r2d_blit_asm(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
531 T_R2D_SHAPE_PTR src_rectangle,
532 T_R2D_SHAPE_PTR dst_rectangle,
533 R2D_BOOLEAN use_foreground_color,INT32 srcdst);
534 #endif
535
536
537 /***************************
538
539 DEFINES
540
541 ***************************/
542
543 /* FOR SEARCH INSIDE PATRICIA TREE */
544 #define R2D_PTREE_TYPE 3
545 #define R2D_PTREE_BRANCHING 0
546 #define R2D_PTREE_PREFIX 1
547 #define R2D_PTREE_UNICODE_BLOCK 0
548 #define R2D_PTREE_GLYPH_INDEX 1
549 #define R2D_PTREE_CONVERSION 2
550 #define R2D_PTREE_LEFT 2
551 #define R2D_PTREE_RIGHT 3
552 #define R2D_PTREE_CONVERSION 2
553 #define R2D_PTREE_T_LEAF 0
554 #define R2D_PTREE_SHIFT 4
555
556 /* FOR FONT DESCRIPTION */
557
558 #define R2D_SMALL_SYSTEM_NORMAL 0
559 #define R2D_SMALL_SYSTEM_BOLD 1
560 #define R2D_SMALL_SYSTEM_ITALIC 2
561 #define R2D_SMALL_SYSTEM_BOLD_ITALIC 3
562
563 #define R2D_MEDIUM_SYSTEM_NORMAL 4
564 #define R2D_MEDIUM_SYSTEM_BOLD 5
565 #define R2D_MEDIUM_SYSTEM_ITALIC 6
566 #define R2D_MEDIUM_SYSTEM_BOLD_ITALIC 7
567
568 #define R2D_BIG_SYSTEM_NORMAL 8
569 #define R2D_BIG_SYSTEM_BOLD 9
570 #define R2D_BIG_SYSTEM_ITALIC 10
571 #define R2D_BIG_SYSTEM_BOLD_ITALIC 11
572
573 #define R2D_SMALL_TYPEWRITER_NORMAL 12
574 #define R2D_SMALL_TYPEWRITER_BOLD 13
575 #define R2D_SMALL_TYPEWRITER_ITALIC 14
576 #define R2D_SMALL_TYPEWRITER_BOLD_ITALIC 15
577
578 #define R2D_MEDIUM_TYPEWRITER_NORMAL 16
579 #define R2D_MEDIUM_TYPEWRITER_BOLD 17
580 #define R2D_MEDIUM_TYPEWRITER_ITALIC 18
581 #define R2D_MEDIUM_TYPEWRITER_BOLD_ITALIC 19
582
583 #define R2D_BIG_TYPEWRITER_NORMAL 20
584 #define R2D_BIG_TYPEWRITER_BOLD 21
585 #define R2D_BIG_TYPEWRITER_ITALIC 22
586 #define R2D_BIG_TYPEWRITER_BOLD_ITALIC 23
587
588 #define R2D_SMALL_PROPORTIONAL_NORMAL 24
589 #define R2D_SMALL_PROPORTIONAL_BOLD 25
590 #define R2D_SMALL_PROPORTIONAL_ITALIC 26
591 #define R2D_SMALL_PROPORTIONAL_BOLD_ITALIC 27
592
593 #define R2D_MEDIUM_PROPORTIONAL_NORMAL 28
594 #define R2D_MEDIUM_PROPORTIONAL_BOLD 29
595 #define R2D_MEDIUM_PROPORTIONAL_ITALIC 30
596 #define R2D_MEDIUM_PROPORTIONAL_BOLD_ITALIC 31
597
598 #define R2D_BIG_PROPORTIONAL_NORMAL 32
599 #define R2D_BIG_PROPORTIONAL_BOLD 33
600 #define R2D_BIG_PROPORTIONAL_ITALIC 34
601 #define R2D_BIG_PROPORTIONAL_BOLD_ITALIC 35
602
603
604 /***************************
605
606 GLOBALS
607
608 ****************************/
609
610 // and for reentrancy they should be read only if possible
611 // or protected by a semaphore otherwise
612
613 #if (R2D_ASM == R2D_ON)
614 extern T_RVF_MUTEX * r2d_g_blit_mutex;
615 extern T_R2D_DRAWING_MODE r2d_g_old_mode;
616 extern R2D_BOOLEAN r2d_g_old_use_foreground;
617 extern INT32 r2d_g_old_srcdst;
618 #endif
619
620 // Global mutex for access to global variables
621 extern T_RVF_MUTEX * r2d_g_global_mutex;
622
623
624 // Drawing operators (C version)
625 extern const T_R2D_DRAWING_OPERATORS r2d_g_lcd_operators,r2d_g_color_operators;
626
627 extern UINT32 *r2d_g_asm_lcd_operators[],*r2d_g_asm_color_operators[];
628
629 // LCD framebuffer
630 extern T_R2D_FRAMEBUFFER* r2d_g_framebuffer;
631
632 // For fonts
633
634 extern T_R2D_FONT_DESCRIPTION *r2d_g_font_configuration;
635
636 // (default pointers for initialization of graphical context)
637 extern T_R2D_FRAMEBUFFER *r2d_g_default_font_framebuffer;
638 extern INT32 *r2d_g_default_font_metrics;
639 extern INT32 *r2d_g_default_font_table;
640
641
642 // Dithering matrix
643 extern UINT32 *r2d_g_dithering_matrix;
644
645 // Class globals
646 extern const T_R2D_CLASS_SHAPE r2d_class_rectangle;
647 extern const T_R2D_CLASS_SHAPE r2d_class_circle;
648 extern const T_R2D_CLASS_SHAPE r2d_class_ellipse;
649 extern const T_R2D_CLASS_SHAPE r2d_class_round_rectangle;
650 extern const T_R2D_CLASS_SHAPE r2d_class_arc;
651 extern const T_R2D_CLASS_SHAPE r2d_class_text;
652
653 // Memory bank id
654 extern T_RVF_MB_ID r2d_mb_id;
655
656 // Global LCD graphical context
657 extern T_R2D_GC_PTR r2d_g_lcd_gc;
658
659 // Global flag to check if event required
660 extern BOOLEAN r2d_g_event_was_sent;
661
662 // Global flag to disable refresh
663 extern INT16 r2d_g_refresh_disabled;
664
665 /* global addr id */
666 extern T_RVF_ADDR_ID r2d_addr_id;
667
668
669 #endif
670