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.

86 lines
2.9 KiB

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, uint16_t descript_add) {
  13. //
  14. m_dwin_screen = dwin_screen;
  15. m_descript_add = descript_add;
  16. s_VarIconNum++;
  17. printf("VarIcon(%d) init %04x\n", s_VarIconNum, m_descript_add);
  18. readcfg();
  19. return true;
  20. }
  21. void VarIcon::initcfg(uint16_t valpointerAdd, uint16_t posx, uint16_t posy, const char *iconpath, uint16_t initval) {
  22. int iconlib = 0;
  23. int iconmin = 0;
  24. int iconmax = 0;
  25. sscanf(iconpath, "%d/%d:%d", &iconlib, &iconmin, &iconmax);
  26. initcfg(valpointerAdd, initval, posx, posy, iconlib, iconmin, iconmax);
  27. }
  28. void VarIcon::initcfg(uint16_t valpointerAdd, uint16_t initval, uint16_t posx, uint16_t posy, uint16_t iconlib, uint16_t iconmin, uint16_t iconmax) {
  29. m_descript.m_VP = valpointerAdd;
  30. m_descript.m_PosX = posx;
  31. m_descript.m_PosY = posy;
  32. m_descript.m_VMin = 0;
  33. m_descript.m_VMax = iconmax - iconmin;
  34. m_descript.m_IconMin = iconmin;
  35. m_descript.m_IconMax = iconmax;
  36. m_descript.m_IconLib = iconlib;
  37. m_descript.m_Mode = 1;
  38. m_descript.m_LayerMode = 0;
  39. m_descript.m_ICONGamma = 0;
  40. m_descript.m_PICGamma = 0;
  41. m_descript.m_FilterSet = 0x3F;
  42. flushcfg();
  43. setVal(initval);
  44. }
  45. void VarIcon::dumpinfo() {
  46. readcfg();
  47. printf("m_VP = %04x\n", m_descript.m_VP);
  48. printf("m_PosX = %d\n", m_descript.m_PosX);
  49. printf("m_PosY = %d\n", m_descript.m_PosY);
  50. printf("m_VMin = %d\n", m_descript.m_VMin);
  51. printf("m_VMax = %d\n", m_descript.m_VMax);
  52. printf("m_IconMin = %d\n", m_descript.m_IconMin);
  53. printf("m_IconMax = %d\n", m_descript.m_IconMax);
  54. printf("m_IconLib = %d\n", m_descript.m_IconLib);
  55. printf("m_Mode = %d\n", m_descript.m_Mode);
  56. printf("m_LayerMode = %d\n", m_descript.m_LayerMode);
  57. printf("m_ICONGamma = %d\n", m_descript.m_ICONGamma);
  58. printf("m_PICGamma = %d\n", m_descript.m_PICGamma);
  59. printf("m_FilterSet = %04x\n", m_descript.m_FilterSet);
  60. }
  61. bool VarIcon::setVal(uint16_t val) {
  62. m_val = val;
  63. return _setVal(val);
  64. }
  65. uint16_t VarIcon::getVal() {
  66. uint16_t val = 0xffff;
  67. m_dwin_screen->read_varspace16(m_descript.m_VP, val, 100);
  68. return val;
  69. }
  70. void VarIcon::hide() { _setVal(VARICON_VAL_HIDE); };
  71. void VarIcon::show() { _setVal(m_val); }
  72. VarIconDescript_t &VarIcon::getDescript() { return m_descript; }
  73. bool VarIcon::_setVal(uint16_t val) {
  74. m_val = val;
  75. return m_dwin_screen->write_varspace16(m_descript.m_VP, val, 100);
  76. }