28#include "TGLIncludes.h"
78 fGeoFrame(0),fGeoApplyButton(0),
80 fRedSlider(0), fGreenSlider(0), fBlueSlider(0), fAlphaSlider(0), fShineSlider(0),
81 fColorApplyButton(0), fColorApplyFamily(0),
222 this,
"GeoValueSet(Long_t)");
231 this,
"GeoValueSet(Long_t)");
239 this,
"GeoValueSet(Long_t)");
252 this,
"GeoValueSet(Long_t)");
260 this,
"GeoValueSet(Long_t)");
268 this,
"GeoValueSet(Long_t)");
292 for (
Int_t i = 0; i < 17; ++i)
fRGBA[i] = rgba[i];
431 fRedSlider->
Connect(
"PositionChanged(Int_t)",
"TGLPShapeObjEditor",
this,
"DoColorSlider(Int_t)");
439 fGreenSlider->
Connect(
"PositionChanged(Int_t)",
"TGLPShapeObjEditor",
this,
"DoColorSlider(Int_t)");
447 fBlueSlider->
Connect(
"PositionChanged(Int_t)",
"TGLPShapeObjEditor",
this,
"DoColorSlider(Int_t)");
454 fShineSlider->
Connect(
"PositionChanged(Int_t)",
"TGLPShapeObjEditor",
this,
"DoColorSlider(Int_t)");
469 if (
fRGBA[16] >= 0.f)
485 GLUquadric *GetQuadric()
492 fQuad = gluNewQuadric();
494 Error(
"GetQuadric::Init",
"could not create quadric object");
504 gluDeleteQuadric(fQuad);
509 return singleton.fQuad;
520 gROOT->ProcessLineFast(
Form(
"((TGLPShapeObjEditor *)0x%lx)->DrawSphere()", (
ULong_t)
this));
528 glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
530 glEnable(GL_LIGHTING);
532 glEnable(GL_DEPTH_TEST);
533 glEnable(GL_CULL_FACE);
535 glMatrixMode(GL_PROJECTION);
537 glFrustum(-0.5, 0.5, -0.5, 0.5, 1., 10.);
538 glMatrixMode(GL_MODELVIEW);
540 Float_t ligPos[] = {0.f, 0.f, 0.f, 1.f};
541 glLightfv(GL_LIGHT0, GL_POSITION, ligPos);
542 glTranslated(0., 0., -3.);
544 const Float_t whiteColor[] = {1.f, 1.f, 1.f, 1.f};
545 const Float_t nullColor[] = {0.f, 0.f, 0.f, 1.f};
547 if (
fRGBA[16] < 0.f) {
548 glLightfv(GL_LIGHT0, GL_DIFFUSE,
fRGBA);
549 glLightfv(GL_LIGHT0, GL_AMBIENT,
fRGBA + 4);
550 glLightfv(GL_LIGHT0, GL_SPECULAR,
fRGBA + 8);
551 glMaterialfv(GL_FRONT, GL_DIFFUSE, whiteColor);
552 glMaterialfv(GL_FRONT, GL_AMBIENT, nullColor);
553 glMaterialfv(GL_FRONT, GL_SPECULAR, whiteColor);
554 glMaterialfv(GL_FRONT, GL_EMISSION, nullColor);
555 glMaterialf(GL_FRONT, GL_SHININESS, 60.f);
557 glLightfv(GL_LIGHT0, GL_DIFFUSE, whiteColor);
558 glLightfv(GL_LIGHT0, GL_AMBIENT, nullColor);
559 glLightfv(GL_LIGHT0, GL_SPECULAR, whiteColor);
560 glMaterialfv(GL_FRONT, GL_DIFFUSE,
fRGBA);
561 glMaterialfv(GL_FRONT, GL_AMBIENT,
fRGBA + 4);
562 glMaterialfv(GL_FRONT, GL_SPECULAR,
fRGBA + 8);
563 glMaterialfv(GL_FRONT, GL_EMISSION,
fRGBA + 12);
564 glMaterialf(GL_FRONT, GL_SHININESS,
fRGBA[16]);
568 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
569 GLUquadric * quad = GetQuadric();
571 glRotated(-90., 1., 0., 0.);
572 gluSphere(quad, 1., 100, 100);
include TDocParser_001 C image html pict1_TDocParser_001 png width
void Error(const char *location, const char *msgfmt,...)
R__EXTERN void * gTQSender
R__EXTERN TVirtualMutex * gROOTMutex
char * Form(const char *fmt,...)
#define R__LOCKGUARD(mutex)
virtual void SetLayoutManager(TGLayoutManager *l)
Set the layout manager for the composite frame.
virtual void AddFrame(TGFrame *f, TGLayoutHints *l=0)
Add frame to the composite frame using the specified layout hints.
virtual void DoRedraw()
Redraw the frame.
virtual void SetTitlePos(ETitlePos pos=kLeft)
GUI editor for TGLPShapeObj.
TGButton * fColorApplyFamily
void SetColorSlidersPos()
Update GUI sliders from internal data.
void CreateColorSliders()
Create GUI for setting light color.
TGCompositeFrame * fColorFrame
TGButton * fLightTypes[4]
void CreateGeoControls()
Create GUI for setting scale and position.
TGNumberEntry * fGeomData[6]
void GeoValueSet(Long_t unusedVal)
Process setting of value in edit box - activate 'Apply' button.
virtual void PShapeModified()
Shape has been modified.
TGButton * fGeoApplyButton
~TGLPShapeObjEditor()
Destroy color editor GUI component.
void SetScale(const Double_t *scale)
Set internal scale data from 3 component 'c'.
TGLPShapeObj * fPShapeObj
TGButton * fColorApplyButton
TGLPShapeObjEditor(const TGWindow *p=0, Int_t width=140, Int_t height=30, UInt_t options=kChildFrame, Pixel_t back=GetDefaultFrameBackground())
Constructor of TGLPhysicalShape editor GUI.
void DoColorButton()
Process button action.
void DrawSphere() const
Draw local sphere reflecting current color options.
virtual void DoRedraw()
Redraw widget. Render sphere and pass to base-class.
void CreateColorControls()
Create widgets to chose colors component and its RGBA values on fGedEditor model or family it belongs...
virtual void SetPShape(TGLPhysicalShape *shape)
Shape has changed.
TGCompositeFrame * fGeoFrame
virtual void SetModel(TObject *obj)
Sets model or disables/hides viewer.
const Float_t * GetRGBA() const
void SetRGBA(const Float_t *rgba)
Set color sliders from 17 component 'rgba'.
void CreateColorRadioButtons()
Create Diffuse/Ambient/Specular/Emissive radio buttons and sub-frames.
void SetCenter(const Double_t *center)
Set internal center data from 3 component 'c'.
void DoGeoButton()
Process 'Apply' - update the viewer object from GUI.
void GetObjectData(Double_t *shift, Double_t *scale)
Extract the GUI object data, return center in 3 component 'center' scale in 3 component 'scale'.
void DoColorSlider(Int_t val)
Process slider movement.
Wrap TGLPysicalShape into TObject so that it can be edited using GED.
TGLPhysicalShape * fPShape
virtual void SetPShape(TGLPhysicalShape *shape)
Set the shape.
TGLPhysicalShape * fPShape
Concrete physical shape - a GL drawable.
void Scale(const TGLVector3 &scale)
const Float_t * Color() const
TGLVector3 GetScale() const
void SetColor(const Float_t rgba[17])
Set full color attributes - see OpenGL material documentation for full description.
TGLVertex3 GetTranslation() const
void SetColorOnFamily(const Float_t rgba[17])
Set full color attributes to all physicals sharing the same logical with this object.
void SetTranslation(const TGLVertex3 &translation)
3 component (x/y/z) vector class.
3 component (x/y/z) vertex class.
const Double_t * CArr() const
void RequestDraw(Short_t LOD=TGLRnrCtx::kLODMed)
Post request for redraw of viewer at level of detail 'LOD' Request is directed via cross thread gVirt...
virtual void SetNumber(Double_t val)
virtual void SetLimits(ELimit limits=TGNumberFormat::kNELNoLimits, Double_t min=0, Double_t max=1)
virtual Double_t GetNumber() const
virtual void SetPosition(Int_t pos)
virtual void SetRange(Int_t min, Int_t max)
virtual void SetModel(TVirtualPad *pad, TObject *obj, Int_t event, Bool_t force=kFALSE)
Activate object editors according to the selected object.
virtual TVirtualPad * GetPad() const
virtual TObject * GetModel() const
virtual TGVerticalFrame * CreateEditorTabSubFrame(const char *name)
Create a vertical frame to be used by 'owner' in extra tab 'name'.
Mother of all ROOT objects.
Bool_t Connect(const char *signal, const char *receiver_class, void *receiver, const char *slot)
Non-static method is used to connect from the signal of this object to the receiver slot.
void Init(TClassEdit::TInterpreterLookupHelper *helper)
static constexpr double s