// @(#)root/gl:$Name: $:$Id: TGLEditor.h,v 1.10 2005/06/01 12:38:25 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
class TGCheckButton;
class TViewerOpenGL;
class TGLayoutHints;
class TGNumberEntry;
class TGLMatView;
class TGHSlider;
class TGButton;
class TGCanvas;
class TGLabel;
enum EApplyButtonIds {
kTBcp,
kTBcpm,
kTBda,
kTBa,
kTBaf,
kTBTop,
kTBRight,
kTBBottom,
kTBLeft,
kTBFront,
kTBa1
};
class TGLColorEditor : public TGCompositeFrame {
friend class TGLMatView;
private:
TViewerOpenGL *fViewer;
TGLMatView *fMatView;
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;
TList fTrash;
public:
TGLColorEditor(const TGWindow *parent, TViewerOpenGL *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 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)
};
class TGLGeometryEditor : public TGCompositeFrame {
private:
enum {
kCenterX,
kCenterY,
kCenterZ,
kScaleX,
kScaleY,
kScaleZ,
kTot
};
TViewerOpenGL *fViewer;
TList fTrash;
TGLayoutHints *fL1, *fL2;
TGNumberEntry *fGeomData[kTot];
TGButton *fApplyButton;
Bool_t fIsActive;
public:
TGLGeometryEditor(const TGWindow *parent, TViewerOpenGL *viewer);
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)
};
class TGLSceneEditor : public TGCompositeFrame {
private:
enum {
kPlaneA,
kPlaneB,
kPlaneC,
kPlaneD,
kTot
};
TViewerOpenGL *fViewer;
TList fTrash;
TGLayoutHints *fL1, *fL2;
TGNumberEntry *fGeomData[kTot];
TGButton *fApplyButton;
TGCheckButton *fClipActivate;
TGCheckButton *fAxesCheck;
public:
TGLSceneEditor(const TGWindow *parent, TViewerOpenGL *viewer);
void GetPlaneEqn(Double_t *eqn);
void DoButton();
void ValueSet(Long_t unusedVal);
private:
void CreateControls();
TGLSceneEditor(const TGLSceneEditor &);
TGLSceneEditor &operator = (const TGLSceneEditor &);
ClassDef(TGLSceneEditor, 0);
};
class TGLLightEditor : public TGCompositeFrame {
private:
enum EBuiltInLight {
kTop,
kRight,
kBottom,
kLeft,
kFront,
kTot
};
TGButton *fLights[kTot];
TViewerOpenGL *fViewer;
TList fTrash;
public:
TGLLightEditor(const TGWindow *parent, TViewerOpenGL *viewer);
void DoButton();
ClassDef(TGLLightEditor, 0);
};
#endif
syntax highlighted by Code2HTML, v. 0.9.1