Subversion Repositories Kolibri OS

Rev

Rev 6391 | Blame | Last modification | View Log | RSS feed

  1. #ifndef KOLIBRI_BUTTON_H
  2. #define KOLIBRI_BUTTON_H
  3.  
  4. struct kolibri_button {
  5.   unsigned int x65536sizex;
  6.   unsigned int y65536sizey;
  7.   unsigned int color;
  8.   unsigned int identifier;
  9.   unsigned int XY;
  10. };
  11.  
  12. struct kolibri_button *kolibri_new_button(unsigned int tlx, unsigned int tly, unsigned int sizex, unsigned int sizey,
  13.                                           unsigned int identifier, unsigned int color)
  14. {
  15.   struct kolibri_button* new_button = (struct kolibri_button *)malloc(sizeof(struct kolibri_button));
  16.   new_button -> x65536sizex = (tlx << 16) + sizex;
  17.   new_button -> y65536sizey = (tly << 16) + sizey;
  18.   new_button -> color = color;
  19.   new_button -> identifier = identifier;
  20.   new_button -> XY = 0;
  21.   return new_button;
  22. }
  23.  
  24. void draw_button(struct kolibri_button *some_button)
  25. {
  26.   define_button(some_button -> x65536sizex, some_button -> y65536sizey, some_button -> identifier, some_button -> color);
  27. }
  28.  
  29. unsigned int kolibri_button_get_identifier(void)
  30. {
  31.   unsigned int identifier;
  32.  
  33.   __asm__ __volatile__(
  34.                        "int $0x40"
  35.                        :"=a"(identifier)
  36.                        :"a"(17)
  37.                        );
  38.   /* If no button pressed, returns 1 */
  39.   /* Otherwise, returns identifier of button */
  40.  
  41.   if(identifier != 1) /* Button was detected indeed */
  42.     return identifier>>8;
  43.   else
  44.     return identifier; /* No button detected */
  45. }
  46.  
  47. #endif /* KOLIBRI_BUTTON_H */
  48.