kolibrios-fun/contrib/C_Layer/INCLUDE/kolibri_button.h
siemargl 12a29e00e5 c-layer many fixes
git-svn-id: svn://kolibrios.org@6612 a494cfbc-eb01-0410-851d-a64ba20cac60
2016-10-20 17:13:23 +00:00

49 lines
1.3 KiB
C

#ifndef KOLIBRI_BUTTON_H
#define KOLIBRI_BUTTON_H
typedef struct {
unsigned int x65536sizex;
unsigned int y65536sizey;
unsigned int color;
unsigned int identifier;
unsigned int XY;
}kolibri_button;
kolibri_button *kolibri_new_button(unsigned int tlx, unsigned int tly, unsigned int sizex, unsigned int sizey,
unsigned int identifier, unsigned int color)
{
kolibri_button* new_button = (kolibri_button *)malloc(sizeof(kolibri_button));
new_button -> x65536sizex = (tlx << 16) + sizex;
new_button -> y65536sizey = (tly << 16) + sizey;
new_button -> color = color;
new_button -> identifier = identifier;
new_button -> XY = 0;
return new_button;
}
__attribute__((__stdcall__))
static inline void draw_button(kolibri_button *some_button)
{
define_button(some_button -> x65536sizex, some_button -> y65536sizey, some_button -> identifier, some_button -> color);
}
unsigned int kolibri_button_get_identifier(void)
{
unsigned int identifier;
__asm__ __volatile__(
"int $0x40"
:"=a"(identifier)
:"a"(17)
);
/* If no button pressed, returns 1 */
/* Otherwise, returns identifier of button */
if(identifier != 1) /* Button was detected indeed */
return identifier>>8;
else
return identifier; /* No button detected */
}
#endif /* KOLIBRI_BUTTON_H */