forked from root-project/root
-
Notifications
You must be signed in to change notification settings - Fork 0
/
TGLPShapeObjEditor.h
110 lines (82 loc) · 3.14 KB
/
TGLPShapeObjEditor.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
// @(#)root/gl:$Id$
// Author: Matevz Tadel 25/09/2006
#ifndef ROOT_TGLPShapeObjEditor
#define ROOT_TGLPShapeObjEditor
#include <memory>
#include "TGedFrame.h"
#include "TGLUtil.h"
#include "TGLPShapeRef.h"
class TGLPShapeObj;
class TGLayoutHints;
class TGCheckButton;
class TGNumberEntry;
class TGButtonGroup;
class TGroupFrame;
class TGHSlider;
class TGRadioButton;
class TGTabElement;
class TGButton;
class TGLViewer;
class TGTab;
class TGLWidget;
class TGLPShapeObjEditor : public TGedFrame,
public TGLPShapeRef
{
private:
enum ELightMode { kDiffuse, kAmbient, kSpecular, kEmission };
ELightMode fLMode;
TGLayoutHints fLb; //button layout
TGLayoutHints fLe; //num entry layout
TGLayoutHints fLl; //label layout
TGLayoutHints fLs; //slider layout
TGCompositeFrame *fGeoFrame; //orientation, clipping
// "Geometry" tab's controls
TGNumberEntry *fGeomData[6]; //position and clipping control
TGButton *fGeoApplyButton; //action button
// "Color" tab's controls
TGCompositeFrame *fColorFrame; //top frame for color componet control
TGLWidget *fMatView; //inner structure to handle sphere GL window
TGButton *fLightTypes[4]; //light type
TGHSlider *fRedSlider; //red component of selected material
TGHSlider *fGreenSlider; //green component of selected material
TGHSlider *fBlueSlider; //blue component of selected material
TGHSlider *fAlphaSlider; //alpha component of selected material lider;
TGHSlider *fShineSlider; //specular refelction of selected material
TGButton *fColorApplyButton; //apply to selected
TGButton *fColorApplyFamily; //apply to selected and family
Float_t fRGBA[17]; //color multiplet
Window_t fGLWin; //GL window with sphere
ULong_t fCtx; //GL context
TGLPShapeObj *fPShapeObj; //model
void CreateGeoControls();
void CreateColorControls();
virtual void DoRedraw();
public:
TGLPShapeObjEditor(const TGWindow *p = 0,
Int_t width = 140, Int_t height = 30,
UInt_t options = kChildFrame,
Pixel_t back = GetDefaultFrameBackground());
~TGLPShapeObjEditor();
// Virtuals from TGLPShapeRef
virtual void SetPShape(TGLPhysicalShape * shape);
virtual void PShapeModified();
virtual void SetModel(TObject* obj);
// geometry
void SetCenter(const Double_t *center);
void SetScale(const Double_t *scale);
void DoGeoButton();
void GetObjectData(Double_t *shift, Double_t *scale);
void GeoValueSet(Long_t unusedVal);
//colors
void CreateColorRadioButtons();
void CreateColorSliders();
void SetColorSlidersPos();
void DrawSphere()const;
void SetRGBA(const Float_t *rgba);
const Float_t *GetRGBA()const{return fRGBA;}
//color slots
void DoColorSlider(Int_t val);
void DoColorButton();
ClassDef(TGLPShapeObjEditor, 0); //GUI for editing attributes of a physical-shape.
};
#endif