|
|
commit 6194b736eb07400233687757c3fb572706614840
Author: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
AuthorDate: Thu Aug 18 16:22:28 2022 +0200
Commit: ManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>
CommitDate: Thu Aug 18 16:22:28 2022 +0200
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(+)
diff --git src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H
index 547f63f..84c2f1a 100644
--- src/drivers/Cairo/Fl_Cairo_Graphics_Driver.H
+++ 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 src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
index 72a21c4..ea651cf 100644
--- src/drivers/Cairo/Fl_Cairo_Graphics_Driver.cxx
+++ 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 <FL/platform.H>
#include <FL/fl_draw.H>
#include <cairo/cairo.h>
@@ -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
[ Direct Link to Message ] | |
|
| |