| 1 | #ifndef MARS_MagicJam | 
|---|
| 2 | #define MARS_Magicjam | 
|---|
| 3 |  | 
|---|
| 4 | #ifndef MARS_MHCamera | 
|---|
| 5 | #include "MHCamera.h" | 
|---|
| 6 | #endif | 
|---|
| 7 |  | 
|---|
| 8 | // -------------------------------------------------------------------- | 
|---|
| 9 |  | 
|---|
| 10 | class MagicJamAbc : public MHCamera | 
|---|
| 11 | { | 
|---|
| 12 | public: | 
|---|
| 13 | // Remove this items from the context menu | 
|---|
| 14 | void  SetLineAttributes() { } | 
|---|
| 15 | void  SetFillAttributes() { } | 
|---|
| 16 | void  SetMarkerAttributes() { } | 
|---|
| 17 | void  SetName(const char *name) { MHCamera::SetName(name); } | 
|---|
| 18 | void  SetTitle(const char *name) { MHCamera::SetTitle(name); } | 
|---|
| 19 | TH1  *DrawCopy(const Option_t *o="") const { return MHCamera::DrawCopy(o); } | 
|---|
| 20 | void  PrintInfo() const {  } | 
|---|
| 21 | void  SetDrawOption(Option_t *option="") { MHCamera::SetDrawOption(option); } | 
|---|
| 22 | Int_t Fit(const char *formula ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0) { return 0; } | 
|---|
| 23 | Int_t Fit(TF1 *f1 ,Option_t *option="" ,Option_t *goption="", Axis_t xmin=0, Axis_t xmax=0) { return 0; } | 
|---|
| 24 | void  SetMaximum(Double_t maximum=-1111) { MHCamera::SetMaximum(maximum); } | 
|---|
| 25 | void  SetMinimum(Double_t minimum=-1111) { MHCamera::SetMinimum(minimum); } | 
|---|
| 26 | void  Add(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1) { } | 
|---|
| 27 | void  Add(TF1 *h1, Double_t c1, Option_t *) { } | 
|---|
| 28 | void  Add(const TH1 *h1, Double_t c1=1) { } | 
|---|
| 29 | void  Divide(TF1 *f1, Double_t c1=1) { } | 
|---|
| 30 | void  Divide(const TH1 *h1) { } | 
|---|
| 31 | void  Divide(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option="") { } | 
|---|
| 32 | void  Multiply(TF1 *h1, Double_t c1=1) { } | 
|---|
| 33 | void  Multiply(const TH1 *h1) { } | 
|---|
| 34 | void  Multiply(const TH1 *h1, const TH1 *h2, Double_t c1=1, Double_t c2=1, Option_t *option="") { } | 
|---|
| 35 | void  Smooth(int, int, int) { } | 
|---|
| 36 | void  SetPrettyPalette() {} | 
|---|
| 37 | void  SetDeepBlueSeaPalette() {} | 
|---|
| 38 | void  SetInvDeepBlueSeaPalette() {} | 
|---|
| 39 | void  SetFreezed(Bool_t f=kTRUE) { } | 
|---|
| 40 | void  SetAbberation(Float_t f=0.0713) { } | 
|---|
| 41 | void  SetAutoScale() { } | 
|---|
| 42 | void  SetMinMax(Double_t min=-1111, Double_t max=-1111) { SetMinimum(min); SetMaximum(max); } | 
|---|
| 43 | TH1  *ShowBackground(Int_t niter=2, Option_t *option="same") { return 0; } | 
|---|
| 44 | Int_t ShowPeaks(Double_t sigma=2, Option_t *option="", Double_t threshold=0.05) { return 0; } | 
|---|
| 45 | void  SetErrorSpread(Bool_t f=kTRUE) { } | 
|---|
| 46 |  | 
|---|
| 47 | // Make the full pad sensible for the context menu | 
|---|
| 48 | Int_t DistancetoPrimitive(Int_t px, Int_t py) { return 0; } | 
|---|
| 49 |  | 
|---|
| 50 | ClassDef(MagicJamAbc, 0) // Helper class for MagicJam | 
|---|
| 51 | }; | 
|---|
| 52 |  | 
|---|
| 53 | // -------------------------------------------------------------------- | 
|---|
| 54 | class TASImage; | 
|---|
| 55 |  | 
|---|
| 56 | class MagicJamEditor : public MagicJamAbc | 
|---|
| 57 | { | 
|---|
| 58 | Int_t fWidth; | 
|---|
| 59 |  | 
|---|
| 60 | TASImage *fImage; | 
|---|
| 61 |  | 
|---|
| 62 | void Move(int dx, int dy); | 
|---|
| 63 | void InitGeom(int wx, int hy); | 
|---|
| 64 | Int_t GetPixelIndexFlt(Float_t px, Float_t py) const; | 
|---|
| 65 |  | 
|---|
| 66 | public: | 
|---|
| 67 | MagicJamEditor(const char *name=0); | 
|---|
| 68 | ~MagicJamEditor(); | 
|---|
| 69 |  | 
|---|
| 70 | // MagicJamEditor | 
|---|
| 71 | void   SetAllUsed() { MHCamera::SetAllUsed(); } //*MENU* | 
|---|
| 72 | void   Reset(Option_t *o="") { MHCamera::Reset(o); } //*MENU* | 
|---|
| 73 | void   Invert() { for (UInt_t i=0; i<GetNumPixels(); i++) if (IsUsed(i)) ResetUsed(i); else SetUsed(i); } //*MENU* | 
|---|
| 74 | void   SetWidthHeight(Int_t dx, Int_t dy); //*MENU* | 
|---|
| 75 | Bool_t ShowUnused() const { return TestBit(kNoUnused); } | 
|---|
| 76 | void   DoNotDisplayUnused(Bool_t b) { b ? SetBit(kNoUnused) : ResetBit(kNoUnused); } //*TOGGLE* *GETTER=ShowUnused | 
|---|
| 77 |  | 
|---|
| 78 | void   LoadGame(const char *name="default.jam");//*MENU* *ARGS={name=>fName} | 
|---|
| 79 | void   SaveGame(const char *name="default.jam"); //*MENU* *ARGS={name=>fName} | 
|---|
| 80 |  | 
|---|
| 81 | void   ShowImageAsBackground(const char *name); //*MENU* | 
|---|
| 82 | void   RemoveBackgroundImage(); //*MENU* | 
|---|
| 83 |  | 
|---|
| 84 | // TObject | 
|---|
| 85 | void Paint(Option_t *o); | 
|---|
| 86 | void Draw(Option_t *o=""); | 
|---|
| 87 | void EventInfo(Int_t event, Int_t px, Int_t py, TObject *); | 
|---|
| 88 | void ExecuteEvent(Int_t event, Int_t px, Int_t py); | 
|---|
| 89 |  | 
|---|
| 90 | ClassDef(MagicJamEditor, 0) // Editor for the MAGIC Jam games | 
|---|
| 91 | }; | 
|---|
| 92 |  | 
|---|
| 93 | // -------------------------------------------------------------------- | 
|---|
| 94 |  | 
|---|
| 95 | class MagicJam : public MagicJamAbc | 
|---|
| 96 | { | 
|---|
| 97 | private: | 
|---|
| 98 | Int_t fNumPlayers; | 
|---|
| 99 | Int_t fNumPlayer; | 
|---|
| 100 |  | 
|---|
| 101 | MagicJam *fGame; //! | 
|---|
| 102 |  | 
|---|
| 103 | void FillPix(Int_t idx); | 
|---|
| 104 | Int_t CountPlayer(Int_t player) const; | 
|---|
| 105 | Int_t CountPlayers() const; | 
|---|
| 106 |  | 
|---|
| 107 | public: | 
|---|
| 108 | MagicJam(const char *jam="mtools/jam/default.jam", MagicJam *game=NULL); | 
|---|
| 109 |  | 
|---|
| 110 | // MagicJam | 
|---|
| 111 | void  SetNumPlayers(Byte_t n=2); //*MENU* | 
|---|
| 112 | void  LoadGame(const char *name="default.jam"); //*MENU* *ARGS={name=>fName} | 
|---|
| 113 | void  Reset(Option_t *o=""); //*MENU* | 
|---|
| 114 | void  StartEditor() const; //*MENU* | 
|---|
| 115 | void  OpenInEditor() const; //*MENU* | 
|---|
| 116 | void  ShowDirectory(const char *dir="mtools/jam"); //*MENU* | 
|---|
| 117 |  | 
|---|
| 118 | // TObject | 
|---|
| 119 | void  ExecuteEvent(Int_t event, Int_t px, Int_t py); | 
|---|
| 120 | void  Paint(Option_t *o); | 
|---|
| 121 | void  Draw(Option_t *o=0); | 
|---|
| 122 | void  RecursiveRemove(TObject *obj); | 
|---|
| 123 |  | 
|---|
| 124 | ClassDef(MagicJam, 0) // MAGIC-Jam (game) | 
|---|
| 125 | }; | 
|---|
| 126 |  | 
|---|
| 127 | #endif | 
|---|