00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012 #include "TGFrame.h"
00013 #include "TGLayout.h"
00014 #include "TGLWidget.h"
00015 #include "TGLSAFrame.h"
00016 #include "TString.h"
00017 #include "TGLPShapeObj.h"
00018 #include "TGLPhysicalShape.h"
00019 #include "TGLLogicalShape.h"
00020 #include "TGLEmbeddedViewer.h"
00021 #include "TGLEventHandler.h"
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031 ClassImp(TGLEmbeddedViewer);
00032
00033
00034 TGLEmbeddedViewer::TGLEmbeddedViewer(const TGWindow *parent, TVirtualPad *pad,
00035 Int_t border) :
00036 TGLViewer(pad, 0, 0, 400, 300),
00037 fFrame(0),
00038 fBorder(border)
00039 {
00040
00041
00042
00043
00044 Init(parent);
00045 }
00046
00047
00048 TGLEmbeddedViewer::TGLEmbeddedViewer(const TGWindow *parent, TVirtualPad *pad,
00049 TGedEditor *ged, Int_t border) :
00050 TGLViewer(pad, 0, 0, 400, 300),
00051 fFrame(0),
00052 fBorder(border)
00053 {
00054
00055
00056
00057
00058 fGedEditor = ged;
00059 Init(parent);
00060 }
00061
00062
00063 TGLEmbeddedViewer::~TGLEmbeddedViewer()
00064 {
00065
00066
00067 delete fFrame;
00068 fGLWidget = 0;
00069 }
00070
00071
00072 void TGLEmbeddedViewer::Init(const TGWindow *parent)
00073 {
00074
00075
00076 fFrame = new TGCompositeFrame(parent);
00077
00078 CreateFrames();
00079
00080 fFrame->MapSubwindows();
00081 fFrame->Resize(fFrame->GetDefaultSize());
00082 fFrame->Resize(400, 300);
00083 }
00084
00085
00086 void TGLEmbeddedViewer::CreateFrames()
00087 {
00088
00089
00090 fGLWidget = TGLWidget::Create(fFrame, kTRUE, kTRUE, 0, 10, 10);
00091
00092
00093 fEventHandler = new TGLEventHandler(0, this);
00094 fGLWidget->SetEventHandler(fEventHandler);
00095
00096 fFrame->AddFrame(fGLWidget, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,
00097 fBorder, fBorder, fBorder, fBorder));
00098 }
00099
00100
00101 void TGLEmbeddedViewer::CreateGLWidget()
00102 {
00103
00104
00105
00106 if (fGLWidget) {
00107 Error("CreateGLWidget", "Widget already exists.");
00108 return;
00109 }
00110
00111 fGLWidget = TGLWidget::Create(fFrame, kTRUE, kTRUE, 0, 10, 10);
00112 fGLWidget->SetEventHandler(fEventHandler);
00113
00114 fFrame->AddFrame(fGLWidget, new TGLayoutHints(kLHintsExpandX | kLHintsExpandY,
00115 fBorder, fBorder, fBorder, fBorder));
00116 fFrame->Layout();
00117
00118 fGLWidget->MapWindow();
00119 }
00120
00121
00122 void TGLEmbeddedViewer::DestroyGLWidget()
00123 {
00124
00125
00126
00127 if (fGLWidget == 0) {
00128 Error("DestroyGLWidget", "Widget does not exist.");
00129 return;
00130 }
00131
00132 fGLWidget->UnmapWindow();
00133 fGLWidget->SetEventHandler(0);
00134
00135 fFrame->RemoveFrame(fGLWidget);
00136 fGLWidget->DeleteWindow();
00137 fGLWidget = 0;
00138 }