From 8f2c5124a18221cd62ee82e5986b4ed6595dba16 Mon Sep 17 00:00:00 2001 From: Fons Rademakers <Fons.Rademakers@cern.ch> Date: Mon, 25 Sep 2006 13:42:03 +0000 Subject: [PATCH] From Matevz: Removed files; functionality moved to TGLPShapeObjEditor and TGLViewerEditor. git-svn-id: http://root.cern.ch/svn/root/trunk@16334 27541ba8-7e3a-0410-8455-c3a389f83636 --- gl/inc/TGLEditor.h | 280 ------------- gl/src/TGLEditor.cxx | 975 ------------------------------------------- 2 files changed, 1255 deletions(-) delete mode 100644 gl/inc/TGLEditor.h delete mode 100644 gl/src/TGLEditor.cxx diff --git a/gl/inc/TGLEditor.h b/gl/inc/TGLEditor.h deleted file mode 100644 index 2936fa2c1d0..00000000000 --- a/gl/inc/TGLEditor.h +++ /dev/null @@ -1,280 +0,0 @@ -// @(#)root/gl:$Name: $:$Id: TGLEditor.h,v 1.18 2006/01/26 11:59:41 brun Exp $ -// Author: Timur Pocheptsov 03/08/2004 - -/************************************************************************* - * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ - -#ifndef ROOT_TGLEditor -#define ROOT_TGLEditor - -#ifndef ROOT_RQ_OBJECT -#include "RQ_OBJECT.h" -#endif -#ifndef ROOT_TGFrame -#include "TGFrame.h" -#endif -#ifndef ROOT_TList -#include "TList.h" -#endif -// For enums - TODO: move somewhere better -#ifndef ROOT_TGLViewer -#include "TGLViewer.h" -#endif - -class TGLStandalone; -class TGLSAViewer; -class TGCheckButton; -class TGLayoutHints; -class TGNumberEntry; -class TGLMatView; -class TGHSlider; -class TGButton; -class TGButtonGroup; -class TGCanvas; -class TGLabel; - -enum EApplyButtonIds { - kTBcp, - kTBcpm, - kTBda, - kTBa, - kTBaf, - kTBTop, - kTBRight, - kTBBottom, - kTBLeft, - kTBFront, - kTBa1, - kTBGuide -}; - -////////////////////////////////////////////////////////////////////////// -// // -// TGLColorEditor // -// // -// GL Viewer shape color editor GUI component // -////////////////////////////////////////////////////////////////////////// - -class TGLColorEditor : public TGCompositeFrame { - friend class TGLMatView; -private: - TGLSAViewer *fViewer; - TGLMatView *fMatView;//MUST BE DELETED - TGLayoutHints *fFrameLayout; - - enum ELightMode{kDiffuse, kAmbient, kSpecular, kEmission, kTot}; - ELightMode fLMode; - TGButton *fLightTypes[kTot]; - - TGHSlider *fRedSlider; - TGHSlider *fGreenSlider; - TGHSlider *fBlueSlider; - TGHSlider *fAlphaSlider; - TGHSlider *fShineSlider; - - TGButton *fApplyButton; - TGButton *fApplyFamily; - Bool_t fIsActive; - Bool_t fIsLight; - Float_t fRGBA[17]; - - Window_t fGLWin; - ULong_t fCtx; - -public: - TGLColorEditor(const TGWindow *parent, TGLSAViewer *viewer); - ~TGLColorEditor(); - - void SetRGBA(const Float_t *rgba); - const Float_t *GetRGBA()const{return fRGBA;} - //slots - void DoSlider(Int_t val); - void DoButton(); - void Disable(); - -private: - void CreateMaterialView(); - void CreateRadioButtons(); - void CreateSliders(); - void SetSlidersPos(); - Bool_t HandleContainerNotify(Event_t *event); - Bool_t HandleContainerExpose(Event_t *event); - void DrawSphere()const; - void SwapBuffers()const; - void MakeCurrent()const; - //Non-copyable class - TGLColorEditor(const TGLColorEditor &); - TGLColorEditor & operator = (const TGLColorEditor &); - - ClassDef(TGLColorEditor, 0); // GL Viewer shape color editor GUI component -}; - -////////////////////////////////////////////////////////////////////////// -// // -// TGLGeometryEditor // -// // -// GL Viewer shape geometry editor GUI component // -////////////////////////////////////////////////////////////////////////// - -class TGLGeometryEditor : public TGCompositeFrame { -private: - enum { - kCenterX, - kCenterY, - kCenterZ, - kScaleX, - kScaleY, - kScaleZ, - kTot - }; - - TGLSAViewer *fViewer; - TGNumberEntry *fGeomData[kTot]; - TGButton *fApplyButton; - Bool_t fIsActive; - -public: - TGLGeometryEditor(const TGWindow *parent, TGLSAViewer *viewer); - ~TGLGeometryEditor(); - - void SetCenter(const Double_t *center); - void SetScale(const Double_t *scale); - void Disable(); - void DoButton(); - void GetObjectData(Double_t *shift, Double_t *scale); - void ValueSet(Long_t unusedVal); - -private: - void CreateCenterControls(); - void CreateStretchControls(); - - TGLGeometryEditor(const TGLGeometryEditor &); - TGLGeometryEditor &operator = (const TGLGeometryEditor &); - - ClassDef(TGLGeometryEditor, 0); // GL Viewer shape geometry editor GUI component -}; - -////////////////////////////////////////////////////////////////////////// -// // -// TGLClipEditor // -// // -// GL Viewer clipping shape editor GUI component // -////////////////////////////////////////////////////////////////////////// - -class TGLClipEditor : public TGCompositeFrame { -private: - - TGLSAViewer *fViewer; - TList fTrash; - TGLayoutHints *fL1, *fL2; - TGButton *fApplyButton; - TGButtonGroup *fTypeButtons; - TGCompositeFrame *fPlanePropFrame; - TGNumberEntry *fPlaneProp[4]; - TGCompositeFrame *fBoxPropFrame; - TGNumberEntry *fBoxProp[6]; - TGCheckButton *fEdit; - EClipType fCurrentClip; // Nasty - need to move - // all common enums out somewhere else - -public: - TGLClipEditor(const TGWindow *parent, TGLSAViewer *viewer); - ~TGLClipEditor(); - - // Internal GUI event callbacks - void ClipValueChanged(Long_t); - void ClipTypeChanged(Int_t); - void UpdateViewer(); - - // External viewer interface - void GetState(EClipType type, Double_t data[6]) const; - void SetState(EClipType type, const Double_t data[6]); - void GetCurrent(EClipType & type, Bool_t & edit) const; - void SetCurrent(EClipType type, Bool_t edit); - - void HideParts(); - -private: - void CreateControls(); - - TGLClipEditor(const TGLClipEditor &); - TGLClipEditor &operator = (const TGLClipEditor &); - - ClassDef(TGLClipEditor, 0); //GL Viewer clipping shape editor GUI component -}; - -////////////////////////////////////////////////////////////////////////// -// // -// TGLLightEditor // -// // -// GL Viewer lighting editor GUI component // -////////////////////////////////////////////////////////////////////////// - -class TGLLightEditor : public TGCompositeFrame { -private: - enum EBuiltInLight { - kTop, - kRight, - kBottom, - kLeft, - kFront, - kTot - }; - - TGLSAViewer *fViewer; - TGButton *fLights[kTot]; - TList fTrash; - - TGLLightEditor(const TGLLightEditor &); - TGLLightEditor &operator = (const TGLLightEditor &); - -public: - TGLLightEditor(const TGWindow *parent, TGLSAViewer *viewer); - ~TGLLightEditor(); - - void DoButton(); - - ClassDef(TGLLightEditor, 0); // GL Viewer lighting editor GUI component -}; - -////////////////////////////////////////////////////////////////////////// -// // -// TGLGuideEditor // -// // -// GL Viewer guides editor GUI component // -////////////////////////////////////////////////////////////////////////// - -class TGLGuideEditor : public TGCompositeFrame { -private: - TGLSAViewer * fViewer; - TGButtonGroup * fAxesContainer; - TGGroupFrame * fReferenceContainer; - TGCheckButton * fReferenceOn; - TGNumberEntry * fReferencePos[3]; - - TGLayoutHints * fL1; - TGLayoutHints * fL2; - TList fTrash; - - void UpdateReferencePos(); - - TGLGuideEditor(const TGLGuideEditor &); - TGLGuideEditor &operator = (const TGLGuideEditor &); - -public: - TGLGuideEditor(const TGWindow *parent, TGLSAViewer *viewer); - ~TGLGuideEditor(); - - void Update(); - void GetState(TGLViewer::EAxesType & axesType, Bool_t & referenceOn, Double_t referencePos[3]) const; - void SetState(TGLViewer::EAxesType axesType, Bool_t referenceOn, const Double_t referencePos[3]); - - ClassDef(TGLGuideEditor, 0); // GL Viewer guides editor GUI component -}; - -#endif diff --git a/gl/src/TGLEditor.cxx b/gl/src/TGLEditor.cxx deleted file mode 100644 index a32715ec1a0..00000000000 --- a/gl/src/TGLEditor.cxx +++ /dev/null @@ -1,975 +0,0 @@ -// @(#)root/gl:$Name: $:$Id: TGLEditor.cxx,v 1.28 2006/04/20 14:36:48 rdm Exp $ -// Author: Timur Pocheptsov 03/08/2004 - -/************************************************************************* - * Copyright (C) 1995-2004, Rene Brun and Fons Rademakers. * - * All rights reserved. * - * * - * For the licensing terms see $ROOTSYS/LICENSE. * - * For the list of contributors see $ROOTSYS/README/CREDITS. * - *************************************************************************/ -#include "TVirtualGL.h" -#include "TVirtualX.h" -#include "TGCanvas.h" -#include "TGLayout.h" -#include "TGButton.h" -#include "TGButtonGroup.h" -#include "TGSlider.h" -#include "TGLabel.h" -#include "TGNumberEntry.h" -#include "TGLSAViewer.h" - -#include "TGLEditor.h" - -class TGLMatView : public TGCompositeFrame { -private: - TGLColorEditor *fOwner; -public: - TGLMatView(const TGWindow *parent, Window_t wid, TGLColorEditor *owner); - Bool_t HandleConfigureNotify(Event_t *event); - Bool_t HandleExpose(Event_t *event); - -private: - TGLMatView(const TGLMatView &); - TGLMatView & operator = (const TGLMatView &); -}; - -//______________________________________________________________________________ -TGLMatView::TGLMatView(const TGWindow *parent, Window_t wid, TGLColorEditor *owner) - :TGCompositeFrame(gClient, wid, parent), fOwner(owner) -{ - // constructor - AddInput(kExposureMask | kStructureNotifyMask); -} - -//______________________________________________________________________________ -Bool_t TGLMatView::HandleConfigureNotify(Event_t *event) -{ - //HandleConfigureNotify - return fOwner->HandleContainerNotify(event); -} - -//______________________________________________________________________________ -Bool_t TGLMatView::HandleExpose(Event_t *event) -{ - //HandleExpose - return fOwner->HandleContainerExpose(event); -} - -namespace { - - enum EGLEditorIdent { - kCPa = kTBa1 + 1, - kCPd, kCPs, kCPe, - kHSr, kHSg, kHSb, - kHSa, kHSs, kHSe, - kNExc, kNEyc, kNEzc, - kNExs, kNEys, kNEzs, - kNExp, kNEyp, kNEzp, - kNEat - }; - -} - -////////////////////////////////////////////////////////////////////////// -// // -// TGLColorEditor // -// // -// GL Viewer shape color editor GUI component // -////////////////////////////////////////////////////////////////////////// - -ClassImp(TGLColorEditor) - -//______________________________________________________________________________ -TGLColorEditor::TGLColorEditor(const TGWindow *parent, TGLSAViewer *v) - :TGCompositeFrame(parent, 100, 100, kVerticalFrame),// | kRaisedFrame), - fViewer(v), fRedSlider(0), fGreenSlider(0), fBlueSlider(0), - fAlphaSlider(0), fApplyButton(0), fIsActive(kFALSE), - fIsLight(kFALSE), fRGBA() -{ - // Construct color editor GUI component, parented by window 'parent', - // bound to viewer 'v' - for (Int_t i = 0; i < 12; ++i) fRGBA[i] = 1.; - - fRGBA[12] = 0.f, fRGBA[13] = 0.f, fRGBA[14] = 0.f; - fRGBA[15] = 1.f, fRGBA[16] = 60.f; - - CreateMaterialView(); - CreateRadioButtons(); - CreateSliders(); - - //apply button creation - fApplyButton = new TGTextButton(this, "Apply", kTBa); - AddFrame(fApplyButton, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 2, 2, 5, 0)); - fApplyButton->SetState(kButtonDisabled); - fApplyButton->Connect("Pressed()", "TGLColorEditor", this, "DoButton()"); - //apply to family button creation - fApplyFamily = new TGTextButton(this, "Apply to family", kTBaf); - AddFrame(fApplyFamily, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 2, 2, 5, 0)); - fApplyFamily->SetState(kButtonDisabled); - fApplyFamily->Connect("Pressed()", "TGLColorEditor", this, "DoButton()"); - - //Init GL - MakeCurrent(); - - gVirtualGL->NewPRGL(); - gVirtualGL->FrustumGL(-0.5, 0.5, -0.5, 0.5, 1., 10.); - gVirtualGL->EnableGL(kLIGHTING); - gVirtualGL->EnableGL(kLIGHT0); - gVirtualGL->EnableGL(kDEPTH_TEST); - gVirtualGL->EnableGL(kCULL_FACE); - gVirtualGL->CullFaceGL(kBACK); - - DrawSphere(); -} - -//______________________________________________________________________________ -TGLColorEditor::~TGLColorEditor() -{ - // Destroy color editor GUI component - delete fMatView; - gVirtualGL->DeleteContext(fCtx); -} - -//______________________________________________________________________________ -void TGLColorEditor::SetRGBA(const Float_t *rgba) -{ - // Set color sliders from 17 component 'rgba' - fApplyButton->SetState(kButtonDisabled); - fApplyFamily->SetState(kButtonDisabled); - - fIsActive = kTRUE; - - for (Int_t i = 0; i < 17; ++i) fRGBA[i] = rgba[i]; - - if (rgba[16] < 0.f) {//this conditional part is obsolete now, we cannot edit ligts more - if (fLMode == kEmission) { - fLMode = kDiffuse; - fLightTypes[kDiffuse]->SetState(kButtonDown); - fLightTypes[kEmission]->SetState(kButtonUp); - } - fLightTypes[kEmission]->SetState(kButtonDisabled); - fIsLight = kTRUE; - } else { - fIsLight = kFALSE; - fLightTypes[kEmission]->SetState(kButtonUp); - fAlphaSlider->SetPosition(Int_t(fRGBA[3] * 100)); - fShineSlider->SetPosition(Int_t(fRGBA[16])); - } - - fRedSlider->SetPosition(Int_t(fRGBA[fLMode * 4] * 100)); - fGreenSlider->SetPosition(Int_t(fRGBA[fLMode * 4 + 1] * 100)); - fBlueSlider->SetPosition(Int_t(fRGBA[fLMode * 4 + 2] * 100)); - - DrawSphere(); -} - -//______________________________________________________________________________ -void TGLColorEditor::DoSlider(Int_t val) -{ - // Process slider movement - TGSlider *frm = (TGSlider *)gTQSender; - - if (frm) { - Int_t wid = frm->WidgetId(); - - switch (wid) { - case kHSr: - fRGBA[fLMode * 4] = val / 100.f; - break; - case kHSg: - fRGBA[fLMode * 4 + 1] = val / 100.f; - break; - case kHSb: - fRGBA[fLMode * 4 + 2] = val / 100.f; - break; - case kHSa: - if (!fIsLight) fRGBA[fLMode * 4 + 3] = val / 100.f; - break; - case kHSs: - if (!fIsLight) fRGBA[16] = val; - break; - } - - if (!fIsLight || (wid != kHSa && wid != kHSs)) { - if (fIsActive) { - fApplyButton->SetState(kButtonUp); - if (!fIsLight) fApplyFamily->SetState(kButtonUp); - } - DrawSphere(); - } - } -} - -//______________________________________________________________________________ -void TGLColorEditor::DoButton() -{ - // Process button action - TGButton *btn = (TGButton *) gTQSender; - Int_t id = btn->WidgetId(); - - switch (id) { - case kCPd: - fLightTypes[fLMode]->SetState(kButtonUp); - fLMode = kDiffuse; - SetSlidersPos(); - break; - case kCPa: - fLightTypes[fLMode]->SetState(kButtonUp); - fLMode = kAmbient; - SetSlidersPos(); - break; - case kCPs: - fLightTypes[fLMode]->SetState(kButtonUp); - fLMode = kSpecular; - SetSlidersPos(); - break; - case kCPe: - fLightTypes[fLMode]->SetState(kButtonUp); - fLMode = kEmission; - SetSlidersPos(); - break; - case kTBa: - case kTBaf: - fApplyButton->SetState(kButtonDisabled); - fApplyFamily->SetState(kButtonDisabled); - fViewer->ProcessGUIEvent(id); - break; - } - DrawSphere(); -} - -//______________________________________________________________________________ -void TGLColorEditor::Disable() -{ - // Disable 'Apply' button and internal flags - fApplyButton->SetState(kButtonDisabled); - fApplyButton->SetState(kButtonDisabled); - fIsActive = kFALSE; - fIsLight = kFALSE; - DrawSphere(); -} - -//______________________________________________________________________________ -void TGLColorEditor::CreateMaterialView() -{ - //Small gl-window with sphere - TGCanvas *viewCanvas = new TGCanvas(this, 120, 120, kSunkenFrame | kDoubleBorder); - Window_t wid = viewCanvas->GetViewPort()->GetId(); - fGLWin = gVirtualGL->CreateGLWindow(wid); - - fMatView = new TGLMatView(viewCanvas->GetViewPort(), fGLWin, this); - fCtx = gVirtualGL->CreateContext(fGLWin); - viewCanvas->SetContainer(fMatView); - AddFrame(viewCanvas, new TGLayoutHints(kLHintsTop | kLHintsCenterX, 2, 0, 2, 2)); -} - -//______________________________________________________________________________ -void TGLColorEditor::CreateRadioButtons() -{ - // Create Diffuse/Ambient/Specular/Emissive radio buttons and sub-frames - TGGroupFrame *partFrame = new TGGroupFrame(this, "Color components:", kLHintsTop | kLHintsCenterX); - partFrame->SetTitlePos(TGGroupFrame::kLeft); - AddFrame(partFrame, new TGLayoutHints(kLHintsTop | kLHintsCenterX, 2, 0, 2, 2)); - TGMatrixLayout *ml = new TGMatrixLayout(partFrame, 0, 1, 10); - partFrame->SetLayoutManager(ml); - - // partFrame will delete the layout manager ml for us so don't add to fTrash - fLightTypes[kDiffuse] = new TGRadioButton(partFrame, "Diffuse", kCPd); - fLightTypes[kDiffuse]->Connect("Pressed()", "TGLColorEditor", this, "DoButton()"); - fLightTypes[kDiffuse]->SetToolTipText("Diffuse component of color"); - partFrame->AddFrame(fLightTypes[kDiffuse]); - - fLightTypes[kAmbient] = new TGRadioButton(partFrame, "Ambient", kCPa); - fLightTypes[kAmbient]->Connect("Pressed()", "TGLColorEditor", this, "DoButton()"); - fLightTypes[kAmbient]->SetToolTipText("Ambient component of color"); - partFrame->AddFrame(fLightTypes[kAmbient]); - - fLightTypes[kSpecular] = new TGRadioButton(partFrame, "Specular", kCPs); - fLightTypes[kSpecular]->Connect("Pressed()", "TGLColorEditor", this, "DoButton()"); - fLightTypes[kSpecular]->SetToolTipText("Specular component of color"); - partFrame->AddFrame(fLightTypes[kSpecular]); - - fLightTypes[kEmission] = new TGRadioButton(partFrame, "Emissive", kCPe); - fLightTypes[kEmission]->Connect("Pressed()", "TGLColorEditor", this, "DoButton()"); - fLightTypes[kEmission]->SetToolTipText("Emissive component of color"); - partFrame->AddFrame(fLightTypes[kEmission]); - - fLMode = kDiffuse; - fLightTypes[fLMode]->SetState(kButtonDown); -} - -//______________________________________________________________________________ -void TGLColorEditor::CreateSliders() -{ - // Create Red/Green/BlueAlpha/Shine sliders - fRedSlider = new TGHSlider(this, 100, kSlider1 | kScaleBoth, kHSr); - fRedSlider->Connect("PositionChanged(Int_t)", "TGLColorEditor", this, "DoSlider(Int_t)"); - fRedSlider->SetRange(0, 100); - fRedSlider->SetPosition(Int_t(fRGBA[0] * 100)); - - fGreenSlider = new TGHSlider(this, 100, kSlider1 | kScaleBoth, kHSg); - fGreenSlider->Connect("PositionChanged(Int_t)", "TGLColorEditor", this, "DoSlider(Int_t)"); - fGreenSlider->SetRange(0, 100); - fGreenSlider->SetPosition(Int_t(fRGBA[1] * 100)); - - fBlueSlider = new TGHSlider(this, 100, kSlider1 | kScaleBoth, kHSb); - fBlueSlider->Connect("PositionChanged(Int_t)", "TGLColorEditor", this, "DoSlider(Int_t)"); - fBlueSlider->SetRange(0, 100); - fBlueSlider->SetPosition(Int_t(fRGBA[2] * 100)); - - fAlphaSlider = new TGHSlider(this, 100, kSlider1 | kScaleBoth, kHSa); - fAlphaSlider->Connect("PositionChanged(Int_t)", "TGLColorEditor", this, "DoSlider(Int_t)"); - fAlphaSlider->SetRange(0, 100); - fAlphaSlider->SetPosition(Int_t(fRGBA[3] * 100)); - - fShineSlider = new TGHSlider(this, 100, kSlider1 | kScaleBoth, kHSs); - fShineSlider->Connect("PositionChanged(Int_t)", "TGLColorEditor", this, "DoSlider(Int_t)"); - fShineSlider->SetRange(0, 128); - - AddFrame(new TGLabel(this, "Red :"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 0, 0, 0)); - AddFrame(fRedSlider, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 0, 0, 0, 0)); - AddFrame(new TGLabel(this, "Green :"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 0, 0, 0)); - AddFrame(fGreenSlider, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 0, 0, 0, 0)); - AddFrame(new TGLabel(this, "Blue :"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 0, 0, 0)); - AddFrame(fBlueSlider, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 0, 0, 0, 0)); - AddFrame(new TGLabel(this, "Opacity :"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 0, 0, 0)); - AddFrame(fAlphaSlider, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 0, 0, 0, 0)); - AddFrame(new TGLabel(this, "Shine :"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 5, 0, 0, 0)); - AddFrame(fShineSlider, new TGLayoutHints(kLHintsTop | kLHintsLeft | kLHintsExpandX, 0, 0, 0, 0)); -} - -//______________________________________________________________________________ -void TGLColorEditor::SetSlidersPos() -{ - // Update GUI sliders from internal data - fRedSlider->SetPosition(Int_t(fRGBA[fLMode * 4] * 100)); - fGreenSlider->SetPosition(Int_t(fRGBA[fLMode * 4 + 1] * 100)); - fBlueSlider->SetPosition(Int_t(fRGBA[fLMode * 4 + 2] * 100)); - fAlphaSlider->SetPosition(Int_t(fRGBA[fLMode * 4 + 3] * 100)); - - if (fRGBA[16] >= 0.f) - fShineSlider->SetPosition(Int_t(fRGBA[16])); -} - -//______________________________________________________________________________ -Bool_t TGLColorEditor::HandleContainerNotify(Event_t *event) -{ - // Handle resize event - gVirtualX->ResizeWindow(fGLWin, event->fWidth, event->fHeight); - DrawSphere(); - return kTRUE; -} - -//______________________________________________________________________________ -Bool_t TGLColorEditor::HandleContainerExpose(Event_t * /*event*/) -{ - // Handle expose (show) event - DrawSphere(); - return kTRUE; -} - -//______________________________________________________________________________ -void TGLColorEditor::DrawSphere()const -{ - // Draw local sphere reflecting current color options - MakeCurrent(); - gVirtualGL->ClearGL(0); - if (fIsActive) { - gVirtualGL->ViewportGL(0, 0, fMatView->GetWidth(), fMatView->GetHeight()); - gVirtualGL->NewMVGL(); - Float_t ligPos[] = {0.f, 0.f, 0.f, 1.f}; - gVirtualGL->GLLight(kLIGHT0, kPOSITION, ligPos); - gVirtualGL->TranslateGL(0., 0., -3.); - gVirtualGL->DrawSphere(fRGBA); - } - SwapBuffers(); -} - -//______________________________________________________________________________ -void TGLColorEditor::MakeCurrent()const -{ - // Make our GL context current - gVirtualGL->MakeCurrent(fGLWin, fCtx); -} - -//______________________________________________________________________________ -void TGLColorEditor::SwapBuffers()const -{ - // Swap our GL buffers - gVirtualGL->SwapBuffers(fGLWin); -} - -////////////////////////////////////////////////////////////////////////// -// // -// TGLGeometryEditor // -// // -// GL Viewer shape geometry editor GUI component // -////////////////////////////////////////////////////////////////////////// - -ClassImp(TGLGeometryEditor) - -//______________________________________________________________________________ -TGLGeometryEditor::TGLGeometryEditor(const TGWindow *parent, TGLSAViewer *v) - :TGCompositeFrame(parent, 100, 100, kVerticalFrame),// | kRaisedFrame), - fViewer(v), fGeomData(), fApplyButton(0), fIsActive(kFALSE) -{ - // Construct geometry editor GUI component, parented by window 'parent', - // bound to viewer 'v' - CreateCenterControls(); - CreateStretchControls(); - //create button - fApplyButton = new TGTextButton(this, "Modify object", kTBa1); - AddFrame(fApplyButton, new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3)); - fApplyButton->SetState(kButtonDisabled); - fApplyButton->Connect("Pressed()", "TGLGeometryEditor", this, "DoButton()"); -} - -//______________________________________________________________________________ -TGLGeometryEditor::~TGLGeometryEditor() -{ -} - -//______________________________________________________________________________ -void TGLGeometryEditor::SetCenter(const Double_t *c) -{ - // Set internal center data from 3 component 'c' - fIsActive = kTRUE; - fApplyButton->SetState(kButtonDisabled); - fGeomData[kCenterX]->SetNumber(c[0]); - fGeomData[kCenterY]->SetNumber(c[1]); - fGeomData[kCenterZ]->SetNumber(c[2]); -} - -//______________________________________________________________________________ -void TGLGeometryEditor::SetScale(const Double_t *s) -{ - // Set internal scale data from 3 component 'c' - fIsActive = kTRUE; - fGeomData[kScaleX]->SetNumber(s[0]); - fGeomData[kScaleY]->SetNumber(s[1]); - fGeomData[kScaleZ]->SetNumber(s[2]); -} - -//______________________________________________________________________________ -void TGLGeometryEditor::Disable() -{ - //Disable "Apply" button - fIsActive = kFALSE; - fApplyButton->SetState(kButtonDisabled); -} - -//______________________________________________________________________________ -void TGLGeometryEditor::DoButton() -{ - // Process 'Apply' - update the viewer object from GUI - if (TGButton *btn = (TGButton *)gTQSender) { - Int_t wid = btn->WidgetId(); - fViewer->ProcessGUIEvent(wid); - if (wid == kTBa1) { - fApplyButton->SetState(kButtonDisabled); - } - } -} - -//______________________________________________________________________________ -void TGLGeometryEditor::GetObjectData(Double_t *center, Double_t *scale) -{ - // Extract the GUI object data, return center in 3 component 'center' - // scale in 3 component 'scale' - center[0] = fGeomData[kCenterX]->GetNumber(); - center[1] = fGeomData[kCenterY]->GetNumber(); - center[2] = fGeomData[kCenterZ]->GetNumber(); - scale[0] = fGeomData[kScaleX]->GetNumber(); - scale[1] = fGeomData[kScaleY]->GetNumber(); - scale[2] = fGeomData[kScaleZ]->GetNumber(); -} - -//______________________________________________________________________________ -void TGLGeometryEditor::ValueSet(Long_t) -{ - // Process setting of value in edit box - activate 'Apply' button - if (!fIsActive)return; - fApplyButton->SetState(kButtonUp); -} - -//______________________________________________________________________________ -void TGLGeometryEditor::CreateCenterControls() -{ - // Create object center GUI - AddFrame(new TGLabel(this, "Object's center, X:"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 3, 3, 3, 3)); - fGeomData[kCenterX] = new TGNumberEntry(this, 0.0, 8, kNExc); - AddFrame(fGeomData[kCenterX], new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3)); - fGeomData[kCenterX]->Connect("ValueSet(Long_t)", "TGLGeometryEditor", - this, "ValueSet(Long_t)"); - - AddFrame(new TGLabel(this, "Object's center, Y:"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 3, 3, 3, 3)); - fGeomData[kCenterY] = new TGNumberEntry(this, 0.0, 8, kNEyc); - AddFrame(fGeomData[kCenterY], new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3)); - fGeomData[kCenterY]->Connect("ValueSet(Long_t)", "TGLGeometryEditor", - this, "ValueSet(Long_t)"); - - AddFrame(new TGLabel(this, "Object's center, Z:"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 3, 3, 3, 3)); - fGeomData[kCenterZ] = new TGNumberEntry(this, 0.0, 8, kNEzc); - AddFrame(fGeomData[kCenterZ], new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3)); - fGeomData[kCenterZ]->Connect("ValueSet(Long_t)", "TGLGeometryEditor", - this, "ValueSet(Long_t)"); -} - -//______________________________________________________________________________ -void TGLGeometryEditor::CreateStretchControls() -{ - // Create object scale GUI - AddFrame(new TGLabel(this, "Object's scale, X:"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 3, 3, 3, 3)); - fGeomData[kScaleX] = new TGNumberEntry(this, 1.0, 8, kNExs); - AddFrame(fGeomData[kScaleX], new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3)); - fGeomData[kScaleX]->Connect("ValueSet(Long_t)", "TGLGeometryEditor", - this, "ValueSet(Long_t)"); - - AddFrame(new TGLabel(this, "Object's scale, Y:"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 3, 3, 3, 3)); - fGeomData[kScaleY] = new TGNumberEntry(this, 1.0, 8, kNEys); - AddFrame(fGeomData[kScaleY], new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3)); - fGeomData[kScaleY]->Connect("ValueSet(Long_t)", "TGLGeometryEditor", - this, "ValueSet(Long_t)"); - - AddFrame(new TGLabel(this, "Object's scale, Z:"), new TGLayoutHints(kLHintsTop | kLHintsLeft, 3, 3, 3, 3)); - fGeomData[kScaleZ] = new TGNumberEntry(this, 1.0, 8, kNEzs); - AddFrame(fGeomData[kScaleZ], new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3)); - fGeomData[kScaleZ]->Connect("ValueSet(Long_t)", "TGLGeometryEditor", - this, "ValueSet(Long_t)"); - - fGeomData[kScaleX]->SetLimits(TGNumberFormat::kNELLimitMin, 0.1); - fGeomData[kScaleY]->SetLimits(TGNumberFormat::kNELLimitMin, 0.1); - fGeomData[kScaleZ]->SetLimits(TGNumberFormat::kNELLimitMin, 0.1); -} - -////////////////////////////////////////////////////////////////////////// -// // -// TGLClipEditor // -// // -// GL Viewer clipping shape editor GUI component // -////////////////////////////////////////////////////////////////////////// - -ClassImp(TGLClipEditor) - -//______________________________________________________________________________ -TGLClipEditor::TGLClipEditor(const TGWindow *parent, TGLSAViewer *v) : - TGCompositeFrame(parent, 100, 100, kVerticalFrame), - fViewer(v), fCurrentClip(kClipNone) -{ - // Construct clip editor GUI component, parented by window 'parent', - // bound to viewer 'v' - fTrash.SetOwner(kTRUE); - fL1 = new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3); - fTrash.AddLast(fL1); - fL2 = new TGLayoutHints(kLHintsTop | kLHintsLeft, 3, 3, 3, 3); - fTrash.AddLast(fL2); - CreateControls(); -} - -//______________________________________________________________________________ -TGLClipEditor::~TGLClipEditor() -{ -} - -//______________________________________________________________________________ -void TGLClipEditor::CreateControls() -{ - // Create GUI controls - clip tyep (none/plane/box) and plane/box properties - fTypeButtons = new TGButtonGroup(this, "Clip Type"); - fTrash.AddLast(fTypeButtons); - TGRadioButton * clipNone = new TGRadioButton(fTypeButtons, "None"); - fTrash.AddLast(clipNone); - TGRadioButton * clipPlane = new TGRadioButton(fTypeButtons, "Plane"); - fTrash.AddLast(clipPlane); - TGRadioButton * clipBox = new TGRadioButton(fTypeButtons, "Box"); - fTrash.AddLast(clipBox); - AddFrame(fTypeButtons, fL1); - fTypeButtons->Connect("Pressed(Int_t)", "TGLClipEditor", this, "ClipTypeChanged(Int_t)"); - - // Viewer Edit - fEdit = new TGCheckButton(this, "Show / Edit In Viewer", kTBda); - fTrash.AddLast(fEdit); - AddFrame(fEdit, fL1); - fEdit->Connect("Clicked()", "TGLClipEditor", this, "UpdateViewer()"); - - // Plane properties - fPlanePropFrame = new TGCompositeFrame(this); - fTrash.AddLast(fPlanePropFrame); - AddFrame(fPlanePropFrame, fL1); - TGLabel * label; - std::string planeStr[4] = { "aX + ", "bY +", "cZ + ", "d = 0" }; - UInt_t i; - for (i=0; i<4; i++) { - label = new TGLabel(fPlanePropFrame, planeStr[i].c_str()); - fTrash.AddLast(label); - fPlanePropFrame->AddFrame(label, fL2); - fPlaneProp[i] = new TGNumberEntry(fPlanePropFrame, 1., 8); - fTrash.AddLast(fPlaneProp[i]); - fPlanePropFrame->AddFrame(fPlaneProp[i], fL1); - fPlaneProp[i]->Connect("ValueSet(Long_t)", "TGLClipEditor", - this, "ClipValueChanged(Long_t)"); - } - - // Box properties - fBoxPropFrame = new TGCompositeFrame(this); - fTrash.AddLast(fBoxPropFrame); - AddFrame(fBoxPropFrame, fL1); - - std::string boxStr[6] = { "Center X", "Center Y", "Center Y", "Length X", "Length Y", "Length Z" }; - for (i=0; i<6; i++) { - label = new TGLabel(fBoxPropFrame, boxStr[i].c_str()); - fTrash.AddLast(label); - fBoxPropFrame->AddFrame(label, fL2); - fBoxProp[i] = new TGNumberEntry(fBoxPropFrame, 1., 8); - fTrash.AddLast(fBoxProp[i]); - fBoxPropFrame->AddFrame(fBoxProp[i], fL1); - fBoxProp[i]->Connect("ValueSet(Long_t)", "TGLClipEditor", - this, "ClipValueChanged(Long_t)"); - } - - // Apply button - fApplyButton = new TGTextButton(this, "Apply", kTBcpm); - fTrash.AddLast(fApplyButton); - AddFrame(fApplyButton, fL1); - fApplyButton->SetState(kButtonDisabled); - fApplyButton->Connect("Pressed()", "TGLClipEditor", this, "UpdateViewer()"); - - clipNone->SetState(kButtonDown); -} - -//______________________________________________________________________________ -void TGLClipEditor::HideParts() -{ - // Hide plane/box panels - HideFrame(fPlanePropFrame); - HideFrame(fBoxPropFrame); -} - -//______________________________________________________________________________ -void TGLClipEditor::ClipValueChanged(Long_t) -{ - // GUI value change - activate 'Apply' button - fApplyButton->SetState(kButtonUp); -} - -//______________________________________________________________________________ -void TGLClipEditor::ClipTypeChanged(Int_t id) -{ - // Clip type radio button changed - update viewer - if (id == 1) { - SetCurrent(kClipNone, kFALSE); - fEdit->SetState(kButtonDisabled); - } else { - if (fEdit->GetState() == kButtonDisabled) { - fEdit->SetState(kButtonUp); - } - SetCurrent(id == 2 ? kClipPlane : kClipBox, fEdit->IsDown()); - } - - // Internal GUI change - need to update the viewer - UpdateViewer(); -} - -//______________________________________________________________________________ -void TGLClipEditor::UpdateViewer() -{ - // Update viewer for GUI change - fViewer->ProcessGUIEvent(kTBcpm); - fApplyButton->SetState(kButtonDisabled); -} - -//______________________________________________________________________________ -void TGLClipEditor::GetState(EClipType type, Double_t data[6]) const -{ - // Fetch GUI state for clip if 'type' into 'data' vector - UInt_t i; - if (type == kClipNone) { - // Nothing to do - } else if (type == kClipPlane) { - for (i=0; i<4; i++) { - data[i] = fPlaneProp[i]->GetNumber(); - } - } else if (type == kClipBox) { - for (i=0; i<6; i++) { - data[i] = fBoxProp[i]->GetNumber(); - } - } else { - Error("TGLClipEditor::GetClipState", "Invalid clip type"); - } -} - -//______________________________________________________________________________ -void TGLClipEditor::SetState(EClipType type, const Double_t data[6]) -{ - // Set GUI state for clip 'type from 'data' vector - UInt_t i; - if (type == kClipNone) { - // Nothing to do - } else if (type == kClipPlane) { - for (i=0; i<4; i++) { - fPlaneProp[i]->SetNumber(data[i]); - } - } else if (type == kClipBox) { - for (i=0; i<6; i++) { - fBoxProp[i]->SetNumber(data[i]); - } - } else { - Error("TGLClipEditor::SetClipState", "Invalid clip type"); - } - fApplyButton->SetState(kButtonDisabled); -} - -//______________________________________________________________________________ -void TGLClipEditor::GetCurrent(EClipType & type, Bool_t & edit) const -{ - // Get current (active) GUI clip type into 'type', and in viewer edit - // state into 'edit' - type = fCurrentClip; - edit = fEdit->IsDown(); -} - -//______________________________________________________________________________ -void TGLClipEditor::SetCurrent(EClipType type, Bool_t edit) -{ - // Set current (active) GUI clip type from 'type' - fCurrentClip = type; - switch(fCurrentClip) { - case(kClipNone): { - fTypeButtons->SetButton(1); - HideFrame(fPlanePropFrame); - HideFrame(fBoxPropFrame); - break; - } - case(kClipPlane): { - fTypeButtons->SetButton(2); - ShowFrame(fPlanePropFrame); - HideFrame(fBoxPropFrame); - break; - } - case(kClipBox): { - fTypeButtons->SetButton(3); - HideFrame(fPlanePropFrame); - ShowFrame(fBoxPropFrame); - break; - } - default: { - Error("TGLClipEditor::SetCurrentClip", "Invalid clip type"); - break; - } - } - fEdit->SetDown(edit); -} - -////////////////////////////////////////////////////////////////////////// -// // -// TGLLightEditor // -// // -// GL Viewer lighting editor GUI component // -////////////////////////////////////////////////////////////////////////// - -ClassImp(TGLLightEditor) - -//______________________________________________________________________________ -TGLLightEditor::TGLLightEditor(const TGWindow *parent, TGLSAViewer *v) - :TGCompositeFrame(parent, 100, 100, kVerticalFrame),// | kRaisedFrame), - fViewer(v) -{ - // Construct light editor GUI component, parented by window 'parent', - // bound to viewer 'v' - fTrash.SetOwner(kTRUE); - TGGroupFrame *ligFrame = new TGGroupFrame(this, "Sources", kLHintsTop | kLHintsCenterX); - fTrash.AddLast(ligFrame); - ligFrame->SetTitlePos(TGGroupFrame::kLeft); - TGLayoutHints *l = new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 3, 3, 3, 3); - fTrash.AddLast(l); - AddFrame(ligFrame, l); - - TGMatrixLayout *ml = new TGMatrixLayout(ligFrame, 0, 1, 10); - ligFrame->SetLayoutManager(ml); - // ligFrame will delete the layout manager ml for us so don't add to fTrash - - fLights[kTop] = new TGCheckButton(ligFrame, "Top", kTBTop); - fLights[kTop]->Connect("Clicked()", "TGLLightEditor", this, "DoButton()"); - fLights[kTop]->SetState(kButtonDown); - fTrash.AddLast(fLights[kTop]); - fLights[kRight] = new TGCheckButton(ligFrame, "Right", kTBRight); - fLights[kRight]->Connect("Clicked()", "TGLLightEditor", this, "DoButton()"); - fLights[kRight]->SetState(kButtonDown); - fTrash.AddLast(fLights[kRight]); - fLights[kBottom] = new TGCheckButton(ligFrame, "Bottom", kTBBottom); - fLights[kBottom]->Connect("Clicked()", "TGLLightEditor", this, "DoButton()"); - fLights[kBottom]->SetState(kButtonDown); - fTrash.AddLast(fLights[kBottom]); - fLights[kLeft] = new TGCheckButton(ligFrame, "Left", kTBLeft); - fLights[kLeft]->Connect("Clicked()", "TGLLightEditor", this, "DoButton()"); - fLights[kLeft]->SetState(kButtonDown); - fTrash.AddLast(fLights[kLeft]); - fLights[kFront] = new TGCheckButton(ligFrame, "Front", kTBFront); - fLights[kFront]->Connect("Clicked()", "TGLLightEditor", this, "DoButton()"); - fLights[kFront]->SetState(kButtonDown); - fTrash.AddLast(fLights[kFront]); - - ligFrame->AddFrame(fLights[kTop]); - ligFrame->AddFrame(fLights[kRight]); - ligFrame->AddFrame(fLights[kBottom]); - ligFrame->AddFrame(fLights[kLeft]); - ligFrame->AddFrame(fLights[kFront]); -} - -//______________________________________________________________________________ -TGLLightEditor::~TGLLightEditor() -{ -} - -//______________________________________________________________________________ -void TGLLightEditor::DoButton() -{ - // Process light GUI change - send to viewer - TGButton *btn = (TGButton *) gTQSender; - Int_t id = btn->WidgetId(); - fViewer->ProcessGUIEvent(id); -} - -////////////////////////////////////////////////////////////////////////// -// // -// TGLGuideEditor // -// // -// GL Viewer guides editor GUI component // -////////////////////////////////////////////////////////////////////////// - -ClassImp(TGLGuideEditor) - -//______________________________________________________________________________ -TGLGuideEditor::TGLGuideEditor(const TGWindow *parent, TGLSAViewer *v) : - TGCompositeFrame(parent, 100, 100, kVerticalFrame), - fViewer(v), fAxesContainer(0), fReferenceContainer(0), - fReferenceOn(0), - fL1(0), fL2(0) -{ - // Construct guide editor GUI component, parented by window 'parent', - // bound to viewer 'v' - fTrash.SetOwner(kTRUE); - - fL1 = new TGLayoutHints(kLHintsTop | kLHintsCenterX | kLHintsExpandX, 0, 0, 1, 1); - fTrash.AddLast(fL1); - fL2 = new TGLayoutHints(kLHintsTop | kLHintsLeft, 0, 0, 3, 3); - fTrash.AddLast(fL2); - - // Axes container - fAxesContainer = new TGButtonGroup(this, "Axes"); - fTrash.AddLast(fAxesContainer); - AddFrame(fAxesContainer, fL1); - fAxesContainer->Connect("Pressed(Int_t)", "TGLGuideEditor", this, "Update()"); - - // Axes options - TGRadioButton * axesNone = new TGRadioButton(fAxesContainer, "None"); - fTrash.AddLast(axesNone); - TGRadioButton * axesEdge = new TGRadioButton(fAxesContainer, "Edge"); - fTrash.AddLast(axesEdge); - TGRadioButton * axesOrigins = new TGRadioButton(fAxesContainer, "Origin"); - fTrash.AddLast(axesOrigins); - - // Reference container - fReferenceContainer = new TGGroupFrame(this, "Reference Marker"); - fTrash.AddLast(fReferenceContainer); - AddFrame(fReferenceContainer, fL1); - - // Reference options - fReferenceOn = new TGCheckButton(fReferenceContainer, "Show"); - fTrash.AddLast(fReferenceOn); - fReferenceContainer->AddFrame(fReferenceOn, fL1); - fReferenceOn->Connect("Clicked()", "TGLGuideEditor", this, "Update()"); - - TGLabel * label = new TGLabel(fReferenceContainer, "X"); - fTrash.AddLast(label); - fReferenceContainer->AddFrame(label, fL2); - fReferencePos[0] = new TGNumberEntry(fReferenceContainer, 0.0, 8); - fTrash.AddLast(fReferencePos[0]); - fReferenceContainer->AddFrame(fReferencePos[0], fL1); - fReferencePos[0]->Connect("ValueSet(Long_t)", "TGLGuideEditor", - this, "Update()"); - - label = new TGLabel(fReferenceContainer, "Y"); - fTrash.AddLast(label); - fReferenceContainer->AddFrame(label, fL2); - fReferencePos[1] = new TGNumberEntry(fReferenceContainer, 0.0, 8); - fTrash.AddLast(fReferencePos[1]); - fReferenceContainer->AddFrame(fReferencePos[1], fL1); - fReferencePos[1]->Connect("ValueSet(Long_t)", "TGLGuideEditor", - this, "Update()"); - - label = new TGLabel(fReferenceContainer, "Z"); - fTrash.AddLast(label); - fReferenceContainer->AddFrame(label, fL2); - fReferencePos[2] = new TGNumberEntry(fReferenceContainer, 0.0, 8); - fTrash.AddLast(fReferencePos[2]); - fReferenceContainer->AddFrame(fReferencePos[2], fL1); - fReferencePos[2]->Connect("ValueSet(Long_t)", "TGLGuideEditor", - this, "Update()"); - axesNone->SetState(kButtonDown); -} - -//______________________________________________________________________________ -TGLGuideEditor::~TGLGuideEditor() -{ -} - -//______________________________________________________________________________ -void TGLGuideEditor::Update() -{ - // Update viewer with GUI state - fViewer->ProcessGUIEvent(kTBGuide); - UpdateReferencePos(); -} - -//______________________________________________________________________________ -void TGLGuideEditor::GetState(TGLViewer::EAxesType & axesType, Bool_t & referenceOn, Double_t referencePos[3]) const -{ - // Get GUI state into arguments: - // 'axesType' - axes type - one of EAxesType - kAxesNone/kAxesPlane/kAxesBox - // 'referenceOn' - reference marker on (visible) - // 'referencePos' - current reference position (vertex) - - // Button ids run from 1 - for (Int_t i = 1; i < 4; i++) { - TGButton * button = fAxesContainer->GetButton(i); - if (button && button->IsDown()) { - axesType = TGLViewer::EAxesType(i-1); - } - } - referenceOn = fReferenceOn->IsDown(); - referencePos[0] = fReferencePos[0]->GetNumber(); - referencePos[1] = fReferencePos[1]->GetNumber(); - referencePos[2] = fReferencePos[2]->GetNumber(); -} - -//______________________________________________________________________________ -void TGLGuideEditor::SetState(TGLViewer::EAxesType axesType, Bool_t referenceOn, const Double_t referencePos[3]) -{ - // Set GUI state from arguments: - // 'axesType' - axes type - one of EAxesType - kAxesNone/kAxesPlane/kAxesBox - // 'referenceOn' - reference marker on (visible) - // 'referencePos' - current reference position (vertex) - - // Button ids run from 1 - TGButton * button = fAxesContainer->GetButton(axesType+1); - if (button) { - button->SetDown(); - } - fReferenceOn->SetDown(referenceOn); - fReferencePos[0]->SetNumber(referencePos[0]); - fReferencePos[1]->SetNumber(referencePos[1]); - fReferencePos[2]->SetNumber(referencePos[2]); - UpdateReferencePos(); -} - -//______________________________________________________________________________ -void TGLGuideEditor::UpdateReferencePos() -{ - // Enable/disable reference position (x/y/z) number edits based on - // reference check box - fReferencePos[0]->SetState(fReferenceOn->IsDown()); - fReferencePos[1]->SetState(fReferenceOn->IsDown()); - fReferencePos[2]->SetState(fReferenceOn->IsDown()); -} -- GitLab