优化显示列表

Signed-off-by: kevin <kevin@lmve.net>
This commit is contained in:
2022-08-09 23:43:24 +08:00
parent 4f7d47edbd
commit f54fd763c4
12 changed files with 808 additions and 898 deletions
+4 -4
View File
@@ -141,7 +141,7 @@ int SHOW_MENU(menu *m,int encoder,char button,char lan)
list++;
}
str[c]='\0';
OLED_Str(0, 16*b, 16, str, 1);
OLED_Str(0, 16*b, 16, str,0, 1);
c=0;
list++;
@@ -231,7 +231,7 @@ void mymain()
case 0:
//启动跳转模式
//用于读取系统配置后跳转到其他程序
//OLED_Str_list(0,0,8,"123\n456\n789",1,2,1);
mode=1;
break;
case 1:
@@ -246,12 +246,12 @@ void mymain()
{
da();
}
OLED_Str(0,0,8,moser_buff,1);
OLED_Str(0,0,8,moser_buff,0,1);
fps_++;
sprintf(str,"FPS:%d",fps);
OLED_Str(0,56,8,str,1);
OLED_Str(0,56,8,str,0,1);
if(B1.code==255)
{
+43 -7
View File
@@ -972,9 +972,11 @@ void OLED_Ascii(unsigned char x,unsigned char y,unsigned char size,char chr,unsi
}
void OLED_Str(unsigned char x,unsigned char y,unsigned char size,char *str,unsigned char type)
void OLED_Str(unsigned char x,unsigned char y,unsigned char size,char *str,unsigned char lenconst,unsigned char type)
{
unsigned char size2;
unsigned char tempx=x;
unsigned char templenstard=1;
switch(size)
{
case 8:
@@ -990,21 +992,34 @@ void OLED_Str(unsigned char x,unsigned char y,unsigned char size,char *str,unsig
while(*str!='\0')
{
if(x+size2>=X_WIDTH)
if((x+size2>=X_WIDTH)||(*str=='\n'))
{
if(lenconst!=0)
{
if(templenstard>=lenconst)
{
return;
}
}
templenstard++;
y+=size;
if(y>=Y_WIDTH)
{
y=0;
//y=0;
return;
}
x=0;
x=tempx;
}else
{
OLED_Ascii(x,y,size,*str,type);
x+=size2;
}
OLED_Ascii(x,y,size,*str,type);
str++;
x+=size2;
@@ -1012,6 +1027,27 @@ void OLED_Str(unsigned char x,unsigned char y,unsigned char size,char *str,unsig
}
void OLED_Str_list(unsigned char x,unsigned char y,unsigned char size,char *str,unsigned char lenstard,unsigned char lenconst,unsigned char type)
{
unsigned char templenstard=0;
while(templenstard!=lenstard)//跳转到指定行
{
switch(*str)
{
case '\n': //如果是回车 行加加
templenstard++;
break;
case '\0': //如果字符串提前结束 报错 直接返回
return;
}
str++;
}
OLED_Str(x,y,size,str,lenconst,type);
}
/*
几何绘图
*/
+2 -1
View File
@@ -29,7 +29,8 @@ void OLED_set_dot(unsigned char x,unsigned char y,unsigned char dot_type);
void OLED_Pix(unsigned char x,unsigned char y,unsigned char w,unsigned char h,const char *p,unsigned char type);
void OLED_Ascii(unsigned char x,unsigned char y,unsigned char size,char chr,unsigned char type);
void OLED_Str(unsigned char x,unsigned char y,unsigned char size,char *str,unsigned char type);
void OLED_Str(unsigned char x,unsigned char y,unsigned char size,char *str,unsigned char lenconst,unsigned char type);
void OLED_Str_list(unsigned char x,unsigned char y,unsigned char size,char *str,unsigned char lenstard,unsigned char lenconst,unsigned char type);
void OLED_AL(int sx,int sy,int ex,int ey,unsigned char dot_type);