Browse Source

update

master
zhaohe 2 years ago
parent
commit
8135678d4a
  1. 4
      components/dwin/dwin.hpp
  2. 1
      components/dwin/dwin_screen.cpp
  3. 3
      components/dwin/dwin_screen.hpp
  4. 70
      components/dwin/text_displayer.cpp
  5. 109
      components/dwin/text_displayer.hpp
  6. 56
      components/dwin/var_icon.cpp
  7. 58
      components/dwin/var_icon.hpp

4
components/dwin/dwin.hpp

@ -0,0 +1,4 @@
#pragma once
#include "dwin_screen.hpp"
#include "text_displayer.hpp"
#include "var_icon.hpp"

1
components/dwin/dwin_screen.cpp

@ -2,6 +2,7 @@
#include <string.h>
using namespace iflytop;
using namespace iflytop::dwin;
#define TAG "dwin"

3
components/dwin/dwin_screen.hpp

@ -1,6 +1,7 @@
#pragma once
#include "sdk\hal\zhal.hpp"
namespace iflytop {
namespace dwin {
using namespace std;
/**
@ -92,5 +93,5 @@ class DwinScreen {
void sendcmd(uint8_t* cmd, size_t len);
bool sendcmdblock(int overtime);
};
} // namespace dwin
} // namespace iflytop

70
components/dwin/text_displayer.cpp

@ -0,0 +1,70 @@
#include "text_displayer.hpp"
#include <string.h>
using namespace iflytop::dwin;
using namespace iflytop;
using namespace std;
#define DO(x) \
if (!x) { \
printf("do %s fail\n", #x); \
return false; \
}
static uint8_t txcache[256];
bool TextDisplayer::init(DwinScreen *dwin_screen, uint16_t descript_add, uint16_t val_add) {
//
m_dwin_screen = dwin_screen;
m_descript_add = descript_add;
printf("TextDisplayer init %04x\n", m_descript_add);
readcfg();
if (val_add != 0) {
m_descript.VP = val_add;
flushcfg();
}
return true;
}
bool TextDisplayer::flushcfg() { return m_dwin_screen->write_varspace16_muti(m_descript_add, (uint16_t *)&m_descript, sizeof(m_descript) / 2, 100); }
bool TextDisplayer::readcfg() { return m_dwin_screen->read_varspace16_muti(m_descript_add, (uint16_t *)&m_descript, sizeof(m_descript) / 2, 100); }
void TextDisplayer::setFont(uint16_t EncodeMode, uint8_t font0id, uint8_t font1id, uint16_t frontxsize, uint16_t frontysize) {
m_descript.EncodeMode = EncodeMode;
m_descript.Font0ID = font0id;
m_descript.Font1ID = font1id;
m_descript.FontYDots = frontysize;
m_descript.FontXDots = frontxsize;
m_descript.TextLength = 256;
}
void TextDisplayer::setPos(uint16_t x, uint16_t y, uint16_t width, uint16_t hight) {
uint16_t startx = x;
uint16_t endx = x + width;
uint16_t starty = y;
uint16_t endy = y + hight;
m_descript.PosX = x;
m_descript.PosY = y;
m_descript.Xs = x;
m_descript.Ys = y;
m_descript.Xe = endx;
m_descript.Ye = endy;
}
bool TextDisplayer::setTextLengthDirect(uint16_t len) {
DO(m_dwin_screen->write_varspace16(m_descript_add + 8, len, 100));
return true;
}
bool TextDisplayer::setVal(const char *val) {
memset(txcache, 0, sizeof(txcache));
memcpy(txcache, val, strlen(val));
DO(m_dwin_screen->write_varspace(m_descript.VP, txcache, strlen(val) + 2, 100));
#if 0
uint16_t zero = 0;
setTextLengthDirect(0);
m_dwin_screen->write_varspace(m_descript.VP, (uint8_t *)val, strlen(val), 100);
setTextLengthDirect((uint16_t)strlen(val));
m_descript.TextLength = (uint16_t)strlen(val);
#endif
return true;
}
void TextDisplayer::setColor(uint16_t color) { m_descript.Color = color; }
void TextDisplayer::dumpinfo() {}

109
components/dwin/text_displayer.hpp

@ -0,0 +1,109 @@
#pragma once
#include "sdk\components\dwin\dwin_screen.hpp"
namespace iflytop {
namespace dwin {
using namespace std;
/**
* @brief
*
* 0x00 *VP
*
*/
/**
*
* 0x00: *VP 2
* 0x01: (X,Y) 4
* 0x03: Color 2
* 0x04: (xs,Ys)(xe,Ye) 8
* 0x08: Text_Length 2 0xFFFF0x0000
* 0x09: Font0_ID(H) 1 0x01-0x04ASII字符使用的字库位置
* 0x09: Font1_ID(L) 1 0x000x050x01-0x04ASCII字符使用的字库位置
* 0x0A: Font_x_Dots(H) 1 x方向点阵数0x01-0x04ASCII字符的x方向点阵数按照x/2
* 0x0A: Font_Y_Dots(L) 1 Y方向点阵数
* 0x0B: Encode_Mode(H) 1 .7
* .7=0
* .7=1
* .6-.00=8bit编码1=GB2312内码2=GBK 3=BIG5 4=SJIS 5=UNICODE
* 0x0B: HOR_Dis(L 1
* 0x0C: VER_Dis(H) 1
* 0x0C: (L) 1 0x00
*
*/
#pragma pack(1)
typedef struct {
uint16_t VP;
uint16_t PosX;
uint16_t PosY;
uint16_t Color;
uint16_t Xs;
uint16_t Ys;
uint16_t Xe;
uint16_t Ye;
uint16_t TextLength;
uint8_t Font1ID;
uint8_t Font0ID;
uint8_t FontYDots;
uint8_t FontXDots;
uint8_t LHORDis;
uint8_t EncodeMode; // [7:7] 0字符间距自动调整,1字符间距不自动调整 [6:0] 0=8bit编码1=GB2312内码2=GBK 3=BIG5 4=SJIS 5=UNICODE
uint8_t mark;
uint8_t LVERDis;
} TextDisplayerDescript_t;
#pragma pack()
typedef enum {
kcolor_red = 0xF800,
kcolor_black = 0x0000,
kcolor_white = 0xFFFF,
kcolor_grey = 0xc618,
} dwincolor_t;
class TextDisplayer {
DwinScreen *m_dwin_screen = nullptr;
uint16_t m_descript_add = 0;
TextDisplayerDescript_t m_descript;
public:
bool init(DwinScreen *dwin_screen, uint16_t descript_add, uint16_t val_add);
/**
* @brief Set the Font object
*
* @param EncodeMode [7:7] 0,1 [6:0] 0=8bit编码1=GB2312内码2=GBK 3=BIG5 4=SJIS 5=UNICODE
* @param font0id
* @param font1id
*/
void setFont(uint16_t EncodeMode, uint8_t font0id, uint8_t font1id, uint16_t frontxsize, uint16_t frontysize);
/**
* @brief Set the Pos object
*
* @param x
* @param y
* @param width
* @param hight
*/
void setPos(uint16_t x, uint16_t y, uint16_t width, uint16_t hight);
/**
* @brief
*
* @param
*/
bool setVal(const char *val);
void setColor(uint16_t color);
bool setTextLengthDirect(uint16_t len);
public:
bool flushcfg();
bool readcfg();
void dumpinfo();
};
} // namespace dwin
} // namespace iflytop

56
components/dwin/var_icon.cpp

@ -0,0 +1,56 @@
#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 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);
}

58
components/dwin/var_icon.hpp

@ -0,0 +1,58 @@
#pragma once
#include "sdk\components\dwin\dwin_screen.hpp"
namespace iflytop {
namespace dwin {
using namespace std;
#pragma pack(1)
typedef struct {
uint16_t m_VP = 0;
uint16_t m_PosX = 0;
uint16_t m_PosY = 0;
uint16_t m_VMin = 0;
uint16_t m_VMax = 0;
uint16_t m_IconMin = 0;
uint16_t m_IconMax = 0;
uint8_t m_Mode = 0;
uint8_t m_IconLib = 0;
uint8_t m_ICONGamma = 0;
uint8_t m_LayerMode = 0;
uint8_t m_FilterSet = 0;
uint8_t m_PICGamma = 0;
} VarIconDescript_t;
#pragma pack()
class VarIcon {
DwinScreen *m_dwin_screen = nullptr;
uint16_t m_descript_add = 0;
VarIconDescript_t m_descript;
public:
bool init(DwinScreen *dwin_screen, uint16_t descript_add);
void initcfg(uint16_t valpointerAdd, uint16_t initval, uint16_t posx, uint16_t posy, uint16_t iconlib, uint16_t iconmin, uint16_t iconmax);
public:
bool flushcfg();
bool readcfg();
bool setVal(uint16_t val) { return m_dwin_screen->write_varspace16(m_descript.m_VP, val, 100); }
uint16_t getVal() {
uint16_t val = 0xffff;
m_dwin_screen->read_varspace16(m_descript.m_VP, val, 100);
return val;
}
VarIconDescript_t &getDescript() { return m_descript; }
void dumpinfo();
public:
};
} // namespace dwin
} // namespace iflytop
Loading…
Cancel
Save