| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- #include "tigr.h"
- Tigr* makeDemoWindow(int w, int h, int flags) {
- return tigrWindow(w, h, "Flag tester", flags);
- }
- void drawDemoWindow(Tigr* win) {
- TPixel lineColor = tigrRGB(100, 100, 100);
- tigrLine(win, 0, 0, win->w - 1, win->h - 1, lineColor);
- tigrLine(win, 0, win->h - 1, win->w - 1, 0, lineColor);
- tigrRect(win, 0, 0, win->w, win->h, tigrRGB(200, 10, 10));
- tigrPrint(win, tfont, 5, 5, tigrRGB(20, 200, 0), "%dx%d", win->w, win->h);
- }
- typedef struct Toggle {
- const char* text;
- int checked;
- int value;
- int key;
- TPixel color;
- } Toggle;
- void drawToggle(Tigr* bmp, Toggle* toggle, int x, int y, int stride) {
- int height = tigrTextHeight(tfont, toggle->text);
- int width = tigrTextWidth(tfont, toggle->text);
- int yOffset = stride / 2;
- int xOffset = width / -2;
- tigrPrint(bmp, tfont, x + xOffset, y + yOffset, toggle->color, toggle->text);
- yOffset += toggle->checked ? height : height / 3;
- TPixel lineColor = toggle->color;
- lineColor.a = 240;
- tigrLine(bmp, x + xOffset, y + yOffset, x + xOffset + width, y + yOffset, lineColor);
- }
- int main(int argc, char* argv[]) {
- int flags = 0;
- int initialW = 400;
- int initialH = 400;
- Tigr* win = makeDemoWindow(initialW, initialH, flags);
- TPixel white = tigrRGB(255, 255, 255);
- TPixel yellow = tigrRGB(255, 255, 0);
- TPixel black = tigrRGB(0, 0, 0);
- Toggle toggles[] = {
- //
- { "(A)UTO", 0, TIGR_AUTO, 'A', white },
- { "(R)ETINA", 0, TIGR_RETINA, 'R', white },
- { "(F)ULLSCREEN", 0, TIGR_FULLSCREEN, 'F', white },
- { "(2)X", 0, TIGR_2X, '2', yellow },
- { "(3)X", 0, TIGR_3X, '3', yellow },
- { "(4)X", 0, TIGR_4X, '4', yellow },
- { "(N)OCURSOR", 0, TIGR_NOCURSOR, 'N', white },
- };
- while (!tigrClosed(win) && !tigrKeyDown(win, TK_ESCAPE)) {
- tigrClear(win, black);
- drawDemoWindow(win);
- int numToggles = sizeof(toggles) / sizeof(*toggles);
- int stepY = win->h / numToggles;
- int toggleY = 0;
- int toggleX = win->w / 2;
- {
- int newFlags = 0;
- for (int i = 0; i < numToggles; i++, toggleY += stepY) {
- Toggle* toggle = toggles + i;
- if (tigrKeyDown(win, toggle->key)) {
- toggle->checked ^= 1;
- }
- newFlags += toggle->checked * toggle->value;
- drawToggle(win, toggle, toggleX, toggleY, stepY);
- }
- if (flags != newFlags) {
- int modeFlags = TIGR_AUTO | TIGR_RETINA;
- int modeChange = (flags & modeFlags) != (newFlags & modeFlags);
- flags = newFlags;
- int w = modeChange ? initialW : win->w;
- int h = modeChange ? initialH : win->h;
- tigrFree(win);
- win = makeDemoWindow(w, h, flags);
- }
- }
- tigrUpdate(win);
- }
- tigrFree(win);
- return 0;
- }
|