00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028 #ifndef TRIALDISPLAY_NBODY_H
00029 #define TRIALDISPLAY_NBODY_H
00030
00031 #include <casa/aips.h>
00032 #include <casa/Arrays/Vector.h>
00033 #include <casa/Quanta/Quantum.h>
00034 #include <casa/Containers/Record.h>
00035 #include <display/DisplayEvents/WCPositionEvent.h>
00036 #include <display/DisplayEvents/WCPositionEH.h>
00037 #include <display/DisplayEvents/WCMotionEvent.h>
00038 #include <display/DisplayEvents/WCMotionEH.h>
00039 #include <display/DisplayDatas/DisplayData.h>
00040 #include <casa/Containers/List.h>
00041
00042 namespace casa {
00043
00044 class WorldCanvas;
00045 class WCResampleHandler;
00046 class WorldCanvasHolder;
00047 class AttributeBuffer;
00048 class Attribute;
00049 class Unit;
00050 class IPosition;
00051
00052
00053
00054
00055
00056
00057
00058
00059
00060
00061
00062
00063
00064
00065
00066 class NBody : public DisplayData {
00067
00068 public:
00069
00070
00071 NBody();
00072
00073
00074 virtual ~NBody();
00075
00076
00077
00078 virtual Bool linToWorld(Vector<Double>& world, const Vector<Double>& lin);
00079 virtual Bool worldToLin(Vector<Double>& lin, const Vector<Double>& world);
00080
00081
00082
00083 virtual void setActiveImage(uInt zindex) { return;};
00084
00085
00086
00087
00088 virtual Vector<String> worldAxisNames() ;
00089 virtual Vector<String> worldAxisUnits() ;
00090 virtual const Unit dataUnit() ;
00091 virtual const RecordInterface& miscInfo() ;
00092
00093
00094
00095 virtual const uInt nelements(const WorldCanvasHolder& wcHolder) const;
00096 virtual const uInt nelements() const;
00097
00098
00099
00100
00101 virtual void addElementRestrictions(const uInt itemNum,
00102 AttributeBuffer& other);
00103 virtual void addElementRestriction(const uInt itemNum,
00104 Attribute& newRestriction,
00105 Bool permanent);
00106
00107
00108
00109
00110
00111 virtual void setElementRestrictions(const uInt itemNum,
00112 AttributeBuffer& other);
00113 virtual void setElementRestriction(const uInt itemNum,
00114 Attribute& newRestriction);
00115
00116
00117
00118 virtual void removeElementRestriction(const uInt itemNum,
00119 const String& name);
00120
00121
00122
00123 virtual void clearElementRestrictions(const uInt itemNum);
00124
00125
00126
00127 virtual Bool existElementRestriction(const uInt itemNum,
00128 const String& name);
00129
00130
00131
00132
00133 virtual AttributeBuffer *elementRestrictionBuffer(const uInt itemNum);
00134
00135
00136
00137 virtual Double getDataMin();
00138 virtual Double getDataMax();
00139
00140
00141
00142 virtual Bool sizeControl(WorldCanvasHolder& wcHolder,
00143 AttributeBuffer& holderBuf);
00144
00145
00146 virtual void positionEH(const WCPositionEvent& ev);
00147
00148
00149 virtual void motionEH(const WCMotionEvent& ev);
00150
00151
00152 virtual void refreshEH(const WCRefreshEvent& ev);
00153
00154
00155 virtual void cleanup();
00156
00157
00158 virtual String showPosition(const Vector<Double> &, const Bool &)
00159 { return String(""); }
00160 virtual String showValue(const Vector<Double> &)
00161 { return String(""); }
00162 virtual Display::DisplayDataType classType()
00163 { return Display::Vector; }
00164
00165 private:
00166
00167 void setupStars();
00168 void cleanupStars();
00169 void drawImage(WorldCanvas& wCanvas);
00170 void setScale();
00171
00172
00173
00174
00175 Bool turnedOff;
00176
00177
00178 Double dataMin;
00179 Double dataMax;
00180
00181 Double itsTimeStep;
00182 Double itsDampingFactor;
00183 Int itsNumSteps;
00184 Int itsXSize;
00185 Int itsYSize;
00186
00187
00188
00189 AttributeBuffer sizeControlBuf;
00190
00191
00192
00193 Bool iDidSizeControl(WorldCanvas& wCanvas);
00194
00195 void drawMovie(WorldCanvas& wCanvas, Int numSteps, Double timeStep,
00196 Double dampingFactor);
00197
00198 Record miscInfoDummy;
00199
00200 List<void *> itsGalaxyList;
00201 ListIter<void *> *itsGalaxyListIter;
00202
00203 };
00204
00205
00206 }
00207
00208 #endif