📄 r2d_i.h
字号:
R2D_FREE(p); \
} \
} \
}
// Return refcount of an object
#define R2D_REFCOUNT(p) (((T_R2D_REFCOUNT*)(p))->refcount)
// Compute dithered value
// lightness is either the gray intensity (for monochrome)
// or the component intensity.
// It is coded on at most 8 bits
#if (R2D_DITHERING == R2D_ON)
#define r2d_dithering_group_and_lightness() \
lightness = lightness >> (8 - R2D_DITHERING_DIMENSION - R2D_PIXEL_DEPTH); \
dithering_group=lightness >> R2D_DITHERING_DIMENSION; \
\
lightness=lightness & R2D_DITHERED_MASK;
#define r2d_dithered_value(x,y) \
\
dvalue=dithering_group; \
if (lightness>=r2d_get_dithering_matrix_entry(r2d_g_dithering_matrix,x,y)) \
dvalue+=1; \
\
if (dvalue) \
dvalue--;
#else
#define r2d_dithering_group_and_lightness()
#define r2d_dithered_value(x,y)
#endif
extern INT32 r2d_ptree_find(INT32 *tree,INT32 unicode);
////////////////////////////////////////
//
// LCD
// FUNCTIONS
//
extern void r2d_convert_foreground_color(T_R2D_GC *gc,UINT32 color);
extern void r2d_convert_background_color(T_R2D_GC *gc,UINT32 color);
extern BOOLEAN r2d_lcd_foreground_pixel(UINT32 lcd_value,T_R2D_GC_PTR src_gc);
extern UINT32 r2d_color_to_lcd(UINT32 pixel_value,INT16 x,INT16 y);
extern UINT32 r2d_lcd_to_color(UINT32 color);
////////////////////////////////////////
//
// SHAPE LOW LEVEL
// FUNCTIONS
//
void r2d_release_rectangle(T_R2D_SHAPE *self);
void r2d_draw_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
void r2d_fill_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
T_R2D_SHAPE_PTR r2d_clone_rectangle_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
void r2d_release_circle(T_R2D_SHAPE *self);
void r2d_draw_circle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
void r2d_fill_circle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
T_R2D_SHAPE_PTR r2d_clone_circle_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
void r2d_release_ellipse(T_R2D_SHAPE *self);
void r2d_draw_ellipse_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
void r2d_fill_ellipse_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
void r2d_release_round_rectangle(T_R2D_SHAPE *self);
void r2d_draw_round_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
void r2d_fill_round_rectangle_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
T_R2D_SHAPE_PTR r2d_clone_round_rectangle_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
void r2d_release_arc(T_R2D_SHAPE *self);
void r2d_draw_arc_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
void r2d_fill_arc_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
T_R2D_SHAPE_PTR r2d_clone_arc_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
void r2d_release_text(T_R2D_SHAPE *self);
void r2d_draw_text_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
void r2d_fill_text_shape(T_R2D_SHAPE *self,T_R2D_GC_PTR gc);
T_R2D_SHAPE_PTR r2d_clone_text_shape(T_RVF_MB_ID bank,T_R2D_SHAPE *self);
void r2d_translate_rectangle_shape(T_R2D_SHAPE *self,INT16 dx,INT16 dy);
void r2d_translate_point_shape(T_R2D_SHAPE *self,INT16 dx,INT16 dy);
BOOLEAN r2d_point_in_rectangle_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
BOOLEAN r2d_point_in_circle_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
BOOLEAN r2d_point_in_ellipse_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
BOOLEAN r2d_point_in_round_rectangle_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
BOOLEAN r2d_point_in_not_supported_shape(T_R2D_SHAPE *self,INT16 x,INT16 y);
////////////////////////////////////////
//
// FRAMEBUFFER ACCESS
// FUNCTIONS
//
// Write a pixel at position x,y with graphic context gc
// pixel_value must be compatible with the framebuffer owned
// by the graphic context. No color conversion is done
// here
extern void r2d_write_lcd_pixel(T_R2D_GC *gc,INT16 x,INT16 y,UINT32 pixel_value, T_R2D_DRAWING_MODE mode );
extern void r2d_write_lcd_line(T_R2D_GC* gc,INT16 x,INT16 y,INT16 nb,R2D_BOOLEAN
background);
extern T_R2D_DRAWING_OP r2d_get_drawing_op(T_R2D_GC *gc,T_R2D_DRAWING_MODE mode);
#if (R2D_ASM == R2D_ON)
extern UINT32 * r2d_get_asm_drawing_op(T_R2D_GC *gc,T_R2D_DRAWING_MODE mode);
#endif
////////////////////////////////////////
//
// COLOR
// FUNCTIONS
//
// color conversion : on the fly dithering and color scaling
// with final conversion to the format used by the LCD if needed
// The dithered matrix or the pixel_value are cached into the gc
// structure
extern void r2d_convert_foreground_color(T_R2D_GC *gc,UINT32 color);
extern void r2d_convert_background_color(T_R2D_GC *gc,UINT32 color);
// Get value at dithering matrix position
#define r2d_get_dithering_matrix_entry(matrix,x,y) \
*(matrix+(x&1)+(y&1)*2)
// Set element (x,y) of dithering or dithered matrix
extern void r2d_set_dithering_matrix_entry(UINT32 *matrix,UINT32 elem,INT16 x,INT16 y);
extern void r2d_convert_foreground_color_color(T_R2D_GC *gc,UINT32 color);
extern void r2d_convert_background_color_color(T_R2D_GC *gc,UINT32 color);
extern UINT16 r2d_max_color(UINT16 red,UINT16 green, UINT16 blue);
// Get min component
extern UINT16 r2d_min_color(UINT16 red,UINT16 green, UINT16 blue);
extern UINT32 r2d_get_color_pixel_value(T_R2D_GC *gc,INT16 x,INT16 y);
/********************************tangyan add it *********************************/
extern UINT32 r2d_getpixelvalue(T_R2D_GC * gc, INT16 x, INT16 y);
extern UINT32 r2d_cpy_lcdbuffer(T_R2D_GC* gc, UINT32 lcdy, UINT32 yincreament);
////////////////////////////////////////
//
// TEXT
// FUNCTIONS
//
#define r2d_get_char_x(p) (((INT32*)p)[0])
////////////////////////////////////////
//
// COPY
// FUNCTIONS
//
#if (R2D_ASM == R2D_OFF)
void r2d_blit_lcd_to_lcd(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
R2D_BOOLEAN use_foreground_color);
void r2d_blit_color_to_color(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
R2D_BOOLEAN use_foreground_color);
void r2d_blit_lcd_to_color(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
R2D_BOOLEAN use_foreground_color);
void r2d_blit_color_to_lcd(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
T_R2D_SHAPE_PTR src_rectangle, T_R2D_SHAPE_PTR dst_rectangle,
R2D_BOOLEAN use_foreground_color);
#else
void r2d_blit_asm(T_R2D_GC_PTR src_gc,T_R2D_GC_PTR dst_gc,
T_R2D_SHAPE_PTR src_rectangle,
T_R2D_SHAPE_PTR dst_rectangle,
R2D_BOOLEAN use_foreground_color,INT32 srcdst);
#endif
/***************************
DEFINES
***************************/
/* FOR SEARCH INSIDE PATRICIA TREE */
#define R2D_PTREE_TYPE 3
#define R2D_PTREE_BRANCHING 0
#define R2D_PTREE_PREFIX 1
#define R2D_PTREE_UNICODE_BLOCK 0
#define R2D_PTREE_GLYPH_INDEX 1
#define R2D_PTREE_CONVERSION 2
#define R2D_PTREE_LEFT 2
#define R2D_PTREE_RIGHT 3
#define R2D_PTREE_CONVERSION 2
#define R2D_PTREE_T_LEAF 0
#define R2D_PTREE_SHIFT 4
/* FOR FONT DESCRIPTION */
#define R2D_SMALL_SYSTEM_NORMAL 0
#define R2D_SMALL_SYSTEM_BOLD 1
#define R2D_SMALL_SYSTEM_ITALIC 2
#define R2D_SMALL_SYSTEM_BOLD_ITALIC 3
#define R2D_MEDIUM_SYSTEM_NORMAL 4
#define R2D_MEDIUM_SYSTEM_BOLD 5
#define R2D_MEDIUM_SYSTEM_ITALIC 6
#define R2D_MEDIUM_SYSTEM_BOLD_ITALIC 7
#define R2D_BIG_SYSTEM_NORMAL 8
#define R2D_BIG_SYSTEM_BOLD 9
#define R2D_BIG_SYSTEM_ITALIC 10
#define R2D_BIG_SYSTEM_BOLD_ITALIC 11
#define R2D_SMALL_TYPEWRITER_NORMAL 12
#define R2D_SMALL_TYPEWRITER_BOLD 13
#define R2D_SMALL_TYPEWRITER_ITALIC 14
#define R2D_SMALL_TYPEWRITER_BOLD_ITALIC 15
#define R2D_MEDIUM_TYPEWRITER_NORMAL 16
#define R2D_MEDIUM_TYPEWRITER_BOLD 17
#define R2D_MEDIUM_TYPEWRITER_ITALIC 18
#define R2D_MEDIUM_TYPEWRITER_BOLD_ITALIC 19
#define R2D_BIG_TYPEWRITER_NORMAL 20
#define R2D_BIG_TYPEWRITER_BOLD 21
#define R2D_BIG_TYPEWRITER_ITALIC 22
#define R2D_BIG_TYPEWRITER_BOLD_ITALIC 23
#define R2D_SMALL_PROPORTIONAL_NORMAL 24
#define R2D_SMALL_PROPORTIONAL_BOLD 25
#define R2D_SMALL_PROPORTIONAL_ITALIC 26
#define R2D_SMALL_PROPORTIONAL_BOLD_ITALIC 27
#define R2D_MEDIUM_PROPORTIONAL_NORMAL 28
#define R2D_MEDIUM_PROPORTIONAL_BOLD 29
#define R2D_MEDIUM_PROPORTIONAL_ITALIC 30
#define R2D_MEDIUM_PROPORTIONAL_BOLD_ITALIC 31
#define R2D_BIG_PROPORTIONAL_NORMAL 32
#define R2D_BIG_PROPORTIONAL_BOLD 33
#define R2D_BIG_PROPORTIONAL_ITALIC 34
#define R2D_BIG_PROPORTIONAL_BOLD_ITALIC 35
/***************************
GLOBALS
****************************/
// and for reentrancy they should be read only if possible
// or protected by a semaphore otherwise
#if (R2D_ASM == R2D_ON)
extern T_RVF_MUTEX * r2d_g_blit_mutex;
extern T_R2D_DRAWING_MODE r2d_g_old_mode;
extern R2D_BOOLEAN r2d_g_old_use_foreground;
extern INT32 r2d_g_old_srcdst;
#endif
// Global mutex for access to global variables
extern T_RVF_MUTEX * r2d_g_global_mutex;
// Drawing operators (C version)
extern const T_R2D_DRAWING_OPERATORS r2d_g_lcd_operators,r2d_g_color_operators;
extern UINT32 *r2d_g_asm_lcd_operators[],*r2d_g_asm_color_operators[];
// LCD framebuffer
extern T_R2D_FRAMEBUFFER* r2d_g_framebuffer;
/* Robert Chen add, for sub LCD, 2003-12-13 */
#if R2D_SUBLCD_SUPPORT
extern T_R2D_FRAMEBUFFER* r2d_g_subframebuffer; /* for sub LCD */
#endif
// For fonts
extern T_R2D_FONT_DESCRIPTION *r2d_g_font_configuration;
// (default pointers for initialization of graphical context)
extern T_R2D_FRAMEBUFFER *r2d_g_default_font_framebuffer;
extern INT32 *r2d_g_default_font_metrics;
extern INT32 *r2d_g_default_font_table;
// Dithering matrix
extern UINT32 *r2d_g_dithering_matrix;
// Class globals
extern const T_R2D_CLASS_SHAPE r2d_class_rectangle;
extern const T_R2D_CLASS_SHAPE r2d_class_circle;
extern const T_R2D_CLASS_SHAPE r2d_class_ellipse;
extern const T_R2D_CLASS_SHAPE r2d_class_round_rectangle;
extern const T_R2D_CLASS_SHAPE r2d_class_arc;
extern const T_R2D_CLASS_SHAPE r2d_class_text;
// Memory bank id
extern T_RVF_MB_ID r2d_mb_id;
// Global LCD graphical context
extern T_R2D_GC_PTR r2d_g_lcd_gc;
extern T_R2D_GC_PTR r2d_g_lcd_gc;
// Global flag to check if event required
extern INT8 r2d_g_event_was_sent;
// Global flag to disable refresh
extern INT16 r2d_g_refresh_disabled;
/* global addr id */
extern T_RVF_ADDR_ID r2d_addr_id;
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -