summaryrefslogtreecommitdiff
path: root/src/drivers/Cairo/Fl_Display_Cairo_Graphics_Driver.cxx
diff options
context:
space:
mode:
authorManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-03-15 06:42:06 +0100
committerManoloFLTK <41016272+ManoloFLTK@users.noreply.github.com>2022-08-29 12:15:32 +0200
commitc720aae51515907ae82ee02df80bd084f291d4b1 (patch)
tree7fbf3569f35966891df68490b047b30c9ec20bcd /src/drivers/Cairo/Fl_Display_Cairo_Graphics_Driver.cxx
parent28981f6fd3971aaf7ff6527ee1cdeb9d886c4a4a (diff)
Make hybrid Wayland/X11 platform.
Diffstat (limited to 'src/drivers/Cairo/Fl_Display_Cairo_Graphics_Driver.cxx')
-rw-r--r--src/drivers/Cairo/Fl_Display_Cairo_Graphics_Driver.cxx64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/drivers/Cairo/Fl_Display_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_Display_Cairo_Graphics_Driver.cxx
new file mode 100644
index 000000000..02df902d8
--- /dev/null
+++ b/src/drivers/Cairo/Fl_Display_Cairo_Graphics_Driver.cxx
@@ -0,0 +1,64 @@
+//
+// Support for using Cairo to draw into X11 windows for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2022 by Bill Spitzak and others.
+//
+// This library is free software. Distribution and use rights are outlined in
+// the file "COPYING" which should have been included with this file. If this
+// file is missing or damaged, see the license at:
+//
+// https://www.fltk.org/COPYING.php
+//
+// Please see the following page on how to report bugs and issues:
+//
+// https://www.fltk.org/bugs.php
+//
+
+/* \file
+ Implementation of class Fl_Display_Cairo_Graphics_Driver .
+*/
+
+#include "Fl_Display_Cairo_Graphics_Driver.H"
+#include <FL/platform.H>
+#include <cairo/cairo.h>
+#include <pango/pangocairo.h>
+#include <stdlib.h>
+
+
+void *Fl_Display_Cairo_Graphics_Driver::gc_ = NULL;
+GC fl_gc;
+
+
+ulong fl_xpixel(uchar r,uchar g,uchar b) {
+ return 0;
+}
+ulong fl_xpixel(Fl_Color i) {
+ return 0;
+}
+
+
+void Fl_Display_Cairo_Graphics_Driver::scale(float f) {
+ Fl_Graphics_Driver::scale(f);
+ if (cairo_) {
+ cairo_restore(cairo_);
+ cairo_save(cairo_);
+ cairo_scale(cairo_, f, f);
+ cairo_translate(cairo_, 0.5, 0.5);
+ }
+}
+
+
+void Fl_Display_Cairo_Graphics_Driver::copy_offscreen(int x, int y, int w, int h, Fl_Offscreen pixmap, int srcx, int srcy) {
+ XCopyArea(fl_display, pixmap, fl_window, (GC)Fl_Graphics_Driver::default_driver().gc(), int(srcx*scale()), int(srcy*scale()), int(w*scale()), int(h*scale()), int(x*scale()), int(y*scale()));
+}
+
+
+void Fl_Display_Cairo_Graphics_Driver::gc(void *value) {
+ gc_ = value;
+ fl_gc = (GC)gc_;
+}
+
+
+void *Fl_Display_Cairo_Graphics_Driver::gc() {
+ return gc_;
+}