00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef ROOT_TAxis3D
00012 #define ROOT_TAxis3D
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00034
00035
00036
00037
00038
00040
00041
00042 #ifndef ROOT_TAxis
00043 #include "TAxis.h"
00044 #endif
00045
00046 class TF1;
00047 class TBrowser;
00048 class TGaxis;
00049 class TVirtualPad;
00050 class TView;
00051 class TAxis3D : public TNamed {
00052
00053 private:
00054 Int_t AxisChoice(Option_t *axis) const;
00055 void Build();
00056
00057 protected:
00058 TAxis fAxis[3];
00059 TString fOption;
00060 static const Char_t *rulerName;
00061 TAxis *fSelected;
00062 Bool_t fZoomMode;
00063
00064 virtual void Copy(TObject &hnew) const;
00065 void InitSet();
00066 Bool_t SwitchZoom();
00067
00068 public:
00069 TAxis3D();
00070 TAxis3D(Option_t *option);
00071 TAxis3D(const TAxis3D &axis);
00072 virtual ~ TAxis3D(){;}
00073
00074 virtual void Browse(TBrowser *b);
00075
00076 virtual Int_t DistancetoPrimitive(Int_t px, Int_t py);
00077 virtual void ExecuteEvent(Int_t event, Int_t px, Int_t py);
00078
00079 virtual Int_t GetNdivisions(Option_t *axis="X") const;
00080 virtual Color_t GetAxisColor(Option_t *axis="X") const;
00081 virtual Color_t GetLabelColor(Option_t *axis="X") const;
00082 virtual Style_t GetLabelFont(Option_t *axis="X") const;
00083 virtual Float_t GetLabelOffset(Option_t *axis="X") const;
00084 virtual Float_t GetLabelSize(Option_t *axis="X") const;
00085 static TAxis3D *GetPadAxis(TVirtualPad *pad=0);
00086 virtual Float_t GetTitleOffset(Option_t *axis="X") const;
00087 virtual Float_t GetTickLength(Option_t *axis="X") const;
00088
00089 virtual void GetCenter(Axis_t *center) {fAxis[0].GetCenter(center);}
00090
00091 virtual void GetLowEdge(Axis_t *edge) {fAxis[0].GetLowEdge(edge);}
00092
00093 virtual char *GetObjectInfo(Int_t px, Int_t py) const;
00094
00095 Option_t *GetOption() const {return fOption.Data();}
00096
00097 virtual TAxis *GetXaxis() {return &fAxis[0];}
00098 virtual TAxis *GetYaxis() {return &fAxis[1];}
00099 virtual TAxis *GetZaxis() {return &fAxis[2];}
00100 virtual Bool_t IsFolder() const { return kTRUE;}
00101 virtual void Paint(Option_t *option="");
00102 void PaintAxis(TGaxis *axis, Float_t ang);
00103 static Double_t *PixeltoXYZ(Double_t px, Double_t py, Double_t *point3D, TView *view =0);
00104 virtual void SavePrimitive(ofstream &out, Option_t *option);
00105
00106 virtual void SetAxisColor(Color_t color=1, Option_t *axis="*");
00107 virtual void SetAxisRange(Double_t xmin, Double_t xmax, Option_t *axis="*");
00108
00109 virtual void SetLabelColor(Color_t color=1, Option_t *axis="*");
00110 virtual void SetLabelFont(Style_t font=62, Option_t *axis="*");
00111 virtual void SetLabelOffset(Float_t offset=0.005, Option_t *axis="*");
00112 virtual void SetLabelSize(Float_t size=0.02, Option_t *axis="*");
00113
00114 virtual void SetNdivisions(Int_t n=510, Option_t *axis="*");
00115 virtual void SetOption(Option_t *option=" ") {fOption = option;}
00116 virtual void SetTickLength(Float_t length=0.02, Option_t *axis="*");
00117 virtual void SetTitleOffset(Float_t offset=1, Option_t *axis="*");
00118 virtual void SetXTitle(const char *title) {fAxis[0].SetTitle(title);}
00119 virtual void SetYTitle(const char *title) {fAxis[1].SetTitle(title);}
00120 virtual void SetZTitle(const char *title) {fAxis[2].SetTitle(title);}
00121 static TAxis3D *ToggleRulers(TVirtualPad *pad=0);
00122 static TAxis3D *ToggleZoom(TVirtualPad *pad=0);
00123 void UseCurrentStyle();
00124
00125 ClassDef(TAxis3D,1)
00126 };
00127
00128
00129 inline Bool_t TAxis3D::SwitchZoom(){Bool_t s = fZoomMode; fZoomMode = !fZoomMode; return s;}
00130
00131 #endif