From 6194b736eb07400233687757c3fb572706614840 Mon Sep 17 00:00:00 2001 From: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com> Date: Thu, 18 Aug 2022 16:22:28 +0200 Subject: Add a few missing virtual members to Fl_Cairo_Graphics_Driver. --- src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H | 5 ++++ src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx | 34 ++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) (limited to 'src') diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H index 547f63f2e..84c2f1acf 100644 --- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H +++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H @@ -188,6 +188,11 @@ public: virtual void XDestroyRegion(Fl_Region r); virtual void add_rectangle_to_region(Fl_Region r, int X, int Y, int W, int H); virtual void cache_size(Fl_Image *img, int &width, int &height); + virtual char can_do_alpha_blending(); + virtual float override_scale(); + virtual void restore_scale(float); + virtual void antialias(int state); + virtual int antialias(); }; #endif // FL_CAIRO_GRAPHICS_DRIVER_H diff --git a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx index 72a21c432..ea651cf27 100644 --- a/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx +++ b/src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx @@ -22,6 +22,7 @@ #if USE_PANGO #include "Fl_Cairo_Graphics_Driver.H" +#include "../../Fl_Screen_Driver.H" #include #include #include @@ -1306,4 +1307,37 @@ void Fl_Cairo_Graphics_Driver::cache_size(Fl_Image *unused, int &width, int &hei height *= matrix.xx; } + +char Fl_Cairo_Graphics_Driver::can_do_alpha_blending() { + return 1; +} + + +float Fl_Cairo_Graphics_Driver::override_scale() { + float s = scale(); + if (s != 1.f && Fl_Display_Device::display_device()->is_current()) { + Fl::screen_driver()->scale(0, 1.f); + cairo_scale(cairo_, 1/s, 1/s); + } + return s; +} + + +void Fl_Cairo_Graphics_Driver::restore_scale(float s) { + if (s != 1.f && Fl_Display_Device::display_device()->is_current()) { + Fl::screen_driver()->scale(0, s); + cairo_scale(cairo_, s, s); + } +} + + +void Fl_Cairo_Graphics_Driver::antialias(int state) { + cairo_set_antialias(cairo_, state ? CAIRO_ANTIALIAS_DEFAULT : CAIRO_ANTIALIAS_NONE); +} + + +int Fl_Cairo_Graphics_Driver::antialias() { + return (cairo_get_antialias(cairo_) != CAIRO_ANTIALIAS_NONE); +} + #endif // USE_PANGO -- cgit v1.2.3