| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282 |
- #ifndef __ARM_2D__COMMON_H
- #define __ARM_2D__COMMON_H
- #include "arm_2d_helper.h"
- #include <stdbool.h>
- #include "Arm2D_Box.h"
- #include "BaseObj.h"
- #include "dataStrs.h"
- #include "pikaScript.h"
- #include "arm_2d_cfg.h"
- #ifndef ARM2DQEMUBOOTER_APP_ARM2D_H_
- #define APPLICATIONS_APP_ARM2D_H_
- typedef struct __pika_arm2d_element_info_t {
- int x, x_last;
- int y, y_last;
- int alpha, alpha_last;
- } pika_arm2d_element_info_t;
- typedef struct __pika_arm2d_box_info_t {
- pika_arm2d_element_info_t elem_info;
- arm_2d_region_t arg2d_regin;
- int wight, wight_last;
- int hight, hight_last;
- uint16_t color_code, color_code_last;
- } pika_arm2d_box_info_t;
- typedef struct __pika_arm2d_globals_t {
- arm_2d_tile_t* pfb_tile_now;
- bool pfb_is_new_frame;
- arm_2d_region_list_item_t* dirty_region_list;
- PikaObj* pika_windows_object;
- PikaObj* pika_background_object;
- PikaObj* pika_elems_object;
- } pika_arm2d_globals_t;
- extern pika_arm2d_globals_t pika_arm2d_globals;
- /* GLCD RGB color definitions */
- #define GLCD_COLOR_BLACK 0x0000 /* 0, 0, 0 */
- #define GLCD_COLOR_NAVY 0x000F /* 0, 0, 128 */
- #define GLCD_COLOR_DARK_GREEN 0x03E0 /* 0, 128, 0 */
- #define GLCD_COLOR_DARK_CYAN 0x03EF /* 0, 128, 128 */
- #define GLCD_COLOR_MAROON 0x7800 /* 128, 0, 0 */
- #define GLCD_COLOR_PURPLE 0x780F /* 128, 0, 128 */
- #define GLCD_COLOR_OLIVE 0x7BE0 /* 128, 128, 0 */
- #define GLCD_COLOR_LIGHT_GREY 0xC618 /* 192, 192, 192 */
- #define GLCD_COLOR_DARK_GREY 0x7BEF /* 128, 128, 128 */
- #define GLCD_COLOR_BLUE 0x001F /* 0, 0, 255 */
- #define GLCD_COLOR_GREEN 0x07E0 /* 0, 255, 0 */
- #define GLCD_COLOR_CYAN 0x07FF /* 0, 255, 255 */
- #define GLCD_COLOR_RED 0xF800 /* 255, 0, 0 */
- #define GLCD_COLOR_MAGENTA 0xF81F /* 255, 0, 255 */
- #define GLCD_COLOR_YELLOW 0xFFE0 /* 255, 255, 0 */
- #define GLCD_COLOR_WHITE 0xFFFF /* 255, 255, 255 */
- void pika_arm2d_init(void);
- void pika_arm2d_update();
- #endif /* ARM2DQEMUBOOTER_APP_ARM2D_H_ */
- uint16_t getColorCode(char* colorName);
- typedef struct {
- arm_2d_op_rotate_t tOP;
- const arm_2d_tile_t* ptTile;
- float fAngle;
- float fAngleSpeed;
- arm_2d_location_t tCentre;
- arm_2d_region_t tRegion;
- } rotate_tile_t;
- #define __implement_tile(__NAME, __WIDTH, __HEIGHT, __TYPE, ...) \
- static __TYPE \
- __NAME##Buffer[(__WIDTH) * (__HEIGHT)]; \
- const arm_2d_tile_t __NAME = { \
- .tRegion = { \
- .tSize = {(__WIDTH), (__HEIGHT)}, \
- }, \
- .tInfo.bIsRoot = true, \
- .pchBuffer = (uint8_t *)__NAME##Buffer, \
- __VA_ARGS__ \
- };
- #define implement_tile(__NAME, __WIDTH, __HEIGHT, __TYPE, ...) \
- __implement_tile(__NAME, __WIDTH, __HEIGHT, __TYPE, ##__VA_ARGS__)
- #endif
- #ifndef __GLCD_CFG_COLOUR_DEPTH__
- #define __GLCD_CFG_COLOUR_DEPTH__ 16
- #endif
- #if __GLCD_CFG_COLOUR_DEPTH__ == 8
- # define __arm_2d_color_t arm_2d_color_gray8_t
- # define COLOUR_INT uint8_t
- # define ARM_2D_COLOUR ARM_2D_COLOUR_GRAY8
- # define arm_2d_draw_pattern arm_2d_c8bit_draw_pattern
- # define arm_2dp_fill_colour_with_opacity \
- arm_2dp_gray8_fill_colour_with_opacity
- # define arm_2d_fill_colour_with_mask \
- arm_2d_gray8_fill_colour_with_mask
- # define arm_2d_fill_colour_with_mask_and_opacity \
- arm_2d_gray8_fill_colour_with_mask_and_opacity
- # define arm_2d_alpha_blending_with_colour_keying \
- arm_2d_gray8_alpha_blending_with_colour_keying
- # define arm_2d_tile_copy_with_masks \
- arm_2d_gray8_tile_copy_with_masks
- # define arm_2d_tile_fill_with_x_mirror \
- arm_2d_c8bit_tile_fill_with_x_mirror
- # define arm_2d_tile_fill_with_y_mirror \
- arm_2d_c8bit_tile_fill_with_y_mirror
- # define arm_2d_tile_fill_with_xy_mirror \
- arm_2d_c8bit_tile_fill_with_xy_mirror
- # define arm_2d_tile_fill_only \
- arm_2d_c8bit_tile_fill_only
- # define arm_2d_tile_copy_with_x_mirror \
- arm_2d_c8bit_tile_copy_with_x_mirror
- # define arm_2d_tile_copy_with_y_mirror \
- arm_2d_c8bit_tile_copy_with_y_mirror
- # define arm_2d_tile_copy_with_xy_mirror \
- arm_2d_c8bit_tile_copy_with_xy_mirror
- # define arm_2d_tile_copy_only \
- arm_2d_c8bit_tile_copy_only
- # define arm_2d_tile_copy \
- arm_2d_c8bit_tile_copy
- # define arm_2d_fill_colour \
- arm_2d_c8bit_fill_colour
- # define arm_2d_tile_copy_with_colour_keying \
- arm_2d_c8bit_tile_copy_with_colour_keying
- # define arm_2d_fill_colour_with_opacity \
- arm_2d_gray8_fill_colour_with_opacity
- # define arm_2d_alpha_blending \
- arm_2d_gray8_alpha_blending
- # define arm_2d_tile_copy_with_des_mask \
- arm_2d_gray8_tile_copy_with_des_mask
- # define arm_2d_tile_copy_with_src_mask \
- arm_2d_gray8_tile_copy_with_src_mask
- # define arm_2dp_tile_transform_with_opacity \
- arm_2dp_gray8_tile_transform_with_opacity
- # define arm_2dp_tile_transform_with_src_mask_and_opacity \
- arm_2dp_gray8_tile_transform_with_src_mask_and_opacity
- # define arm_2dp_tile_rotation arm_2dp_gray8_tile_rotation
- # define arm_2dp_tile_rotation_with_alpha \
- arm_2dp_gray8_tile_rotation_with_alpha
- # define arm_2dp_tile_rotation_with_src_mask_and_opacity \
- arm_2dp_gray8_tile_rotation_with_src_mask_and_opacity
- # define arm_2dp_tile_rotation_with_src_mask \
- arm_2dp_gray8_tile_rotation_with_src_mask
- # define arm_2d_tile_rotation \
- arm_2d_gray8_tile_rotation
- #elif __GLCD_CFG_COLOUR_DEPTH__ == 16
- # define __arm_2d_color_t arm_2d_color_rgb565_t
- # define COLOUR_INT uint16_t
- # define ARM_2D_COLOUR ARM_2D_COLOUR_RGB565
- # define arm_2d_draw_pattern arm_2d_rgb16_draw_pattern
- # define arm_2dp_fill_colour_with_opacity \
- arm_2dp_rgb565_fill_colour_with_opacity
- # define arm_2d_fill_colour_with_mask \
- arm_2d_rgb565_fill_colour_with_mask
- # define arm_2d_fill_colour_with_mask_and_opacity \
- arm_2d_rgb565_fill_colour_with_mask_and_opacity
- # define arm_2d_alpha_blending_with_colour_keying \
- arm_2d_rgb565_alpha_blending_with_colour_keying
- # define arm_2d_tile_copy_with_masks \
- arm_2d_rgb565_tile_copy_with_masks
- # define arm_2d_tile_fill_with_x_mirror \
- arm_2d_rgb16_tile_fill_with_x_mirror
- # define arm_2d_tile_fill_with_y_mirror \
- arm_2d_rgb16_tile_fill_with_y_mirror
- # define arm_2d_tile_fill_with_xy_mirror \
- arm_2d_rgb16_tile_fill_with_xy_mirror
- # define arm_2d_tile_fill_only \
- arm_2d_rgb16_tile_fill_only
- # define arm_2d_tile_copy_with_x_mirror \
- arm_2d_rgb16_tile_copy_with_x_mirror
- # define arm_2d_tile_copy_with_y_mirror \
- arm_2d_rgb16_tile_copy_with_y_mirror
- # define arm_2d_tile_copy_with_xy_mirror \
- arm_2d_rgb16_tile_copy_with_xy_mirror
- # define arm_2d_tile_copy_only \
- arm_2d_rgb16_tile_copy_only
- # define arm_2d_tile_copy \
- arm_2d_rgb16_tile_copy
- # define arm_2d_fill_colour \
- arm_2d_rgb16_fill_colour
- # define arm_2d_tile_copy_with_colour_keying \
- arm_2d_rgb16_tile_copy_with_colour_keying
- # define arm_2d_fill_colour_with_opacity \
- arm_2d_rgb565_fill_colour_with_opacity
- # define arm_2d_alpha_blending \
- arm_2d_rgb565_alpha_blending
- # define arm_2d_tile_copy_with_des_mask \
- arm_2d_rgb565_tile_copy_with_des_mask
- # define arm_2d_tile_copy_with_src_mask \
- arm_2d_rgb565_tile_copy_with_src_mask
- # define arm_2dp_tile_transform_with_opacity \
- arm_2dp_rgb565_tile_transform_with_opacity
- # define arm_2dp_tile_transform_with_src_mask_and_opacity \
- arm_2dp_rgb565_tile_transform_with_src_mask_and_opacity
- # define arm_2dp_tile_rotation arm_2dp_rgb565_tile_rotation
- # define arm_2dp_tile_rotation_with_alpha \
- arm_2dp_rgb565_tile_rotation_with_alpha
- # define arm_2dp_tile_rotation_with_src_mask_and_opacity \
- arm_2dp_rgb565_tile_rotation_with_src_mask_and_opacity
- # define arm_2dp_tile_rotation_with_src_mask \
- arm_2dp_rgb565_tile_rotation_with_src_mask
- # define arm_2d_tile_rotation \
- arm_2d_rgb565_tile_rotation
- #elif __GLCD_CFG_COLOUR_DEPTH__ == 32
- # define __arm_2d_color_t arm_2d_color_cccn888_t
- # define COLOUR_INT uint32_t
- # define ARM_2D_COLOUR ARM_2D_COLOUR_CCCA8888
- # define arm_2d_draw_pattern arm_2d_rgb32_draw_pattern
- # define arm_2dp_fill_colour_with_opacity \
- arm_2dp_cccn888_fill_colour_with_opacity
- # define arm_2d_fill_colour_with_mask \
- arm_2d_cccn888_fill_colour_with_mask
- # define arm_2d_fill_colour_with_mask_and_opacity \
- arm_2d_cccn888_fill_colour_with_mask_and_opacity
- # define arm_2d_alpha_blending_with_colour_keying \
- arm_2d_cccn888_alpha_blending_with_colour_keying
- # define arm_2d_tile_copy_with_masks \
- arm_2d_cccn888_tile_copy_with_masks
- # define arm_2d_tile_fill_with_x_mirror \
- arm_2d_rgb32_tile_fill_with_x_mirror
- # define arm_2d_tile_fill_with_y_mirror \
- arm_2d_rgb32_tile_fill_with_y_mirror
- # define arm_2d_tile_fill_with_xy_mirror \
- arm_2d_rgb32_tile_fill_with_xy_mirror
- # define arm_2d_tile_fill_only \
- arm_2d_rgb32_tile_fill_only
- # define arm_2d_tile_copy_with_x_mirror \
- arm_2d_rgb32_tile_copy_with_x_mirror
- # define arm_2d_tile_copy_with_y_mirror \
- arm_2d_rgb32_tile_copy_with_y_mirror
- # define arm_2d_tile_copy_with_xy_mirror \
- arm_2d_rgb32_tile_copy_with_xy_mirror
- # define arm_2d_tile_copy_only \
- arm_2d_rgb32_tile_copy_only
- # define arm_2d_tile_copy \
- arm_2d_rgb32_tile_copy
- # define arm_2d_fill_colour \
- arm_2d_rgb32_fill_colour
- # define arm_2d_tile_copy_with_colour_keying \
- arm_2d_rgb32_tile_copy_with_colour_keying
- # define arm_2d_fill_colour_with_opacity \
- arm_2d_cccn888_fill_colour_with_opacity
- # define arm_2d_alpha_blending \
- arm_2d_cccn888_alpha_blending
- # define arm_2d_tile_copy_with_des_mask \
- arm_2d_cccn888_tile_copy_with_des_mask
- # define arm_2d_tile_copy_with_src_mask \
- arm_2d_cccn888_tile_copy_with_src_mask
- # define arm_2dp_tile_transform_with_opacity \
- arm_2dp_cccn888_tile_transform_with_opacity
- # define arm_2dp_tile_transform_with_src_mask_and_opacity \
- arm_2dp_cccn888_tile_transform_with_src_mask_and_opacity
- # define arm_2dp_tile_rotation arm_2dp_cccn888_tile_rotation
- # define arm_2dp_tile_rotation_with_alpha \
- arm_2dp_cccn888_tile_rotation_with_alpha
- # define arm_2dp_tile_rotation_with_src_mask_and_opacity \
- arm_2dp_cccn888_tile_rotation_with_src_mask_and_opacity
- # define arm_2dp_tile_rotation_with_src_mask \
- arm_2dp_cccn888_tile_rotation_with_src_mask
- # define arm_2d_tile_rotation \
- arm_2d_cccn888_tile_rotation
- #else
- # error Unsupported colour depth!
- #endif
|