summaryrefslogtreecommitdiff
path: root/frontends/kolibrios/kolibri_button.h
diff options
context:
space:
mode:
Diffstat (limited to 'frontends/kolibrios/kolibri_button.h')
-rw-r--r--frontends/kolibrios/kolibri_button.h46
1 files changed, 46 insertions, 0 deletions
diff --git a/frontends/kolibrios/kolibri_button.h b/frontends/kolibrios/kolibri_button.h
new file mode 100644
index 000000000..fa5a86820
--- /dev/null
+++ b/frontends/kolibrios/kolibri_button.h
@@ -0,0 +1,46 @@
+#ifndef KOLIBRI_BUTTON_H
+#define KOLIBRI_BUTTON_H
+
+struct kolibri_button {
+ unsigned int x65536sizex;
+ unsigned int y65536sizey;
+ unsigned int color;
+ unsigned int identifier;
+ unsigned int XY;
+};
+
+struct kolibri_button *kolibri_new_button(unsigned int tlx, unsigned int tly, unsigned int sizex, unsigned int sizey,
+ unsigned int identifier, unsigned int color)
+{
+ struct kolibri_button* new_button = (struct kolibri_button *)malloc(sizeof(struct 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;
+}
+
+void draw_button(struct 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 */