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.
103 lines
3.5 KiB
103 lines
3.5 KiB
#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) {
|
|
m_dwin_screen = dwin_screen;
|
|
return init(dwin_screen, dwin_screen->alloc_one_var_icon());
|
|
}
|
|
|
|
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(const char *pos, const char *iconpath, uint16_t initval) {
|
|
// int posx = 0;
|
|
// int posy = 0;
|
|
// sscanf(pos, "(%d,%d)", &posx, &posy);
|
|
// initcfg(m_dwin_screen->alloc_one_var_icon(), posx, posy, iconpath, initval);
|
|
// }
|
|
void VarIcon::initcfg(int x, int y, const char *iconpath, uint16_t initval) { initcfg(m_dwin_screen->alloc_one_var_icon(), x, y, iconpath, initval); }
|
|
|
|
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::setpos(uint16_t posx, uint16_t posy) {
|
|
m_descript.m_PosX = posx;
|
|
m_descript.m_PosY = posy;
|
|
flushcfg();
|
|
}
|
|
|
|
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); }
|