Hurricane Design Viewer


Graphics.h
1// -*- C++ -*-
2//
3// This file is part of the Coriolis Software.
4// Copyright (c) UPMC 2008-2018, All Rights Reserved
5//
6// +-----------------------------------------------------------------+
7// | H U R R I C A N E |
8// | V L S I B a c k e n d D a t a - B a s e |
9// | |
10// | Author : Jean-Paul CHAPUT |
11// | E-mail : Jean-Paul.Chaput@asim.lip6.fr |
12// | =============================================================== |
13// | C++ Header : "./hurricane/viewer/Graphics.h" |
14// +-----------------------------------------------------------------+
15
16
17#ifndef HURRICANE_GRAPHICS_H
18#define HURRICANE_GRAPHICS_H
19
20
21#include <string>
22#include <vector>
23#include <QFont>
24#include "hurricane/Observer.h"
25#include "hurricane/Breakpoint.h"
26#include "hurricane/TextTranslator.h"
27#include "hurricane/viewer/DisplayStyle.h"
28#include "hurricane/viewer/ColorScale.h"
29#include "hurricane/viewer/BreakpointWidget.h"
30
31class QColor;
32class QPen;
33class QBrush;
34
35
36namespace Hurricane {
37
38 class Name;
39
40
41// -------------------------------------------------------------------
42// Class : "Graphics".
43
44 class Graphics {
45 public:
46 enum NotifyFlags { ChangedDisplayStyles = (1<<0) };
47 public:
48 // Accessors.
50 static void addObserver ( BaseObserver* );
51 static void removeObserver ( BaseObserver* );
52 static void notify ( unsigned int flags );
53 static bool isEnabled ();
54 static bool isHighDpi ();
55 static const QFont getFixedFont ( int weight=QFont::Normal, bool italic=false, bool underline=false, int scale=0 );
56 static const QFont getNormalFont ( bool bold=false, bool italic=false, bool underline=false );
57 static const Name& getGroup ( const Name& key );
58 static QColor getColor ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
59 static QPen getPen ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
60 static QBrush getBrush ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
61 static const string& getPattern ( const Name& key );
62 static float getThreshold ( const Name& key );
63 static const DisplayStyle::HSVr& getDarkening ();
64 static const ColorScale& getColorScale ( ColorScale::ScaleType );
65 static QColor darken ( const QColor& );
66 static const TextTranslator& getHtmlTranslator();
67 static string toHtml ( const string& );
68 static int toHighDpi ( int );
69 static bool breakpointStopCb ( const string& message );
70 static void clear ();
71 // Modifiers.
72 static void addStyle ( DisplayStyle* displayStyle );
73 static void setStyle ( const Name& key );
74 static void setStyle ( size_t id );
75 static DisplayStyle* getStyle ( const Name& key );
77 static const vector<DisplayStyle*>& getStyles ();
78 static void enable ();
79 static void disable ();
80 void toJson ( JsonWriter* ) const;
81 // Internals - Attributes.
82 protected:
83 static Graphics* _singleton;
84 Observable _observers;
85 TextTranslator _htmlTranslator;
86 vector<DisplayStyle*> _styles;
87 DisplayStyle* _active;
88 FireColorScale _fireColorScale;
89 RainbowColorScale _rainbowColorScale;
90 TemperatureColorScale _temperatureColorScale;
91 bool _qtEnabled;
92 bool _highDpi;
93
94 // Internals - Constructors & Destructors.
95 Graphics ();
96 Graphics ( const Graphics& );
97 Graphics& operator= ( const Graphics& );
98 ~Graphics ();
99 // Internals - Methods.
100 size_t _findStyle ( const Name& key ) const;
101 void _addStyle ( DisplayStyle* displayStyle );
102 void _setStyle ( const Name& key );
103 void _setStyle ( size_t id );
104 DisplayStyle* _getStyle ( const Name& key );
105 DisplayStyle* _getStyle () const;
106 inline const vector<DisplayStyle*>& _getStyles () const;
107 inline const Name& _getGroup ( const Name& key ) const;
108 inline QColor _getColor ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
109 inline QPen _getPen ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
110 inline QBrush _getBrush ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
111 inline const string& _getPattern ( const Name& key ) const;
112 inline float _getThreshold ( const Name& key ) const;
113 inline const DisplayStyle::HSVr& _getDarkening () const;
114 inline const ColorScale& _getColorScale ( ColorScale::ScaleType ) const;
115 void _enable ();
116 void _disable ();
117 inline const TextTranslator& _getHtmlTranslator () const;
118 void _clear ();
119 };
120
121
122 inline const Name& Graphics::_getGroup ( const Name& name ) const
123 { return _active->getGroup(name); }
124
125 inline QColor Graphics::_getColor ( const Name& name, const DisplayStyle::HSVr& darkening ) const
126 { return _active->getColor(name,darkening); }
127
128 inline QPen Graphics::_getPen ( const Name& name, const DisplayStyle::HSVr& darkening ) const
129 { return _active->getPen(name,darkening); }
130
131 inline QBrush Graphics::_getBrush ( const Name& name, const DisplayStyle::HSVr& darkening ) const
132 { return _active->getBrush(name,darkening); }
133
134 inline const string& Graphics::_getPattern ( const Name& name ) const
135 { return _active->getPattern(name); }
136
137 inline float Graphics::_getThreshold ( const Name& name ) const
138 { return _active->getThreshold(name); }
139
140 inline const DisplayStyle::HSVr& Graphics::_getDarkening () const
141 { return _active->getDarkening(); }
142
143 inline const ColorScale& Graphics::_getColorScale ( ColorScale::ScaleType id ) const
144 {
145 switch ( id ) {
146 case ColorScale::Grey:
147 case ColorScale::Fire:
148 return _fireColorScale;
149 break;
150 case ColorScale::Rainbow:
151 return _rainbowColorScale;
152 break;
153 case ColorScale::Temperature:
154 return _temperatureColorScale;
155 break;
156 }
157 return _fireColorScale;
158 }
159
160 inline DisplayStyle* Graphics::_getStyle () const
161 { return _active; }
162
163 inline const vector<DisplayStyle*>& Graphics::_getStyles () const
164 { return _styles; }
165
166 inline const TextTranslator& Graphics::_getHtmlTranslator () const
167 { return _htmlTranslator; }
168
169
170// -------------------------------------------------------------------
171// Class : "JsonGraphics".
172
173 class JsonGraphics : public JsonObject {
174 public:
175 static void initialize ();
176 JsonGraphics ( unsigned long flags );
177 ~JsonGraphics ();
178 virtual string getTypeName () const;
179 virtual JsonGraphics* clone ( unsigned long ) const;
180 virtual void toData ( JsonStack& );
181 private:
182 std::string _active;
183 };
184
185
186} // End of Hurricane namespace.
187
188
189#endif // __HURRICANE_GRAPHICS__
A complete set of DrawinStyles to uses with the CellWidget.
Definition DisplayStyle.h:91
QColor getColor(const Name &key, const HSVr &) const
QPen getPen(const Name &key, const HSVr &) const
const std::string & getPattern(const Name &key) const
const HSVr & getDarkening() const
Definition DisplayStyle.h:299
float getThreshold(const Name &key) const
QBrush getBrush(const Name &key, const HSVr &) const
const Name & getGroup(const Name &key) const
Manage basic graphical configuration (API)
Definition Graphics.h:44
static QPen getPen(const Name &key, const DisplayStyle::HSVr &darkening=DisplayStyle::HSVr())
static bool isEnabled()
static const string & getPattern(const Name &key)
static void enable()
static const Name & getGroup(const Name &key)
static float getThreshold(const Name &key)
static DisplayStyle * getStyle(const Name &key)
static const TextTranslator & getHtmlTranslator()
static const QFont getFixedFont(int weight=QFont::Normal, bool italic=false, bool underline=false, int scale=0)
static Graphics * getGraphics()
static string toHtml(const string &)
static const ColorScale & getColorScale(ColorScale::ScaleType)
static QColor darken(const QColor &)
static QColor getColor(const Name &key, const DisplayStyle::HSVr &darkening=DisplayStyle::HSVr())
static void addStyle(DisplayStyle *displayStyle)
static void setStyle(const Name &key)
static QBrush getBrush(const Name &key, const DisplayStyle::HSVr &darkening=DisplayStyle::HSVr())
static DisplayStyle * getStyle()
static const DisplayStyle::HSVr & getDarkening()


Generated by doxygen 1.9.7 on Fri Sep 27 2024 Return to top of page
Hurricane Design Viewer Copyright © 2008-2020 Sorbonne Universite All rights reserved