1 /* 2 * Stellarium 3 * Copyright (C) 2002 Fabien Chereau 4 * 5 * This program is free software; you can redistribute it and/or 6 * modify it under the terms of the GNU General Public License 7 * as published by the Free Software Foundation; either version 2 8 * of the License, or (at your option) any later version. 9 * 10 * This program is distributed in the hope that it will be useful, 11 * but WITHOUT ANY WARRANTY; without even the implied warranty of 12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 13 * GNU General Public License for more details. 14 * 15 * You should have received a copy of the GNU General Public License 16 * along with this program; if not, write to the Free Software 17 * Foundation, Inc., 51 Franklin Street, Suite 500, Boston, MA 02110-1335, USA. 18 */ 19 20 #ifndef STARMGR_HPP 21 #define STARMGR_HPP 22 23 #include <QFont> 24 #include <QVariantMap> 25 #include <QVector> 26 #include "StelFader.hpp" 27 #include "StelObjectModule.hpp" 28 #include "StelTextureTypes.hpp" 29 #include "StelProjectorType.hpp" 30 31 class StelObject; 32 class StelToneReproducer; 33 class StelProjector; 34 class StelPainter; 35 class QSettings; 36 37 class ZoneArray; 38 struct HipIndexStruct; 39 40 static const int RCMAG_TABLE_SIZE = 4096; 41 42 typedef struct 43 { 44 QString designation; //! GCVS designation 45 QString vtype; //! Type of variability 46 float maxmag; //! Magnitude at maximum brightness 47 int mflag; //! Magnitude flag code 48 float min1mag; //! First minimum magnitude or amplitude 49 float min2mag; //! Second minimum magnitude or amplitude 50 QString photosys; //! The photometric system for magnitudes 51 double epoch; //! Epoch for maximum light (Julian days) 52 double period; //! Period of the variable star (days) 53 int Mm; //! Rising time or duration of eclipse (%) 54 QString stype; //! Spectral type 55 } varstar; 56 57 typedef struct 58 { 59 QString designation; //! WDS designation 60 int observation; //! Date of last satisfactory observation, yr 61 float positionAngle; //! Position Angle at date of last satisfactory observation, deg 62 float separation; //! Separation at date of last satisfactory observation, arcsec 63 } wds; 64 65 typedef struct 66 { 67 int sao; 68 int hd; 69 int hr; 70 } crossid; 71 72 typedef QMap<StelObjectP, float> StelACStarData; 73 typedef QPair<float, float> PMData; 74 75 //! @class StarMgr 76 //! Stores the star catalogue data. 77 //! Used to render the stars themselves, as well as determine the color table 78 //! and render the labels of those stars with names for a given SkyCulture. 79 //! 80 //! The celestial sphere is split into zones, which correspond to the 81 //! triangular faces of a geodesic sphere. The number of zones (faces) 82 //! depends on the level of sub-division of this sphere. The lowest 83 //! level, 0, is an icosahedron (20 faces), subsequent levels, L, 84 //! of sub-division give the number of zones, n as: 85 //! 86 //! n=20 x 4^L 87 //! 88 //! Stellarium uses levels 0 to 7 in the existing star catalogues. 89 //! Star Data Records contain the position of a star as an offset from 90 //! the central position of the zone in which that star is located, 91 //! thus it is necessary to determine the vector from the observer 92 //! to the centre of a zone, and add the star's offsets to find the 93 //! absolute position of the star on the celestial sphere. 94 //! 95 //! This position for a star is expressed as a 3-dimensional vector 96 //! which points from the observer (at the centre of the geodesic sphere) 97 //! to the position of the star as observed on the celestial sphere. 98 class StarMgr : public StelObjectModule 99 { 100 Q_OBJECT 101 Q_PROPERTY(bool flagStarsDisplayed 102 READ getFlagStars 103 WRITE setFlagStars 104 NOTIFY starsDisplayedChanged) 105 Q_PROPERTY(bool flagLabelsDisplayed 106 READ getFlagLabels 107 WRITE setFlagLabels 108 NOTIFY starLabelsDisplayedChanged) 109 Q_PROPERTY(double labelsAmount 110 READ getLabelsAmount 111 WRITE setLabelsAmount 112 NOTIFY labelsAmountChanged) 113 Q_PROPERTY(bool flagAdditionalNamesDisplayed 114 READ getFlagAdditionalNames 115 WRITE setFlagAdditionalNames 116 NOTIFY flagAdditionalNamesDisplayedChanged 117 ) 118 Q_PROPERTY(bool flagDesignationLabels 119 READ getDesignationUsage 120 WRITE setDesignationUsage 121 NOTIFY designationUsageChanged 122 ) 123 Q_PROPERTY(bool flagDblStarsDesignation 124 READ getFlagDblStarsDesignation 125 WRITE setFlagDblStarsDesignation 126 NOTIFY flagDblStarsDesignationChanged 127 ) 128 Q_PROPERTY(bool flagVarStarsDesignation 129 READ getFlagVarStarsDesignation 130 WRITE setFlagVarStarsDesignation 131 NOTIFY flagVarStarsDesignationChanged 132 ) 133 Q_PROPERTY(bool flagHIPDesignation 134 READ getFlagHIPDesignation 135 WRITE setFlagHIPDesignation 136 NOTIFY flagHIPDesignationChanged 137 ) 138 139 public: 140 StarMgr(void); 141 ~StarMgr(void) Q_DECL_OVERRIDE; 142 143 /////////////////////////////////////////////////////////////////////////// 144 // Methods defined in the StelModule class 145 //! Initialize the StarMgr. 146 //! - Loads the star catalogue data into memory 147 //! - Sets up the star color table 148 //! - Loads the star texture 149 //! - Loads the star font (for labels on named stars) 150 //! - Loads the texture of the star selection indicator 151 //! - Sets various display flags from the ini parser object 152 virtual void init() Q_DECL_OVERRIDE; 153 154 //! Draw the stars and the star selection indicator if necessary. 155 virtual void draw(StelCore* core) Q_DECL_OVERRIDE; 156 157 //! Update any time-dependent features. 158 //! Includes fading in and out stars and labels when they are turned on and off. update(double deltaTime)159 virtual void update(double deltaTime) Q_DECL_OVERRIDE {labelsFader.update(static_cast<int>(deltaTime*1000)); starsFader.update(static_cast<int>(deltaTime*1000));} 160 161 //! Used to determine the order in which the various StelModules are drawn. 162 virtual double getCallOrder(StelModuleActionName actionName) const Q_DECL_OVERRIDE; 163 164 /////////////////////////////////////////////////////////////////////////// 165 // Methods defined in StelObjectModule class 166 //! Return a list containing the stars located inside the limFov circle around position v 167 virtual QList<StelObjectP > searchAround(const Vec3d& v, double limitFov, const StelCore* core) const Q_DECL_OVERRIDE; 168 169 //! Return the matching Stars object's pointer if exists or Q_NULLPTR 170 //! @param nameI18n The case in-sensitive localized star common name or HIP/HP, SAO, HD, HR, GCVS or WDS number 171 //! catalog name (format can be HP1234 or HP 1234 or HIP 1234) or sci name 172 virtual StelObjectP searchByNameI18n(const QString& nameI18n) const Q_DECL_OVERRIDE; 173 174 //! Return the matching star if exists or Q_NULLPTR 175 //! @param name The case in-sensitive english star name 176 virtual StelObjectP searchByName(const QString& name) const Q_DECL_OVERRIDE; 177 178 //! Same as searchByName(id); 179 virtual StelObjectP searchByID(const QString &id) const Q_DECL_OVERRIDE; 180 181 //! Find and return the list of at most maxNbItem objects auto-completing the passed object English name. 182 //! @param objPrefix the case insensitive first letters of the searched object 183 //! @param maxNbItem the maximum number of returned object names 184 //! @param useStartOfWords the autofill mode for returned objects names 185 //! @return a list of matching object name by order of relevance, or an empty list if nothing match 186 virtual QStringList listMatchingObjects(const QString& objPrefix, int maxNbItem=5, bool useStartOfWords=false) const Q_DECL_OVERRIDE; 187 //! @note Loading stars with the common names only. 188 virtual QStringList listAllObjects(bool inEnglish) const Q_DECL_OVERRIDE; 189 virtual QStringList listAllObjectsByType(const QString& objType, bool inEnglish) const Q_DECL_OVERRIDE; getName() const190 virtual QString getName() const Q_DECL_OVERRIDE { return "Stars"; } 191 virtual QString getStelObjectType() const Q_DECL_OVERRIDE; 192 193 public slots: 194 /////////////////////////////////////////////////////////////////////////// 195 // Methods callable from script and GUI 196 //! Set display flag for Stars. setFlagStars(bool b)197 void setFlagStars(bool b) {starsFader=b; emit starsDisplayedChanged(b);} 198 //! Get display flag for Stars getFlagStars(void) const199 bool getFlagStars(void) const {return starsFader==true;} 200 201 //! Set display flag for Star names (labels). setFlagLabels(bool b)202 void setFlagLabels(bool b) {labelsFader=b; emit starLabelsDisplayedChanged(b);} 203 //! Get display flag for Star names (labels). getFlagLabels(void) const204 bool getFlagLabels(void) const {return labelsFader==true;} 205 206 //! Set the amount of star labels. The real amount is also proportional with FOV. 207 //! The limit is set in function of the stars magnitude 208 //! @param a the amount between 0 and 10. 0 is no labels, 10 is maximum of labels setLabelsAmount(double a)209 void setLabelsAmount(double a) {if(!qFuzzyCompare(a,labelsAmount)){ labelsAmount=a; emit labelsAmountChanged(a);}} 210 //! Get the amount of star labels. The real amount is also proportional with FOV. 211 //! @return the amount between 0 and 10. 0 is no labels, 10 is maximum of labels getLabelsAmount(void) const212 double getLabelsAmount(void) const {return labelsAmount;} 213 214 //! Define font size to use for star names display. 215 void setFontSize(int newFontSize); 216 217 //! Show scientific or catalog names on stars without common names. setFlagSciNames(bool f)218 static void setFlagSciNames(bool f) {flagSciNames = f;} getFlagSciNames(void)219 static bool getFlagSciNames(void) {return flagSciNames;} 220 221 //! Set flag for usage designations of stars for their labels instead common names. setDesignationUsage(const bool flag)222 void setDesignationUsage(const bool flag) { if(flagDesignations!=flag){ flagDesignations=flag; emit designationUsageChanged(flag);}} 223 //! Get flag for usage designations of stars for their labels instead common names. getDesignationUsage(void)224 static bool getDesignationUsage(void) {return flagDesignations; } 225 226 //! Set flag for usage traditional designations of double stars. setFlagDblStarsDesignation(const bool flag)227 void setFlagDblStarsDesignation(const bool flag) { if(flagDblStarsDesignation!=flag){ flagDblStarsDesignation=flag; emit flagDblStarsDesignationChanged(flag);}} 228 //! Get flag for usage traditional designations of double stars. getFlagDblStarsDesignation(void)229 static bool getFlagDblStarsDesignation(void) {return flagDblStarsDesignation; } 230 231 //! Set flag for usage designations of variable stars. setFlagVarStarsDesignation(const bool flag)232 void setFlagVarStarsDesignation(const bool flag) { if(flagVarStarsDesignation!=flag){ flagVarStarsDesignation=flag; emit flagVarStarsDesignationChanged(flag);}} 233 //! Get flag for usage designations of variable stars. getFlagVarStarsDesignation(void)234 static bool getFlagVarStarsDesignation(void) {return flagVarStarsDesignation; } 235 236 //! Set flag for usage Hipparcos catalog designations of stars. setFlagHIPDesignation(const bool flag)237 void setFlagHIPDesignation(const bool flag) { if(flagHIPDesignation!=flag){ flagHIPDesignation=flag; emit flagHIPDesignationChanged(flag);}} 238 //! Get flag for usage Hipparcos catalog designations of stars. getFlagHIPDesignation(void)239 static bool getFlagHIPDesignation(void) {return flagHIPDesignation; } 240 241 //! Show additional star names. setFlagAdditionalNames(bool flag)242 void setFlagAdditionalNames(bool flag) { if (flagAdditionalStarNames!=flag){ flagAdditionalStarNames=flag; emit flagAdditionalNamesDisplayedChanged(flag);}} getFlagAdditionalNames(void)243 static bool getFlagAdditionalNames(void) { return flagAdditionalStarNames; } 244 245 public: 246 /////////////////////////////////////////////////////////////////////////// 247 // Other methods 248 //! Search by Hipparcos catalogue number. 249 //! @param hip the Hipparcos catalogue number of the star which is required. 250 //! @return the requested StelObjectP or an empty objecy if the requested 251 //! one was not found. 252 StelObjectP searchHP(int hip) const; 253 254 //! Get the (translated) common name for a star with a specified 255 //! Hipparcos catalogue number. 256 //! @param hip The Hipparcos number of star 257 //! @return translated common name of star 258 static QString getCommonName(int hip); 259 260 //! Get the (translated) scientific name for a star with a specified 261 //! Hipparcos catalogue number. 262 //! @param hip The Hipparcos number of star 263 //! @return translated scientific name of star 264 static QString getSciName(int hip); 265 266 //! Get the (translated) scientific extra name for a star with a specified 267 //! Hipparcos catalogue number. 268 //! @param hip The Hipparcos number of star 269 //! @return translated scientific name of star 270 static QString getSciExtraName(int hip); 271 272 //! Get the (translated) scientific name for a variable star with a specified 273 //! Hipparcos catalogue number. 274 //! @param hip The Hipparcos number of star 275 //! @return translated scientific name of variable star 276 static QString getGcvsName(int hip); 277 278 //! Get the (translated) scientific name for a double star with a specified 279 //! Hipparcos catalogue number. 280 //! @param hip The Hipparcos number of star 281 //! @return translated scientific name of double star 282 static QString getWdsName(int hip); 283 284 //! Get the (English) common name for a star with a specified 285 //! Hipparcos catalogue number. 286 //! @param hip The Hipparcos number of star 287 //! @return common name of star (from skyculture file star_names.fab) 288 static QString getCommonEnglishName(int hip); 289 290 //! Get the (translated) additional names for a star with a specified 291 //! Hipparcos catalogue number. 292 //! @param hip The Hipparcos number of star 293 //! @return translated additional names of star 294 static QString getAdditionalNames(int hip); 295 296 //! Get the English additional names for a star with a specified 297 //! Hipparcos catalogue number. 298 //! @param hip The Hipparcos number of star 299 //! @return additional names of star 300 static QString getAdditionalEnglishNames(int hip); 301 302 //! Get the cross-identification designations for a star with a specified 303 //! Hipparcos catalogue number. 304 //! @param hip The Hipparcos number of star 305 //! @return cross-identification data 306 static QString getCrossIdentificationDesignations(QString hip); 307 308 //! Get the type of variability for a variable star with a specified 309 //! Hipparcos catalogue number. 310 //! @param hip The Hipparcos number of star 311 //! @return type of variability 312 static QString getGcvsVariabilityType(int hip); 313 314 //! Get the magnitude at maximum brightness for a variable star with a specified 315 //! Hipparcos catalogue number. 316 //! @param hip The Hipparcos number of star 317 //! @return the magnitude at maximum brightness for a variable star 318 static float getGcvsMaxMagnitude(int hip); 319 320 //! Get the magnitude flag code for a variable star with a specified 321 //! Hipparcos catalogue number. 322 //! @param hip The Hipparcos number of star 323 //! @return the magnitude flag code for a variable star 324 static int getGcvsMagnitudeFlag(int hip); 325 326 //! Get the minimum magnitude or amplitude for a variable star with a specified 327 //! Hipparcos catalogue number. 328 //! @param hip The Hipparcos number of star 329 //! @param firstMinimumFlag 330 //! @return the minimum magnitude or amplitude for a variable star 331 static float getGcvsMinMagnitude(int hip, bool firstMinimumFlag=true); 332 333 //! Get the photometric system for a variable star with a specified 334 //! Hipparcos catalogue number. 335 //! @param hip The Hipparcos number of star 336 //! @return the photometric system for a variable star 337 static QString getGcvsPhotometricSystem(int hip); 338 339 //! Get Epoch for maximum light for a variable star with a specified 340 //! Hipparcos catalogue number. 341 //! @param hip The Hipparcos number of star 342 //! @return Epoch for maximum light for a variable star 343 static double getGcvsEpoch(int hip); 344 345 //! Get the period for a variable star with a specified 346 //! Hipparcos catalogue number. 347 //! @param hip The Hipparcos number of star 348 //! @return the period of variable star 349 static double getGcvsPeriod(int hip); 350 351 //! Get the rising time or duration of eclipse for a variable star with a 352 //! specified Hipparcos catalogue number. 353 //! @param hip The Hipparcos number of star 354 //! @return the rising time or duration of eclipse for variable star 355 static int getGcvsMM(int hip); 356 357 //! Get year of last satisfactory observation of double star with a 358 //! Hipparcos catalogue number. 359 //! @param hip The Hipparcos number of star 360 //! @return year of last satisfactory observation 361 static int getWdsLastObservation(int hip); 362 363 //! Get position angle at date of last satisfactory observation of double star with a 364 //! Hipparcos catalogue number. 365 //! @param hip The Hipparcos number of star 366 //! @return position angle in degrees 367 static float getWdsLastPositionAngle(int hip); 368 369 //! Get separation angle at date of last satisfactory observation of double star with a 370 //! Hipparcos catalogue number. 371 //! @param hip The Hipparcos number of star 372 //! @return separation in arcseconds 373 static float getWdsLastSeparation(int hip); 374 375 //! Get the parallax error for star with a Hipparcos catalogue number. 376 //! @param hip The Hipparcos number of star 377 //! @return the parallax error (mas) 378 static float getPlxError(int hip); 379 380 //! Get the proper motion data for star with a Hipparcos catalogue number. 381 //! @param hip The Hipparcos number of star 382 //! @return the proper motion (mas/yr for RA and Dec) 383 static PMData getProperMotion(int hip); 384 385 static QString convertToSpectralType(int index); 386 static QString convertToComponentIds(int index); 387 getCatalogsDescription() const388 QVariantList getCatalogsDescription() const {return catalogsDescription;} 389 390 //! Try to load the given catalog, even if it is marched as unchecked. 391 //! Mark it as checked if checksum is correct. 392 //! @return false in case of failure. 393 bool checkAndLoadCatalog(const QVariantMap& m); 394 395 //! Get the list of all Hipparcos stars. getHipparcosStars() const396 const QList<StelObjectP>& getHipparcosStars() const { return hipparcosStars; } getHipparcosHighPMStars() const397 const QList<QMap<StelObjectP, float>>& getHipparcosHighPMStars() const { return hipStarsHighPM; } getHipparcosDoubleStars() const398 const QList<QMap<StelObjectP, float>>& getHipparcosDoubleStars() const { return doubleHipStars; } getHipparcosVariableStars() const399 const QList<QMap<StelObjectP, float>>& getHipparcosVariableStars() const { return variableHipStars; } getHipparcosAlgolTypeStars() const400 const QList<QMap<StelObjectP, float>>& getHipparcosAlgolTypeStars() const { return algolTypeStars; } getHipparcosClassicalCepheidsTypeStars() const401 const QList<QMap<StelObjectP, float>>& getHipparcosClassicalCepheidsTypeStars() const { return classicalCepheidsTypeStars; } getHipparcosCarbonStars() const402 const QList<StelObjectP>& getHipparcosCarbonStars() const { return carbonStars; } getHipparcosBariumStars() const403 const QList<StelObjectP>& getHipparcosBariumStars() const { return bariumStars; } 404 405 private slots: 406 //! Translate text. 407 void updateI18n(); 408 409 //! Called when the sky culture is updated. 410 //! Loads common and scientific names of stars for a given sky culture. 411 //! @param skyCultureDir the name of the directory containing the sky culture to use. 412 void updateSkyCulture(const QString& skyCultureDir); 413 414 //! increase artificial cutoff magnitude slightly (can be linked to an action/hotkey) 415 void increaseStarsMagnitudeLimit(); 416 //! decrease artificial cutoff magnitude slightly (can be linked to an action/hotkey) 417 void reduceStarsMagnitudeLimit(); 418 419 signals: 420 void starLabelsDisplayedChanged(const bool displayed); 421 void starsDisplayedChanged(const bool displayed); 422 void designationUsageChanged(const bool flag); 423 void flagDblStarsDesignationChanged(const bool flag); 424 void flagVarStarsDesignationChanged(const bool flag); 425 void flagHIPDesignationChanged(const bool flag); 426 void flagAdditionalNamesDisplayedChanged(const bool displayed); 427 void labelsAmountChanged(double a); 428 429 private: 430 void setCheckFlag(const QString& catalogId, bool b); 431 432 void copyDefaultConfigFile(); 433 434 //! Loads common names for stars from a file. 435 //! Called when the SkyCulture is updated. 436 //! @param the path to a file containing the common names for bright stars. 437 //! @note Stellarium doesn't support sky cultures made prior version 0.10.6 now! 438 int loadCommonNames(const QString& commonNameFile); 439 440 //! Loads scientific names for stars from a file. 441 //! Called when the SkyCulture is updated. 442 //! @param the path to a file containing the scientific names for bright stars. 443 //! @param flag to load the extra designations 444 void loadSciNames(const QString& sciNameFile, const bool extraData); 445 446 //! Loads GCVS from a file. 447 //! @param the path to a file containing the GCVS. 448 void loadGcvs(const QString& GcvsFile); 449 450 //! Loads WDS from a file. 451 //! @param the path to a file containing the WDS. 452 void loadWds(const QString& WdsFile); 453 454 //! Loads cross-identification data from a file. 455 //! @param the path to a file containing the cross-identification data. 456 void loadCrossIdentificationData(const QString& crossIdFile); 457 458 //! Loads parallax error data from a file. 459 //! @param the path to a file containing the parallax error data. 460 void loadPlxErr(const QString& plxErrFile); 461 462 //! Loads proper motion data from a file. 463 //! @param the path to a file containing the proper motion data. 464 void loadPMData(const QString& pmDataFile); 465 466 //! Gets the maximum search level. 467 // TODO: add a non-lame description - what is the purpose of the max search level? 468 int getMaxSearchLevel() const; 469 470 //! Load all the stars from the files. 471 void loadData(QVariantMap starsConfigFile); 472 473 //! Draw a nice animated pointer around the object. 474 void drawPointer(StelPainter& sPainter, const StelCore* core); 475 476 void populateHipparcosLists(); 477 void populateStarsDesignations(); 478 479 //! List of all Hipparcos stars. 480 QList<StelObjectP> hipparcosStars, carbonStars, bariumStars; 481 QList<QMap<StelObjectP, float>> doubleHipStars, variableHipStars, algolTypeStars, classicalCepheidsTypeStars, hipStarsHighPM; 482 483 LinearFader labelsFader; 484 LinearFader starsFader; 485 486 bool flagStarName; 487 double labelsAmount; 488 bool gravityLabel; 489 490 int maxGeodesicGridLevel; 491 int lastMaxSearchLevel; 492 493 // A ZoneArray per grid level 494 QVector<ZoneArray*> gridLevels; initTriangleFunc(int lev,int index,const Vec3f & c0,const Vec3f & c1,const Vec3f & c2,void * context)495 static void initTriangleFunc(int lev, int index, 496 const Vec3f &c0, 497 const Vec3f &c1, 498 const Vec3f &c2, 499 void *context) 500 { 501 reinterpret_cast<StarMgr*>(context)->initTriangle(lev, index, c0, c1, c2); 502 } 503 504 void initTriangle(int lev, int index, 505 const Vec3f &c0, 506 const Vec3f &c1, 507 const Vec3f &c2); 508 509 HipIndexStruct *hipIndex; // array of Hipparcos stars 510 511 static QHash<int, QString> commonNamesMap; // the original names from skyculture (star_names.fab) 512 static QHash<int, QString> commonNamesMapI18n; // translated names 513 static QMap<QString, int> commonNamesIndexI18n; 514 static QMap<QString, int> commonNamesIndex; 515 516 static QHash<int, QString> additionalNamesMap; // additional names 517 static QHash<int, QString> additionalNamesMapI18n; 518 static QMap<QString, int> additionalNamesIndex; 519 static QMap<QString, int> additionalNamesIndexI18n; 520 521 static QHash<int, QString> sciDesignationsMapI18n; 522 static QMap<QString, int> sciDesignationsIndexI18n; 523 static QHash<int, QString> sciExtraDesignationsMapI18n; 524 static QMap<QString, int> sciExtraDesignationsIndexI18n; 525 526 static QHash<int, varstar> varStarsMapI18n; 527 static QMap<QString, int> varStarsIndexI18n; 528 529 static QHash<int, wds> wdsStarsMapI18n; 530 static QMap<QString, int> wdsStarsIndexI18n; 531 532 static QMap<QString, crossid> crossIdMap; 533 static QMap<int, int> saoStarsIndex; 534 static QMap<int, int> hdStarsIndex; 535 static QMap<int, int> hrStarsIndex; 536 537 static QHash<int, float> hipParallaxErrors; 538 static QHash<int, PMData> hipPMData; 539 540 static QHash<int, QString> referenceMap; 541 542 QFont starFont; 543 static bool flagSciNames; 544 static bool flagAdditionalStarNames; 545 static bool flagDesignations; 546 static bool flagDblStarsDesignation; 547 static bool flagVarStarsDesignation; 548 static bool flagHIPDesignation; 549 550 StelTextureSP texPointer; // The selection pointer texture 551 552 class StelObjectMgr* objectMgr; 553 554 QString starConfigFileFullPath; 555 QVariantMap starSettings; 556 QVariantList catalogsDescription; 557 }; 558 559 560 #endif // STARMGR_HPP 561 562