1 #pragma once
2 
3 #include <stdint.h>
4 #include <stdbool.h>
5 #include "ft2_pushbuttons.h"
6 #include "ft2_radiobuttons.h"
7 #include "ft2_checkboxes.h"
8 #include "ft2_scrollbars.h"
9 #include "ft2_sysreqs.h"
10 #include "ft2_textboxes.h"
11 #include "ft2_palette.h"
12 
13 #define FONT1_CHAR_W 8
14 #define FONT1_CHAR_H 10
15 #define FONT1_WIDTH 1024
16 #define FONT2_CHAR_W 16
17 #define FONT2_CHAR_H 20
18 #define FONT2_WIDTH 2048
19 #define FONT3_CHAR_W 4
20 #define FONT3_CHAR_H 7
21 #define FONT3_WIDTH 172
22 #define FONT4_CHAR_W 8
23 #define FONT4_CHAR_H 8
24 #define FONT4_WIDTH 624
25 #define FONT5_CHAR_W 16
26 #define FONT5_CHAR_H 8
27 #define FONT5_WIDTH 624
28 #define FONT6_CHAR_W 7
29 #define FONT6_CHAR_H 8
30 #define FONT6_WIDTH 112
31 #define FONT7_CHAR_W 6
32 #define FONT7_CHAR_H 7
33 #define FONT7_WIDTH 140
34 
35 enum
36 {
37 	FRAMEWORK_TYPE1 = 0,
38 	FRAMEWORK_TYPE2 = 1,
39 
40 	FONT_TYPE1 = 0,
41 	FONT_TYPE2 = 1,
42 	FONT_TYPE3 = 2,
43 	FONT_TYPE4 = 3,
44 	FONT_TYPE5 = 4,
45 	FONT_TYPE6 = 5,
46 	FONT_TYPE7 = 6,
47 
48 	OBJECT_ID_NONE = -1,
49 
50 	OBJECT_NONE = 0,
51 	OBJECT_PUSHBUTTON = 1,
52 	OBJECT_RADIOBUTTON = 2,
53 	OBJECT_CHECKBOX = 3,
54 	OBJECT_SCROLLBAR = 4,
55 	OBJECT_TEXTBOX = 5,
56 	OBJECT_INSTRSWITCH = 6,
57 	OBJECT_PATTERNMARK = 7,
58 	OBJECT_DISKOPLIST = 8,
59 	OBJECT_SMPDATA = 9,
60 	OBJECT_PIANO = 10,
61 	OBJECT_INSVOLENV = 11,
62 	OBJECT_INSPANENV = 12
63 };
64 
65 extern pushButton_t pushButtons[NUM_PUSHBUTTONS];
66 extern radioButton_t radioButtons[NUM_RADIOBUTTONS];
67 extern checkBox_t checkBoxes[NUM_CHECKBOXES];
68 extern scrollBar_t scrollBars[NUM_SCROLLBARS];
69 extern textBox_t textBoxes[NUM_TEXTBOXES];
70 
71 void unstuckLastUsedGUIElement(void);
72 bool setupGUI(void);
73 
74 void hLine(uint16_t x, uint16_t y, uint16_t width, uint8_t paletteIndex);
75 void vLine(uint16_t x, uint16_t y, uint16_t h, uint8_t paletteIndex);
76 void hLineDouble(uint16_t x, uint16_t y, uint16_t w, uint8_t paletteIndex);
77 void vLineDouble(uint16_t x, uint16_t y, uint16_t h, uint8_t paletteIndex);
78 void line(int16_t x1, int16_t x2, int16_t y1, int16_t y2, uint8_t paletteIndex);
79 void clearRect(uint16_t xPos, uint16_t yPos, uint16_t w, uint16_t h);
80 void fillRect(uint16_t xPos, uint16_t yPos, uint16_t w, uint16_t h, uint8_t paletteIndex);
81 void drawFramework(uint16_t x, uint16_t y, uint16_t w, uint16_t h, uint8_t type);
82 void blit32(uint16_t xPos, uint16_t yPos, const uint32_t* srcPtr, uint16_t w, uint16_t h);
83 void blit(uint16_t xPos, uint16_t yPos, const uint8_t *srcPtr, uint16_t w, uint16_t h);
84 void blitClipX(uint16_t xPos, uint16_t yPos, const uint8_t *srcPtr, uint16_t w, uint16_t h, uint16_t clipX);
85 void blitFast(uint16_t xPos, uint16_t yPos, const uint8_t *srcPtr, uint16_t w, uint16_t h); // no transparency/colorkey
86 void blitFastClipX(uint16_t xPos, uint16_t yPos, const uint8_t *srcPtr, uint16_t w, uint16_t h, uint16_t clipX); // no transparency/colorkey
87 void hexOut(uint16_t xPos, uint16_t yPos, uint8_t paletteIndex, uint32_t val, uint8_t numDigits);
88 void hexOutBg(uint16_t xPos, uint16_t yPos, uint8_t fgPalette, uint8_t bgPalette, uint32_t val, uint8_t numDigits);
89 void hexOutShadow(uint16_t xPos, uint16_t yPos, uint8_t paletteIndex, uint8_t shadowPaletteIndex, uint32_t val, uint8_t numDigits);
90 void textOutTiny(int32_t xPos, int32_t yPos, char *str, uint32_t color); // A..Z/a..z and 0..9
91 void textOutTinyOutline(int32_t xPos, int32_t yPos, char *str); // A..Z/a..z and 0..9
92 void charOut(uint16_t xPos, uint16_t yPos, uint8_t paletteIndex, char chr);
93 void charOutBg(uint16_t xPos, uint16_t yPos, uint8_t fgPalette, uint8_t bgPalette, char chr);
94 void charOutShadow(uint16_t xPos, uint16_t yPos, uint8_t paletteIndex, uint8_t shadowPaletteIndex, char chr);
95 void charOutClipX(uint16_t xPos, uint16_t yPos, uint8_t paletteIndex, char chr, uint16_t clipX);
96 void bigCharOut(uint16_t xPos, uint16_t yPos, uint8_t paletteIndex, char chr);
97 void charOutShadow(uint16_t x, uint16_t y, uint8_t paletteIndex, uint8_t shadowPaletteIndex, char chr);
98 void charOutOutlined(uint16_t x, uint16_t y, uint8_t paletteIndex, char chr);
99 void textOut(uint16_t x, uint16_t y, uint8_t paletteIndex, const char *textPtr);
100 void textOutBorder(uint16_t x, uint16_t y, uint8_t paletteIndex, uint8_t borderPaletteIndex, const char *textPtr);
101 void textOutFixed(uint16_t x, uint16_t y, uint8_t fgPaltete, uint8_t bgPalette, const char *textPtr);
102 void bigTextOut(uint16_t x, uint16_t y, uint8_t paletteIndex, const char *textPtr);
103 void bigTextOutShadow(uint16_t x, uint16_t y, uint8_t paletteIndex, uint8_t shadowPaletteIndex, const char *textPtr);
104 void textOutClipX(uint16_t x, uint16_t y, uint8_t paletteIndex, const char *textPtr, uint16_t clipX);
105 void textOutShadow(uint16_t x, uint16_t y, uint8_t paletteIndex, uint8_t shadowPaletteIndex, const char *textPtr);
106 uint8_t charWidth(char ch);
107 uint8_t charWidth16(char ch);
108 uint16_t textWidth(const char *textPtr);
109 uint16_t textNWidth(const char *textPtr, int32_t length);
110 uint16_t textWidth16(const char *textPtr);
111 void drawGUIOnRunTime(void);
112 void showTopLeftMainScreen(bool restoreScreens);
113 void hideTopLeftMainScreen(void);
114 void showTopRightMainScreen(void);
115 void hideTopRightMainScreen(void);
116 void hideTopLeftScreen(void);
117 void hideTopScreen(void);
118 void showTopScreen(bool restoreScreens);
119 void showBottomScreen(void);
120 
121 // for about screen
122 void textOutFade(uint16_t x, uint16_t y, uint8_t paletteIndex, const char *textPtr, int32_t fade);
123 void blit32Fade(uint16_t xPos, uint16_t yPos, const uint32_t* srcPtr, uint16_t w, uint16_t h, int32_t fade);
124