4 // Class AliMpMotifPainter
5 // -----------------------
6 // Class for drawing a motif into canvas
8 // Authors: David Guez, IPN Orsay
10 #include <TVirtualX.h>
14 #include "AliMpMotifPainter.h"
15 #include "AliMpGraphContext.h"
16 #include "AliMpMotifPosition.h"
17 #include "AliMpMotifType.h"
18 #include "AliMpConnection.h"
19 #include "AliMpIntPair.h"
21 ClassImp(AliMpMotifPainter)
23 //_______________________________________________________________________
24 AliMpMotifPainter::AliMpMotifPainter()
28 // default dummy constructor
31 //_______________________________________________________________________
32 AliMpMotifPainter::AliMpMotifPainter(AliMpMotifPosition *motifPos)
40 //_____________________________________________________________________________
41 AliMpMotifPainter::AliMpMotifPainter(const AliMpMotifPainter& right)
42 : AliMpVPainter(right) {
44 Fatal("AliMpMotifPainter", "Copy constructor not provided.");
47 //_______________________________________________________________________
48 AliMpMotifPainter::~AliMpMotifPainter()
50 // default dummy constructor
53 //_____________________________________________________________________________
55 AliMpMotifPainter::operator=(const AliMpMotifPainter& right)
57 // check assignement to self
58 if (this == &right) return *this;
60 Fatal("operator =", "Assignement operator not provided.");
65 //_______________________________________________________________________
66 void AliMpMotifPainter::DumpObject()
68 // Draw the owned object
73 //_______________________________________________________________________
74 TVector2 AliMpMotifPainter::GetPosition() const
76 // Get the owned object's position
77 return fMotifPos->Position();
80 //_______________________________________________________________________
81 TVector2 AliMpMotifPainter::GetDimensions() const
83 // Get the owned object's dimensions
84 return fMotifPos->Dimensions();
88 //_______________________________________________________________________
89 void AliMpMotifPainter::Paint(Option_t *option)
92 AliMpGraphContext *gr = AliMpGraphContext::Instance();
93 if (!fMotifPos) return;
94 Int_t col=gVirtualX->GetFillColor();
96 gPad->Range(0.,0.,1.,1.);
105 Float_t textSize = gVirtualX->GetTextSize();
106 gVirtualX->SetTextSize(10);
110 str = Form("%d",fMotifPos->GetID());
115 str = Form("(%d,%d)",fMotifPos->GetHighIndicesLimit().GetFirst(),
116 fMotifPos->GetHighIndicesLimit().GetSecond());
119 str = Form("(%d,%d)",fMotifPos->GetLowIndicesLimit().GetFirst(),
120 fMotifPos->GetLowIndicesLimit().GetSecond());
125 str = Form("(%f,%f)",(GetPosition()-GetDimensions()).X(),
126 (GetPosition()-GetDimensions()).Y());
129 gPad->PaintText(GetPadPosition().X()-0.01,GetPadPosition().Y()-0.01,str);
131 gVirtualX->SetTextSize(textSize);
136 //PaintWholeBox(kFALSE);
137 AliMpMotifType *motifType = fMotifPos->GetMotif()->GetMotifType();
138 for (Int_t j=motifType->GetNofPadsY()-1;j>=0;j--){
139 for (Int_t i=0;i<motifType->GetNofPadsX();i++){
140 AliMpIntPair indices = AliMpIntPair(i,j);
141 AliMpConnection* connect =
142 motifType->FindConnectionByLocalIndices(indices);
144 TVector2 realPadPos =
145 GetPosition()+fMotifPos->GetMotif()->PadPositionLocal(indices);
146 TVector2 padPadPos,padPadDim;
147 gr->RealToPad(realPadPos,
148 fMotifPos->GetMotif()->GetPadDimensions(indices),
149 padPadPos,padPadDim);
150 TVector2 bl = padPadPos - padPadDim;
151 TVector2 ur = padPadPos + padPadDim;
154 Style_t sty = gVirtualX->GetFillStyle();
155 gVirtualX->SetFillStyle(1);
156 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
157 gVirtualX->SetFillStyle(0);
158 gPad->PaintBox(bl.X(),bl.Y(),ur.X(),ur.Y());
159 gVirtualX->SetFillStyle(sty);
161 Float_t textSize = gVirtualX->GetTextSize();
162 gVirtualX->SetTextSize(10);
163 gPad->PaintText(padPadPos.X()-0.01,padPadPos.Y()-0.01,
164 Form("%d",connect->GetGassiNum()));
166 gVirtualX->SetTextSize(textSize);
174 PaintWholeBox(kFALSE);
177 gVirtualX->SetFillColor(col);