00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020 #ifndef _NEBULA_HPP_
00021 #define _NEBULA_HPP_
00022
00023 #include <QString>
00024 #include "StelObject.hpp"
00025 #include "StelTranslator.hpp"
00026 #include "StelTextureTypes.hpp"
00027
00028 class StelPainter;
00029 class QDataStream;
00030
00031 class Nebula : public StelObject
00032 {
00033 friend class NebulaMgr;
00034 public:
00035 Nebula();
00036 ~Nebula();
00037
00051 virtual QString getInfoString(const StelCore *core, const InfoStringGroup& flags) const;
00052 virtual QString getType(void) const {return "Nebula";}
00053 virtual Vec3d getJ2000EquatorialPos(const StelNavigator *nav) const {return XYZ;}
00054 virtual double getCloseViewFov(const StelNavigator * nav = NULL) const;
00055 virtual float getVMagnitude(const StelNavigator * nav = NULL) const {return mag;}
00056 virtual float getSelectPriority(const StelNavigator *nav) const;
00057 virtual Vec3f getInfoColor(void) const;
00058 virtual QString getNameI18n(void) const {return nameI18;}
00059 virtual QString getEnglishName(void) const {return englishName;}
00060 virtual double getAngularSize(const StelCore *core) const {return angularSize*0.5;}
00061 virtual SphericalRegionP getRegion() const {return pointRegion;}
00062
00063
00064 void setLabelColor(const Vec3f& v) {labelColor = v;}
00065 void setCircleColor(const Vec3f& v) {circleColor = v;}
00066
00069 QString getTypeString(void) const;
00070
00071 private:
00072 friend struct DrawNebulaFuncObject;
00073
00075 enum NebulaType
00076 {
00077 NebGx=0,
00078 NebOc=1,
00079 NebGc=2,
00080 NebN=3,
00081 NebPn=4,
00082 NebDn=5,
00083 NebIg=6,
00084 NebCn=7,
00085 NebUnknown=8
00086 };
00087
00089 void translateName(StelTranslator& trans) {nameI18 = trans.qtranslate(englishName);}
00090
00091 bool readNGC(char *record);
00092 void readNGC(QDataStream& in);
00093
00094 void drawLabel(StelPainter& sPainter, float maxMagLabel);
00095 void drawHints(StelPainter& sPainter, float maxMagHints);
00096
00097 unsigned int M_nb;
00098 unsigned int NGC_nb;
00099 unsigned int IC_nb;
00100 QString englishName;
00101 QString nameI18;
00102 float mag;
00103 float angularSize;
00104 Vec3d XYZ;
00105 Vec3d XY;
00106 NebulaType nType;
00107
00108 SphericalRegionP pointRegion;
00109
00110 static StelTextureSP texCircle;
00111 static float hintsBrightness;
00112
00113 static Vec3f labelColor, circleColor;
00114 static float circleScale;
00115 };
00116
00117 #endif // _NEBULA_HPP_
00118