/******************************************************************************** * File Name: Palace.c * Function Describe:宫格菜单 * Relate Module: * Writer: Shliangwen * Date: 2019-1-15 *******************************************************************************/ #include "gui.h" #include "Palace.h" #include "includes.h" /* flag=0 全部刷新 flag>0 刷index图标 突出显示 flag<0 刷index图标 恢复正常 */ void PalaceShow(SUT_PALACE *sutPalace,int flag,int index) { int r,c,x,y; char filename[20]; #if(PALACE_ICON_TYPE==USE_ICON_PALACE) if(flag==0){ guiClearAll(guiGetBackColor()); sutPalace->Index=0; guiShowCaption(0,sutPalace->Title[sutPalace->Index],UI_STATUS_BAR_HEIGH,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); for(r=0;rwide+sutPalace->ox; y=PALACE_TOP+r*sutPalace->high+sutPalace->oy; if(r==0 && c==0){//if(sutPalace->Index==r*PALACE_COL+c) sprintf(filename,"%s%dP.bmp",sutPalace->FileNamePrefix,r*PALACE_COL+c); //logTrace(filename,1); }else{ sprintf(filename,"%s%d.bmp",sutPalace->FileNamePrefix,r*PALACE_COL+c); } guiShowBmp(x,y,filename); } } }else{ guiShowCaption(0,sutPalace->Title[sutPalace->Index],18,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); r=index/PALACE_COL; c=index%PALACE_COL; x=PALACE_LEFT+c*sutPalace->wide+sutPalace->ox; y=PALACE_TOP+r*sutPalace->high+sutPalace->oy; if(flag>0){ sprintf(filename,"%s%dP.bmp",sutPalace->FileNamePrefix,r*PALACE_COL+c); }else{ sprintf(filename,"%s%d.bmp",sutPalace->FileNamePrefix,r*PALACE_COL+c); } guiShowBmp(x,y,filename); } #else if(flag==0){ guiClearAll(guiGetBackColor()); guiShowCaption(0,sutPalace->Title[sutPalace->Index],UI_STATUS_BAR_HEIGH,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); for(r=0;rwide+sutPalace->ox; y=PALACE_TOP+r*sutPalace->high+sutPalace->oy; sprintf(filename,"%s%d.bmp",sutPalace->FileNamePrefix,r*PALACE_COL+c); if(sutPalace->Index==r*PALACE_COL+c){//if(r==0 && c==0){//if(sutPalace->Index==r*PALACE_COL+c) guiShowBmp(x,y,filename); guiFillRect(x-PALACE_SURROUND_SIZE,y-PALACE_SURROUND_SIZE,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y,COLOR_RED); guiFillRect(x-PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH+PALACE_SURROUND_SIZE,COLOR_RED); guiFillRect(x-PALACE_SURROUND_SIZE,y,x,y+PALACE_ICON_HIGH,COLOR_RED); guiFillRect(x+PALACE_ICON_WIDE,y,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH,COLOR_RED); }else{ guiClearRect(x-PALACE_SURROUND_SIZE,y-PALACE_SURROUND_SIZE,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH+PALACE_SURROUND_SIZE,guiGetBackColor()); guiShowBmp(x,y,filename); } } } sutPalace->showAlreadyFlag=1; }else{ guiShowCaption(0,sutPalace->Title[sutPalace->Index],UI_STATUS_BAR_HEIGH,guiGetBackColor(),guiGetForeColor(),FONT_MODE_12X12); r=index/PALACE_COL; c=index%PALACE_COL; x=PALACE_LEFT+c*sutPalace->wide+sutPalace->ox; y=PALACE_TOP+r*sutPalace->high+sutPalace->oy; if(flag>0){ guiFillRect(x-PALACE_SURROUND_SIZE,y-PALACE_SURROUND_SIZE,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y,COLOR_RED); guiFillRect(x-PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH+PALACE_SURROUND_SIZE,COLOR_RED); guiFillRect(x-PALACE_SURROUND_SIZE,y,x,y+PALACE_ICON_HIGH,COLOR_RED); guiFillRect(x+PALACE_ICON_WIDE,y,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH,COLOR_RED); }else{ guiClearRect(x-PALACE_SURROUND_SIZE,y-PALACE_SURROUND_SIZE,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y,guiGetBackColor()); guiClearRect(x-PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH+PALACE_SURROUND_SIZE,guiGetBackColor()); guiClearRect(x-PALACE_SURROUND_SIZE,y,x,y+PALACE_ICON_HIGH,guiGetBackColor()); guiClearRect(x+PALACE_ICON_WIDE,y,x+PALACE_ICON_WIDE+PALACE_SURROUND_SIZE,y+PALACE_ICON_HIGH,guiGetBackColor()); } if(sutPalace->showAlreadyFlag==0){ sprintf(filename,"%s%d.bmp",sutPalace->FileNamePrefix,r*PALACE_COL+c); guiShowBmp(x,y,filename); } } #endif } void PalaceInit(SUT_PALACE *sutPalace,const char **title , const char *prefix, const char *mainInfo) { int a,b; unsigned char index; if(getKeyValue()==MKEY_VALUE_ESC)//||UI_Stack.OK_back) { index=uiPullStack(); if(index>4){ //p->page=1; sutPalace->Index=index;// }else{ //p->page=0; sutPalace->Index=index; } //UI_Stack.OK_back=0; }else if(getKeyValue()==MKEY_VALUE_MENU){ sutPalace->Index=0; } sutPalace->mainTile=mainInfo; //sutPalace->Index=0; sutPalace->Title=title; sutPalace->FileNamePrefix=prefix; sutPalace->wide=(GLCD_WIDTH-PALACE_LEFT*2)/PALACE_COL; sutPalace->high=(GLCD_HEIGHT-PALACE_TOP)/PALACE_ROW; if(sutPalace->wide>PALACE_ICON_WIDE)sutPalace->ox=(sutPalace->wide-PALACE_ICON_WIDE)/2; else sutPalace->ox=0; if(sutPalace->high>PALACE_ICON_HIGH)sutPalace->oy=(sutPalace->high-PALACE_ICON_HIGH)/2; else sutPalace->oy=0; PalaceShow(sutPalace,0,0); } unsigned short PalaceResponse(SUT_PALACE *sutPalace) { switch(getKeyValue()) { case MKEY_VALUE_UP: PalaceShow(sutPalace,-1,sutPalace->Index); if(sutPalace->Index>0)sutPalace->Index--; else sutPalace->Index = (PALACE_COL*PALACE_ROW)-1; PalaceShow(sutPalace,1,sutPalace->Index); break; case MKEY_VALUE_DOWN: PalaceShow(sutPalace,-1,sutPalace->Index); if(sutPalace->Index<(PALACE_COL*PALACE_ROW-1))sutPalace->Index++; else sutPalace->Index=0; PalaceShow(sutPalace,1,sutPalace->Index); break; case MKEY_VALUE_MENU: break; case MKEY_VALUE_ESC: sutPalace->showAlreadyFlag=0; break; } return getKeyValue(); }