Arm2D.c 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "Arm2D.h"
  2. #include "Arm2D_Location.h"
  3. #include "Arm2D_Region.h"
  4. #include "Arm2D_common.h"
  5. #if !PIKASCRIPT_VERSION_REQUIRE_MINIMUN(1, 11, 6)
  6. #error "PikaScript kernal version require v1.11.6"
  7. #endif
  8. int Arm2D_is_point_inside_region(PikaObj* self,
  9. PikaObj* region,
  10. PikaObj* location) {
  11. arm_2d_region_t* _region = obj_getStruct(region, "_self");
  12. arm_2d_location_t* _location = obj_getStruct(location, "_self");
  13. return arm_2d_is_point_inside_region(_region, _location);
  14. }
  15. void Arm2D___init__(PikaObj* self) {
  16. int32_t __Arm2D_platform_Init();
  17. __Arm2D_platform_Init();
  18. /* const */
  19. obj_setInt(self, "CP_MODE_COPY", ARM_2D_CP_MODE_COPY);
  20. obj_setInt(self, "CP_MODE_FILL", ARM_2D_CP_MODE_FILL);
  21. obj_setInt(self, "CP_MODE_Y_MIRROR", ARM_2D_CP_MODE_Y_MIRROR);
  22. obj_setInt(self, "CP_MODE_X_MIRROR", ARM_2D_CP_MODE_X_MIRROR);
  23. obj_setInt(self, "CP_MODE_XY_MIRROR", ARM_2D_CP_MODE_XY_MIRROR);
  24. obj_setInt(self, "COLOR_WHITE", GLCD_COLOR_WHITE);
  25. obj_setInt(self, "COLOR_BLACK", GLCD_COLOR_BLACK);
  26. obj_setInt(self, "COLOR_RED", GLCD_COLOR_RED);
  27. obj_setInt(self, "COLOR_BLUE", GLCD_COLOR_BLUE);
  28. obj_setInt(self, "COLOR_GREEN", GLCD_COLOR_GREEN);
  29. pika_arm2d_init();
  30. }
  31. int Arm2D_tile_copy(PikaObj* self,
  32. PikaObj* src,
  33. PikaObj* des,
  34. PikaObj* des_reg,
  35. int mode) {
  36. arm_2d_tile_t* _src = obj_getStruct(src, "_self");
  37. arm_2d_tile_t* _des = obj_getStruct(des, "_self");
  38. arm_2d_region_t* _des_reg = obj_getStruct(des_reg, "_self");
  39. return arm_2d_tile_copy(_src, _des, _des_reg, mode);
  40. }
  41. int Arm2D_alpha_blending(PikaObj* self,
  42. PikaObj* src,
  43. PikaObj* des,
  44. PikaObj* reg,
  45. int alp) {
  46. arm_2d_tile_t* _src = obj_getStruct(src, "_self");
  47. arm_2d_tile_t* _des = obj_getStruct(des, "_self");
  48. arm_2d_region_t* _reg = obj_getStruct(reg, "_self");
  49. return arm_2d_alpha_blending(_src, _des, _reg, alp);
  50. }
  51. int Arm2D_fill_colour(PikaObj* self, PikaObj* tile, PikaObj* reg, int color) {
  52. arm_2d_tile_t* _tile = obj_getStruct(tile, "_self");
  53. arm_2d_region_t* _reg = obj_getStruct(reg, "_self");
  54. return arm_2d_fill_colour(_tile, _reg, color);
  55. }
  56. void Arm2D_update(PikaObj* self) {
  57. extern arm_2d_helper_pfb_t s_tPFBHelper;
  58. while (arm_fsm_rt_cpl != arm_2d_helper_pfb_task(&s_tPFBHelper, NULL))
  59. ;
  60. }
  61. PikaObj* Arm2D_create_location(PikaObj* self, int x, int y) {
  62. PikaObj* location = newNormalObj(New_Arm2D_Location);
  63. arm_2d_location_t _location = {
  64. .iX = x,
  65. .iY = y,
  66. };
  67. obj_setStruct(location, "_self", _location);
  68. return location;
  69. }
  70. PikaObj* Arm2D_create_region(PikaObj* self, int x, int y, int w, int h) {
  71. PikaObj* region = newNormalObj(New_Arm2D_Region);
  72. arm_2d_region_t _region = {
  73. .tLocation =
  74. {
  75. .iX = x,
  76. .iY = y,
  77. },
  78. .tSize =
  79. {
  80. .iWidth = w,
  81. .iHeight = h,
  82. },
  83. };
  84. obj_setStruct(region, "_self", _region);
  85. return region;
  86. }
  87. int Arm2D_tile_rotation(PikaObj* self,
  88. PikaObj* src,
  89. PikaObj* des,
  90. PikaObj* des_reg,
  91. PikaObj* centre,
  92. double angle,
  93. int mask_color) {
  94. static arm_2d_op_trans_t op_trans;
  95. arm_2d_tile_t* _src = obj_getStruct(src, "_self");
  96. arm_2d_tile_t* _des = obj_getStruct(des, "_self");
  97. arm_2d_region_t* _des_reg = obj_getStruct(des_reg, "_self");
  98. arm_2d_location_t* _centre = obj_getStruct(centre, "_self");
  99. int bIsNewFrame = pika_arm2d_globals.pfb_is_new_frame;
  100. return arm_2dp_tile_rotation(&op_trans, _src, _des, _des_reg, *_centre,
  101. angle, mask_color);
  102. }