summaryrefslogtreecommitdiff
path: root/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-04-23 16:15:05 +0200
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-04-23 16:15:05 +0200
commit285e8e843afa51e3e1ae2ffdd3b4161b566b160d (patch)
tree9a6ea2c713ad2d972db2500769621eca6d8d3fe5 /src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
parent8e21120f75a0d791ce6f1cc26445f1978ed8875d (diff)
Create Fl_Cairo_Graphics_Driver::handle_dummy_cairo(cairo_t *cr).
Diffstat (limited to 'src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx')
-rw-r--r--src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx17
1 files changed, 14 insertions, 3 deletions
diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
index 8651f3887..029a2eb4f 100644
--- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
+++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
@@ -69,7 +69,7 @@ static void draw_image_cb(void *data, int x, int y, int w, uchar *buf) {
Fl_Cairo_Graphics_Driver::Fl_Cairo_Graphics_Driver() : Fl_Graphics_Driver() {
cairo_ = NULL;
pango_layout_ = NULL;
- dummy_pango_layout_ = NULL;
+ dummy_cairo_ = NULL;
linestyle_ = FL_SOLID;
clip_ = NULL;
scale_x = scale_y = 1;
@@ -85,6 +85,15 @@ Fl_Cairo_Graphics_Driver::~Fl_Cairo_Graphics_Driver() {
const cairo_format_t Fl_Cairo_Graphics_Driver::cairo_format = CAIRO_FORMAT_ARGB32;
+void Fl_Cairo_Graphics_Driver::handle_dummy_cairo(cairo_t *cr) {
+ pango_cairo_update_layout(cr, pango_layout_); // 1.10
+ cairo_surface_t *surf = cairo_get_target(dummy_cairo_);
+ cairo_destroy(dummy_cairo_);
+ cairo_surface_destroy(surf);
+ dummy_cairo_ = NULL;
+}
+
+
void Fl_Cairo_Graphics_Driver::rectf(int x, int y, int w, int h) {
cairo_rectangle(cairo_, x-0.5, y-0.5, w, h);
cairo_fill(cairo_);
@@ -1078,8 +1087,10 @@ void Fl_Cairo_Graphics_Driver::font(Fl_Font fnum, Fl_Fontsize s) {
cairo_surface_t *surf = cairo_image_surface_create(Fl_Cairo_Graphics_Driver::cairo_format, 100, 100);
cairo_ = cairo_create(surf);
}
- pango_layout_ = pango_cairo_create_layout(cairo_);
- if (needs_dummy) dummy_pango_layout_ = pango_layout_;
+ pango_layout_ = pango_cairo_create_layout(cairo_); // 1.10
+ if (needs_dummy) {
+ dummy_cairo_ = cairo_;
+ }
}
if (s == 0) return;
if (font() == fnum && size() == s) return;