38 ClassImp(TAttMarkerEditor);
51 TAttMarkerEditor::TAttMarkerEditor(
const TGWindow *p, Int_t width,
52 Int_t height,UInt_t options, Pixel_t back)
53 : TGedFrame(p, width, height, options | kVerticalFrame, back)
56 fSizeForText = kFALSE;
60 TGCompositeFrame *f2 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
61 fColorSelect =
new TGColorSelect(f2, 0, kCOLOR);
62 f2->AddFrame(fColorSelect,
new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
63 fColorSelect->Associate(
this);
65 fMarkerType =
new TGedMarkerSelect(f2, 1, kMARKER);
66 f2->AddFrame(fMarkerType,
new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
67 fMarkerType->Associate(
this);
69 fMarkerSize =
new TGNumberEntry(f2, 0., 4, kMARKER_SIZE,
70 TGNumberFormat::kNESRealOne,
71 TGNumberFormat::kNEANonNegative,
72 TGNumberFormat::kNELLimitMinMax, 0.2, 5.0);
73 fMarkerSize->GetNumberEntry()->SetToolTipText(
"Set marker size");
74 f2->AddFrame(fMarkerSize,
new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
75 fMarkerSize->Associate(
this);
76 AddFrame(f2,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
78 TGLabel *AlphaLabel =
new TGLabel(
this,
"Opacity");
80 new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
81 TGHorizontalFrame *f2a =
new TGHorizontalFrame(
this);
82 fAlpha =
new TGHSlider(f2a,100,kSlider2|kScaleNo,kALPHA);
83 fAlpha->SetRange(0,1000);
84 f2a->AddFrame(fAlpha,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
85 fAlphaField =
new TGNumberEntryField(f2a, kALPHAFIELD, 0,
86 TGNumberFormat::kNESReal,
87 TGNumberFormat::kNEANonNegative);
88 fAlphaField->Resize(40,20);
89 if (!TCanvas::SupportAlpha()) {
90 fAlpha->SetEnabled(kFALSE);
91 AlphaLabel->Disable(kTRUE);
92 fAlphaField->SetEnabled(kFALSE);
94 f2a->AddFrame(fAlphaField,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
95 AddFrame(f2a,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
101 TAttMarkerEditor::~TAttMarkerEditor()
108 void TAttMarkerEditor::ConnectSignals2Slots()
110 fColorSelect->Connect(
"ColorSelected(Pixel_t)",
"TAttMarkerEditor",
this,
"DoMarkerColor(Pixel_t)");
111 fColorSelect->Connect(
"AlphaColorSelected(ULong_t)",
"TAttMarkerEditor",
this,
"DoMarkerAlphaColor(ULong_t)");
112 fMarkerType->Connect(
"MarkerSelected(Style_t)",
"TAttMarkerEditor",
this,
"DoMarkerStyle(Style_t)");
113 fMarkerSize->Connect(
"ValueSet(Long_t)",
"TAttMarkerEditor",
this,
"DoMarkerSize()");
114 (fMarkerSize->GetNumberEntry())->Connect(
"ReturnPressed()",
"TAttMarkerEditor",
this,
"DoMarkerSize()");
115 fAlpha->Connect(
"Released()",
"TAttMarkerEditor",
this,
"DoAlpha()");
116 fAlpha->Connect(
"PositionChanged(Int_t)",
"TAttMarkerEditor",
this,
"DoLiveAlpha(Int_t)");
117 fAlphaField->Connect(
"ReturnPressed()",
"TAttMarkerEditor",
this,
"DoAlphaField()");
118 fAlpha->Connect(
"Pressed()",
"TAttMarkerEditor",
this,
"GetCurAlpha()");
125 void TAttMarkerEditor::SetModel(TObject* obj)
127 fAvoidSignal = kTRUE;
129 fAttMarker =
dynamic_cast<TAttMarker *
>(obj);
130 if (!fAttMarker)
return;
132 TString str = GetDrawOption();
134 if (obj->InheritsFrom(
"TH2") && str.Contains(
"TEXT")) {
135 fSizeForText = kTRUE;
137 fSizeForText = kFALSE;
139 Style_t marker = fAttMarker->GetMarkerStyle();
140 if ((marker==1 || marker==6 || marker==7) && !fSizeForText) {
141 fMarkerSize->SetNumber(1.);
142 fMarkerSize->SetState(kFALSE);
144 Float_t s = fAttMarker->GetMarkerSize();
145 fMarkerSize->SetState(kTRUE);
146 fMarkerSize->SetNumber(s);
148 fMarkerType->SetMarkerStyle(marker);
150 Color_t c = fAttMarker->GetMarkerColor();
151 Pixel_t p = TColor::Number2Pixel(c);
152 fColorSelect->SetColor(p);
154 if (fInit) ConnectSignals2Slots();
155 fAvoidSignal = kFALSE;
157 if (TColor *color = gROOT->GetColor(fAttMarker->GetMarkerColor())) {
158 fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
159 fAlphaField->SetNumber(color->GetAlpha());
167 void TAttMarkerEditor::DoMarkerColor(Pixel_t color)
169 if (fAvoidSignal)
return;
170 fAttMarker->SetMarkerColor(TColor::GetColor(color));
172 if (TColor *tcolor = gROOT->GetColor(TColor::GetColor(color))) {
173 fAlpha->SetPosition((Int_t)(tcolor->GetAlpha()*1000));
174 fAlphaField->SetNumber(tcolor->GetAlpha());
183 void TAttMarkerEditor::DoMarkerAlphaColor(ULong_t p)
185 TColor *color = (TColor *)p;
187 if (fAvoidSignal)
return;
188 fAttMarker->SetMarkerColor(color->GetNumber());
189 fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
190 fAlphaField->SetNumber(color->GetAlpha());
198 void TAttMarkerEditor::DoMarkerStyle(Style_t marker)
200 if (fAvoidSignal)
return;
201 if ((marker==1 || marker==6 || marker==7) && !fSizeForText) {
202 fMarkerSize->SetNumber(1.);
203 fMarkerSize->SetState(kFALSE);
205 fMarkerSize->SetState(kTRUE);
207 fAttMarker->SetMarkerStyle(marker);
214 void TAttMarkerEditor::DoMarkerSize()
216 if (fAvoidSignal)
return;
217 Style_t marker = fAttMarker->GetMarkerStyle();
218 if ((marker==1 || marker==6 || marker==7) && !fSizeForText) {
219 fMarkerSize->SetNumber(1.);
220 fMarkerSize->SetState(kFALSE);
222 fMarkerSize->SetState(kTRUE);
223 Float_t size = fMarkerSize->GetNumber();
224 fAttMarker->SetMarkerSize(size);
231 void TAttMarkerEditor::DoAlphaField()
233 if (fAvoidSignal)
return;
235 if (TColor *color = gROOT->GetColor(fAttMarker->GetMarkerColor())) {
236 color->SetAlpha((Float_t)fAlphaField->GetNumber());
237 fAlpha->SetPosition((Int_t)fAlphaField->GetNumber()*1000);
245 void TAttMarkerEditor::DoAlpha()
247 if (fAvoidSignal)
return;
249 if (TColor *color = gROOT->GetColor(fAttMarker->GetMarkerColor())) {
250 color->SetAlpha((Float_t)fAlpha->GetPosition()/1000);
251 fAlphaField->SetNumber((Float_t)fAlpha->GetPosition()/1000);
259 void TAttMarkerEditor::DoLiveAlpha(Int_t a)
261 if (fAvoidSignal)
return;
262 fAlphaField->SetNumber((Float_t)a/1000);
264 if (TColor *color = gROOT->GetColor(fAttMarker->GetMarkerColor())) {
266 if (color->GetAlpha() == 1.) {
267 fAttMarker->SetMarkerColor(TColor::GetColorTransparent(color->GetNumber(),0.99));
269 color->SetAlpha((Float_t)a/1000);
278 void TAttMarkerEditor::GetCurAlpha()
280 if (fAvoidSignal)
return;
282 if (TColor *color = gROOT->GetColor(fAttMarker->GetMarkerColor())) {
283 fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
284 fAlphaField->SetNumber(color->GetAlpha());