raven/src/Painter.hpp

41 lines
1 KiB
C++
Raw Normal View History

#pragma once
#include "Box.hpp"
2022-03-18 02:49:16 +02:00
#include "Point.hpp"
2022-03-18 03:22:30 +02:00
#include "RGB.hpp"
#include "cairomm/xlib_surface.h"
#include <cairomm/cairomm.h>
2022-03-18 02:49:16 +02:00
#include <pango/pangocairo.h>
2022-03-08 02:25:22 +02:00
namespace Raven {
2022-03-18 02:49:16 +02:00
enum class PaintTextAlign {
Center = 0,
Left
};
2022-03-08 02:25:22 +02:00
class Painter {
private:
Cairo::RefPtr<Cairo::Context> m_cairo { nullptr };
public:
Painter() {}
2022-03-08 02:25:22 +02:00
2022-04-30 09:40:09 +03:00
Cairo::RefPtr<Cairo::Context> cairo() { return m_cairo; }
void set_cairo(Cairo::RefPtr<Cairo::Context> cairo) { m_cairo = cairo; }
void rounded_rectangle(Box &geometry, double border_radius);
Point compute_text_size(Box &widget_geometry, std::string &text, PangoFontDescription *pango_font_description);
void text(Box &geometry, std::string &text, PaintTextAlign align, PangoEllipsizeMode ellipsize, PangoFontDescription *pango_font_description);
2022-03-18 02:49:16 +02:00
bool can_paint() { if (m_cairo) return true; else return false; }
2022-06-11 15:52:23 +03:00
void source_rgb(RGB source_rgb);
2022-03-18 02:49:16 +02:00
void fill();
void begin_paint_group();
void end_paint_group();
void flush_paint_group();
2022-03-08 02:25:22 +02:00
};
}