#include "stm32h743xx.h" #include "GraphLow.h" #include "font.h" #include "my_font.h" extern "C"{ #include "extern_C_Include.h" } const char ppp[8] = "测试"; const unsigned char *HeadOfLocation; typedef unsigned short u16; typedef unsigned int u32; #define dLCD_HORIZ_SIZE 800 #define dLCD_VERT_SIZE 480 static unsigned char text_buf[76]; volatile static unsigned int FixColor; volatile static unsigned int *pFixColor; const unsigned int LcdBaseAddr = 0xC0000000; const unsigned int LcdTopAddr = 0XC0177000; Tltdc_dev LtdcDev; void LcdTopFill(unsigned int aClr) { unsigned int i; unsigned int addr = LcdTopAddr; for(i=0; i<384000;i++){ *(volatile unsigned int*)(addr) = aClr; addr += 4; } } unsigned int Abs32(signed int num) { if(num < 0) num = num * -1; return num; } void SwapCoord(int *c1, int *c2) { int tmp; tmp = *c1; *c1 = *c2; *c2 = tmp; } int GetFontWidth(int FS) { switch(FS){ case 7: return 7; case 11: return 11; case 14: return 14; case 17: return 17; case 16: return 16; case 24: return 24; case 32: return 32; default: return 16; } } int GetFontHeight(int FS) { switch(FS){ case 7: return 12; case 11: return 16; case 14: return 20; case 17: return 24; case 16: return 16; case 24: return 24; case 32: return 32; default: return 16; } } void PixelRender(int x, int y, unsigned int aColor) { unsigned int addr; addr = ((y * 800) + x) *4 + LcdBaseAddr; *(volatile unsigned int*)(addr) = aColor; } void BoxRender2D(int x1, int y1, int x2, int y2, unsigned int color) { LTDC_Fill(x1,y1,x2,y2, color); } void PixelRender(int x, int y, int PenWidth, unsigned int PenColor) { unsigned int addr; if(PenWidth ==1){ addr = ((y * 800) + x) *4 + LcdBaseAddr; *(volatile unsigned int*)(addr) = PenColor; }else{ int aW, aH; for(aW=0; aW 1 ) { if(x1 > x2) { SwapCoord(&x1, &x2); } if(y1 > y2) { SwapCoord(&y1, &y2); } x2++; y2++; } BoxRender2D(x1 ,y1 ,x2 , y2, PenColor); return; } */ if(x1 == x2){ VertLineRender(x1, y1, y2-y1+1, PenColor); return; }else if(y1 == y2){ HorizLineRender(x1, y2, x2-x1+1, PenColor); return; } delta_x = static_cast(Abs32((x2 - x1)) << 1); delta_y = static_cast(Abs32((y2 - y1)) << 1); // if x1 == x2 or y1 == y2, then it does not matter what we set here ix = ((x2 > x1)?1:-1); iy = ((y2 > y1)?1:-1); PixelRender( x1, y1, PenWidth, PenColor); if (delta_x >= delta_y) { // error may go below zero int error = delta_y - (delta_x >> 1); while (x1 != x2) { if (error >= 0) { if (error || (ix > 0)) { y1 += iy; error -= delta_x; } // else do nothing } // else do nothing x1 += ix; error += delta_y; PixelRender( x1, y1, PenWidth, PenColor); } } else { // error may go below zero int error = delta_x - (delta_y >> 1); while (y1 != y2) { if (error >= 0) { if (error || (iy > 0)) { x1 += ix; error -= delta_y; } // else do nothing } // else do nothing y1 += iy; error += delta_x; PixelRender( x1, y1, PenWidth, PenColor); } } } void HorizLineRender(int xpos, int ypos, int length, unsigned int clr) { unsigned short i; unsigned int ram_addr; ram_addr = LcdBaseAddr + ((ypos * 800) + xpos) * 4; for(i=0; iAHB1ENR|=1<<23; //使能DM2D时钟 DMA2D->CR=3<<16; //寄存器到存储器模式 DMA2D->BGPFCCR = 0x00; DMA2D->FGPFCCR = 0x00; DMA2D->OPFCCR=0x00; //LCD_PIXFORMAT; //设置颜色格式 LCD_PIXEL_FORMAT_ARGB8888 0X00 DMA2D->OOR=offline; //设置行偏移 DMA2D->CR&=~(1<<0); //先停止DMA2D DMA2D->OMAR=addr; //输出存储器地址 DMA2D->NLR=(pey-psy)|((pex-psx)<<16); //设定行数寄存器 DMA2D->OCOLR=FixColor; //设定输出颜色寄存器 DMA2D->CR|=1<<0; //启动DMA2D while((DMA2D->ISR&(1<<1))==0) //等待传输完成 { timeout++; if(timeout>0X2FFFFFF)break; //超时退出 } DMA2D->IFCR|=1<<1; //清除传输完成标志 */ int x,y,aW,aH; volatile unsigned int ram_addr; if(x1 > x2){ ram_addr = ((y2 ) * 800 + x2) *4 + LcdBaseAddr; aW = x1 -x2 + 1; aH = y1 - y2 + 1; }else{ ram_addr = ((y1 ) * 800 + x1) *4 + LcdBaseAddr; aW = x2 -x1 + 1; aH = y2 - y1 + 1; } for(y=0; y LCD_X_SIZE){ //beyond screen width // state |= 1; //} //if((ypos+16) > LCD_V_SIZE){ //beyond screen height // state |= 2; //} //if(stete){ // return state; //} ram_addr = ((ypos - 1) * dLCD_HORIZ_SIZE + xpos) * 4; data_x = static_cast((cr - ' ' ) * 8 * 2); for(y=0;y<16;y++){ c = 0x80; for(x=0;x<8;x++){ if(ascii_8x16[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; c >>=1; } c = 0x80; data_x++; ram_addr += (dLCD_HORIZ_SIZE - 8) *4 ; } return state; } unsigned int lcd_draw_char_8x16(unsigned int xpos, unsigned int ypos, unsigned int clr, unsigned int bClr, char cr) { unsigned int ram_addr; unsigned int data_x; unsigned int x,y; unsigned char c; unsigned int state = 0; //if((xpos+11) > LCD_X_SIZE){ //beyond screen width // state |= 1; //} //if((ypos+16) > LCD_V_SIZE){ //beyond screen height // state |= 2; //} //if(stete){ // return state; //} ram_addr = ((ypos - 1) * dLCD_HORIZ_SIZE + xpos) * 4; data_x = static_cast((cr - ' ' ) * 8 * 2); for(y=0;y<16;y++){ c = 0x80; for(x=0;x<8;x++){ if(ascii_8x16[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; } ram_addr += 4; c >>=1; } c = 0x80; data_x++; ram_addr += (dLCD_HORIZ_SIZE - 8) *4 ; } return state; } void lcd_draw_str_8x16(unsigned int xpos,unsigned int ypos,unsigned int clr, char *pc) { unsigned int text_size = 0; const char *p_text; unsigned int xp; unsigned int i; //get text size p_text = pc; while (*p_text++) text_size ++ ; xp = xpos; if(text_size>1024)return; for(i=0; i LCD_X_SIZE){ //beyond screen width // state |= 1; //} //if((ypos+16) > LCD_V_SIZE){ //beyond screen height // state |= 2; //} //if(stete){ // return state; //} ram_addr = ((ypos - 1) * dLCD_HORIZ_SIZE + xpos) * 4; data_x = static_cast((cr - ' ' ) * 16 * 2); for(y=0;y<16;y++){ c = 0x80; for(x=0;x<8;x++){ if(ascii_11x16_table[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; c >>=1; } c = 0x80; data_x++; for(x=0;x<3;x++){ if(ascii_11x16_table[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; c >>=1; } data_x++; ram_addr += (dLCD_HORIZ_SIZE - 11) *4 ; } return state; } void lcd_draw_str_11x16(unsigned int xpos,unsigned int ypos,unsigned int clr,const char *pc) { unsigned int text_size = 0; const char *p_text; unsigned int xp; unsigned int i; //get text size p_text = pc; while (*p_text++) text_size ++ ; xp = xpos; if(text_size>1024)return; for(i=0; i1024)return; for(i=0; i LCD_X_SIZE){ //beyond screen width // state |= 1; //} //if((ypos+20) > LCD_V_SIZE){ //beyond screen height // state |= 2; //} //if(stete){ // return state; //} ram_addr = ((ypos - 1) * dLCD_HORIZ_SIZE + xpos) * 4; data_x = (unsigned int)((cr - ' ' ) * 20 * 2); for(y=0;y<20;y++){ c = 0x80; for(x=0;x<8;x++){ if(ascii_14x20_table[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; c >>=1; } c = 0x80; data_x++; for(x=0;x<6;x++){ if(ascii_14x20_table[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; c >>=1; } data_x++; ram_addr += (dLCD_HORIZ_SIZE - 14) *4 ; } return state; } void lcd_draw_str_14x20(unsigned int xpos,unsigned int ypos, unsigned int clr, const char *pc) { unsigned int text_size = 0; const char *p_text; unsigned int xp; unsigned int i; //get text size p_text = pc; while (*p_text++) text_size ++ ; xp = xpos; if(text_size > 1024)return; for(i=0; i 1024)return; for(i=0; i LCD_X_SIZE){ //beyond screen width // state |= 1; //} //if((ypos+24) > LCD_V_SIZE){ //beyond screen height // state |= 2; //} //if(stete){ // return state; //} ram_addr = ((ypos - 1) * dLCD_HORIZ_SIZE + xpos) * 4; data_x = static_cast((cr - ' ' ) * 24 * 3); for(y=0;y<24;y++){ c = 0x80; for(x=0;x<8;x++){ if(ascii_17x24_table[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; //add lint here c >>=1; } c = 0x80; data_x++; for(x=0;x<8;x++){ //ascii_17x24_table if(ascii_17x24_table[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; //add lint here c >>=1; } c = 0x80; data_x++; if(1){ if(ascii_17x24_table[data_x] & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = clr; }else{ //ram_x = ~clr; } ram_addr += 4; //add lint here c >>=1; } data_x++; ram_addr += (dLCD_HORIZ_SIZE - 17) *4 ; } return state; } void lcd_draw_str_17x24(unsigned int xpos,unsigned int ypos, unsigned int clr, unsigned char *pc) { unsigned int text_size = 0; unsigned char *p_text; unsigned int xp; unsigned int i; //get text size p_text = pc; while (*p_text++) text_size ++ ; xp = xpos; if(text_size > 1024)return; for(i=0; i>=1; } pbuf++; c = 0x80; for(x=0;x<8;x++){ //ascii_17x24_table if(*pbuf & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; }else{ //ram_x = ~clr; } ram_addr += 3200; //add lint here c >>=1; } pbuf++; c = 0x80; for(x=0;x<8;x++){ if(*pbuf & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; }else{ //ram_x = ~clr; } ram_addr += 3200; //add lint here c >>=1; } pbuf++; x1++; } } void gui_write_EN2412(unsigned short x1, unsigned short y1, unsigned int CharColor, unsigned int bClr, unsigned char num) { const unsigned char* pbuf; unsigned int x, y; unsigned short ix, iy; unsigned int offset = 0; unsigned int ram_addr; unsigned char c; x = x1; y = y1; //num=num-' ';//得到偏移后的值(ASCII字库是从空格开始取模,所以-' '就是对应字符的字库) offset = (num-' '); pbuf = &asc2_2412[offset][0]; for(y=0;y<12;y++){ ram_addr = (y1 * dLCD_HORIZ_SIZE + x1) * 4; c = 0x80; for(x=0;x<8;x++){ if(*pbuf & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; } ram_addr += 3200; //add lint here c >>=1; } pbuf++; c = 0x80; for(x=0;x<8;x++){ //ascii_17x24_table if(*pbuf & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; } ram_addr += 3200; //add lint here c >>=1; } pbuf++; c = 0x80; for(x=0;x<8;x++){ if(*pbuf & c){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; } ram_addr += 3200; //add lint here c >>=1; } pbuf++; x1++; } } static unsigned int get_chinese_code24(const char *p) { u32 address; address=72UL*( ((*p)-15-0xa1)*94 + ((*(p+1))-0xa1) ); //sFLASH_ReadBuffer(dot, address, 72); return address; } static unsigned int get_chinese_code24(char *p) { u32 address; address=72UL*( ((*p)-15-0xa1)*94 + ((*(p+1))-0xa1) ); //sFLASH_ReadBuffer(dot, address, 72); return address; } static unsigned int get_chinese_code24(unsigned char *p) { u32 address; address=72UL*( ((*p)-15-0xa1)*94 + ((*(p+1))-0xa1) ); //sFLASH_ReadBuffer(dot, address, 72); return address; } static unsigned int get_C_code24(const char *p) { u32 address; if((*(p+1)) < 0x7F){ address=72UL*( ((*p)-0x81)*190 + ((*(p+1))-0x40) ); }else{ address=72UL*( ((*p)-0x81)*190 + ((*(p+1))-0x41) ); } //sFLASH_ReadBuffer(dot, address, 72); return address; } static unsigned int get_C_code24(char *p) { u32 address; if((*(p+1)) < 0x7F){ address=72UL*( ((*p)-0x81)*190 + ((*(p+1))-0x40) ); }else{ address=72UL*( ((*p)-0x81)*190 + ((*(p+1))-0x41) ); } //sFLASH_ReadBuffer(dot, address, 72); return address; } static unsigned int get_C_code24(unsigned char *p) { u32 address; if((*(p+1)) < 0x7F){ address=72UL*( ((*p)-0x81)*190 + ((*(p+1))-0x40) ); }else{ address=72UL*( ((*p)-0x81)*190 + ((*(p+1))-0x41) ); } //sFLASH_ReadBuffer(dot, address, 72); return address; } void TextRender_1CN24(int x, int y, unsigned int CharColor, const char *p) { const unsigned char* pbuf; unsigned short ix, iy; unsigned int ram_addr; static unsigned int offset = 0; unsigned char c; //if((*p<0xA1) || (*(p+1)< 0xA1)){ if(1){ offset = get_C_code24(p); HeadOfLocation = (const unsigned char *)Gbk_24_data; pbuf = &HeadOfLocation[offset]; for(iy=0; iy<24; iy++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+8, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++) { if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+16, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; y++; } }else{ offset = get_chinese_code24( p); //______________________________fill location //HeadOfLocation = Hzk_24_data; pbuf = &HeadOfLocation[offset]; for(ix=0; ix<24; ix++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+8, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+16, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; x++; } } } void TextRender_1CN24(int x, int y, unsigned int CharColor, char *p) { const unsigned char* pbuf; unsigned short ix, iy; unsigned int ram_addr; unsigned int offset = 0; unsigned char c; //if((*p<0xA1) || (*(p+1)< 0xA1)){ if(1){ offset = get_C_code24(p); HeadOfLocation = (const unsigned char *)Gbk_24_data; pbuf = &HeadOfLocation[offset]; for(iy=0; iy<24; iy++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+8, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++) { if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+16, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; y++; } }else{ offset = get_chinese_code24( p); //______________________________fill location //HeadOfLocation = Hzk_24_data; pbuf = &HeadOfLocation[offset]; for(ix=0; ix<24; ix++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+8, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+16, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; x++; } } } void TextRender_1CN24(int x, int y, unsigned int CharColor, unsigned char *p) { const unsigned char* pbuf; unsigned short ix, iy; unsigned int ram_addr; unsigned int offset = 0; unsigned char c; //if((*p<0xA1) || (*(p+1)< 0xA1)){ if(1){ offset = get_C_code24(p); HeadOfLocation = (const unsigned char *)Gbk_24_data; pbuf = &HeadOfLocation[offset]; for(iy=0; iy<24; iy++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+8, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++) { if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+16, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; y++; } }else{ offset = get_chinese_code24( p); //______________________________fill location //HeadOfLocation = Hzk_24_data; pbuf = &HeadOfLocation[offset]; for(ix=0; ix<24; ix++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+8, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ //gui_put_pixel(x, y+iy+16, 0, BackColor); //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; x++; } } } void TextRender_1CN24(int x, int y, unsigned int CharColor, unsigned int bClr, const char *p) { const unsigned char* pbuf; unsigned short ix, iy; unsigned int ram_addr; unsigned int offset = 0; unsigned char c; //if((*p<0xA1) || (*(p+1)< 0xA1)){ if(1){ offset = get_C_code24(p); HeadOfLocation = (const unsigned char *)Gbk_24_data; pbuf = &HeadOfLocation[offset]; for(iy=0; iy<24; iy++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++){ if( (*pbuf & c)==0 ){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; c = 0x80; for(ix=0; ix<8; ix++) { if( (*pbuf & c)==0 ){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 4; c >>=1; } pbuf++; y++; } }else{ offset = get_chinese_code24( p); //______________________________fill location //HeadOfLocation = Hzk_24_data; pbuf = &HeadOfLocation[offset]; for(ix=0; ix<24; ix++){ ram_addr = (y * dLCD_HORIZ_SIZE + x) * 4; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; c = 0x80; for(iy=0; iy<8; iy++){ if( (*pbuf & c)==0 ){ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = bClr; //______________________________put pixel here }else{ *(volatile unsigned int *)(LcdBaseAddr+ ram_addr) = CharColor; //______________________________put pixel here } ram_addr += 3200; c >>=1; } pbuf++; x++; } } } void TextRender_string24(int x, int y, unsigned int CharColor, unsigned char* pC) { unsigned char dat; unsigned char *p; p = pC; for(; *p!=0; p++) { if(( (unsigned char)*p&0x80)==0)//?? { if(*p=='\r')//?? { //x=START_X; continue; } else if(*p=='\n')//?? { //y+=24; //if(y > RECT_YMAX-24) // y=START_Y; continue; } else if(*p=='\1') //?????.? dat='~'-' '+1; else if(*p=='\2') //?????.? dat='~'-' '+2; else if(*p=='\3') //?????.? dat='~'-' '+3; else if(*p=='\4') //?????.? dat='~'-' '+4; // else if(*p=='\\') //????? // { // p++; // if(*p=='U') //?????.? // dat='~'-' '+1; // else if(*p=='D') //?????.? // dat='~'-' '+2; // else if(*p=='L') //?????.? // dat='~'-' '+3; // else// if(*p=='R') //?????.? // dat='~'-' '+4; // } else //?????? dat=*p-0x20; dat=*p; gui_write_EN2412(x, y, CharColor, dat); x+=12; //gui_write_EN2417(x, y, CharColor, BackColor, dat); //x+=17; } else//?? { TextRender_1CN24(x, y, CharColor, p); x+=24; p++; } } } void TextRender_string24(int x, int y, unsigned int CharColor, unsigned int aBClr, unsigned char* pC) { unsigned char dat; unsigned char *p; p = pC; for(; *p!=0; p++) { if(( (unsigned char)*p&0x80)==0)//?? { if(*p=='\r')//?? { //x=START_X; continue; } else if(*p=='\n')//?? { //y+=24; //if(y > RECT_YMAX-24) // y=START_Y; continue; } else if(*p=='\1') //?????.? dat='~'-' '+1; else if(*p=='\2') //?????.? dat='~'-' '+2; else if(*p=='\3') //?????.? dat='~'-' '+3; else if(*p=='\4') //?????.? dat='~'-' '+4; // else if(*p=='\\') //????? // { // p++; // if(*p=='U') //?????.? // dat='~'-' '+1; // else if(*p=='D') //?????.? // dat='~'-' '+2; // else if(*p=='L') //?????.? // dat='~'-' '+3; // else// if(*p=='R') //?????.? // dat='~'-' '+4; // } else //?????? dat=*p-0x20; dat=*p; gui_write_EN2412(x, y, CharColor, aBClr, dat); x+=12; //gui_write_EN2417(x, y, CharColor, BackColor, dat); //x+=17; } else//?? { TextRender_1CN24(x, y, CharColor, aBClr, (const char *)(p)); x+=24; p++; } } } void TextRender_string24(int x, int y, unsigned int CharColor, const char* pC) { unsigned char dat; const char *p; p = pC; for(; *p!=0; p++) { if(( (unsigned char)*p&0x80)==0)//?? { if(*p=='\r')//?? { //x=START_X; continue; } else if(*p=='\n')//?? { //y+=24; //if(y > RECT_YMAX-24) // y=START_Y; continue; } else if(*p=='\1') //?????.? dat='~'-' '+1; else if(*p=='\2') //?????.? dat='~'-' '+2; else if(*p=='\3') //?????.? dat='~'-' '+3; else if(*p=='\4') //?????.? dat='~'-' '+4; // else if(*p=='\\') //????? // { // p++; // if(*p=='U') //?????.? // dat='~'-' '+1; // else if(*p=='D') //?????.? // dat='~'-' '+2; // else if(*p=='L') //?????.? // dat='~'-' '+3; // else// if(*p=='R') //?????.? // dat='~'-' '+4; // } else //?????? dat=*p-0x20; dat=*p; gui_write_EN2412(x, y, CharColor, dat); x+=12; //gui_write_EN2417(x, y, CharColor, BackColor, dat); //x+=17; } else//?? { TextRender_1CN24(x, y, CharColor, p); x+=24; p++; } } } void TextRender_string24(int x, int y, unsigned int CharColor, char* pC) { unsigned char dat; const char *p; p = pC; for(; *p!=0; p++) { if(( (unsigned char)*p&0x80)==0)//?? { if(*p=='\r')//?? { //x=START_X; continue; } else if(*p=='\n')//?? { //y+=24; //if(y > RECT_YMAX-24) // y=START_Y; continue; } else if(*p=='\1') //?????.? dat='~'-' '+1; else if(*p=='\2') //?????.? dat='~'-' '+2; else if(*p=='\3') //?????.? dat='~'-' '+3; else if(*p=='\4') //?????.? dat='~'-' '+4; // else if(*p=='\\') //????? // { // p++; // if(*p=='U') //?????.? // dat='~'-' '+1; // else if(*p=='D') //?????.? // dat='~'-' '+2; // else if(*p=='L') //?????.? // dat='~'-' '+3; // else// if(*p=='R') //?????.? // dat='~'-' '+4; // } else //?????? dat=*p-0x20; dat=*p; gui_write_EN2412(x, y, CharColor, dat); x+=12; //gui_write_EN2417(x, y, CharColor, BackColor, dat); //x+=17; } else//?? { TextRender_1CN24(x, y, CharColor, p); x+=24; p++; } } } void TextRender_string24(int x, int y, unsigned int CharColor, unsigned int bClr, char* pC) { unsigned char dat; const char *p; p = pC; for(; *p!=0; p++) { if(( (unsigned char)*p&0x80)==0)//?? { if(*p=='\r')//?? { //x=START_X; continue; } else if(*p=='\n')//?? { //y+=24; //if(y > RECT_YMAX-24) // y=START_Y; continue; } else if(*p=='\1') //?????.? dat='~'-' '+1; else if(*p=='\2') //?????.? dat='~'-' '+2; else if(*p=='\3') //?????.? dat='~'-' '+3; else if(*p=='\4') //?????.? dat='~'-' '+4; // else if(*p=='\\') //????? // { // p++; // if(*p=='U') //?????.? // dat='~'-' '+1; // else if(*p=='D') //?????.? // dat='~'-' '+2; // else if(*p=='L') //?????.? // dat='~'-' '+3; // else// if(*p=='R') //?????.? // dat='~'-' '+4; // } else //?????? dat=*p-0x20; dat=*p; gui_write_EN2412(x, y, CharColor, bClr, dat); x+=12; //gui_write_EN2417(x, y, CharColor, BackColor, dat); //x+=17; } else//?? { TextRender_1CN24(x, y, CharColor, bClr, p); x+=24; p++; } } } void TextRender_string24(int x, int y, unsigned int CharColor, unsigned int bClr, const char* pC) { unsigned char dat; const char *p; p = pC; for(; *p!=0; p++) { if(( (unsigned char)*p&0x80)==0)//?? { if(*p=='\r')//?? { //x=START_X; continue; } else if(*p=='\n')//?? { //y+=24; //if(y > RECT_YMAX-24) // y=START_Y; continue; } else if(*p=='\1') //?????.? dat='~'-' '+1; else if(*p=='\2') //?????.? dat='~'-' '+2; else if(*p=='\3') //?????.? dat='~'-' '+3; else if(*p=='\4') //?????.? dat='~'-' '+4; // else if(*p=='\\') //????? // { // p++; // if(*p=='U') //?????.? // dat='~'-' '+1; // else if(*p=='D') //?????.? // dat='~'-' '+2; // else if(*p=='L') //?????.? // dat='~'-' '+3; // else// if(*p=='R') //?????.? // dat='~'-' '+4; // } else //?????? dat=*p-0x20; dat=*p; gui_write_EN2412(x, y, CharColor, bClr, dat); x+=12; //gui_write_EN2417(x, y, CharColor, BackColor, dat); //x+=17; } else//?? { TextRender_1CN24(x, y, CharColor, bClr, p); x+=24; p++; } } } void TextDigitRender1Right24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int da; da = dig % 10; gui_write_EN2412(x, y, CharColor, da + '0'); } void TextDigitRender1Right24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int da; da = dig % 10; gui_write_EN2412(x, y, CharColor, bClr, da + '0'); } void TextDigitRenderLeft24_1t3(int x, int y, unsigned int CharColor, unsigned int dig) { if(dig > 999)return; if(dig < 10){ gui_write_EN2412(x, y, CharColor, dig + '0'); }else if(dig < 100){ TextDigitRender2Right24(x,y,CharColor,dig); }else{ TextDigitRender3Right24(x,y,CharColor,dig); } } void TextDigitRenderLeft24_1t3(int x, int y, unsigned int CharColor, unsigned int BackClr, unsigned int dig) { if(dig > 999)return; if(dig < 10){ gui_write_EN2412(x, y, CharColor, BackClr, dig + '0'); }else if(dig < 100){ TextDigitRender2Right24(x,y,CharColor,BackClr,dig); }else{ TextDigitRender3Right24(x,y,CharColor,BackClr,dig); } } void TextDigitRender2_24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 10; da = dig; for(i=0; i<2; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender2_24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 10; da = dig; for(i=0; i<2; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender2Right24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 12; gui_write_EN2412(x2, y, CharColor, '0'); } x2 = x; Found = 0; aRatio = 10; da = dig; for(i=0; i<2; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, Le + '0'); }else{ if(Le == 0){ if(i == 1)gui_write_EN2412(x2, y, CharColor, '0'); }else{ gui_write_EN2412(x2, y, CharColor, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender2Right24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 12; gui_write_EN2412(x2, y, CharColor, '0'); } x2 = x; Found = 0; aRatio = 10; da = dig; for(i=0; i<2; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); }else{ if(Le == 0){ gui_write_EN2412(x2, y, CharColor, bClr, ' '); if(i == 1)gui_write_EN2412(x2, y, CharColor, bClr, '0'); }else{ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender3_24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 100; da = dig; for(i=0; i<3; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender3_24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 100; da = dig; for(i=0; i<3; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender4_24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 1000; da = dig; for(i=0; i<4; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender4_24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 1000; da = dig; for(i=0; i<4; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender5_24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 10000; da = dig; for(i=0; i<5; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender5_24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 10000; da = dig; for(i=0; i<5; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender6_24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 100000; da = dig; for(i=0; i<6; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender6_24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 100000; da = dig; for(i=0; i<6; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender8_24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 10000000; da = dig; for(i=0; i<8; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender8_24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; x2 = x; aRatio = 10000000; da = dig; for(i=0; i<8; i++){ Le = da / aRatio; da = da % aRatio; gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender3Right24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 24; gui_write_EN2412(x2, y, CharColor, '0'); } x2 = x; Found = 0; aRatio = 100; da = dig; for(i=0; i<3; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, Le + '0'); }else{ if(Le == 0){ //if(Found)gui_write_EN2412(x2, y, CharColor, ' '); if(i == 2)gui_write_EN2412(x2, y, CharColor, '0'); }else{ gui_write_EN2412(x2, y, CharColor, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender3Right24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 0; gui_write_EN2412(x2, y, CharColor, bClr, ' '); x2 = x + 12; gui_write_EN2412(x2, y, CharColor, bClr, ' '); x2 = x + 24; gui_write_EN2412(x2, y, CharColor, bClr, '0'); } x2 = x; Found = 0; aRatio = 100; da = dig; for(i=0; i<3; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); }else{ if(Le == 0){ gui_write_EN2412(x2, y, CharColor, bClr, ' '); if(i == 2)gui_write_EN2412(x2, y, CharColor, bClr, '0'); }else{ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender4Right24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 36; gui_write_EN2412(x2, y, CharColor, '0'); return; } x2 = x; Found = 0; aRatio = 1000; da = dig; for(i=0; i<4; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, Le + '0'); }else{ if(Le == 0){ //if(Found)gui_write_EN2412(x2, y, CharColor, ' '); if(i == 3)gui_write_EN2412(x2, y, CharColor, '0'); }else{ gui_write_EN2412(x2, y, CharColor, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender4Right24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 36; gui_write_EN2412(x2, y, CharColor, bClr, '0'); return; } x2 = x; Found = 0; aRatio = 1000; da = dig; for(i=0; i<4; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); }else{ if(Le == 0){ if(i == 3)gui_write_EN2412(x2, y, CharColor, bClr, '0'); else gui_write_EN2412(x2, y, CharColor, bClr, ' '); }else{ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender5Right24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 48; gui_write_EN2412(x2, y, CharColor, '0'); return; } x2 = x; Found = 0; aRatio = 10000; da = dig; for(i=0; i<5; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, Le + '0'); }else{ if(Le == 0){ //if(Found)gui_write_EN2412(x2, y, CharColor, ' '); if(i == 4)gui_write_EN2412(x2, y, CharColor, '0'); }else{ gui_write_EN2412(x2, y, CharColor, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender5Right24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 48; gui_write_EN2412(x2, y, CharColor, bClr, '0'); return; } x2 = x; Found = 0; aRatio = 10000; da = dig; for(i=0; i<5; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); }else{ if(Le == 0){ if(i == 4)gui_write_EN2412(x2, y, CharColor, bClr, '0'); else gui_write_EN2412(x2, y, CharColor, bClr, ' '); }else{ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender6Right24(int x, int y, unsigned int CharColor, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 60; gui_write_EN2412(x2, y, CharColor, '0'); return; } x2 = x; Found = 0; aRatio = 100000; da = dig; for(i=0; i<6; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, Le + '0'); }else{ if(Le == 0){ //if(Found)gui_write_EN2412(x2, y, CharColor, ' '); if(i == 5)gui_write_EN2412(x2, y, CharColor, '0'); }else{ gui_write_EN2412(x2, y, CharColor, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender6Right24(int x, int y, unsigned int CharColor, unsigned int bClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x + 60; gui_write_EN2412(x2, y, CharColor, bClr, '0'); return; } x2 = x; Found = 0; aRatio = 100000; da = dig; for(i=0; i<6; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); }else{ if(Le == 0){ if(i == 5)gui_write_EN2412(x2, y, CharColor, bClr, '0'); else gui_write_EN2412(x2, y, CharColor, bClr, ' '); }else{ gui_write_EN2412(x2, y, CharColor, bClr, Le + '0'); Found = 1; } } aRatio = aRatio / 10; x2 += 12; } } void TextDigitRender5Left24(int x, int y, unsigned int CharColor, unsigned int BackClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x; gui_write_EN2412(x2, y, CharColor, BackClr, '0'); x2 += 12; for(Found=1; Found<5; Found++){ gui_write_EN2412(x2, y, CharColor, BackClr, ' '); x2 += 12; } return; } x2 = x; Found = 0; aRatio = 10000; da = dig; for(i=0; i<5; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, BackClr, Le + '0'); Found++; }else{ if(Le == 0){ //if(Found)gui_write_EN2412(x2, y, BackClr, ' '); if(i == 5)gui_write_EN2412(x2, y, CharColor, BackClr, '0'); }else{ gui_write_EN2412(x2, y, CharColor, BackClr, Le + '0'); Found =1; } } aRatio = aRatio / 10; if(Found)x2 += 12; } if(Found <5){ for(; Found<5; Found++){ gui_write_EN2412(x2, y, CharColor, BackClr, ' '); x2 += 12; } } } void TextDigitRender6Left24(int x, int y, unsigned int CharColor, unsigned int BackClr, unsigned int dig) { unsigned int i, da, Le, Ta, x2, aRatio, Found; if(dig == 0){ x2 = x; gui_write_EN2412(x2, y, CharColor, BackClr, '0'); x2 += 12; for(Found=1; Found<6; Found++){ gui_write_EN2412(x2, y, CharColor, BackClr, ' '); x2 += 12; } return; } x2 = x; Found = 0; aRatio = 100000; da = dig; for(i=0; i<6; i++){ Le = da / aRatio; da = da % aRatio; if(Found){ gui_write_EN2412(x2, y, CharColor, BackClr, Le + '0'); Found++; }else{ if(Le == 0){ //if(Found)gui_write_EN2412(x2, y, BackClr, ' '); if(i == 5)gui_write_EN2412(x2, y, CharColor, BackClr, '0'); }else{ gui_write_EN2412(x2, y, CharColor, BackClr, Le + '0'); Found =1; } } aRatio = aRatio / 10; if(Found)x2 += 12; } if(Found <6){ for(; Found<6; Found++){ gui_write_EN2412(x2, y, CharColor, BackClr, ' '); x2 += 12; } } } void TextRender(int x1, int y1, const char *p, unsigned int aColor, int aFontSize) { } void TextRenderAscii_20(unsigned int x,unsigned int y, unsigned int clr,const char *pc) { lcd_draw_str_14x20(x,y, clr,pc); } void TextRenderAscii_20(unsigned int x,unsigned int y, unsigned int clr, char *pc) { lcd_draw_str_14x20(x,y, clr,pc); } void TextRenderAscii_16(unsigned int x,unsigned int y, unsigned int clr, const char *pc) { lcd_draw_str_11x16(x,y,clr,pc); } void TextRenderAscii_16(unsigned int x,unsigned int y, unsigned int clr, char *pc) { lcd_draw_str_11x16(x,y,clr,pc); }