#include "var_icon.hpp" using namespace iflytop; using namespace dwin; #define DO(x) \ if (!x) { \ printf("do %s fail\n", #x); \ return false; \ } static uint32_t s_VarIconNum = 0; bool VarIcon::flushcfg() { return m_dwin_screen->write_varspace16_muti(m_descript_add, (uint16_t *)&m_descript, sizeof(m_descript) / 2, 100); } bool VarIcon::readcfg() { return m_dwin_screen->read_varspace16_muti(m_descript_add, (uint16_t *)&m_descript, sizeof(m_descript) / 2, 100); } bool VarIcon::init(DwinScreen *dwin_screen, uint16_t descript_add) { // m_dwin_screen = dwin_screen; m_descript_add = descript_add; s_VarIconNum++; // printf("VarIcon(%d) init %04x\n", s_VarIconNum, m_descript_add); readcfg(); return true; } void VarIcon::initcfg(uint16_t valpointerAdd, uint16_t posx, uint16_t posy, const char *iconpath, uint16_t initval) { int iconlib = 0; int iconmin = 0; int iconmax = 0; sscanf(iconpath, "%d/%d:%d", &iconlib, &iconmin, &iconmax); initcfg(valpointerAdd, initval, posx, posy, iconlib, iconmin, iconmax); } void VarIcon::initcfg(uint16_t valpointerAdd, uint16_t initval, uint16_t posx, uint16_t posy, uint16_t iconlib, uint16_t iconmin, uint16_t iconmax) { m_descript.m_VP = valpointerAdd; m_descript.m_PosX = posx; m_descript.m_PosY = posy; m_descript.m_VMin = 0; m_descript.m_VMax = iconmax - iconmin; m_descript.m_IconMin = iconmin; m_descript.m_IconMax = iconmax; m_descript.m_IconLib = iconlib; m_descript.m_Mode = 1; m_descript.m_LayerMode = 0; m_descript.m_ICONGamma = 0; m_descript.m_PICGamma = 0; m_descript.m_FilterSet = 0x3F; flushcfg(); setVal(initval); } void VarIcon::dumpinfo() { readcfg(); printf("m_VP = %04x\n", m_descript.m_VP); printf("m_PosX = %d\n", m_descript.m_PosX); printf("m_PosY = %d\n", m_descript.m_PosY); printf("m_VMin = %d\n", m_descript.m_VMin); printf("m_VMax = %d\n", m_descript.m_VMax); printf("m_IconMin = %d\n", m_descript.m_IconMin); printf("m_IconMax = %d\n", m_descript.m_IconMax); printf("m_IconLib = %d\n", m_descript.m_IconLib); printf("m_Mode = %d\n", m_descript.m_Mode); printf("m_LayerMode = %d\n", m_descript.m_LayerMode); printf("m_ICONGamma = %d\n", m_descript.m_ICONGamma); printf("m_PICGamma = %d\n", m_descript.m_PICGamma); printf("m_FilterSet = %04x\n", m_descript.m_FilterSet); } bool VarIcon::setVal(uint16_t val) { m_val = val; return _setVal(val); } uint16_t VarIcon::getVal() { uint16_t val = 0xffff; m_dwin_screen->read_varspace16(m_descript.m_VP, val, 100); return val; } void VarIcon::hide() { _setVal(VARICON_VAL_HIDE); }; void VarIcon::show() { _setVal(m_val); } VarIconDescript_t &VarIcon::getDescript() { return m_descript; } bool VarIcon::_setVal(uint16_t val) { return m_dwin_screen->write_varspace16(m_descript.m_VP, val, 100); }