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#pragma once
18#include <string>
19#include <vector>
20#include <QFont>
21#include "hurricane/Observer.h"
22#include "hurricane/Breakpoint.h"
23#include "hurricane/TextTranslator.h"
24#include "hurricane/viewer/DisplayStyle.h"
25#include "hurricane/viewer/ColorScale.h"
26#include "hurricane/viewer/BreakpointWidget.h"
27
28class QColor;
29class QPen;
30class QBrush;
31
32
33namespace Hurricane {
34
35 class Name;
36
37
38// -------------------------------------------------------------------
39// Class : "Graphics".
40
41 class Graphics {
42 public:
43 enum NotifyFlags { ChangedDisplayStyles = (1<<0) };
44 public:
45 // Accessors.
46 static Graphics* getGraphics ();
47 static void addObserver ( BaseObserver* );
48 static void removeObserver ( BaseObserver* );
49 static void notify ( unsigned int flags );
50 static bool isEnabled ();
51 static bool isHighDpi ();
52 static const QFont getFixedFont ( int weight=QFont::Normal, bool italic=false, bool underline=false, int scale=0 );
53 static const QFont getNormalFont ( bool bold=false, bool italic=false, bool underline=false );
54 static const QFont getLayoutFont ( bool bold=false, bool italic=false, bool underline=false );
55 static const Name& getGroup ( const Name& key );
56 static QColor getColor ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
57 static QPen getPen ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
58 static QBrush getBrush ( const Name& key, const DisplayStyle::HSVr& darkening=DisplayStyle::HSVr() );
59 static const string& getPattern ( const Name& key );
60 static float getThreshold ( const Name& key );
61 static const DisplayStyle::HSVr& getDarkening ();
62 static const ColorScale& getColorScale ( ColorScale::ScaleType );
63 static QColor darken ( const QColor& );
64 static const TextTranslator& getHtmlTranslator();
65 static string toHtml ( const string& );
66 static int toHighDpi ( int );
67 static bool breakpointStopCb ( const string& message );
68 static void clear ();
69 // Modifiers.
70 static void addStyle ( DisplayStyle* displayStyle );
71 static void setStyle ( const Name& key );
72 static void setStyle ( size_t id );
73 static DisplayStyle* getStyle ( const Name& key );
75 static const vector<DisplayStyle*>& getStyles ();
76 static void enable ();
77 static void disable ();
78 void toJson ( JsonWriter* ) const;
79 // Internals - Attributes.
80 protected:
81 static Graphics* _singleton;
82 Observable _observers;
83 TextTranslator _htmlTranslator;
84 vector<DisplayStyle*> _styles;
85 DisplayStyle* _active;
86 FireColorScale _fireColorScale;
87 RainbowColorScale _rainbowColorScale;
88 TemperatureColorScale _temperatureColorScale;
89 bool _qtEnabled;
90 bool _highDpi;
91
92 // Internals - Constructors & Destructors.
93 Graphics ();
94 Graphics ( const Graphics& );
95 Graphics& operator= ( const Graphics& );
96 ~Graphics ();
97 // Internals - Methods.
98 size_t _findStyle ( const Name& key ) const;
99 void _addStyle ( DisplayStyle* displayStyle );
100 void _setStyle ( const Name& key );
101 void _setStyle ( size_t id );
102 DisplayStyle* _getStyle ( const Name& key );
103 DisplayStyle* _getStyle () const;
104 inline const vector<DisplayStyle*>& _getStyles () const;
105 inline const Name& _getGroup ( const Name& key ) const;
106 inline QColor _getColor ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
107 inline QPen _getPen ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
108 inline QBrush _getBrush ( const Name& key, const DisplayStyle::HSVr& darkening ) const;
109 inline const string& _getPattern ( const Name& key ) const;
110 inline float _getThreshold ( const Name& key ) const;
111 inline const DisplayStyle::HSVr& _getDarkening () const;
112 inline const ColorScale& _getColorScale ( ColorScale::ScaleType ) const;
113 void _enable ();
114 void _disable ();
115 inline const TextTranslator& _getHtmlTranslator () const;
116 void _clear ();
117 };
118
119
120 inline const Name& Graphics::_getGroup ( const Name& name ) const
121 { return _active->getGroup(name); }
122
123 inline QColor Graphics::_getColor ( const Name& name, const DisplayStyle::HSVr& darkening ) const
124 { return _active->getColor(name,darkening); }
125
126 inline QPen Graphics::_getPen ( const Name& name, const DisplayStyle::HSVr& darkening ) const
127 { return _active->getPen(name,darkening); }
128
129 inline QBrush Graphics::_getBrush ( const Name& name, const DisplayStyle::HSVr& darkening ) const
130 { return _active->getBrush(name,darkening); }
131
132 inline const string& Graphics::_getPattern ( const Name& name ) const
133 { return _active->getPattern(name); }
134
135 inline float Graphics::_getThreshold ( const Name& name ) const
136 { return _active->getThreshold(name); }
137
138 inline const DisplayStyle::HSVr& Graphics::_getDarkening () const
139 { return _active->getDarkening(); }
140
141 inline const ColorScale& Graphics::_getColorScale ( ColorScale::ScaleType id ) const
142 {
143 switch ( id ) {
144 case ColorScale::Grey:
145 case ColorScale::Fire:
146 return _fireColorScale;
147 break;
148 case ColorScale::Rainbow:
149 return _rainbowColorScale;
150 break;
151 case ColorScale::Temperature:
152 return _temperatureColorScale;
153 break;
154 }
155 return _fireColorScale;
156 }
157
158 inline DisplayStyle* Graphics::_getStyle () const
159 { return _active; }
160
161 inline const vector<DisplayStyle*>& Graphics::_getStyles () const
162 { return _styles; }
163
164 inline const TextTranslator& Graphics::_getHtmlTranslator () const
165 { return _htmlTranslator; }
166
167
168// -------------------------------------------------------------------
169// Class : "JsonGraphics".
170
171 class JsonGraphics : public JsonObject {
172 public:
173 static void initialize ();
174 JsonGraphics ( unsigned long flags );
175 ~JsonGraphics ();
176 virtual string getTypeName () const;
177 virtual JsonGraphics* clone ( unsigned long ) const;
178 virtual void toData ( JsonStack& );
179 private:
180 std::string _active;
181 };
182
183
184} // End of Hurricane namespace.
A complete set of DrawinStyles to uses with the CellWidget.
Definition DisplayStyle.h:91
QColor getColor(const Name &key, const HSVr &) const
const Name & getGroup(const Name &key) const
static QBrush getBrush(const Name &key, const DisplayStyle::HSVr &darkening=DisplayStyle::HSVr())
static void enable()
static const string & getPattern(const Name &key)
static void addStyle(DisplayStyle *displayStyle)
static QPen getPen(const Name &key, const DisplayStyle::HSVr &darkening=DisplayStyle::HSVr())
static bool isEnabled()
static const TextTranslator & getHtmlTranslator()
static const ColorScale & getColorScale(ColorScale::ScaleType)
static const DisplayStyle::HSVr & getDarkening()
static const QFont getFixedFont(int weight=QFont::Normal, bool italic=false, bool underline=false, int scale=0)
static const Name & getGroup(const Name &key)
static QColor darken(const QColor &)
static QColor getColor(const Name &key, const DisplayStyle::HSVr &darkening=DisplayStyle::HSVr())
static DisplayStyle * getStyle()
static string toHtml(const string &)
static void setStyle(const Name &key)
static DisplayStyle * getStyle(const Name &key)
static float getThreshold(const Name &key)
static Graphics * getGraphics()


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