FLTK 1.3.4
Fl_Copy_Surface.H
1 //
2 // "$Id: Fl_Copy_Surface.H 10928 2015-11-24 14:26:52Z manolo $"
3 //
4 // Copy-to-clipboard code for the Fast Light Tool Kit (FLTK).
5 //
6 // Copyright 1998-2014 by Bill Spitzak and others.
7 //
8 // This library is free software. Distribution and use rights are outlined in
9 // the file "COPYING" which should have been included with this file. If this
10 // file is missing or damaged, see the license at:
11 //
12 // http://www.fltk.org/COPYING.php
13 //
14 // Please report all bugs and problems on the following page:
15 //
16 // http://www.fltk.org/str.php
17 //
18 
19 #ifndef Fl_Copy_Surface_H
20 #define Fl_Copy_Surface_H
21 
22 #include <FL/Fl_Paged_Device.H>
23 #include <FL/Fl_Printer.H>
24 #include <FL/x.H>
25 
51 class FL_EXPORT Fl_Copy_Surface : public Fl_Surface_Device {
52 private:
53  int width;
54  int height;
55  Fl_Paged_Device *helper;
56 #ifdef __APPLE__
57  CFMutableDataRef pdfdata;
58  CGContextRef oldgc;
59  CGContextRef gc;
60  void prepare_copy_pdf_and_tiff(int w, int h);
61  void complete_copy_pdf_and_tiff();
62  void init_PDF_context(int w, int h);
63  static size_t MyPutBytes(void* info, const void* buffer, size_t count);
64 #elif defined(WIN32)
65  HDC oldgc;
66  HDC gc;
67 #else // Xlib
68  Fl_Offscreen xid;
69  Window oldwindow;
70  Fl_Surface_Device *_ss;
71 #endif
72 public:
73  static const char *class_id;
74  const char *class_name() {return class_id;};
75  Fl_Copy_Surface(int w, int h);
76  ~Fl_Copy_Surface();
77  void set_current();
78  void draw(Fl_Widget* widget, int delta_x = 0, int delta_y = 0);
79  void draw_decorated_window(Fl_Window* win, int delta_x = 0, int delta_y = 0);
81  int w() { return width; }
83  int h() { return height; }
84 };
85 
86 #if defined(__APPLE__)
87 
88 /* Mac class to reimplement Fl_Paged_Device::printable_rect() */
89 class FL_EXPORT Fl_Quartz_Surface_ : public Fl_System_Printer {
90 protected:
91  int width;
92  int height;
93 public:
94  static const char *class_id;
95  const char *class_name() {return class_id;};
96  Fl_Quartz_Surface_(int w, int h);
97  virtual int printable_rect(int *w, int *h);
98  virtual ~Fl_Quartz_Surface_() {};
99 };
100 
101 #elif defined(WIN32)
102 
103 /* Win class to implement translate()/untranslate() */
104 class FL_EXPORT Fl_GDI_Surface_ : public Fl_Paged_Device {
105  int width;
106  int height;
107  unsigned depth;
108  POINT origins[10];
109 public:
110  static const char *class_id;
111  const char *class_name() {return class_id;};
112  Fl_GDI_Surface_();
113  virtual void translate(int x, int y);
114  virtual void untranslate();
115  virtual ~Fl_GDI_Surface_();
116 };
117 
118 #elif !defined(FL_DOXYGEN)
119 
120 /* Xlib class to implement translate()/untranslate() */
121 class FL_EXPORT Fl_Xlib_Surface_ : public Fl_Paged_Device {
122 public:
123  static const char *class_id;
124  const char *class_name() {return class_id;};
125  Fl_Xlib_Surface_();
126  virtual void translate(int x, int y);
127  virtual void untranslate();
128  virtual ~Fl_Xlib_Surface_();
129 };
130 
131 #endif
132 
133 #endif // Fl_Copy_Surface_H
134 
135 //
136 // End of "$Id: Fl_Copy_Surface.H 10928 2015-11-24 14:26:52Z manolo $".
137 //
Fl_Widget is the base class for all widgets in FLTK.
Definition: Fl_Widget.H:101
int h()
Returns the pixel height of the copy surface.
Definition: Fl_Copy_Surface.H:83
Represents page-structured drawing surfaces.
Definition: Fl_Paged_Device.H:38
This widget produces an actual window.
Definition: Fl_Window.H:57
int w()
Returns the pixel width of the copy surface.
Definition: Fl_Copy_Surface.H:81
A drawing surface that's susceptible to receive graphical output.
Definition: Fl_Device.H:556
virtual void set_current(void)
Make this surface the current drawing surface.
Definition: Fl_Device.cxx:44
Supports copying of graphical data to the clipboard.
Definition: Fl_Copy_Surface.H:51
const char * class_name()
Returns the name of the class of this object.
Definition: Fl_Paged_Device.H:125
int printable_rect(int *w, int *h)
Computes the width and height of the printable area of the page.
const char * class_name()
Returns the name of the class of this object.
Definition: Fl_Copy_Surface.H:74
virtual void untranslate(void)
Undoes the effect of a previous translate() call.
Definition: Fl_Paged_Device.cxx:254
declaration of classes Fl_Printer, Fl_System_Printer and Fl_PostScript_Printer.
declaration of class Fl_Paged_Device.
const char * class_name()
Returns the name of the class of this object.
Definition: Fl_Printer.H:74
Print support under MSWindows and Mac OS.
Definition: Fl_Printer.H:47
virtual void translate(int x, int y)
Translates the current graphics origin accounting for the current rotation.
Definition: Fl_Paged_Device.cxx:249