Графический контекст
Графический контекст представляет собой инкапсуляцию системного графического контекста и служит для унификации процедур отрисовки и изоляции платформозависимого кода.
Интерфейс:
class graphic
{
public:
graphic(system_context &context);
~graphic();
void init(const rect &max_size, color background_color);
void release();
void set_background_color(color background_color);
void clear(const rect &position);
void flush(const rect &updated_size);
void draw_pixel(const rect &position, color color_);
void draw_line(const rect &position, color color_, uint32_t width = 1);
rect measure_text(const std::string &text, const font &font_);
void draw_text(const rect &position, const std::string &text, color color_, const font &font_);
void draw_rect(const rect &position, color fill_color);
void draw_rect(const rect &position, color border_color, color fill_color, uint32_t border_width, uint32_t round);
/// draw some buffer on context
void draw_buffer(const rect &position, uint8_t *buffer, size_t buffer_size);
/// draw another graphic on context
void draw_graphic(const rect &position, graphic &graphic_, int32_t left_shift, int32_t right_shift);
};
constructor
Принимает на вход системный контекст от окна
init
Инициализация подсистемы
- max_size - максимальный размер поля рисования
- background_color - цвет заливки
release
Деинициализация подсистемы, очистка
set_background_color
Смена цвета заливки
clear
Очистка области цветом заливки
- position - координаты очищаемой области
flush
Сброс (отрисовка) области на системный графический контекст
- updated_size - координаты сбрасываемой области
draw_pixel
Рисование точки
- position - координаты точки
- color_ - цвет точки
draw_line
Рисование линии
- position - координаты начальной и конечной точек
- color_ - цвет линии
- width - толщина линии
measure_text
Возвращает размеры текстовой строки в пикселях
- text - строка
- font_ - шрифт
draw_text
Отрисовка текстовой строки
- position - координаты верхнего левого угла строки
- text - текст строки
- color_ - цвет
- font_ - шрифт
draw_rect #1
Отрисовка простого прямоугольника
- position - координаты
- fill_color - цвет заливки
draw_rect #2
Отрисовка прямоугольника с границей и скруглением
- position - координаты
- border_color - цвет границы
- fill_color - цвет заливки
- border_width-толщина границы
- round - радиус скругления
draw_buffer
Отрисовка буфера с глубиной цвета RGB32
- position - координаты для отрисовки
- buffer - буфер
- buffer_size - размер буфера в байтах
draw_graphic
Отрисовка другого графического контекста
- position - координаты для отрисовки
- graphic_ - графический контекст
- left_shift - смещение по x
- top_shift - смещение по y