Diff for /np2/generic/softkbd.c between versions 1.6 and 1.8

version 1.6, 2004/03/31 11:59:17 version 1.8, 2004/04/07 13:15:40
Line 6 Line 6
 #include        "softkbd.h"  #include        "softkbd.h"
 #include        "keystat.h"  #include        "keystat.h"
   
   
 #define SOFTKEY_MENU    0xfe  #define SOFTKEY_MENU    0xfe
 #define SOFTKEY_NC              0xff  #define SOFTKEY_NC              0xff
   
   
   typedef struct {
           UINT8   key;
           UINT8   key2;
           UINT8   led;
           UINT8   flag;
           void    *ptr;
           CMNBMP  bmp;
           CMNPAL  pal[16];
   } SOFTKBD;
   
   static  SOFTKBD softkbd;
   
 #if (SUPPORT_SOFTKBD == 1)  #if (SUPPORT_SOFTKBD == 1)
 #include        "softkbd1.res"  #include        "softkbd1.res"
 #elif (SUPPORT_SOFTKBD == 2)  #elif (SUPPORT_SOFTKBD == 2)
Line 17 Line 31
 #include        "softkbd.res"  #include        "softkbd.res"
 #endif  #endif
   
 #if 0  
 typedef struct {  static void loadbmp(const char *filename) {
         BMPDATA inf;  
         BYTE    *ptr;          void    *ptr;
         int             height;  
         int             yalign;          softkbd.ptr = NULL;
 } CMNBMP;          ptr = (void *)bmpdata_solvedata(np2kbd_bmp);
           if (ptr != NULL) {
 static BOOL cmnbmp_4(const BYTE *dat, CMNBMP *ret) {                  if (cmndraw_bmp4inf(&softkbd.bmp, ptr) == SUCCESS) {
                           softkbd.ptr = ptr;
         BMPDATA         inf;  
 const BMPFILE   *bf;  
   
         bf = (BMPFILE *)dat;  
         if ((bf == NULL) ||  
                 (bf->bfType[0] != 'B') || (bf->bfType[1] != 'M') ||  
                 (bmpdata_getinfo((BMPINFO *)(bf + 1), &inf) != SUCCESS) ||  
                 (inf.bpp == 4)) {  
                 return(FAILURE);  
         }  
         if (ret) {  
                 ret->inf = inf;  
                 ret->ptr = ((BYTE *)bf) + (LOADINTELDWORD(bf->bfOffBits));  
                 ret->yalign = bmpdata_getalign((BMPINFO *)(bf + 1));  
                 if (inf.height < 0) {  
                         ret->height = inf.height * -1;  
                 }                  }
                 else {                  else {
                         ret->ptr += (inf.height - 1) * ret->yalign;                          _MFREE(ptr);
                         ret->height = inf.height;  
                         ret->yalign *= -1;  
                 }                  }
         }          }
         return(SUCCESS);          softkbd.flag |= SOFTKEY_FLAGREDRAW;
 }  }
 #endif  
   
   
 typedef struct {  
         BYTE    *bmp;  
         UINT    width;  
         UINT    height;  
         UINT8   key;  
 } SOFTKBD;  
   
 static  SOFTKBD softkbd;  
   
   
   
 // ----  
   
 void softkbd_initialize(void) {  void softkbd_initialize(void) {
   
         BMPFILE *bf;  
         BMPDATA inf;  
   
         softkbd.bmp = NULL;  
         softkbd.width = 0;  
         softkbd.height = 0;  
         softkbd.key = SOFTKEY_NC;          softkbd.key = SOFTKEY_NC;
         bf = (BMPFILE *)bmpdata_solvedata(np2kbd_bmp);          softkbd.led = 0;
         if (bf != NULL) {          loadbmp(NULL);
                 if ((bf->bfType[0] == 'B') && (bf->bfType[1] == 'M') &&  
                         (bmpdata_getinfo((BMPINFO *)(bf + 1), &inf) == SUCCESS) &&  
                         (inf.bpp == 4)) {  
                         softkbd.bmp = (BYTE *)bf;  
                         softkbd.width = inf.width;  
                         if (inf.height > 0) {  
                                 softkbd.height = inf.height;  
                         }  
                         else {  
                                 softkbd.height = 0 - inf.height;  
                         }  
                 }  
                 else {  
                         _MFREE(bf);  
                 }  
         }  
 }  }
   
 void softkbd_deinitialize(void) {  void softkbd_deinitialize(void) {
   
         BYTE    *bmp;          void    *ptr;
   
         bmp = softkbd.bmp;          ptr = softkbd.ptr;
         softkbd.bmp = NULL;          softkbd.ptr = NULL;
         if (bmp) {          if (ptr) {
                 _MFREE(bmp);                  _MFREE(ptr);
         }          }
 }  }
   
 BOOL softkbd_getsize(int *width, int *height) {  BOOL softkbd_getsize(int *width, int *height) {
   
         if (softkbd.bmp == NULL) {          if (softkbd.ptr == NULL) {
                 return(FAILURE);                  return(FAILURE);
         }          }
         if (width) {          if (width) {
                 *width = softkbd.width;                  *width = softkbd.bmp.width;
         }          }
         if (height) {          if (height) {
                 *height = softkbd.height;                  *height = softkbd.bmp.height;
         }          }
         return(SUCCESS);          return(SUCCESS);
 }  }
   
 BOOL softkbd_paint(CMNVRAM *vram, CMNPALCNV cnv) {  REG8 softkbd_process(void) {
   
         cmddraw_bmp16(vram, softkbd.bmp, cnv, CMNBMP_LEFT | CMNBMP_TOP);          return(softkbd.flag);
         return(TRUE);  }
   
   BOOL softkbd_paint(CMNVRAM *vram, CMNPALCNV cnv, BOOL redraw) {
   
           UINT8   flag;
           BOOL    ret;
   
           flag = softkbd.flag;
           softkbd.flag = 0;
           if (redraw) {
                   flag = SOFTKEY_FLAGREDRAW | SOFTKEY_FLAGDRAW;
           }
           ret = FALSE;
           if ((flag & SOFTKEY_FLAGREDRAW) && (vram) && (cnv)) {
                   (*cnv)(softkbd.pal, softkbd.bmp.paltbl, softkbd.bmp.pals, vram->bpp);
                   cmndraw_bmp16(vram, softkbd.ptr, cnv, CMNBMP_LEFT | CMNBMP_TOP);
                   ret = TRUE;
           }
           if (flag & SOFTKEY_FLAGDRAW) {
                   TRACEOUT(("softkbd_paint"));
                   ledpaint(vram);
                   ret = TRUE;
           }
           return(ret);
 }  }
   
 BOOL softkbd_down(int x, int y) {  BOOL softkbd_down(int x, int y) {
Line 151  void softkbd_up(void) { Line 133  void softkbd_up(void) {
                 softkbd.key = SOFTKEY_NC;                  softkbd.key = SOFTKEY_NC;
         }          }
 }  }
   
   void softkbd_led(REG8 led) {
   
           TRACEOUT(("softkbd_led(%x)", led));
           if (softkbd.led != led) {
                   softkbd.led = led;
                   softkbd.flag |= SOFTKEY_FLAGDRAW;
           }
   }
 #endif  #endif
   

Removed from v.1.6  
changed lines
  Added in v.1.8


RetroPC.NET-CVS <cvs@retropc.net>