summaryrefslogtreecommitdiff
path: root/src/drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx')
-rw-r--r--src/drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx64
1 files changed, 64 insertions, 0 deletions
diff --git a/src/drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx b/src/drivers/Cairo/Fl_X11_Cairo_Graphics_Driver.cxx
new file mode 100644
index 000000000..d673c3dfa
--- /dev/null
+++ b/src/drivers/Cairo/Fl_X11_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-2023 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_X11_Cairo_Graphics_Driver.
+*/
+
+#include "Fl_X11_Cairo_Graphics_Driver.H"
+#include <FL/platform.H>
+#include <cairo/cairo.h>
+#include <pango/pangocairo.h>
+#include <stdlib.h>
+
+
+void *Fl_X11_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_X11_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_X11_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_X11_Cairo_Graphics_Driver::gc(void *value) {
+ gc_ = value;
+ fl_gc = (GC)gc_;
+}
+
+
+void *Fl_X11_Cairo_Graphics_Driver::gc() {
+ return gc_;
+}