You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

128 lines
4.1 KiB

2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
2 years ago
  1. #include "var_icon.hpp"
  2. using namespace iflytop;
  3. using namespace dwin;
  4. #define DO(x) \
  5. if (!x) { \
  6. printf("do %s fail\n", #x); \
  7. return false; \
  8. }
  9. static uint32_t s_VarIconNum = 0;
  10. bool VarIcon::flushcfg() { return m_dwin_screen->write_varspace16_muti(m_descript_add, (uint16_t *)&m_descript, sizeof(m_descript) / 2, 100); }
  11. bool VarIcon::readcfg() { return m_dwin_screen->read_varspace16_muti(m_descript_add, (uint16_t *)&m_descript, sizeof(m_descript) / 2, 100); }
  12. bool VarIcon::init(DwinScreen *dwin_screen) {
  13. m_dwin_screen = dwin_screen;
  14. return init(dwin_screen, dwin_screen->alloc_one_var_icon());
  15. }
  16. bool VarIcon::init(DwinScreen *dwin_screen, uint16_t descript_add) {
  17. //
  18. m_dwin_screen = dwin_screen;
  19. m_descript_add = descript_add;
  20. s_VarIconNum++;
  21. // printf("VarIcon(%d) init %04x\n", s_VarIconNum, m_descript_add);
  22. readcfg();
  23. return true;
  24. }
  25. // void VarIcon::initcfg(const char *pos, const char *iconpath, uint16_t initval) {
  26. // int posx = 0;
  27. // int posy = 0;
  28. // sscanf(pos, "(%d,%d)", &posx, &posy);
  29. // initcfg(m_dwin_screen->alloc_one_var_icon(), posx, posy, iconpath, initval);
  30. // }
  31. void VarIcon::initcfg(int x, int y, const char *iconpath, uint16_t initval) {
  32. if (m_varAdd == -1) m_varAdd = m_dwin_screen->alloc_free_ram(1);
  33. initcfg(m_varAdd, x, y, iconpath, initval);
  34. }
  35. void VarIcon::initcfg(uint16_t valpointerAdd, uint16_t posx, uint16_t posy, const char *iconpath, uint16_t initval) {
  36. // printf("initcfg %04x %d %d %s %d\n", valpointerAdd, posx, posy, iconpath, initval);
  37. int iconlib = 0;
  38. int iconmin = 0;
  39. int iconmax = 0;
  40. sscanf(iconpath, "%d/%d:%d", &iconlib, &iconmin, &iconmax);
  41. initcfg(valpointerAdd, initval, posx, posy, iconlib, iconmin, iconmax);
  42. }
  43. void VarIcon::initcfg(uint16_t valpointerAdd, uint16_t initval, uint16_t posx, uint16_t posy, uint16_t iconlib, uint16_t iconmin, uint16_t iconmax) {
  44. m_descript.m_VP = valpointerAdd;
  45. m_descript.m_PosX = posx;
  46. m_descript.m_PosY = posy;
  47. m_descript.m_VMin = 0;
  48. m_descript.m_VMax = iconmax - iconmin;
  49. m_descript.m_IconMin = iconmin;
  50. m_descript.m_IconMax = iconmax;
  51. m_descript.m_IconLib = iconlib;
  52. m_descript.m_Mode = 1;
  53. m_descript.m_LayerMode = 0;
  54. m_descript.m_ICONGamma = 0;
  55. m_descript.m_PICGamma = 0;
  56. m_descript.m_FilterSet = 0x3F;
  57. m_hide = false;
  58. m_varAdd = valpointerAdd;
  59. // printf("initcfg %04x %d %d %d %d %d %d\n", valpointerAdd, posx, posy, iconlib, iconmin, iconmax, initval);
  60. flushcfg();
  61. setVal(initval);
  62. }
  63. void VarIcon::setpos(uint16_t posx, uint16_t posy) {
  64. m_descript.m_PosX = posx;
  65. m_descript.m_PosY = posy;
  66. flushcfg();
  67. }
  68. void VarIcon::dumpinfo() {
  69. readcfg();
  70. printf("m_VP = %04x\n", m_descript.m_VP);
  71. printf("m_PosX = %d\n", m_descript.m_PosX);
  72. printf("m_PosY = %d\n", m_descript.m_PosY);
  73. printf("m_VMin = %d\n", m_descript.m_VMin);
  74. printf("m_VMax = %d\n", m_descript.m_VMax);
  75. printf("m_IconMin = %d\n", m_descript.m_IconMin);
  76. printf("m_IconMax = %d\n", m_descript.m_IconMax);
  77. printf("m_IconLib = %d\n", m_descript.m_IconLib);
  78. printf("m_Mode = %d\n", m_descript.m_Mode);
  79. printf("m_LayerMode = %d\n", m_descript.m_LayerMode);
  80. printf("m_ICONGamma = %d\n", m_descript.m_ICONGamma);
  81. printf("m_PICGamma = %d\n", m_descript.m_PICGamma);
  82. printf("m_FilterSet = %04x\n", m_descript.m_FilterSet);
  83. }
  84. bool VarIcon::setVal(uint16_t val) {
  85. m_val = val;
  86. if (m_hide) return true;
  87. return _setVal(val);
  88. }
  89. uint16_t VarIcon::getVal() {
  90. uint16_t val = 0xffff;
  91. if (m_hide) return m_val;
  92. m_dwin_screen->read_varspace16(m_descript.m_VP, val, 100);
  93. return val;
  94. }
  95. void VarIcon::hide() { //
  96. _setVal(VARICON_VAL_HIDE);
  97. /**
  98. * @brief
  99. */
  100. m_hide = true;
  101. };
  102. void VarIcon::show(bool showval) {
  103. if (showval) {
  104. m_hide = false;
  105. _setVal(m_val);
  106. } else {
  107. hide();
  108. }
  109. }
  110. VarIconDescript_t &VarIcon::getDescript() { return m_descript; }
  111. bool VarIcon::_setVal(uint16_t val) {
  112. if (m_varAdd == -1) return false;
  113. return m_dwin_screen->write_varspace16(m_descript.m_VP, val, 100);
  114. }