取消代码中utf8的编码转换

This commit is contained in:
2025-07-05 19:05:35 +08:00
parent 12afd677b6
commit 8c12c1ffc3
8 changed files with 215 additions and 239 deletions

View File

@@ -42,7 +42,7 @@ void WIN_DrawPointSafe (int x,int y,int mode)
// LCD_DrawPointSafe (x,y,0);
ewin->lcd->drawPoint(x,y,mode);
}
}
void WIN_DrawPointNormal (int x,int y,int mode)
@@ -58,7 +58,7 @@ void WIN_DrawPointColorSafe (int x,int y,u32 color)
{
ewin->lcd->drawPointColor(x,y,color);
}
}
void WIN_DrawPointColorNormal (int x,int y,u32 color)
@@ -165,7 +165,7 @@ void WIN_DrawTxtCenterAtRect (char *txt,int x,int y,int x_size,int y_size)
char *txt_ptr=txtbuff;
while (*txt)
{
if (line_i>=line_max)
if (line_i>=line_max)
{line_i--;break;}
if ((*txt&0x80)==0)
{
@@ -175,7 +175,7 @@ void WIN_DrawTxtCenterAtRect (char *txt,int x,int y,int x_size,int y_size)
line_i++;
txt_ptr=txtbuff+(char_max+1)*line_i;
x_s=x;
if (*txt=='\n')
if (*txt=='\n')
{ txt++; }
continue;
}
@@ -268,42 +268,42 @@ void WIN_DrawVLine (int x,int y_s,int y_e)
//画线 x1,y1:起点坐标 x2,y2:终点坐标
//画线 x1,y1:起点坐标 x2,y2:终点坐标
void WIN_DrawLine(int x1, int y1, int x2, int y2)
{
int t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy,uRow,uCol;
delta_x=x2-x1; //计算坐标增量
delta_y=y2-y1;
uRow=x1;
uCol=y1;
if(delta_x>0)incx=1; //设置单步方向
else if(delta_x==0)incx=0;//垂直线
else {incx=-1;delta_x=-delta_x;}
if(delta_y>0)incy=1;
else if(delta_y==0)incy=0;//水平线
else{incy=-1;delta_y=-delta_y;}
if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴
else distance=delta_y;
for(t=0;t<=distance+1;t++ )//画线输出
{
int t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy,uRow,uCol;
delta_x=x2-x1; //计算坐标增量
delta_y=y2-y1;
uRow=x1;
uCol=y1;
if(delta_x>0)incx=1; //设置单步方向
else if(delta_x==0)incx=0;//垂直线
else {incx=-1;delta_x=-delta_x;}
if(delta_y>0)incy=1;
else if(delta_y==0)incy=0;//水平线
else{incy=-1;delta_y=-delta_y;}
if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴
else distance=delta_y;
for(t=0;t<=distance+1;t++ )//画线输出
{
//WIN_GetWinStruct()->drawPoint (uRow,uCol,1);
WIN_DrawPointSafe (uRow,uCol,1);
xerr+=delta_x ;
yerr+=delta_y ;
if(xerr>distance)
{
xerr-=distance;
uRow+=incx;
}
if(yerr>distance)
{
yerr-=distance;
uCol+=incy;
}
}
}
xerr+=delta_x ;
yerr+=delta_y ;
if(xerr>distance)
{
xerr-=distance;
uRow+=incx;
}
if(yerr>distance)
{
yerr-=distance;
uCol+=incy;
}
}
}
@@ -314,7 +314,7 @@ void WIN_DrawCircle(int x0,int y0,int r)
int di;
int c_x=0;
int c_y=0;
a=0;b=r;
a=0;b=r;
di=3-(r<<1); //判断下个点位置的标志
while(a<=b)
{
@@ -337,15 +337,15 @@ void WIN_DrawCircle(int x0,int y0,int r)
c_x=x0-b;c_y=y0-a;
WIN_DrawPointSafe (c_x,c_y,1);
a++;
//使用Bresenham算法画圆
if(di<0)di +=4*a+6;
//使用Bresenham算法画圆
if(di<0)di +=4*a+6;
else
{
di+=10+4*(a-b);
di+=10+4*(a-b);
b--;
}
}
}
}
}
@@ -399,7 +399,7 @@ void WIN_DrawRect (int x,int y,int x_size,int y_size)
WIN_PlaneAAStruct *WIN_CreatPlaneAA(int x,int y,int x_size,int y_size,int accuracy)
{
WIN_PlaneAAStruct *ret=mymalloc(sizeof(WIN_PlaneAAStruct)+x_size*y_size);
if(ret)
{
ret->x=x;
@@ -452,22 +452,22 @@ void WIN_DrawPointAA(WIN_PlaneAAStruct *p,int x,int y)
int x_e=x_s+1;int y_e=y_s+1;
if(x_s<p->x||x_s>p->x+p->x_size-1) return;
if(y_s<p->y||y_s>p->y+p->y_size-1) return;
//每个像素的细分程度,除以一个p->accuracy是这个虚拟像素在实际像素里的分量
//再除以一个p->accuracy是因为上层步进值
int accuracy=p->accuracy;//*p->accuracy;
int accuracy=p->accuracy;//*p->accuracy;
int alpha_x=16-(x%p->accuracy)*16/p->accuracy;
int alpha_y=16-(y%p->accuracy)*16/p->accuracy;
u8 *point=0;
int point_=0;
point=&p->alpha[p->x_size*(y_s-p->y)+(x_s-p->x)];
point_=*point+alpha_x*alpha_y/accuracy;
if(point_>0xff) point_=0xff;
*point=point_;
if(x_e<p->x+p->x_size)
{
point=&p->alpha[p->x_size*(y_s-p->y)+(x_e-p->x)];
@@ -494,46 +494,46 @@ void WIN_DrawPointAA(WIN_PlaneAAStruct *p,int x,int y)
//在平面内画线 x1,y1:起点坐标 x2,y2:终点坐标
//在平面内画线 x1,y1:起点坐标 x2,y2:终点坐标
static void WIN_PlaneDrawLine(WIN_PlaneAAStruct *p,int x1, int y1, int x2, int y2)
{
if(p==0) return;
int t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy,uRow,uCol;
delta_x=x2-x1; //计算坐标增量
delta_y=y2-y1;
uRow=x1;
uCol=y1;
if(delta_x>0)incx=1; //设置单步方向
else if(delta_x==0)incx=0;//垂直线
else {incx=-1;delta_x=-delta_x;}
if(delta_y>0)incy=1;
else if(delta_y==0)incy=0;//水平线
else{incy=-1;delta_y=-delta_y;}
if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴
else distance=delta_y;
for(t=0;t<=distance+1;t++ )//画线输出
{
int t;
int xerr=0,yerr=0,delta_x,delta_y,distance;
int incx,incy,uRow,uCol;
delta_x=x2-x1; //计算坐标增量
delta_y=y2-y1;
uRow=x1;
uCol=y1;
if(delta_x>0)incx=1; //设置单步方向
else if(delta_x==0)incx=0;//垂直线
else {incx=-1;delta_x=-delta_x;}
if(delta_y>0)incy=1;
else if(delta_y==0)incy=0;//水平线
else{incy=-1;delta_y=-delta_y;}
if( delta_x>delta_y)distance=delta_x; //选取基本增量坐标轴
else distance=delta_y;
for(t=0;t<=distance+1;t++ )//画线输出
{
WIN_DrawPointAA(p,uRow,uCol);
xerr+=delta_x ;
yerr+=delta_y ;
if(xerr>distance)
{
xerr-=distance;
uRow+=incx;
}
if(yerr>distance)
{
yerr-=distance;
uCol+=incy;
}
}
xerr+=delta_x ;
yerr+=delta_y ;
if(xerr>distance)
{
xerr-=distance;
uRow+=incx;
}
if(yerr>distance)
{
yerr-=distance;
uCol+=incy;
}
}
}
}
//抗锯齿画线
@@ -545,7 +545,7 @@ void WIN_DrawLineAA(int x1, int y1, int x2, int y2,int accuracy)
int y_size=y1-y2;if(y_size<0) y_size=-y_size;
x_size++;y_size++;
WIN_PlaneAAStruct *p=WIN_CreatPlaneAA(x,y,x_size,y_size,4);
if(p)
{
x1*=p->accuracy;
@@ -568,13 +568,13 @@ void WIN_FillRectByColor (int x,int y,int x_size,int y_size)
RECT_Struct r1;
RECT_Struct r2;
RECT_Struct ret;
r1.x=x;r1.x_size=x_size;r1.y=y;r1.y_size=y_size;
r2.x=WIN_GetWinStruct()->Invalid_x;
r2.x_size=WIN_GetWinStruct()->Invalid_x_size;
r2.y=WIN_GetWinStruct()->Invalid_y;
r2.y_size=WIN_GetWinStruct()->Invalid_y_size;
//绘制新矩形
if (POS_RectIntersection(&ret,&r1,&r2))
{
@@ -590,13 +590,13 @@ void WIN_FillRectByColorAlpha (int x,int y,int x_size,int y_size,u8 alpha)
RECT_Struct r1;
RECT_Struct r2;
RECT_Struct ret;
r1.x=x;r1.x_size=x_size;r1.y=y;r1.y_size=y_size;
r2.x=WIN_GetWinStruct()->Invalid_x;
r2.x_size=WIN_GetWinStruct()->Invalid_x_size;
r2.y=WIN_GetWinStruct()->Invalid_y;
r2.y_size=WIN_GetWinStruct()->Invalid_y_size;
//绘制新矩形
if (POS_RectIntersection(&ret,&r1,&r2))
{
@@ -612,14 +612,14 @@ void WIN_FillRect (int x,int y,int x_size,int y_size,u16 *buff,u16 pic_x,u16 pic
RECT_Struct r1;
RECT_Struct r2;
RECT_Struct ret;
r1.x=x;r1.x_size=x_size;r1.y=y;r1.y_size=y_size;
r2.x=WIN_GetWinStruct()->Invalid_x;
r2.x_size=WIN_GetWinStruct()->Invalid_x_size;
r2.y=WIN_GetWinStruct()->Invalid_y;
r2.y_size=WIN_GetWinStruct()->Invalid_y_size;
//绘制新矩形
if (POS_RectIntersection(&ret,&r1,&r2))
{
@@ -641,14 +641,14 @@ void WIN_FillRectAlpha (int x,int y,int x_size,int y_size,void *buff,u16 pic_x,u
RECT_Struct r1;
RECT_Struct r2;
RECT_Struct ret;
r1.x=x;r1.x_size=x_size;r1.y=y;r1.y_size=y_size;
r2.x=WIN_GetWinStruct()->Invalid_x;
r2.x_size=WIN_GetWinStruct()->Invalid_x_size;
r2.y=WIN_GetWinStruct()->Invalid_y;
r2.y_size=WIN_GetWinStruct()->Invalid_y_size;
//绘制新矩形
if (POS_RectIntersection(&ret,&r1,&r2))
{
@@ -807,20 +807,20 @@ void WIN_FillPolygon(POINT_Struct *Points, int PointCount)
//此函数效率比较低,只用于绘制小图标,绘制图片使用矩形填充函数
void WIN_DrawImag (int x,int y,int xsize,int ysize,const u8 *buff)
{
if (buff==0) return ;
u8 scan=buff[0];
u8 gray=buff[1];
u16 w=*((u16*)&buff[2]);
u16 h=*((u16*)&buff[4]);
u8 is565=buff[6];
u8 rgb=buff[7];
//必须所有参数都符合要求
if ((scan!=0x00)||(gray!=0x10)||(w>WIN_IMAGE_MAXSIZE)||(h>WIN_IMAGE_MAXSIZE)||(is565!=0x01)||(rgb!=0x1b))
return;
u16 *imag=(u16 *)(buff+8);
if (xsize>w) xsize=w;
@@ -841,20 +841,20 @@ void WIN_DrawImag (int x,int y,int xsize,int ysize,const u8 *buff)
//绘制图标,但是不绘制指定颜色
void WIN_DrawImagButColor (int x,int y,int xsize,int ysize,const u8 *buff,u16 color)
{
if (buff==0) return ;
u8 scan=buff[0];
u8 gray=buff[1];
u16 w=*((u16*)&buff[2]);
u16 h=*((u16*)&buff[4]);
u8 is565=buff[6];
u8 rgb=buff[7];
//必须所有参数都符合要求
if ((scan!=0x00)||(gray!=0x10)||(w>WIN_IMAGE_MAXSIZE)||(h>WIN_IMAGE_MAXSIZE)||(is565!=0x01)||(rgb!=0x1b))
return;
u16 *imag=(u16 *)(buff+8);
if (xsize>w) xsize=w;
@@ -866,7 +866,7 @@ void WIN_DrawImagButColor (int x,int y,int xsize,int ysize,const u8 *buff,u16 co
if (imag[i]!=color)
//WIN_GetWinStruct()->drawPointColor (i+x,j,imag[i]);
WIN_DrawPointColorSafe (i+x,j,imag[i]);
}
imag+=w;
}
@@ -880,20 +880,20 @@ void WIN_DrawImagButColor (int x,int y,int xsize,int ysize,const u8 *buff,u16 co
//此函数效率比较低,只用于绘制小图标,绘制图片使用矩形填充函数
void WIN_DrawImagByColor (int x,int y,int xsize,int ysize,const u8 *buff,u16 color)
{
if (buff==0) return ;
u8 scan=buff[0];
u8 gray=buff[1];
u16 w=*((u16*)&buff[2]);
u16 h=*((u16*)&buff[4]);
u8 is565=buff[6];
u8 rgb=buff[7];
//必须所有参数都符合要求
if ((scan!=0x00)||(gray!=0x10)||(w>WIN_IMAGE_MAXSIZE)||(h>WIN_IMAGE_MAXSIZE)||(is565!=0x01)||(rgb!=0x1b))
return;
u16 *imag=(u16 *)(buff+8);
if (xsize>w) xsize=w;
@@ -916,20 +916,20 @@ void WIN_DrawImagByColor (int x,int y,int xsize,int ysize,const u8 *buff,u16 col
//此函数效率比较低,只用于绘制小图标,绘制图片使用矩形填充函数
void WIN_DrawImagByAlpha (int x,int y,int xsize,int ysize,const u8 *buff,u16 color)
{
if (buff==0) return ;
u8 scan=buff[0];
u8 gray=buff[1];
u16 w=*((u16*)&buff[2]);
u16 h=*((u16*)&buff[4]);
u8 is565=buff[6];
u8 rgb=buff[7];
//必须所有参数都符合要求
if ((scan!=0x00)||(gray!=0x10)||(w>WIN_IMAGE_MAXSIZE)||(h>WIN_IMAGE_MAXSIZE)||(is565!=0x01)||(rgb!=0x1b))
return;
u16 *imag=(u16 *)(buff+8);
u8 r,g,b;
u8 alpha=0;
@@ -968,20 +968,20 @@ void WIN_DrawImagByAlpha (int x,int y,int xsize,int ysize,const u8 *buff,u16 col
//此函数效率比较低,只用于绘制小图标,绘制图片使用矩形填充函数
void WIN_DrawImagByAlphaAnti (int x,int y,int xsize,int ysize,const u8 *buff,u16 color)
{
if (buff==0) return ;
u8 scan=buff[0];
u8 gray=buff[1];
u16 w=*((u16*)&buff[2]);
u16 h=*((u16*)&buff[4]);
u8 is565=buff[6];
u8 rgb=buff[7];
//必须所有参数都符合要求
if ((scan!=0x00)||(gray!=0x10)||(w>WIN_IMAGE_MAXSIZE)||(h>WIN_IMAGE_MAXSIZE)||(is565!=0x01)||(rgb!=0x1b))
return;
u16 *imag=(u16 *)(buff+8);
u8 r,g,b;
u8 alpha=0;
@@ -1067,7 +1067,7 @@ void WIN_GetTxtRectSize (char *txt,int *x_size,int *y_size)
//获得图像数据的尺寸,返回0成功非0失败
int WIN_GetImageSize (u8 *buff,int *xsize,int *ysize)
{
if (buff==0) return -1;
u8 scan=buff[0];
u8 gray=buff[1];
@@ -1075,11 +1075,11 @@ int WIN_GetImageSize (u8 *buff,int *xsize,int *ysize)
u16 h=*((u16*)&buff[4]);
u8 is565=buff[6];
u8 rgb=buff[7];
//必须所有参数都符合要求
if ((scan!=0x00)||(gray!=0x10)||(is565!=0x01)||(rgb!=0x1b))
return -1;
*xsize=w;
*ysize=h;
return 0;

View File

@@ -1,4 +1,4 @@
#include "mywin_inc.h"
#include "mywin_inc.h"
#include "rtthread.h"
#include "main.h"
#include "system_updata.h"
@@ -36,7 +36,7 @@ void WIN_FontInit (char *path,char *en_path)
ft_error=FT_New_Face (g_ft_library,path,0,&ft_face);
if (ft_error==0)
{
if(g_ft_face) {FT_Done_Face(g_ft_face);g_ft_face=0;}
g_ft_face=ft_face;
}
@@ -100,7 +100,7 @@ void WIN_InitCfg (void)
g_lcd.exitLayerBuff=LCD_ExitLayerBuff;
//g_lcd.setScreenDis=LCD_SetScreenDis;
g_lcd.setWindow=LCD_SetWindow;
g_lcd.setDrawMode=LCD_SetLcdDrawMode;
g_lcd.setDrawMode=LCD_SetLcdDrawMode;
g_lcd.getLcdSizeX=LCD_GetLcdSizeX;
g_lcd.getLcdSizeY=LCD_GetLcdSizeY;
// g_lcd.getWindowSizeX=LCD_GetWindowSizeX;
@@ -110,22 +110,22 @@ void WIN_InitCfg (void)
g_lcd.setLcdColor=(u16(*)(u16))LCD_SetLcdColor16;
g_lcd.setLcdBkColor=(u16(*)(u16))LCD_SetLcdBkColor16;
ewin->lcd=&g_lcd;
//字体初始化
WIN_FontInit("simfang.ttf",0);
// WIN_FontInit("0:/ttf/simsun6.ttc",0);
// WIN_FontInit("0:/ttf/华文中宋.ttf","0:/ttf/Agency-FB.ttf");
WIN_FontDrawFunStruct *font=&WIN_GetWinStruct()->font;
// font->malloc=mymalloc_ccm;
// font->free=myfree_ccm;
font->malloc=mymalloc_exm;
font->free=myfree;
//设置默认字体
WIN_SetFontSize(24);
WIN_SetFontType(WIN_FONT_TYPE_NORMAL);
}
@@ -153,15 +153,15 @@ void WIN_Delay_ms (u32 ms)
static struct rt_semaphore g_gui={0};
static rt_err_t g_gui_err=RT_ERROR;
#define GUI_CREAT() {g_gui_err=rt_sem_init(&g_gui,"g_gui",1,RT_IPC_FLAG_FIFO);\
rt_sem_take (&g_gui,RT_WAITING_FOREVER);}
#define GUI_DELETE() {g_gui_err=rt_sem_release (&g_gui);\
if (g_gui_err==RT_EOK) rt_sem_detach(&g_gui);}
#define GUI_WAIT() {while (g_gui_err==RT_ERROR) rt_thread_delay(10);\
rt_sem_take (&g_gui,RT_WAITING_FOREVER);}
rt_sem_take (&g_gui,RT_WAITING_FOREVER);}
#define GUI_WAIT_END() {}
#else
#define GUI_CREAT() {}
@@ -213,7 +213,7 @@ WIN_WorkFunStruct *WIN_CreatThread (int (*fun)(void *),void *ptr,int *ret)
mymemset (handle,0,sizeof (WIN_ThreadHandle));
handle->tackSize=4096;
handle->tack=mymalloc (handle->tackSize);
WIN_WorkFunStruct *work=mymalloc (sizeof (WIN_WorkFunStruct));
mymemset (work,0,sizeof (WIN_WorkFunStruct));
work->fun=fun;
@@ -240,7 +240,7 @@ WIN_WorkFunStruct *WIN_CreatThreadPro (int (*fun)(void *),void *ptr,int *ret,u8
mymemset (handle,0,sizeof (WIN_ThreadHandle));
handle->tackSize=4096;
handle->tack=mymalloc (handle->tackSize);
WIN_WorkFunStruct *work=mymalloc (sizeof (WIN_WorkFunStruct));
mymemset (work,0,sizeof (WIN_WorkFunStruct));
work->fun=fun;
@@ -284,8 +284,8 @@ void WIN_ExWorkFunClear (WIN_WorkFunStruct *w)
//解码png图片成功返回1失败返回0
static int decode_png(WIN_PicStruct *pic,const char *name)
{
int png_err=0;
png_image image; /* The control structure used by libpng */
@@ -331,7 +331,7 @@ int WIN_DecodeImg(WIN_PicStruct *pic,const char *name)
//判断图片格式
int str_len=strlen(name);
const char *p_str=&name[str_len-4];
//解码时显示提示,这个函数是阻塞的
if (strcmp (p_str,".png")==0)
{
@@ -395,35 +395,35 @@ int WIN_DecodeImg(WIN_PicStruct *pic,const char *name)
//根据字体类型获取字模数据
int WIN_GetWordData(u8 size,u8 type,unsigned char *buff, int word, int buff_size)
{
u8 gbk[4]={0};
u8 uni[3]={0};
if (word>0x80)
{
gbk[0]=(word>>16)&0xff;
gbk[1]=(word>>8)&0xff;
gbk[2]=word&0xff;
// gbk[2]=word&0xff;
}
else
{
gbk[0]=word;
}
utf82uni_str(gbk,uni);
gbk2uni_str(gbk,uni);
if (g_ft_face)
{
FT_Error ft_error=0;
load_char:
ft_error=FT_Set_Pixel_Sizes(g_ft_face, size, size);
if(type==WIN_FONT_TYPE_BITMAP)
ft_error=FT_Load_Char (g_ft_face,(uni[0]<<8)|uni[1],FT_LOAD_RENDER|FT_LOAD_MONOCHROME);
else
ft_error=FT_Load_Char (g_ft_face,(uni[0]<<8)|uni[1],FT_LOAD_RENDER);
// if(ft_error)
// if(ft_error)
// {
// printf("%s:err,ft_error=0x%02x,c=%s,uni=%02x,%02x\r\n",__func__,ft_error,gbk,uni[0],uni[1]);
// WIN_FontInit("华文中宋.ttf",0);
@@ -431,7 +431,7 @@ int WIN_GetWordData(u8 size,u8 type,unsigned char *buff, int word, int buff_size
// }
FT_GlyphSlot slot = g_ft_face->glyph;
int w_byte=slot->bitmap.pitch;
u8 *buf=slot->bitmap.buffer;
mymemcpy (buff,buf,buff_size-5);
@@ -440,7 +440,7 @@ int WIN_GetWordData(u8 size,u8 type,unsigned char *buff, int word, int buff_size
buff[buff_size-3]=slot->bitmap.pitch;
buff[buff_size-2]=slot->bitmap_left;
buff[buff_size-1]=slot->bitmap_top;
return slot->bitmap.width;
}
else

View File

@@ -14,6 +14,7 @@
#include "nrf.h"
#include "mywin_user_debug.h"
#include "string.h"
#include "char_encode.h"
// 文件管理器

View File

@@ -1,22 +1,17 @@
#ifndef MYWIN_USER_FILDER_H__
#define MYWIN_USER_FILDER_H__
// 定义列表中最大显示文件数
#define FILDER_FILE_MAXNUM 1000
// 定义最大路径深度
#define FILDER_DIR_DEPTH 10
// 定义文件类型
#define FILDER_FILE_TYPE 1
#define FILDER_DIR_TYPE 0
//定义列表中最大显示文件数
#define FILDER_FILE_MAXNUM 1000
//定义最大路径深度
#define FILDER_DIR_DEPTH 10
//定义文件类型
#define FILDER_FILE_TYPE 1
#define FILDER_DIR_TYPE 0
//路径栈
// 路径栈
typedef struct
{
int index[FILDER_DIR_DEPTH];
@@ -24,18 +19,12 @@ typedef struct
int fileNum;
} Filder_Path;
typedef struct
{
char name[256];
int type; //1,文件0文件夹
int type; // 1,文件0文件夹
uint64_t size;
}Filder_FildInfo;
} Filder_FildInfo;
typedef struct
{
@@ -44,79 +33,69 @@ typedef struct
char *imgFile;
char *imgDir;
char dirName[256];
char fileName[256];//文件路径
char fileName[256]; // 文件路径
Filder_Path path;
int index;
int fileNum; //条目数
int dirNum; //文件夹数目
int fileNum; // 条目数
int dirNum; // 文件夹数目
int titleHight;
int itemHight;
int itemIndent;
int scrollbar_xsize;//滚动条宽度
int itemNumOnePage; //每页显示条目数
int firstItemOnPage;//显示在页首的条目编号
int scroll_x; //滚动显示的x坐标
int scroll_xsize; //混动显示的x长度
int scroll_timer; //滚动显示使用的定时器
int y_off; //支持触屏
}WIN_FilderStruct;
int scrollbar_xsize; // 滚动条宽度
int itemNumOnePage; // 每页显示条目数
int firstItemOnPage; // 显示在页首的条目编号
int scroll_x; // 滚动显示的x坐标
int scroll_xsize; // 混动显示的x长度
int scroll_timer; // 滚动显示使用的定时器
int y_off; // 支持触屏
} WIN_FilderStruct;
WIN_FilderStruct *WIN_CreatFilder (WIN_WindowStruct *base,
void (*msgLoop)(struct _WIN_WindowStruct *win,WIN_MsgStruct *msg),
int x,int y,int x_size,int y_size);
WIN_FilderStruct *WIN_CreatFilder(WIN_WindowStruct *base,
void (*msgLoop)(struct _WIN_WindowStruct *win, WIN_MsgStruct *msg),
int x, int y, int x_size, int y_size);
// 设置文件路径,同时扫描路径下的文件
void FILDER_SetFileDir(WIN_FilderStruct *filder, char *dir);
// 入栈
int FILDER_PathPush(WIN_FilderStruct *filder);
//设置文件路径,同时扫描路径下的文件
void FILDER_SetFileDir (WIN_FilderStruct *filder,char *dir);
// 出栈
int FILDER_PathPull(WIN_FilderStruct *filder);
//入栈
int FILDER_PathPush (WIN_FilderStruct *filder);
//出栈
int FILDER_PathPull (WIN_FilderStruct *filder);
//把文件名追加到目录,同时扫描路径下的文件
int FILDER_DirAppend (WIN_FilderStruct *filder,Filder_FildInfo *file);
//剪短一层目录,同时扫描目录下的文件
int FILDER_DirCut (WIN_FilderStruct *filder);
//生成文件路径
void FILDER_GetFileRoute (WIN_FilderStruct *filder);
//清空条目
void FILDER_ClearItem (WIN_FilderStruct *filder);
//添加一个文件条目
void FILDER_AddItem (WIN_FilderStruct *filder,Filder_FildInfo *file);
// 把文件名追加到目录,同时扫描路径下的文件
int FILDER_DirAppend(WIN_FilderStruct *filder, Filder_FildInfo *file);
//在指定位置插入一个条目
void FILDER_InsertItem (WIN_FilderStruct *filder,Filder_FildInfo *file,int index);
//扫描文件
void FILDER_ScanFile (WIN_FilderStruct *filder);
// 剪短一层目录,同时扫描目录下的文件
int FILDER_DirCut(WIN_FilderStruct *filder);
//打开文件
void FILDER_OpenFile (WIN_FilderStruct *filder);
// 生成文件路径
void FILDER_GetFileRoute(WIN_FilderStruct *filder);
//消息框的绘制函数
void FILDER_DefaultPaint (WIN_FilderStruct *filder);
// 清空条目
void FILDER_ClearItem(WIN_FilderStruct *filder);
//消息框的消息处理函数
void FILDER_defaultMsgLoop (WIN_FilderStruct *filder,WIN_MsgStruct *msg);
// 添加一个文件条目
void FILDER_AddItem(WIN_FilderStruct *filder, Filder_FildInfo *file);
//选则文件
int FILDER_ChooseFile (WIN_WindowStruct *win,char *dir);
// 在指定位置插入一个条目
void FILDER_InsertItem(WIN_FilderStruct *filder, Filder_FildInfo *file, int index);
// 扫描文件
void FILDER_ScanFile(WIN_FilderStruct *filder);
// 打开文件
void FILDER_OpenFile(WIN_FilderStruct *filder);
// 消息框的绘制函数
void FILDER_DefaultPaint(WIN_FilderStruct *filder);
// 消息框的消息处理函数
void FILDER_defaultMsgLoop(WIN_FilderStruct *filder, WIN_MsgStruct *msg);
// 选则文件
int FILDER_ChooseFile(WIN_WindowStruct *win, char *dir);
#endif

View File

@@ -35,21 +35,21 @@ const static MENU_ItemStruct ptr[]={
//进入设置页面
WIN_MenuStruct *MENU_Setting (WIN_WindowStruct *base,WIN_PicStruct *pic)
WIN_MenuStruct *MENU_Setting (WIN_WindowStruct *base,WIN_PicStruct *pic)
{
WIN_MenuStruct *menu=WIN_CreatMenu (base,(void (*)(WIN_WindowStruct *,WIN_MsgStruct *))MENU_SettingMsgLoop,
WIN_MenuStruct *menu=WIN_CreatMenu (base,(void (*)(WIN_WindowStruct *,WIN_MsgStruct *))MENU_SettingMsgLoop,
0,0,base->x_size,base->y_size);
((WIN_WindowStruct *)menu)->intercept=1;//不发送按键消息到父窗口
WIN_SetBackPicPath ((WIN_WindowStruct *)menu,base->pic_path);
MENU_SetTitle (menu,0,"设置");
MENU_SetMaxItem(menu,9);
for (int i=0;i<9;i++)
{
MENU_AddItem (menu,ptr[i].img,(char *)ptr[i].txt);
}
WIN_ShowWindow((WIN_WindowStruct*)menu);
return menu;
}
@@ -70,10 +70,10 @@ static void MENU_DoEnter (WIN_MenuStruct *menu)
{
//选择了一个设置项
if (MENU_GetIndex(menu)==0) MENU_ThemeSet((WIN_WindowStruct *)menu);
else if (MENU_GetIndex(menu)==1) TIMEBOX_TimeSet ((WIN_WindowStruct *)menu);
else if (MENU_GetIndex(menu)==2) MENU_LightSet((WIN_WindowStruct *)menu);//BACKLIGHTSETBOX_BackLightSet ();
else if (MENU_GetIndex(menu)==1) TIMEBOX_TimeSet ((WIN_WindowStruct *)menu);
else if (MENU_GetIndex(menu)==2) MENU_LightSet((WIN_WindowStruct *)menu);//BACKLIGHTSETBOX_BackLightSet ();
else if (MENU_GetIndex(menu)==3) {MSGBOX_Inquiry ((WIN_WindowStruct *)menu,"重置","再按一次确定键重置","确定","返回");}
else if (MENU_GetIndex(menu)==4)
else if (MENU_GetIndex(menu)==4)
{
char *txt=mymalloc (512);
if (APP_SOURCE)
@@ -90,7 +90,7 @@ static void MENU_DoEnter (WIN_MenuStruct *menu)
MSGBOX_TipsTime ((WIN_WindowStruct*)menu,"关于", txt,"确定",5000);
myfree(txt);
}
else if (MENU_GetIndex(menu)==5) SYSFILE_ChooseFile((WIN_WindowStruct *)menu);
else if (MENU_GetIndex(menu)==5) SYSFILE_ChooseFile((WIN_WindowStruct *)menu);
else if (MENU_GetIndex(menu)==6) FILDER_ChooseFile ((WIN_WindowStruct *)menu,"0:");
else if(MENU_GetIndex(menu)==7) enter_sound((WIN_WindowStruct *)menu);
else if(MENU_GetIndex(menu)==8) DEBUG_EnterPrint();
@@ -109,7 +109,7 @@ void MENU_SettingMsgLoop (WIN_MenuStruct *menu,WIN_MsgStruct *msg)
WIN_TouchStruct *t=0;
WIN_KeyStruct *k=0;
switch (msg->msg)
{
{
case WIN_MSG_KEY:
k=msg->data.p;
if (k->shortPress&KEY_VALUE_ENTER)
@@ -191,7 +191,7 @@ static int cb_sound_fun(void *ptr)
{
DAC_FifolInit();
nrf_init();
nrf_set_no_respond(1);
nrf_set_no_respond(1);
g_work=1;
uint16_t value=0;
DAC_SetSetValuwFun(recv_value);

View File

@@ -53,12 +53,9 @@ static void MENU_ToolEnter(WIN_MenuStruct *menu)
{
// 选择了一个
char *path = mymalloc(256);
char *tmp = mymalloc(256);
utf82gbk_str(MENU_GetSelectItem(menu), tmp);
sprintf(path, "%s/%s", TOOL_APP_PATH, tmp);
sprintf(path, "%s/%s", TOOL_APP_PATH, MENU_GetSelectItem(menu));
app_run_path(path);
myfree(path);
myfree(tmp);
}
static void MENU_ToolDeleteFun(WIN_MenuStruct *menu)

View File

@@ -22,8 +22,8 @@ CFLAG=[
'-mfpu=fpv4-sp-d16',
'-mfloat-abi=hard',
'-Og',
'-Wall',
'-fdata-sections',
'-Wall',
'-fdata-sections',
'-ffunction-sections',
# debug
'-g -gdwarf-2'
@@ -237,7 +237,6 @@ def run_cmd_queue(cmd_queue:Queue,cpu_num:int=8):
while not cmd_queue.empty():
cmd_queue.get()
cmd_queue.cancel_join_thread()
return ret

View File

@@ -25,10 +25,10 @@ def find_type(path:str,fix:str):
def conv(file:str):
s=""
try:
with open(file,encoding="gb2312") as f:
with open(file,encoding="utf-8") as f:
s=f.read()
os.remove(file)
with open(file,mode="w+",encoding="utf-8") as f:
with open(file,mode="w+",encoding="gbk") as f:
f.write(s)
except Exception as e:
print("conv failed",file)