This source file includes following definitions.
- setup
- draw_texture
- draw_image
#include <string>
#include "opengl_helpers.h"
#include "layout.h"
using namespace Layout;
static const int border_sz = 10;
static const int header_sz = 20;
static struct info state;
const struct info &Layout::setup(int image_width, int image_height)
{
state.window_width = 2*image_width + 3*border_sz;
state.window_height = 2*image_height + border_sz + 2*header_sz;
return state;
}
void Layout::draw_texture(enum location location, GLuint texture_id, int width, int height, const std::string &label)
{
int x0, x1, y0, y1, lx, ly;
switch (location) {
case LL:
case UL:
x0 = border_sz; x1 = x0 + width;
lx = x0 + 2;
break;
case LR:
case UR:
x1 = state.window_width - border_sz; x0 = x1 - width;
lx = x0 + 2;
break;
}
switch (location) {
case LL:
case LR:
y0 = header_sz; y1 = y0 + height;
ly = 6;
break;
case UL:
case UR:
y1 = state.window_height - header_sz; y0 = y1 - height;
ly = y1 + 6;
break;
}
OpenGLHelpers::display_texture(texture_id, 2.0*x0/state.window_width-1.0, 2.0*x1/state.window_width-1.0, 2.0*y0/state.window_height-1.0, 2.0*y1/state.window_height-1.0);
OpenGLHelpers::draw_text(label, 2.0*lx/state.window_width-1.0, 2.0*ly/state.window_height-1.0);
}
void Layout::draw_image(enum location location, const uint8_t *data, int width, int height, const std::string &label)
{
const auto texture_id = OpenGLHelpers::create_texture(width, height, data);
draw_texture(location, texture_id, width, height, label);
OpenGLHelpers::delete_texture(texture_id);
}