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 
28 class QColor;
29 class QPen;
30 class QBrush;
31 
32 
33 namespace 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 );
74  static DisplayStyle* getStyle ();
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
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:41
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 Sun Dec 14 2025 Return to top of page
Hurricane Design Viewer Copyright © 2008-2020 Sorbonne Universite All rights reserved