36 ClassImp(TAttFillEditor);
49 TAttFillEditor::TAttFillEditor(
const TGWindow *p, Int_t width,
50 Int_t height, UInt_t options, Pixel_t back)
51 : TGedFrame(p, width, height, options | kVerticalFrame, back)
59 TGCompositeFrame *f2 =
new TGCompositeFrame(
this, 80, 20, kHorizontalFrame);
60 fColorSelect =
new TGColorSelect(f2, 0, kCOLOR);
61 f2->AddFrame(fColorSelect,
new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
62 fColorSelect->Associate(
this);
63 fPatternSelect =
new TGedPatternSelect(f2, 1, kPATTERN);
64 f2->AddFrame(fPatternSelect,
new TGLayoutHints(kLHintsLeft, 1, 1, 1, 1));
65 fPatternSelect->Associate(
this);
66 AddFrame(f2,
new TGLayoutHints(kLHintsTop, 1, 1, 0, 0));
68 TGLabel *AlphaLabel =
new TGLabel(
this,
"Opacity");
70 new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
71 TGHorizontalFrame *f2a =
new TGHorizontalFrame(
this);
72 fAlpha =
new TGHSlider(f2a,100,kSlider2|kScaleNo,kALPHA);
73 fAlpha->SetRange(0,1000);
74 f2a->AddFrame(fAlpha,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
75 fAlphaField =
new TGNumberEntryField(f2a, kALPHAFIELD, 0,
76 TGNumberFormat::kNESReal,
77 TGNumberFormat::kNEANonNegative);
78 fAlphaField->Resize(40,20);
79 if (!TCanvas::SupportAlpha()) {
80 fAlpha->SetEnabled(kFALSE);
81 AlphaLabel->Disable(kTRUE);
82 fAlphaField->SetEnabled(kFALSE);
84 f2a->AddFrame(fAlphaField,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
85 AddFrame(f2a,
new TGLayoutHints(kLHintsLeft | kLHintsCenterY));
91 TAttFillEditor::~TAttFillEditor()
98 void TAttFillEditor::ConnectSignals2Slots()
100 fColorSelect->Connect(
"ColorSelected(Pixel_t)",
"TAttFillEditor",
this,
"DoFillColor(Pixel_t)");
101 fColorSelect->Connect(
"AlphaColorSelected(ULong_t)",
"TAttFillEditor",
this,
"DoFillAlphaColor(ULong_t)");
102 fPatternSelect->Connect(
"PatternSelected(Style_t)",
"TAttFillEditor",
this,
"DoFillPattern(Style_t)");
103 fAlpha->Connect(
"Released()",
"TAttFillEditor",
this,
"DoAlpha()");
104 fAlpha->Connect(
"PositionChanged(Int_t)",
"TAttFillEditor",
this,
"DoLiveAlpha(Int_t)");
105 fAlphaField->Connect(
"ReturnPressed()",
"TAttFillEditor",
this,
"DoAlphaField()");
106 fAlpha->Connect(
"Pressed()",
"TAttFillEditor",
this,
"GetCurAlpha()");
113 void TAttFillEditor::SetModel(TObject* obj)
115 TAttFill *attfill =
dynamic_cast<TAttFill *
>(obj);
116 if (!attfill)
return;
119 fAvoidSignal = kTRUE;
121 Color_t c = fAttFill->GetFillColor();
122 Pixel_t p = TColor::Number2Pixel(c);
123 fColorSelect->SetColor(p, kFALSE);
125 Style_t s = fAttFill->GetFillStyle();
126 fPatternSelect->SetPattern(s, kFALSE);
128 if (fInit) ConnectSignals2Slots();
129 fAvoidSignal = kFALSE;
131 if (TColor *color = gROOT->GetColor(fAttFill->GetFillColor())) {
132 fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
133 fAlphaField->SetNumber(color->GetAlpha());
140 void TAttFillEditor::DoFillAlphaColor(ULong_t p)
142 TColor *color = (TColor *)p;
144 if (fAvoidSignal)
return;
145 fAttFill->SetFillColor(color->GetNumber());
146 fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
147 fAlphaField->SetNumber(color->GetAlpha());
155 void TAttFillEditor::DoFillColor(Pixel_t color)
157 if (fAvoidSignal)
return;
158 fAttFill->SetFillColor(TColor::GetColor(color));
160 if (TColor *tcolor = gROOT->GetColor(TColor::GetColor(color))) {
161 fAlpha->SetPosition((Int_t)(tcolor->GetAlpha()*1000));
162 fAlphaField->SetNumber(tcolor->GetAlpha());
171 void TAttFillEditor::DoFillPattern(Style_t pattern)
173 if (fAvoidSignal)
return;
174 fAttFill->SetFillStyle(pattern);
181 void TAttFillEditor::DoAlphaField()
183 if (fAvoidSignal)
return;
185 if (TColor *color = gROOT->GetColor(fAttFill->GetFillColor())) {
186 color->SetAlpha((Float_t)fAlphaField->GetNumber());
187 fAlpha->SetPosition((Int_t)fAlphaField->GetNumber()*1000);
195 void TAttFillEditor::DoAlpha()
197 if (fAvoidSignal)
return;
199 if (TColor *color = gROOT->GetColor(fAttFill->GetFillColor())) {
200 color->SetAlpha((Float_t)fAlpha->GetPosition()/1000);
201 fAlphaField->SetNumber((Float_t)fAlpha->GetPosition()/1000);
209 void TAttFillEditor::DoLiveAlpha(Int_t a)
211 if (fAvoidSignal)
return;
212 fAlphaField->SetNumber((Float_t)a/1000);
214 if (TColor *color = gROOT->GetColor(fAttFill->GetFillColor())) {
216 if (color->GetAlpha() == 1.) {
217 fAttFill->SetFillColor(TColor::GetColorTransparent(color->GetNumber(),0.99));
219 color->SetAlpha((Float_t)a/1000);
228 void TAttFillEditor::GetCurAlpha()
230 if (fAvoidSignal)
return;
232 if (TColor *color = gROOT->GetColor(fAttFill->GetFillColor())) {
233 fAlpha->SetPosition((Int_t)(color->GetAlpha()*1000));
234 fAlphaField->SetNumber(color->GetAlpha());