Stellarium 0.13.3
ConstellationMgr.hpp
1 /*
2  * Stellarium
3  * Copyright (C) 2002 Fabien Chereau
4  * Copyright (C) 2012 Timothy Reaves
5  *
6  * This program is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU General Public License
8  * as published by the Free Software Foundation; either version 2
9  * of the License, or (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA.
19  */
20 
21 #ifndef _CONSTELLATIONMGR_HPP_
22 #define _CONSTELLATIONMGR_HPP_
23 
24 #include "StelObjectType.hpp"
25 #include "StelObjectModule.hpp"
26 #include "StelProjectorType.hpp"
27 
28 #include <vector>
29 #include <QString>
30 #include <QStringList>
31 #include <QFont>
32 
33 class StelToneReproducer;
34 class StarMgr;
35 class Constellation;
36 class StelProjector;
37 class StelPainter;
38 
44 {
45  Q_OBJECT
46  Q_PROPERTY(bool artDisplayed
47  READ getFlagArt
48  WRITE setFlagArt
49  NOTIFY artDisplayedChanged)
50  Q_PROPERTY(float artFadeDuration
52  WRITE setArtFadeDuration
53  NOTIFY artFadeDurationChanged)
54  Q_PROPERTY(float artIntensity
55  READ getArtIntensity
56  WRITE setArtIntensity
57  NOTIFY artIntensityChanged)
58  Q_PROPERTY(Vec3f boundariesColor
60  WRITE setBoundariesColor
61  NOTIFY boundariesColorChanged)
62  Q_PROPERTY(bool boundariesDisplayed
64  WRITE setFlagBoundaries
65  NOTIFY boundariesDisplayedChanged)
66  Q_PROPERTY(float fontSize
67  READ getFontSize
68  WRITE setFontSize
69  NOTIFY fontSizeChanged)
70  Q_PROPERTY(bool isolateSelected
73  NOTIFY isolateSelectedChanged)
74  Q_PROPERTY(Vec3f linesColor
75  READ getLinesColor
76  WRITE setLinesColor
77  NOTIFY linesColorChanged)
78  Q_PROPERTY(bool linesDisplayed
79  READ getFlagLines
80  WRITE setFlagLines
81  NOTIFY linesDisplayedChanged)
82  Q_PROPERTY(Vec3f namesColor
83  READ getLabelsColor
84  WRITE setLabelsColor
85  NOTIFY namesColorChanged)
86  Q_PROPERTY(bool namesDisplayed
87  READ getFlagLabels
88  WRITE setFlagLabels
89  NOTIFY namesDisplayedChanged)
93  NOTIFY constellationsDisplayStyleChanged)
94 
95 
96 public:
98  ConstellationMgr(StarMgr *stars);
100  virtual ~ConstellationMgr();
101 
103  // Methods defined in the StelModule class
107  virtual void init();
108 
110  virtual void draw(StelCore* core);
111 
113  virtual void update(double deltaTime);
114 
118  virtual double getCallOrder(StelModuleActionName actionName) const;
119 
121  // Methods defined in StelObjectManager class
122  virtual QList<StelObjectP> searchAround(const Vec3d& v, double limitFov, const StelCore* core) const;
123 
126  virtual StelObjectP searchByNameI18n(const QString& nameI18n) const;
127 
130  virtual StelObjectP searchByName(const QString& name) const;
131 
132  // GZ: I see dubious descriptions and non-fitting var names: objPrefix should just be "string" or "obj",
133  // and useStartOfWord likely should be described as "decide if start of word is searched" (2x)
139  virtual QStringList listMatchingObjectsI18n(const QString& objPrefix, int maxNbItem=5, bool useStartOfWords=false) const;
145  virtual QStringList listMatchingObjects(const QString& objPrefix, int maxNbItem=5, bool useStartOfWords=false) const;
146  virtual QStringList listAllObjects(bool inEnglish) const;
147  virtual QStringList listAllObjectsByType(const QString& objType, bool inEnglish) const { Q_UNUSED(objType) Q_UNUSED(inEnglish) return QStringList(); }
148  virtual QString getName() const { return "Constellations"; }
151  {
152  constellationsAbbreviated = 0,
153  constellationsNative = 1,
154  constellationsTranslated = 2,
155  constellationsEnglish = 3 // Maybe this is not useful?
156  };
157 
159  // Properties setters and getters
160 public slots:
162  void setFlagArt(const bool displayed);
164  bool getFlagArt(void) const;
165 
167  void setArtFadeDuration(const float duration);
169  float getArtFadeDuration() const;
170 
172  void setArtIntensity(const double intensity);
174  double getArtIntensity() const;
175 
182  void setBoundariesColor(const Vec3f& color);
184  Vec3f getBoundariesColor() const;
185 
187  void setFlagBoundaries(const bool displayed);
189  bool getFlagBoundaries(void) const;
190 
192  void setFlagIsolateSelected(const bool isolate);
194  bool getFlagIsolateSelected(void) const;
195 
197  void setFlagConstellationPick(const bool mode);
199  bool getFlagConstellationPick(void) const;
200 
207  void setLinesColor(const Vec3f& color);
209  Vec3f getLinesColor() const;
210 
212  void setFlagLines(const bool displayed);
214  bool getFlagLines(void) const;
215 
222  void setLabelsColor(const Vec3f& color);
224  Vec3f getLabelsColor() const;
225 
227  void setFlagLabels(const bool displayed);
229  bool getFlagLabels(void) const;
230 
232  void setFontSize(const float newFontSize);
234  float getFontSize() const;
235 
239  void setConstellationDisplayStyle(int style);
242  QString getConstellationDisplayStyleString();
243 
246  void setConstellationLineThickness(const double thickness);
248  double getConstellationLineThickness() const { return constellationLineThickness; }
249 
250 
251 signals:
252  void artDisplayedChanged(const bool displayed) const;
253  void artFadeDurationChanged(const float duration) const;
254  void artIntensityChanged(const double intensity) const;
255  void boundariesColorChanged(const Vec3f & color) const;
256  void boundariesDisplayedChanged(const bool displayed) const;
257  void fontSizeChanged(const float newSize) const;
258  void isolateSelectedChanged(const bool isolate) const;
259  void linesColorChanged(const Vec3f & color) const;
260  void linesDisplayedChanged(const bool displayed) const;
261  void namesColorChanged(const Vec3f & color) const;
262  void namesDisplayedChanged(const bool displayed) const;
263  void constellationsDisplayStyleChanged(const ConstellationDisplayStyle style) const;
264 
265 private slots:
270  void selectedObjectChange(StelModule::StelModuleSelectAction action);
271 
273  void setStelStyle(const QString& section);
274 
277  void updateSkyCulture(const QString& skyCultureDir);
278 
283  void updateI18n();
284 
285 private:
290  void loadNames(const QString& namesFile);
291 
297  void loadLinesAndArt(const QString& fileName, const QString& artfileName, const QString& cultureName);
298 
312  bool loadBoundaries(const QString& conCatFile);
313 
316  void loadSeasonalRules(const QString& rulesFile);
317 
319  void drawLines(StelPainter& sPainter, const StelCore* core) const;
321  void drawArt(StelPainter& sPainter) const;
323  void drawNames(StelPainter& sPainter) const;
325  void drawBoundaries(StelPainter& sPainter) const;
327  void setSelectedConst(Constellation* c);
329  void unsetSelectedConst(Constellation* c);
331  void setSelected(const QString& abbreviation);
333  StelObjectP setSelectedStar(const QString& abbreviation);
335  void setSelected(const StelObject* s) {if (!s) setSelectedConst(NULL); else setSelectedConst(isStarIn(s));}
337  void deselect() {setSelected(NULL);}
341  StelObject* getSelected(void) const;
343  void deselectConstellations(void);
344 
345  std::vector<Constellation*> selected; // More than one can be selected at a time
346 
347  Constellation* isStarIn(const StelObject *s) const;
348  Constellation* findFromAbbreviation(const QString& abbreviation) const;
349  std::vector<Constellation*> asterisms;
350  QFont asterFont;
351  StarMgr* hipStarMgr;
352 
353  bool isolateSelected;
354  bool constellationPickEnabled;
355  std::vector<std::vector<Vec3f> *> allBoundarySegments;
356 
357  QString lastLoadedSkyCulture; // Store the last loaded sky culture directory name
358 
361 
362  // These are THE master settings - individual constellation settings can vary based on selection status
363  float artFadeDuration;
364  float artIntensity;
365  bool artDisplayed;
366  bool boundariesDisplayed;
367  bool linesDisplayed;
368  bool namesDisplayed;
369 
370  // Store the thickness of lines of the constellations
371  float constellationLineThickness;
372 };
373 
374 #endif // _CONSTELLATIONMGR_HPP_
Vec3f getLabelsColor() const
Get label color for names.
bool getFlagBoundaries(void) const
Get whether constellation boundaries lines are displayed.
void setFlagArt(const bool displayed)
Set whether constellation art will be displayed.
virtual ~ConstellationMgr()
Destructor.
virtual void draw(StelCore *core)
Draw constellation lines, art, names and boundaries.
void setConstellationLineThickness(const double thickness)
Set the thickness of lines of the constellations.
void setFlagBoundaries(const bool displayed)
Set whether constellation boundaries lines will be displayed.
The base abstract class for sky objects used in Stellarium like Stars, Planets, Constellations etc...
Definition: StelObject.hpp:36
ConstellationDisplayStyle getConstellationDisplayStyle()
get the way how contellation names are displayed: abbbreviated/as-given/translated ...
virtual void update(double deltaTime)
Updates time-varying state for each Constellation.
bool getFlagArt(void) const
Get whether constellation art is displayed.
The Constellation class models a grouping of stars in a Sky Culture.
Main class for Stellarium core processing.
Definition: StelCore.hpp:46
Specialization of StelModule which manages a collection of StelObject.
virtual StelObjectP searchByNameI18n(const QString &nameI18n) const
Return the matching constellation object's pointer if exists or NULL.
void setArtFadeDuration(const float duration)
Set constellation art fade duration in second.
double getConstellationLineThickness() const
Get the thickness of lines of the constellations.
virtual QList< StelObjectP > searchAround(const Vec3d &v, double limitFov, const StelCore *core) const
Search for StelObject in an area around a specifid point.
Vec3f getBoundariesColor() const
Get current boundary color.
void setFlagIsolateSelected(const bool isolate)
Set whether selected constellation must be displayed alone.
Converts tones in function of the eye adaptation to luminance.
virtual QStringList listMatchingObjects(const QString &objPrefix, int maxNbItem=5, bool useStartOfWords=false) const
Find and return the list of at most maxNbItem objects auto-completing the passed object English name...
void setFontSize(const float newFontSize)
Set the font size used for constellation names display.
void setLinesColor(const Vec3f &color)
Define line color.
Define the StelObjectP type.
Provides functions for performing openGL drawing operations.
Definition: StelPainter.hpp:40
Provide the main interface to all operations of projecting coordinates from sky to screen...
float getFontSize() const
Get the font size used for constellation names display.
virtual double getCallOrder(StelModuleActionName actionName) const
Return the value defining the order of call for the given action.
double getArtIntensity() const
Set constellation maximum art intensity (between 0 and 1)
void setFlagConstellationPick(const bool mode)
Set whether only one selected constellation must be displayed.
virtual QStringList listMatchingObjectsI18n(const QString &objPrefix, int maxNbItem=5, bool useStartOfWords=false) const
Find and return the list of at most maxNbItem objects auto-completing the passed object I18n name...
void setArtIntensity(const double intensity)
Set constellation maximum art intensity (between 0 and 1)
ConstellationDisplayStyle constellationDisplayStyle
this controls how constellations (and also star names) are printed: Abbreviated/as-given/translated ...
Stores the star catalogue data.
Definition: StarMgr.hpp:80
void setLabelsColor(const Vec3f &color)
Set label color for names.
StelModuleActionName
Define the possible action for which an order is defined.
Definition: StelModule.hpp:117
ConstellationDisplayStyle
Describes how to display constellation labels. The viewDialog GUI has a combobox which corresponds to...
void setFlagLabels(const bool displayed)
Set whether constellation names will be displayed.
bool getFlagIsolateSelected(void) const
Get whether selected constellation is displayed alone.
Display and manage the constellations.
virtual StelObjectP searchByName(const QString &name) const
Return the matching constellation if exists or NULL.
bool getFlagLabels(void) const
Set whether constellation names are displayed.
void setConstellationDisplayStyle(int style)
Set the way how contellation names are displayed: abbbreviated/as-given/translated.
float getArtFadeDuration() const
Get constellation art fade duration in second.
StelModuleSelectAction
Enum used when selecting objects to define whether to add to, replace, or remove from the existing se...
Definition: StelModule.hpp:109
bool getFlagConstellationPick(void) const
Get whether only one selected constellation is displayed.
Define the StelProjectorP type.
bool getFlagLines(void) const
Get whether constellation lines are displayed.
void setBoundariesColor(const Vec3f &color)
Define boundary color.
virtual void init()
Initialize the ConstellationMgr.
void setFlagLines(const bool displayed)
Set whether constellation lines will be displayed.
Vec3f getLinesColor() const
Get line color.
ConstellationMgr(StarMgr *stars)
Constructor.