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

version 1.4, 2004/03/25 18:25:24 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
   
 typedef struct {  
         BYTE    *bmp;  
         UINT    width;  
         UINT    height;  
         UINT8   key;  
 } SOFTKBD;  
   
 static  SOFTKBD softkbd;  
   
   
 void softkbd_initialize(void) {  static void loadbmp(const char *filename) {
   
         BMPFILE *bf;          void    *ptr;
         BMPDATA inf;  
   
         softkbd.bmp = NULL;          softkbd.ptr = NULL;
         softkbd.width = 0;          ptr = (void *)bmpdata_solvedata(np2kbd_bmp);
         softkbd.height = 0;          if (ptr != NULL) {
         softkbd.key = SOFTKEY_NC;                  if (cmndraw_bmp4inf(&softkbd.bmp, ptr) == SUCCESS) {
         bf = (BMPFILE *)bmpdata_solvedata(np2kbd_bmp);                          softkbd.ptr = ptr;
         if (bf != 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;  
                         softkbd.height = inf.height;  
                 }                  }
                 else {                  else {
                         _MFREE(bf);                          _MFREE(ptr);
                 }                  }
         }          }
           softkbd.flag |= SOFTKEY_FLAGREDRAW;
   }
   
   void softkbd_initialize(void) {
   
           softkbd.key = SOFTKEY_NC;
           softkbd.led = 0;
           loadbmp(NULL);
 }  }
   
 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);
 }  }
   
 void softkbd_paint(CMNVRAM *vram, CMNPALCNV cnv) {  REG8 softkbd_process(void) {
   
           return(softkbd.flag);
   }
   
   BOOL softkbd_paint(CMNVRAM *vram, CMNPALCNV cnv, BOOL redraw) {
   
         cmddraw_bmp16(vram, softkbd.bmp, cnv, CMNBMP_LEFT | CMNBMP_TOP);          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 91  BOOL softkbd_down(int x, int y) { Line 120  BOOL softkbd_down(int x, int y) {
                 return(TRUE);                  return(TRUE);
         }          }
         else if (key != SOFTKEY_NC) {          else if (key != SOFTKEY_NC) {
                 keystat_senddata((UINT8)key);                  keystat_down(&key, 1, NKEYREF_SOFTKBD);
                 softkbd.key = key;                  softkbd.key = key;
         }          }
         return(FALSE);          return(FALSE);
Line 100  BOOL softkbd_down(int x, int y) { Line 129  BOOL softkbd_down(int x, int y) {
 void softkbd_up(void) {  void softkbd_up(void) {
   
         if (softkbd.key != SOFTKEY_NC) {          if (softkbd.key != SOFTKEY_NC) {
                 keystat_senddata((REG8)(softkbd.key | 0x80));                  keystat_up(&softkbd.key, 1, NKEYREF_SOFTKBD);
                 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.4  
changed lines
  Added in v.1.8


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