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 
31 class QColor;
32 class QPen;
33 class QBrush;
34 
35 
36 namespace 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.
49  static Graphics* getGraphics ();
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 );
76  static DisplayStyle* getStyle ();
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.1 on Thu Aug 11 2022 Return to top of page
Hurricane Design Viewer Copyright © 2008-2020 Sorbonne Universite All rights reserved