FLTK 1.4.4
Toggle main menu visibility
Loading...
Searching...
No Matches
Fl_Cairo_Window.H
Go to the documentation of this file.
1
//
2
// Fl_Cairo_Window header file for the Fast Light Tool Kit (FLTK).
3
//
4
// Copyright 1998-2023 by Bill Spitzak and others.
5
//
6
// This library is free software. Distribution and use rights are outlined in
7
// the file "COPYING" which should have been included with this file. If this
8
// file is missing or damaged, see the license at:
9
//
10
// https://www.fltk.org/COPYING.php
11
//
12
// Please see the following page on how to report bugs and issues:
13
//
14
// https://www.fltk.org/bugs.php
15
//
16
20
21
#ifndef FL_CAIRO_WINDOW_H
22
# define FL_CAIRO_WINDOW_H
23
24
#include <FL/fl_config.h>
25
26
# ifdef FLTK_HAVE_CAIRO
27
28
// Cairo is currently supported for the following platforms:
29
// Win32, Apple Quartz, X11, Wayland
30
31
# include <
FL/Fl.H
>
32
# include <FL/Fl_Double_Window.H>
33
38
88
*/
89
class
FL_EXPORT Fl_Cairo_Window :
public
Fl_Double_Window
{
90
91
public
:
92
Fl_Cairo_Window(
int
W,
int
H,
const
char
*L = 0)
93
:
Fl_Double_Window
(W, H, L), draw_cb_(0) {}
94
Fl_Cairo_Window(
int
X,
int
Y,
int
W,
int
H,
const
char
*L = 0)
95
:
Fl_Double_Window
(X, Y, W, H, L), draw_cb_(0) {}
96
97
protected
:
98
/** Overloaded to provide Cairo callback support. */
99
void
draw
()
FL_OVERRIDE
{
100
Fl_Double_Window::draw
();
101
if
(draw_cb_) {
// call the Cairo draw callback
102
// manual method ? if yes explicitly get a cairo_context here
103
if
(!
Fl::cairo_autolink_context
())
104
Fl::cairo_make_current
(
this
);
105
draw_cb_(
this
,
Fl::cairo_cc
());
106
// flush Cairo drawings: necessary at least for Windows
107
Fl::cairo_flush
(
Fl::cairo_cc
());
108
}
109
}
110
111
public
:
113
typedef
void (*
cairo_draw_cb
) (Fl_Cairo_Window* self, cairo_t* def);
114
119
void
set_draw_cb
(
cairo_draw_cb
cb) { draw_cb_ = cb; }
120
private
:
121
cairo_draw_cb draw_cb_;
122
};
123
124
126
127
# endif
// FLTK_HAVE_CAIRO
128
#endif
// FL_CAIRO_WINDOW_H
Fl.H
Fl static class.
Fl_Cairo_Window::cairo_draw_cb
void(* cairo_draw_cb)(Fl_Cairo_Window *self, cairo_t *def)
The Cairo draw callback prototype you need to implement.
Definition
Fl_Cairo_Window.H:112
Fl_Cairo_Window::set_draw_cb
void set_draw_cb(cairo_draw_cb cb)
You must provide a draw callback that implements your Cairo rendering.
Definition
Fl_Cairo_Window.H:118
Fl_Double_Window::Fl_Double_Window
Fl_Double_Window(int W, int H, const char *l=0)
Creates a new Fl_Double_Window widget using the given position, size, and label (title) string.
Definition
Fl_Double_Window.cxx:31
Fl_Group::draw
void draw() FL_OVERRIDE
Draws the widget.
Definition
Fl_Group.cxx:943
Fl_Window::draw
void draw() FL_OVERRIDE
Draws the widget.
Definition
Fl_Window.cxx:491
FL_OVERRIDE
#define FL_OVERRIDE
This macro makes it safe to use the C++11 keyword override with older compilers.
Definition
fl_attr.h:46
Fl::cairo_cc
static cairo_t * cairo_cc()
Gets the current Cairo context linked with a fltk window.
Definition
Fl.H:1470
Fl::cairo_make_current
static cairo_t * cairo_make_current(Fl_Window *w)
Provides a Cairo context for window wi.
Definition
Fl_Cairo.cxx:100
Fl::cairo_flush
static void cairo_flush(cairo_t *c)
Flush Cairo drawings on Cairo context c.
Definition
Fl.H:1515
Fl::cairo_autolink_context
static void cairo_autolink_context(bool alink)
When FLTK_HAVE_CAIRO is defined and cairo_autolink_context() is true, any current window dc is linked...
Definition
Fl.H:1454
FL
Fl_Cairo_Window.H
Generated by
1.17.0