summaryrefslogtreecommitdiff
path: root/src/Fl_Graphics_Device.cxx
diff options
context:
space:
mode:
authorMatthias Melcher <fltk@matthiasm.com>2016-02-09 18:25:02 +0000
committerMatthias Melcher <fltk@matthiasm.com>2016-02-09 18:25:02 +0000
commit41e22f2f39f6b9a53d5248669e531e6c8e36a421 (patch)
tree48dd8a971667ae53be38524e3d4d27fa92ded326 /src/Fl_Graphics_Device.cxx
parentdee0f5a82452da4334f269ceaee01f2d3df01bc0 (diff)
Move ifdef's in RGB_Image into driver system.
- change image caching variable types to uintptr_t - added driver function to uncache image data - cleaning up (Xlib and GDI will likely throw syntax errors. Trying to fix ASAP) git-svn-id: file:///fltk/svn/fltk/branches/branch-1.3-porting@11138 ea41ed52-d2ee-0310-a9c1-e6b18d33e121
Diffstat (limited to 'src/Fl_Graphics_Device.cxx')
-rw-r--r--src/Fl_Graphics_Device.cxx106
1 files changed, 106 insertions, 0 deletions
diff --git a/src/Fl_Graphics_Device.cxx b/src/Fl_Graphics_Device.cxx
new file mode 100644
index 000000000..22e17fa3a
--- /dev/null
+++ b/src/Fl_Graphics_Device.cxx
@@ -0,0 +1,106 @@
+//
+// "$Id$"
+//
+// implementation of Fl_Device class for the Fast Light Tool Kit (FLTK).
+//
+// Copyright 2010-2012 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:
+//
+// http://www.fltk.org/COPYING.php
+//
+// Please report all bugs and problems to:
+//
+// http://www.fltk.org/str.php
+//
+
+#include <FL/Fl.H>
+#include "config_lib.h"
+#include <FL/Fl_Device.H>
+#include <FL/Fl_Image.H>
+#include <FL/fl_draw.H>
+
+const char *Fl_Device::class_id = "Fl_Device";
+const char *Fl_Surface_Device::class_id = "Fl_Surface_Device";
+const char *Fl_Display_Device::class_id = "Fl_Display_Device";
+const char *Fl_Graphics_Driver::class_id = "Fl_Graphics_Driver";
+
+bool Fl_Display_Device::high_res_window_ = false;
+
+
+/** \brief Make this surface the current drawing surface.
+ This surface will receive all future graphics requests. */
+void Fl_Surface_Device::set_current(void)
+{
+ fl_graphics_driver = _driver;
+ _surface = this;
+}
+
+FL_EXPORT Fl_Graphics_Driver *fl_graphics_driver; // the current target device of graphics operations
+Fl_Surface_Device* Fl_Surface_Device::_surface; // the current target surface of graphics operations
+
+const Fl_Graphics_Driver::matrix Fl_Graphics_Driver::m0 = {1, 0, 0, 1, 0, 0};
+
+Fl_Graphics_Driver::Fl_Graphics_Driver() {
+ font_ = 0;
+ size_ = 0;
+ sptr=0; rstackptr=0;
+ rstack[0] = NULL;
+ fl_clip_state_number=0;
+ m = m0;
+ fl_matrix = &m;
+ p = (XPOINT *)0;
+ font_descriptor_ = NULL;
+ p_size = 0;
+};
+
+void Fl_Graphics_Driver::text_extents(const char*t, int n, int& dx, int& dy, int& w, int& h)
+{
+ w = (int)width(t, n);
+ h = - height();
+ dx = 0;
+ dy = descent();
+}
+
+void Fl_Graphics_Driver::focus_rect(int x, int y, int w, int h)
+{
+ line_style(FL_DOT);
+ rect(x, y, w, h);
+ line_style(FL_SOLID);
+}
+
+/** A constructor that sets the graphics driver used by the display */
+Fl_Display_Device::Fl_Display_Device(Fl_Graphics_Driver *graphics_driver) : Fl_Surface_Device(graphics_driver) {
+ this->set_current();
+};
+
+
+/** Returns the platform display device. */
+Fl_Display_Device *Fl_Display_Device::display_device() {
+ static Fl_Display_Device *display = new Fl_Display_Device(Fl_Graphics_Driver::newMainGraphicsDriver());
+ return display;
+};
+
+
+Fl_Surface_Device *Fl_Surface_Device::default_surface()
+{
+ return Fl_Display_Device::display_device();
+}
+
+
+Fl_Display_Device *Fl_Display_Device::_display = Fl_Display_Device::display_device();
+
+
+/** Draws an Fl_Image scaled to width \p W & height \p H with top-left corner at \em X,Y
+ \return zero when the graphics driver doesn't implement scaled drawing, non-zero if it does implement it.
+ */
+int Fl_Graphics_Driver::draw_scaled(Fl_Image *img, int X, int Y, int W, int H) {
+ return 0;
+}
+
+
+//
+// End of "$Id$".
+//