#include "quiz.h" extern APTR OpenLibrary (); struct TextFont * OpenDiskFont (); LONG IntuiTextLength (); struct TextAttr thai_textattr; #define TG_BASEX 4 #define TG_BASEY 12 #define TG_KWIDTH 632 #define TG_WIDTH 16 #define TG_HEIGHT 26 #define TG_GAP 6 struct Gadget thai_gadget[ TC_MAX_CHAR ]; struct IntuiText thai_gtext[ TC_MAX_CHAR ]; UBYTE thai_gtbuf[ TC_MAX_CHAR * 3 ]; init_thai_keyboard () { int c , i , x , y , width; register struct IntuiText *ip; register struct Gadget *gp; struct RastPort rp; i = 0; x = TG_BASEX; y = TG_BASEY; for ( i = 0; i < TC_MAX_CHAR; i++ ) { if ( isthai ( i ) ) { ip = &thai_gtext[ i ]; ip->FrontPen = FP; ip->BackPen = BP; ip->DrawMode = JAM1; ip->TopEdge = 2; ip->ITextFont = &thai_textattr; ip->IText = &thai_gtbuf[ i * 3 ]; if ( isreverse(i) ) { thai_gtbuf[ i * 3 + 0 ] = TC_AW; thai_gtbuf[ i * 3 + 1 ] = i; thai_gtbuf[ i * 3 + 2 ] = 0; } else { thai_gtbuf[ i * 3 + 0 ] = i; thai_gtbuf[ i * 3 + 1 ] = 0; } ip->NextText = NULL; ip->LeftEdge = 0; width = IntuiTextLength ( ip ); ip->LeftEdge = TG_GAP / 2; if ( x + width + TG_GAP >= TG_BASEX + TG_KWIDTH ) { x = TG_BASEX; y += TG_HEIGHT; } gp = &thai_gadget[i]; gp->NextGadget = NULL; gp->LeftEdge = x; x += width + TG_GAP; gp->TopEdge = y; gp->Width = width + TG_GAP; gp->Height = TG_HEIGHT; gp->Flags = GADGHCOMP #ifdef USE_ON_OFF | GADGDISABLED #endif ; gp->Activation = RELVERIFY; gp->GadgetType = BOOLGADGET; gp->GadgetRender = NULL; gp->SelectRender = NULL; gp->MutualExclude = 0; gp->SpecialInfo = NULL; gp->GadgetID = i; gp->UserData = NULL; gp->GadgetText = ip; AddGadget ( window , gp , (LONG)-1 ); } } RefreshGadgets ( window->FirstGadget , window , (LONG)NULL ); } off_thai_keyboard () { #ifdef USE_ON_OFF int i; for ( i = 0; i < TC_MAX_CHAR; i++ ) if ( isthai ( i ) ) OffGadget ( &thai_gadget[i] , window , (LONG)NULL ); #endif } on_thai_keyboard () { #ifdef USE_ON_OFF int i; for ( i = 0; i < TC_MAX_CHAR; i++ ) if ( isthai ( i ) ) OnGadget ( &thai_gadget[i] , window , (LONG)NULL ); #endif } redraw_thai ( field ) int field; /* TW_ENTRY or TS_ENTRY */ { static struct IntuiText itext = { FP , BP , JAM1 , 0 , 0 , NULL , NULL , NULL }; itext.ITextFont = &thai_textattr; SetAPen ( window->RPort , (LONG)0 ); if ( field == TW_ENTRY ) { itext.IText = (UBYTE*) screen_word.thai; RectFill ( window->RPort , (LONG) TWBASEX , (LONG) TWBASEY , (LONG) TWBASEX + TWWIDTH - 1 , (LONG)TWBASEY + TWHEIGHT - 1 ); PrintIText ( window->RPort , &itext , (LONG)TWBASEX , (LONG)TWBASEY ); } else { itext.IText = (UBYTE*) screen_sentence.thai; RectFill ( window->RPort , (LONG) TSBASEX , (LONG) TSBASEY , (LONG) TSBASEX + TSWIDTH - 1 , (LONG)TSBASEY + TSHEIGHT - 1 ); PrintIText ( window->RPort , &itext , (LONG)TSBASEX , (LONG)TSBASEY ); } }