2021-06-07 10:26:31 +02:00
|
|
|
#include <iostream>
|
|
|
|
|
2021-06-12 23:25:28 +02:00
|
|
|
#include "button.hpp"
|
2021-06-08 14:30:38 +02:00
|
|
|
#include "horizontal_layout.hpp"
|
2021-06-14 09:41:07 +02:00
|
|
|
#include "numeric_input.hpp"
|
2021-06-08 14:30:38 +02:00
|
|
|
#include "vertical_layout.hpp"
|
2021-06-03 19:14:02 +02:00
|
|
|
|
|
|
|
int main()
|
|
|
|
{
|
2021-06-05 11:02:56 +02:00
|
|
|
int width = 640;
|
|
|
|
int height = 480;
|
2021-06-03 19:14:02 +02:00
|
|
|
|
2021-06-04 15:43:46 +02:00
|
|
|
TTF_Init();
|
2021-06-14 09:41:07 +02:00
|
|
|
TTF_Font* font = TTF_OpenFont("fonts/FiraMono-Bold.ttf", 16);
|
2021-06-04 15:43:46 +02:00
|
|
|
|
2021-06-03 19:14:02 +02:00
|
|
|
SDL_Init(SDL_INIT_VIDEO);
|
|
|
|
SDL_Window* win = SDL_CreateWindow(
|
|
|
|
"Widget test",
|
|
|
|
SDL_WINDOWPOS_UNDEFINED,
|
|
|
|
SDL_WINDOWPOS_UNDEFINED,
|
|
|
|
width,
|
|
|
|
height,
|
|
|
|
SDL_WINDOW_SHOWN | SDL_WINDOW_RESIZABLE
|
|
|
|
);
|
|
|
|
SDL_Renderer* rend = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED);
|
|
|
|
SDL_SetRenderDrawBlendMode(rend, SDL_BLENDMODE_BLEND);
|
|
|
|
|
2021-06-08 14:30:38 +02:00
|
|
|
SDL_Rect layout_vp = {0, 0, width, height};
|
|
|
|
Layout* layout = new Vertical_Layout(rend);
|
|
|
|
for (int i = 0; i < 4; i++)
|
|
|
|
{
|
|
|
|
std::cerr << "Layout " << i << " Widget:";
|
|
|
|
Layout* column = new Horizontal_Layout(rend);
|
|
|
|
layout->add_widget(column);
|
|
|
|
for (int j = 0; j < 3; j++)
|
|
|
|
{
|
2021-06-14 09:41:07 +02:00
|
|
|
Numeric_Input<int>* widget = new Numeric_Input<int>(rend);
|
2021-06-12 02:15:40 +02:00
|
|
|
widget->font(font);
|
2021-06-08 14:30:38 +02:00
|
|
|
column->add_widget(widget);
|
|
|
|
std::cerr << " " << j << "@" << widget;
|
|
|
|
}
|
|
|
|
std::cerr << std::endl << "Append v-layout" << std::endl;
|
|
|
|
}
|
2021-06-12 23:25:28 +02:00
|
|
|
layout->viewport(layout_vp);
|
2021-06-03 19:14:02 +02:00
|
|
|
bool quit = false;
|
|
|
|
while (!quit)
|
|
|
|
{
|
|
|
|
SDL_Event ev;
|
|
|
|
while (SDL_PollEvent(&ev) != 0)
|
|
|
|
{
|
|
|
|
switch (ev.type)
|
|
|
|
{
|
|
|
|
case SDL_QUIT:
|
|
|
|
quit = true;
|
|
|
|
break;
|
|
|
|
case SDL_WINDOWEVENT:
|
|
|
|
if (ev.window.event == SDL_WINDOWEVENT_SIZE_CHANGED)
|
|
|
|
{
|
|
|
|
SDL_GetRendererOutputSize(rend, &width, &height);
|
2021-06-08 14:30:38 +02:00
|
|
|
layout_vp.w = width;
|
|
|
|
layout_vp.h = height;
|
|
|
|
std::cerr << "Screen resized " << width << "x" << height << std::endl;
|
2021-06-12 23:25:28 +02:00
|
|
|
layout->viewport(layout_vp);
|
2021-06-03 19:14:02 +02:00
|
|
|
}
|
|
|
|
break;
|
|
|
|
case SDL_MOUSEBUTTONUP:
|
|
|
|
//_handle_click({ev.button.x, ev.button.y});
|
|
|
|
break;
|
|
|
|
}
|
2021-06-08 14:30:38 +02:00
|
|
|
layout->handle_event(ev);
|
2021-06-03 19:14:02 +02:00
|
|
|
}
|
|
|
|
|
|
|
|
SDL_SetRenderDrawColor(rend, 0, 0, 0, SDL_ALPHA_OPAQUE);
|
|
|
|
SDL_RenderClear(rend);
|
|
|
|
|
2021-06-08 14:30:38 +02:00
|
|
|
layout->render();
|
2021-06-03 19:14:02 +02:00
|
|
|
SDL_RenderPresent(rend);
|
|
|
|
}
|
|
|
|
|
2021-06-08 14:30:38 +02:00
|
|
|
delete layout;
|
2021-06-03 19:14:02 +02:00
|
|
|
SDL_DestroyRenderer(rend);
|
|
|
|
SDL_DestroyWindow(win);
|
|
|
|
SDL_Quit();
|
2021-06-04 15:43:46 +02:00
|
|
|
TTF_CloseFont(font);
|
|
|
|
TTF_Quit();
|
2021-06-03 19:14:02 +02:00
|
|
|
return 0;
|
|
|
|
}
|