Lumiera 0.pre.04
»edit your freedom«
Loading...
Searching...
No Matches
cairo-util.hpp
Go to the documentation of this file.
1/*
2 CAIRO-UTIL.hpp - utility functions for Cairo
3
4 Copyright (C)
5 2010, Stefan Kangas <skangas@skangas.se>
6
7  **Lumiera** is free software; you can redistribute it and/or modify it
8  under the terms of the GNU General Public License as published by the
9  Free Software Foundation; either version 2 of the License, or (at your
10  option) any later version. See the file COPYING for further details.
11
12* *****************************************************************/
13
14
20#ifndef STAGE_DRAW_CAIRO_H
21#define STAGE_DRAW_CAIRO_H
22
23#include "stage/gtk-base.hpp"
24#include "lib/util.hpp"
25
26
27namespace stage{
28namespace draw {
29
30 using Cairo::SolidPattern;
31 using Cairo::RefPtr;
32
33
34 inline RefPtr<SolidPattern>
35 pattern_set_red (RefPtr<SolidPattern> const& color, double red)
36 {
37 double _red_ignored;
38 double green;
39 double blue;
40 double alpha;
41
42 color->get_rgba (_red_ignored, green, blue, alpha);
43 return Cairo::SolidPattern::create_rgba (red, green, blue, alpha);
44 }
45
46
47 inline RefPtr<SolidPattern>
48 pattern_set_green (RefPtr<SolidPattern> const& color, double green)
49 {
50 double red;
51 double _green_ignored;
52 double blue;
53 double alpha;
54
55 color->get_rgba (red, _green_ignored, blue, alpha);
56 return Cairo::SolidPattern::create_rgba (red, green, blue, alpha);
57 }
58
59
60 inline RefPtr<SolidPattern>
61 pattern_set_blue (RefPtr<SolidPattern> const& color, double blue)
62 {
63 double red;
64 double green;
65 double _blue_ignored;
66 double alpha;
67
68 color->get_rgba (red, green, _blue_ignored, alpha);
69 return Cairo::SolidPattern::create_rgba (red, green, blue, alpha);
70 }
71
72
73 inline RefPtr<SolidPattern>
74 pattern_set_alpha (RefPtr<SolidPattern> const& color, double alpha)
75 {
76 double red;
77 double green;
78 double blue;
79 double _alpha_ignored;
80
81 color->get_rgba (red, green, blue, _alpha_ignored);
82
83 return Cairo::SolidPattern::create_rgba (red, green, blue, alpha);
84 }
85
86
87 inline bool
88 pt_in_rect (Gdk::Point const& point, Gdk::Rectangle const& rect)
89 {
90 return (point.get_x() >= rect.get_x()
91 and point.get_x() < rect.get_x() + rect.get_width()
92 and point.get_y() >= rect.get_y()
93 and point.get_y() < rect.get_y() + rect.get_height());
94 }
95
96 inline bool
97 rects_overlap (Gdk::Rectangle const& recA, Gdk::Rectangle const& recB)
98 {
99 return (
100 util::max (recA.get_x(), recB.get_x())
101 < util::min (recA.get_x() + recA.get_width(), recB.get_x() + recB.get_width())
102 and
103 util::max (recA.get_y(), recB.get_y())
104 < util::min (recA.get_y() + recA.get_height(), recB.get_y() + recB.get_height())
105 );
106 }
107
108}}// namespace stage::draw
109#endif /*STAGE_DRAW_CAIRO_H*/
A set of basic GTK includes for the UI.
RefPtr< SolidPattern > pattern_set_alpha(RefPtr< SolidPattern > const &color, double alpha)
bool pt_in_rect(Gdk::Point const &point, Gdk::Rectangle const &rect)
bool rects_overlap(Gdk::Rectangle const &recA, Gdk::Rectangle const &recB)
RefPtr< SolidPattern > pattern_set_blue(RefPtr< SolidPattern > const &color, double blue)
RefPtr< SolidPattern > pattern_set_red(RefPtr< SolidPattern > const &color, double red)
RefPtr< SolidPattern > pattern_set_green(RefPtr< SolidPattern > const &color, double green)
Lumiera GTK UI implementation root.
Definition guifacade.cpp:37
auto max(IT &&elms)
auto min(IT &&elms)
Tiny helper functions and shortcuts to be used everywhere Consider this header to be effectively incl...