Skip to content

Графический контекст

Графический контекст представляет собой инкапсуляцию системного графического контекста и служит для унификации процедур отрисовки и изоляции платформозависимого кода.

Интерфейс:

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