?? 拼音輸入.txt
字號:
unsigned char * Py_ShuRu ( unsigned char a0)
{
unsigned char *hzaddr;
unsigned char *hzaddrend;
unsigned char *hzaddr1;
unsigned char a[8]={' ',' ',' ',' ',' ',' ',' ','\0'};
unsigned char j=0;
unsigned char key;
volatile unsigned char (*p1)[8],(*p2)[8],(*p3)[8];
volatile unsigned char i;
int x, y;
x = SCREENW-440;
y = HINTY;
a[0]=a0;
while ( (a[0]<97) || (a[0]>122) || (a[0]=='i') || (a[0]=='u') || (a[0]=='v') )
{
while (Key_Done==0);
Key_Done=0;
a[0]= Key_Val;
}
while( j<6 )
{
Putchar ( x+j*8, y, a[j], 0 );
i=1;
p1=p2=PY_index_pointer[a[0]-97]; //"計算入口樹根"
p3=PY_index_pointer[a[0]-96]; //"設置指針界限"
if (p1==0) break; //"查詢失敗返回0"
while (p1<p3)
if ((*p1)[0]==a[1]) {p2=p1; break;}
else p1++; //"查詢第二個拼音"
p1=p2;
while (p1<p3) //"階梯法查詢余下拼音"
if (((*p1)[i]==a[i+1])&&((*p1)[i-1]==a[i])) { p2=p1; i++; }
else p1++;
hzaddr=((unsigned char *)((*p2)[6]+(*p2)[7]*256+py_mb_begin)); //"返回查詢結果首地址"
hzaddrend=((unsigned char *)((*(p2+1))[6]+(*(p2+1))[7]*256+py_mb_begin-1));
hzaddr1=hzaddr;
key=0;
while((key<97)||(key>122))
{
i=0;
Glib_FilledRectangle (x+(5+2)*8, y, x+440, y+20, 0 ); //440 = 38*10+(5+2)*8 + 4
while( ((hzaddr1+i*2) < hzaddrend )&&(i<10))
{
Putchar ( (x+i*38+(5+2)*8), y, i+48, 0);
PutHz16( (x+12+i*38+(5+2)*8), y, (*(hzaddr1+i*2))-161, (*(hzaddr1+i*2+1)-161), 0);
i++;
}
while (Key_Done==0);
Key_Done=0;
key = Key_Val;
if ( (key>=48)&&(key<=(i+47)) )
{
Glib_FilledRectangle (x, y, x+440, y+20, 0 );
return (hzaddr1+(key-48)*2);
}
if ((key==0xe0)) //page down
{
if ((hzaddr1+20)<hzaddrend) hzaddr1+=20;
}
if ((key==0xe7)) //page up
{
if ((hzaddr1-20)>=hzaddr) hzaddr1-=20;
}
if (key==8)
{
if (j==0)
{
Glib_FilledRectangle (x, y, x+440, y+20, 0 );
return (0);
}
else { a[j]=' '; Glib_FilledRectangle (x+j*8, y, (x+j*8+8), (y+16), 0 ); j--; break;}
}
if ((key>96)&&(key<123)) {j++; a[j]=key; }
}
}
Glib_FilledRectangle (x, y, x+440, y+20, 0 );
return(0);
}
void Putchar ( int x, int y, unsigned char s, unsigned char a)
{
U16 i,j,k,c1,c2;
U8 *put_char;
put_char = asc16[s];
for (j=0; j<=15; j++)
{
k=0x80;
for (i=0; i<=7; i++)
{
c1=((*put_char) & k);
c2 = ( c1 == 0 ? 0: 255 );
k = k >> 1;
PutPixel(x+i, y+j, c2, a);
}
put_char++;
}
}
void PutPixel(U32 x,U32 y,U32 c, unsigned int a1)
{
unsigned char c1, c2, a;
c2=c>>4;
if ((c2 != 0) && ((c2-cloursubtract) >= 0)) c2=c2-cloursubtract;
if((x<SCREENW) && (y<(SCREENH-2)))
{
c1=displaybuffer[(y)][(x)/2];
a = ((x)%2)*4;
if (a1==0)
displaybuffer[(y)][(x)/2] = (c1 & ~(0x0f<<a) ) | ( (c2&0x0f)<<a);
else
displaybuffer[(y)][(x)/2] = (c1 & ~(0x0f<<a) ) | ((( c2^(c1>>a))&0x0f)<<a);
}
}
void PutHz16 (int x, int y, unsigned char qm, unsigned char wm, unsigned char a )
{
volatile U16 i,j,k,c1,c2;
volatile INT32U ulOffset;
volatile U8 *put_hz;
ulOffset = (INT32U)(qm * 94 + wm) * 32;
put_hz=HZK+ulOffset;
for (j=0; j<=15; j++)
{
k=128;
for (i=0; i<=7; i++)
{
c1=((*put_hz) & k);
c2 = ( c1 == 0 ? 0: 255 );
k = k >> 1;
PutPixel(x+i,y+j, c2,a);
}
put_hz++;
k=128;
for (i=0; i<=7; i++)
{
c1=((*put_hz) & k);
c2 = ( c1 == 0 ? 0: 255);
k = k >> 1;
PutPixel(x+8+i, y+j, c2, a);
}
put_hz++;
}
}
void Glib_FilledRectangle(int x1,int y1,int x2,int y2,int color)
{
int i,j;
for(j=y1; j<=y2; j++)
{
for(i=x1; i<=x2; i++)
{
PutPixel(i ,j, color, 0);
}
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -