#include "TRootEmbeddedCanvas.h"
#include "TCanvas.h"
#include "TROOT.h"
#include "Riostream.h"
#include "TStyle.h"
#include "TPluginManager.h"
#include "TVirtualGL.h"
#include "TGDNDManager.h"
#include "TBufferFile.h"
#include "TImage.h"
#include "TClass.h"
#include "TUrl.h"
class TRootEmbeddedContainer : public TGCompositeFrame {
private:
TRootEmbeddedCanvas *fCanvas;
public:
TRootEmbeddedContainer(TRootEmbeddedCanvas *c, Window_t id, const TGWindow *parent);
Bool_t HandleButton(Event_t *ev)
{ return fCanvas->HandleContainerButton(ev); }
Bool_t HandleDoubleClick(Event_t *ev)
{ return fCanvas->HandleContainerDoubleClick(ev); }
Bool_t HandleConfigureNotify(Event_t *ev)
{ TGFrame::HandleConfigureNotify(ev);
return fCanvas->HandleContainerConfigure(ev); }
Bool_t HandleKey(Event_t *ev)
{ return fCanvas->HandleContainerKey(ev); }
Bool_t HandleMotion(Event_t *ev)
{ return fCanvas->HandleContainerMotion(ev); }
Bool_t HandleExpose(Event_t *ev)
{ return fCanvas->HandleContainerExpose(ev); }
Bool_t HandleCrossing(Event_t *ev)
{ return fCanvas->HandleContainerCrossing(ev); }
void SetEditable(Bool_t) { }
};
TRootEmbeddedContainer::TRootEmbeddedContainer(TRootEmbeddedCanvas *c, Window_t id,
const TGWindow *p) : TGCompositeFrame(gClient, id, p)
{
fCanvas = c;
gVirtualX->GrabButton(fId, kAnyButton, kAnyModifier,
kButtonPressMask | kButtonReleaseMask |
kPointerMotionMask, kNone, kNone);
AddInput(kKeyPressMask | kKeyReleaseMask | kPointerMotionMask |
kExposureMask | kStructureNotifyMask | kLeaveWindowMask);
fEditDisabled = kEditDisableGrab;
}
ClassImp(TRootEmbeddedCanvas)
TRootEmbeddedCanvas::TRootEmbeddedCanvas(const char *name, const TGWindow *p,
UInt_t w, UInt_t h, UInt_t options, ULong_t back)
: TGCanvas(p, w, h, options, back)
{
fCanvas = 0;
fButton = 0;
fAutoFit = kTRUE;
fEditDisabled = kEditDisableLayout;
fCWinId = -1;
if (gStyle->GetCanvasPreferGL()) {
if (!gGLManager) {
TString x = "win32";
if (gVirtualX->InheritsFrom("TGX11"))
x = "x11";
else if (gVirtualX->InheritsFrom("TGCocoa"))
x = "osx";
TPluginHandler *ph = gROOT->GetPluginManager()->FindHandler("TGLManager", x);
if (ph && ph->LoadPlugin() != -1) {
if (!ph->ExecPlugin(0)) {
Warning("CreateCanvas",
"Cannot load GL, will use default canvas imp instead\n");
}
}
}
if (gGLManager)
fCWinId = gGLManager->InitGLWindow((ULong_t)GetViewPort()->GetId());
if (!gGLManager || fCWinId == -1)
gStyle->SetCanvasPreferGL(kFALSE);
}
if (fCWinId == -1)
fCWinId = gVirtualX->InitWindow((ULong_t)GetViewPort()->GetId());
Window_t win = gVirtualX->GetWindowID(fCWinId);
fCanvasContainer = new TRootEmbeddedContainer(this, win, GetViewPort());
SetContainer(fCanvasContainer);
TString cname;
if (name) cname = name;
else cname = TString::Format("%s_canvas", GetName());
fCanvas = new TCanvas(cname.Data(), w, h, fCWinId);
fDNDTypeList = new Atom_t[3];
fDNDTypeList[0] = gVirtualX->InternAtom("application/root", kFALSE);
fDNDTypeList[1] = gVirtualX->InternAtom("text/uri-list", kFALSE);
fDNDTypeList[2] = 0;
gVirtualX->SetDNDAware(fId, fDNDTypeList);
SetDNDTarget(kTRUE);
if (!p) {
fCanvas->SetBorderMode(0);
MapSubwindows();
Resize(100, 100);
}
}
TRootEmbeddedCanvas::~TRootEmbeddedCanvas()
{
if (!MustCleanup()) {
delete fCanvas;
delete fCanvasContainer;
}
delete [] fDNDTypeList;
}
void TRootEmbeddedCanvas::AdoptCanvas(TCanvas *c)
{
if(c == 0) return;
c->EmbedInto(fCWinId, fWidth, fHeight);
fCanvas = c;
}
Bool_t TRootEmbeddedCanvas::HandleContainerButton(Event_t *event)
{
if (!fCanvas) return kTRUE;
Int_t button = event->fCode;
Int_t x = event->fX;
Int_t y = event->fY;
if (event->fType == kButtonPress) {
fButton = button;
if (button == kButton1) {
if (event->fState & kKeyShiftMask)
fCanvas->HandleInput(EEventType(7), x, y);
else
fCanvas->HandleInput(kButton1Down, x, y);
}
if (button == kButton2)
fCanvas->HandleInput(kButton2Down, x, y);
if (button == kButton3) {
fCanvas->HandleInput(kButton3Down, x, y);
fButton = 0;
}
} else if (event->fType == kButtonRelease) {
if (button == kButton1)
fCanvas->HandleInput(kButton1Up, x, y);
if (button == kButton2)
fCanvas->HandleInput(kButton2Up, x, y);
if (button == kButton3)
fCanvas->HandleInput(kButton3Up, x, y);
if (button == kButton4)
fCanvas->HandleInput(EEventType(5), x, y);
if (button == kButton5)
fCanvas->HandleInput(EEventType(6), x, y);
fButton = 0;
}
return kTRUE;
}
Bool_t TRootEmbeddedCanvas::HandleContainerDoubleClick(Event_t *event)
{
if (!fCanvas) return kTRUE;
Int_t button = event->fCode;
Int_t x = event->fX;
Int_t y = event->fY;
if (button == kButton1)
fCanvas->HandleInput(kButton1Double, x, y);
if (button == kButton2)
fCanvas->HandleInput(kButton2Double, x, y);
if (button == kButton3)
fCanvas->HandleInput(kButton3Double, x, y);
return kTRUE;
}
Bool_t TRootEmbeddedCanvas::HandleContainerConfigure(Event_t *)
{
if (fAutoFit && fCanvas) {
fCanvas->Resize();
fCanvas->Update();
}
return kTRUE;
}
Bool_t TRootEmbeddedCanvas::HandleContainerKey(Event_t *event)
{
static EGEventType previous_event = kOtherEvent;
static UInt_t previous_keysym = 0;
if (!fCanvas) return kTRUE;
if (event->fType == kGKeyPress) {
fButton = event->fCode;
UInt_t keysym;
char str[2];
gVirtualX->LookupString(event, str, sizeof(str), keysym);
if (str[0] == kESC){
gROOT->SetEscape();
fCanvas->HandleInput(kButton1Up, 0, 0);
fCanvas->HandleInput(kMouseMotion, 0, 0);
gPad->Modified();
return kTRUE;
}
if (str[0] == 3)
gROOT->SetInterrupt();
if (keysym > 0x1011 && keysym < 0x1016) {
Window_t dum1, dum2, wid;
UInt_t mask = 0;
Int_t mx, my, tx, ty;
wid = gVirtualX->GetDefaultRootWindow();
gVirtualX->QueryPointer(wid, dum1, dum2, mx, my, mx, my, mask);
gVirtualX->TranslateCoordinates(gClient->GetDefaultRoot()->GetId(),
fCanvasContainer->GetId(),
mx, my, tx, ty, dum1);
fCanvas->HandleInput(kArrowKeyPress, tx, ty);
if ((previous_keysym == keysym) && (previous_event == kGKeyPress)) {
switch (keysym) {
case 0x1012:
gVirtualX->Warp(--mx, my, wid); --tx;
break;
case 0x1013:
gVirtualX->Warp(mx, --my, wid); --ty;
break;
case 0x1014:
gVirtualX->Warp(++mx, my, wid); ++tx;
break;
case 0x1015:
gVirtualX->Warp(mx, ++my, wid); ++ty;
break;
default:
break;
}
fCanvas->HandleInput(kArrowKeyRelease, tx, ty);
}
previous_keysym = keysym;
}
else {
fCanvas->HandleInput(kKeyPress, str[0], keysym);
}
} else if (event->fType == kKeyRelease) {
UInt_t keysym;
char str[2];
gVirtualX->LookupString(event, str, sizeof(str), keysym);
if (keysym > 0x1011 && keysym < 0x1016) {
Window_t dum1, dum2, wid;
UInt_t mask = 0;
Int_t mx, my, tx, ty;
wid = gVirtualX->GetDefaultRootWindow();
gVirtualX->QueryPointer(wid, dum1, dum2, mx, my, mx, my, mask);
switch (keysym) {
case 0x1012:
gVirtualX->Warp(--mx, my, wid);
break;
case 0x1013:
gVirtualX->Warp(mx, --my, wid);
break;
case 0x1014:
gVirtualX->Warp(++mx, my, wid);
break;
case 0x1015:
gVirtualX->Warp(mx, ++my, wid);
break;
default:
break;
}
gVirtualX->TranslateCoordinates(gClient->GetDefaultRoot()->GetId(),
fCanvasContainer->GetId(),
mx, my, tx, ty, dum1);
fCanvas->HandleInput(kArrowKeyRelease, tx, ty);
previous_keysym = keysym;
}
fButton = 0;
}
previous_event = event->fType;
return kTRUE;
}
Bool_t TRootEmbeddedCanvas::HandleContainerMotion(Event_t *event)
{
if (!fCanvas) return kTRUE;
Int_t x = event->fX;
Int_t y = event->fY;
if (fButton == 0)
fCanvas->HandleInput(kMouseMotion, x, y);
if (fButton == kButton1) {
if (event->fState & kKeyShiftMask)
fCanvas->HandleInput(EEventType(8), x, y);
else
fCanvas->HandleInput(kButton1Motion, x, y);
}
if (fButton == kButton2)
fCanvas->HandleInput(kButton2Motion, x, y);
return kTRUE;
}
Bool_t TRootEmbeddedCanvas::HandleContainerExpose(Event_t *event)
{
if (!fCanvas) return kTRUE;
if (event->fCount == 0)
fCanvas->Flush();
return kTRUE;
}
Bool_t TRootEmbeddedCanvas::HandleContainerCrossing(Event_t *event)
{
if (!fCanvas) return kTRUE;
Int_t x = event->fX;
Int_t y = event->fY;
if (event->fType == kLeaveNotify && event->fCode == kNotifyNormal)
fCanvas->HandleInput(kMouseLeave, x, y);
return kTRUE;
}
Bool_t TRootEmbeddedCanvas::HandleDNDDrop(TDNDData *data)
{
static Atom_t rootObj = gVirtualX->InternAtom("application/root", kFALSE);
static Atom_t uriObj = gVirtualX->InternAtom("text/uri-list", kFALSE);
if (data->fDataType == rootObj) {
TBufferFile buf(TBuffer::kRead, data->fDataLength, (void *)data->fData);
buf.SetReadMode();
TObject *obj = (TObject *)buf.ReadObjectAny(TObject::Class());
if (!obj) return kTRUE;
gPad->Clear();
if (obj->InheritsFrom("TKey")) {
TObject *object = (TObject *)gROOT->ProcessLine(Form("((TKey *)0x%lx)->ReadObj();", (ULong_t)obj));
if (!object) return kTRUE;
if (object->InheritsFrom("TGraph"))
object->Draw("ALP");
else if (object->InheritsFrom("TImage"))
object->Draw("x");
else if (object->IsA()->GetMethodAllAny("Draw"))
object->Draw();
}
else if (obj->InheritsFrom("TGraph"))
obj->Draw("ALP");
else if (obj->IsA()->GetMethodAllAny("Draw"))
obj->Draw();
gPad->Modified();
gPad->Update();
return kTRUE;
}
else if (data->fDataType == uriObj) {
TString sfname((char *)data->fData);
if (sfname.Length() > 7) {
sfname.ReplaceAll("\r\n", "");
TUrl uri(sfname.Data());
if (sfname.EndsWith(".bmp") ||
sfname.EndsWith(".gif") ||
sfname.EndsWith(".jpg") ||
sfname.EndsWith(".png") ||
sfname.EndsWith(".ps") ||
sfname.EndsWith(".eps") ||
sfname.EndsWith(".pdf") ||
sfname.EndsWith(".tiff") ||
sfname.EndsWith(".xpm")) {
TImage *img = TImage::Open(uri.GetFile());
if (img) {
img->Draw("x");
img->SetEditable(kTRUE);
}
}
gPad->Modified();
gPad->Update();
}
}
return kFALSE;
}
Atom_t TRootEmbeddedCanvas::HandleDNDPosition(Int_t , Int_t , Atom_t action,
Int_t xroot, Int_t yroot)
{
Int_t px = 0, py = 0;
Window_t wtarget;
gVirtualX->TranslateCoordinates(gClient->GetDefaultRoot()->GetId(),
gVirtualX->GetWindowID(fCanvas->GetCanvasID()),
xroot, yroot, px, py, wtarget);
TPad *pad = fCanvas->Pick(px, py, 0);
if (pad) {
pad->cd();
gROOT->SetSelectedPad(pad);
pad->Update();
}
return action;
}
Atom_t TRootEmbeddedCanvas::HandleDNDEnter(Atom_t *typelist)
{
static Atom_t rootObj = gVirtualX->InternAtom("application/root", kFALSE);
static Atom_t uriObj = gVirtualX->InternAtom("text/uri-list", kFALSE);
Atom_t ret = kNone;
for (int i = 0; typelist[i] != kNone; ++i) {
if (typelist[i] == rootObj)
ret = rootObj;
if (typelist[i] == uriObj)
ret = uriObj;
}
return ret;
}
Bool_t TRootEmbeddedCanvas::HandleDNDLeave()
{
return kTRUE;
}
void TRootEmbeddedCanvas::SavePrimitive(ostream &out, Option_t *option )
{
if (!GetCanvas()) return;
if (fBackground != GetDefaultFrameBackground()) SaveUserColor(out, option);
char quote ='"';
out << endl << " // embedded canvas" << endl;
out << " TRootEmbeddedCanvas *";
out << GetName() << " = new TRootEmbeddedCanvas(0" << "," << fParent->GetName()
<< "," << GetWidth() << "," << GetHeight();
if (fBackground == GetDefaultFrameBackground()) {
if (GetOptions() == (kSunkenFrame | kDoubleBorder)) {
out <<");" << endl;
} else {
out << "," << GetOptionString() <<");" << endl;
}
} else {
out << "," << GetOptionString() << ",ucolor);" << endl;
}
if (option && strstr(option, "keep_names"))
out << " " << GetName() << "->SetName(\"" << GetName() << "\");" << endl;
out << " Int_t w" << GetName() << " = " << GetName()
<< "->GetCanvasWindowId();" << endl;
static int n = 123;
TString cname = TString::Format("c%d", n);
out << " TCanvas *";
out << cname << " = new TCanvas(";
out << quote << cname.Data() << quote << ", 10, 10, w"
<< GetName() << ");" << endl;
out << " " << GetName() << "->AdoptCanvas(" << cname
<< ");" << endl;
n++;
}
TRootEmbeddedCanvas.cxx:1 TRootEmbeddedCanvas.cxx:2 TRootEmbeddedCanvas.cxx:3 TRootEmbeddedCanvas.cxx:4 TRootEmbeddedCanvas.cxx:5 TRootEmbeddedCanvas.cxx:6 TRootEmbeddedCanvas.cxx:7 TRootEmbeddedCanvas.cxx:8 TRootEmbeddedCanvas.cxx:9 TRootEmbeddedCanvas.cxx:10 TRootEmbeddedCanvas.cxx:11 TRootEmbeddedCanvas.cxx:12 TRootEmbeddedCanvas.cxx:13 TRootEmbeddedCanvas.cxx:14 TRootEmbeddedCanvas.cxx:15 TRootEmbeddedCanvas.cxx:16 TRootEmbeddedCanvas.cxx:17 TRootEmbeddedCanvas.cxx:18 TRootEmbeddedCanvas.cxx:19 TRootEmbeddedCanvas.cxx:20 TRootEmbeddedCanvas.cxx:21 TRootEmbeddedCanvas.cxx:22 TRootEmbeddedCanvas.cxx:23 TRootEmbeddedCanvas.cxx:24 TRootEmbeddedCanvas.cxx:25 TRootEmbeddedCanvas.cxx:26 TRootEmbeddedCanvas.cxx:27 TRootEmbeddedCanvas.cxx:28 TRootEmbeddedCanvas.cxx:29 TRootEmbeddedCanvas.cxx:30 TRootEmbeddedCanvas.cxx:31 TRootEmbeddedCanvas.cxx:32 TRootEmbeddedCanvas.cxx:33 TRootEmbeddedCanvas.cxx:34 TRootEmbeddedCanvas.cxx:35 TRootEmbeddedCanvas.cxx:36 TRootEmbeddedCanvas.cxx:37 TRootEmbeddedCanvas.cxx:38 TRootEmbeddedCanvas.cxx:39 TRootEmbeddedCanvas.cxx:40 TRootEmbeddedCanvas.cxx:41 TRootEmbeddedCanvas.cxx:42 TRootEmbeddedCanvas.cxx:43 TRootEmbeddedCanvas.cxx:44 TRootEmbeddedCanvas.cxx:45 TRootEmbeddedCanvas.cxx:46 TRootEmbeddedCanvas.cxx:47 TRootEmbeddedCanvas.cxx:48 TRootEmbeddedCanvas.cxx:49 TRootEmbeddedCanvas.cxx:50 TRootEmbeddedCanvas.cxx:51 TRootEmbeddedCanvas.cxx:52 TRootEmbeddedCanvas.cxx:53 TRootEmbeddedCanvas.cxx:54 TRootEmbeddedCanvas.cxx:55 TRootEmbeddedCanvas.cxx:56 TRootEmbeddedCanvas.cxx:57 TRootEmbeddedCanvas.cxx:58 TRootEmbeddedCanvas.cxx:59 TRootEmbeddedCanvas.cxx:60 TRootEmbeddedCanvas.cxx:61 TRootEmbeddedCanvas.cxx:62 TRootEmbeddedCanvas.cxx:63 TRootEmbeddedCanvas.cxx:64 TRootEmbeddedCanvas.cxx:65 TRootEmbeddedCanvas.cxx:66 TRootEmbeddedCanvas.cxx:67 TRootEmbeddedCanvas.cxx:68 TRootEmbeddedCanvas.cxx:69 TRootEmbeddedCanvas.cxx:70 TRootEmbeddedCanvas.cxx:71 TRootEmbeddedCanvas.cxx:72 TRootEmbeddedCanvas.cxx:73 TRootEmbeddedCanvas.cxx:74 TRootEmbeddedCanvas.cxx:75 TRootEmbeddedCanvas.cxx:76 TRootEmbeddedCanvas.cxx:77 TRootEmbeddedCanvas.cxx:78 TRootEmbeddedCanvas.cxx:79 TRootEmbeddedCanvas.cxx:80 TRootEmbeddedCanvas.cxx:81 TRootEmbeddedCanvas.cxx:82 TRootEmbeddedCanvas.cxx:83 TRootEmbeddedCanvas.cxx:84 TRootEmbeddedCanvas.cxx:85 TRootEmbeddedCanvas.cxx:86 TRootEmbeddedCanvas.cxx:87 TRootEmbeddedCanvas.cxx:88 TRootEmbeddedCanvas.cxx:89 TRootEmbeddedCanvas.cxx:90 TRootEmbeddedCanvas.cxx:91 TRootEmbeddedCanvas.cxx:92 TRootEmbeddedCanvas.cxx:93 TRootEmbeddedCanvas.cxx:94 TRootEmbeddedCanvas.cxx:95 TRootEmbeddedCanvas.cxx:96 TRootEmbeddedCanvas.cxx:97 TRootEmbeddedCanvas.cxx:98 TRootEmbeddedCanvas.cxx:99 TRootEmbeddedCanvas.cxx:100 TRootEmbeddedCanvas.cxx:101 TRootEmbeddedCanvas.cxx:102 TRootEmbeddedCanvas.cxx:103 TRootEmbeddedCanvas.cxx:104 TRootEmbeddedCanvas.cxx:105 TRootEmbeddedCanvas.cxx:106 TRootEmbeddedCanvas.cxx:107 TRootEmbeddedCanvas.cxx:108 TRootEmbeddedCanvas.cxx:109 TRootEmbeddedCanvas.cxx:110 TRootEmbeddedCanvas.cxx:111 TRootEmbeddedCanvas.cxx:112 TRootEmbeddedCanvas.cxx:113 TRootEmbeddedCanvas.cxx:114 TRootEmbeddedCanvas.cxx:115 TRootEmbeddedCanvas.cxx:116 TRootEmbeddedCanvas.cxx:117 TRootEmbeddedCanvas.cxx:118 TRootEmbeddedCanvas.cxx:119 TRootEmbeddedCanvas.cxx:120 TRootEmbeddedCanvas.cxx:121 TRootEmbeddedCanvas.cxx:122 TRootEmbeddedCanvas.cxx:123 TRootEmbeddedCanvas.cxx:124 TRootEmbeddedCanvas.cxx:125 TRootEmbeddedCanvas.cxx:126 TRootEmbeddedCanvas.cxx:127 TRootEmbeddedCanvas.cxx:128 TRootEmbeddedCanvas.cxx:129 TRootEmbeddedCanvas.cxx:130 TRootEmbeddedCanvas.cxx:131 TRootEmbeddedCanvas.cxx:132 TRootEmbeddedCanvas.cxx:133 TRootEmbeddedCanvas.cxx:134 TRootEmbeddedCanvas.cxx:135 TRootEmbeddedCanvas.cxx:136 TRootEmbeddedCanvas.cxx:137 TRootEmbeddedCanvas.cxx:138 TRootEmbeddedCanvas.cxx:139 TRootEmbeddedCanvas.cxx:140 TRootEmbeddedCanvas.cxx:141 TRootEmbeddedCanvas.cxx:142 TRootEmbeddedCanvas.cxx:143 TRootEmbeddedCanvas.cxx:144 TRootEmbeddedCanvas.cxx:145 TRootEmbeddedCanvas.cxx:146 TRootEmbeddedCanvas.cxx:147 TRootEmbeddedCanvas.cxx:148 TRootEmbeddedCanvas.cxx:149 TRootEmbeddedCanvas.cxx:150 TRootEmbeddedCanvas.cxx:151 TRootEmbeddedCanvas.cxx:152 TRootEmbeddedCanvas.cxx:153 TRootEmbeddedCanvas.cxx:154 TRootEmbeddedCanvas.cxx:155 TRootEmbeddedCanvas.cxx:156 TRootEmbeddedCanvas.cxx:157 TRootEmbeddedCanvas.cxx:158 TRootEmbeddedCanvas.cxx:159 TRootEmbeddedCanvas.cxx:160 TRootEmbeddedCanvas.cxx:161 TRootEmbeddedCanvas.cxx:162 TRootEmbeddedCanvas.cxx:163 TRootEmbeddedCanvas.cxx:164 TRootEmbeddedCanvas.cxx:165 TRootEmbeddedCanvas.cxx:166 TRootEmbeddedCanvas.cxx:167 TRootEmbeddedCanvas.cxx:168 TRootEmbeddedCanvas.cxx:169 TRootEmbeddedCanvas.cxx:170 TRootEmbeddedCanvas.cxx:171 TRootEmbeddedCanvas.cxx:172 TRootEmbeddedCanvas.cxx:173 TRootEmbeddedCanvas.cxx:174 TRootEmbeddedCanvas.cxx:175 TRootEmbeddedCanvas.cxx:176 TRootEmbeddedCanvas.cxx:177 TRootEmbeddedCanvas.cxx:178 TRootEmbeddedCanvas.cxx:179 TRootEmbeddedCanvas.cxx:180 TRootEmbeddedCanvas.cxx:181 TRootEmbeddedCanvas.cxx:182 TRootEmbeddedCanvas.cxx:183 TRootEmbeddedCanvas.cxx:184 TRootEmbeddedCanvas.cxx:185 TRootEmbeddedCanvas.cxx:186 TRootEmbeddedCanvas.cxx:187 TRootEmbeddedCanvas.cxx:188 TRootEmbeddedCanvas.cxx:189 TRootEmbeddedCanvas.cxx:190 TRootEmbeddedCanvas.cxx:191 TRootEmbeddedCanvas.cxx:192 TRootEmbeddedCanvas.cxx:193 TRootEmbeddedCanvas.cxx:194 TRootEmbeddedCanvas.cxx:195 TRootEmbeddedCanvas.cxx:196 TRootEmbeddedCanvas.cxx:197 TRootEmbeddedCanvas.cxx:198 TRootEmbeddedCanvas.cxx:199 TRootEmbeddedCanvas.cxx:200 TRootEmbeddedCanvas.cxx:201 TRootEmbeddedCanvas.cxx:202 TRootEmbeddedCanvas.cxx:203 TRootEmbeddedCanvas.cxx:204 TRootEmbeddedCanvas.cxx:205 TRootEmbeddedCanvas.cxx:206 TRootEmbeddedCanvas.cxx:207 TRootEmbeddedCanvas.cxx:208 TRootEmbeddedCanvas.cxx:209 TRootEmbeddedCanvas.cxx:210 TRootEmbeddedCanvas.cxx:211 TRootEmbeddedCanvas.cxx:212 TRootEmbeddedCanvas.cxx:213 TRootEmbeddedCanvas.cxx:214 TRootEmbeddedCanvas.cxx:215 TRootEmbeddedCanvas.cxx:216 TRootEmbeddedCanvas.cxx:217 TRootEmbeddedCanvas.cxx:218 TRootEmbeddedCanvas.cxx:219 TRootEmbeddedCanvas.cxx:220 TRootEmbeddedCanvas.cxx:221 TRootEmbeddedCanvas.cxx:222 TRootEmbeddedCanvas.cxx:223 TRootEmbeddedCanvas.cxx:224 TRootEmbeddedCanvas.cxx:225 TRootEmbeddedCanvas.cxx:226 TRootEmbeddedCanvas.cxx:227 TRootEmbeddedCanvas.cxx:228 TRootEmbeddedCanvas.cxx:229 TRootEmbeddedCanvas.cxx:230 TRootEmbeddedCanvas.cxx:231 TRootEmbeddedCanvas.cxx:232 TRootEmbeddedCanvas.cxx:233 TRootEmbeddedCanvas.cxx:234 TRootEmbeddedCanvas.cxx:235 TRootEmbeddedCanvas.cxx:236 TRootEmbeddedCanvas.cxx:237 TRootEmbeddedCanvas.cxx:238 TRootEmbeddedCanvas.cxx:239 TRootEmbeddedCanvas.cxx:240 TRootEmbeddedCanvas.cxx:241 TRootEmbeddedCanvas.cxx:242 TRootEmbeddedCanvas.cxx:243 TRootEmbeddedCanvas.cxx:244 TRootEmbeddedCanvas.cxx:245 TRootEmbeddedCanvas.cxx:246 TRootEmbeddedCanvas.cxx:247 TRootEmbeddedCanvas.cxx:248 TRootEmbeddedCanvas.cxx:249 TRootEmbeddedCanvas.cxx:250 TRootEmbeddedCanvas.cxx:251 TRootEmbeddedCanvas.cxx:252 TRootEmbeddedCanvas.cxx:253 TRootEmbeddedCanvas.cxx:254 TRootEmbeddedCanvas.cxx:255 TRootEmbeddedCanvas.cxx:256 TRootEmbeddedCanvas.cxx:257 TRootEmbeddedCanvas.cxx:258 TRootEmbeddedCanvas.cxx:259 TRootEmbeddedCanvas.cxx:260 TRootEmbeddedCanvas.cxx:261 TRootEmbeddedCanvas.cxx:262 TRootEmbeddedCanvas.cxx:263 TRootEmbeddedCanvas.cxx:264 TRootEmbeddedCanvas.cxx:265 TRootEmbeddedCanvas.cxx:266 TRootEmbeddedCanvas.cxx:267 TRootEmbeddedCanvas.cxx:268 TRootEmbeddedCanvas.cxx:269 TRootEmbeddedCanvas.cxx:270 TRootEmbeddedCanvas.cxx:271 TRootEmbeddedCanvas.cxx:272 TRootEmbeddedCanvas.cxx:273 TRootEmbeddedCanvas.cxx:274 TRootEmbeddedCanvas.cxx:275 TRootEmbeddedCanvas.cxx:276 TRootEmbeddedCanvas.cxx:277 TRootEmbeddedCanvas.cxx:278 TRootEmbeddedCanvas.cxx:279 TRootEmbeddedCanvas.cxx:280 TRootEmbeddedCanvas.cxx:281 TRootEmbeddedCanvas.cxx:282 TRootEmbeddedCanvas.cxx:283 TRootEmbeddedCanvas.cxx:284 TRootEmbeddedCanvas.cxx:285 TRootEmbeddedCanvas.cxx:286 TRootEmbeddedCanvas.cxx:287 TRootEmbeddedCanvas.cxx:288 TRootEmbeddedCanvas.cxx:289 TRootEmbeddedCanvas.cxx:290 TRootEmbeddedCanvas.cxx:291 TRootEmbeddedCanvas.cxx:292 TRootEmbeddedCanvas.cxx:293 TRootEmbeddedCanvas.cxx:294 TRootEmbeddedCanvas.cxx:295 TRootEmbeddedCanvas.cxx:296 TRootEmbeddedCanvas.cxx:297 TRootEmbeddedCanvas.cxx:298 TRootEmbeddedCanvas.cxx:299 TRootEmbeddedCanvas.cxx:300 TRootEmbeddedCanvas.cxx:301 TRootEmbeddedCanvas.cxx:302 TRootEmbeddedCanvas.cxx:303 TRootEmbeddedCanvas.cxx:304 TRootEmbeddedCanvas.cxx:305 TRootEmbeddedCanvas.cxx:306 TRootEmbeddedCanvas.cxx:307 TRootEmbeddedCanvas.cxx:308 TRootEmbeddedCanvas.cxx:309 TRootEmbeddedCanvas.cxx:310 TRootEmbeddedCanvas.cxx:311 TRootEmbeddedCanvas.cxx:312 TRootEmbeddedCanvas.cxx:313 TRootEmbeddedCanvas.cxx:314 TRootEmbeddedCanvas.cxx:315 TRootEmbeddedCanvas.cxx:316 TRootEmbeddedCanvas.cxx:317 TRootEmbeddedCanvas.cxx:318 TRootEmbeddedCanvas.cxx:319 TRootEmbeddedCanvas.cxx:320 TRootEmbeddedCanvas.cxx:321 TRootEmbeddedCanvas.cxx:322 TRootEmbeddedCanvas.cxx:323 TRootEmbeddedCanvas.cxx:324 TRootEmbeddedCanvas.cxx:325 TRootEmbeddedCanvas.cxx:326 TRootEmbeddedCanvas.cxx:327 TRootEmbeddedCanvas.cxx:328 TRootEmbeddedCanvas.cxx:329 TRootEmbeddedCanvas.cxx:330 TRootEmbeddedCanvas.cxx:331 TRootEmbeddedCanvas.cxx:332 TRootEmbeddedCanvas.cxx:333 TRootEmbeddedCanvas.cxx:334 TRootEmbeddedCanvas.cxx:335 TRootEmbeddedCanvas.cxx:336 TRootEmbeddedCanvas.cxx:337 TRootEmbeddedCanvas.cxx:338 TRootEmbeddedCanvas.cxx:339 TRootEmbeddedCanvas.cxx:340 TRootEmbeddedCanvas.cxx:341 TRootEmbeddedCanvas.cxx:342 TRootEmbeddedCanvas.cxx:343 TRootEmbeddedCanvas.cxx:344 TRootEmbeddedCanvas.cxx:345 TRootEmbeddedCanvas.cxx:346 TRootEmbeddedCanvas.cxx:347 TRootEmbeddedCanvas.cxx:348 TRootEmbeddedCanvas.cxx:349 TRootEmbeddedCanvas.cxx:350 TRootEmbeddedCanvas.cxx:351 TRootEmbeddedCanvas.cxx:352 TRootEmbeddedCanvas.cxx:353 TRootEmbeddedCanvas.cxx:354 TRootEmbeddedCanvas.cxx:355 TRootEmbeddedCanvas.cxx:356 TRootEmbeddedCanvas.cxx:357 TRootEmbeddedCanvas.cxx:358 TRootEmbeddedCanvas.cxx:359 TRootEmbeddedCanvas.cxx:360 TRootEmbeddedCanvas.cxx:361 TRootEmbeddedCanvas.cxx:362 TRootEmbeddedCanvas.cxx:363 TRootEmbeddedCanvas.cxx:364 TRootEmbeddedCanvas.cxx:365 TRootEmbeddedCanvas.cxx:366 TRootEmbeddedCanvas.cxx:367 TRootEmbeddedCanvas.cxx:368 TRootEmbeddedCanvas.cxx:369 TRootEmbeddedCanvas.cxx:370 TRootEmbeddedCanvas.cxx:371 TRootEmbeddedCanvas.cxx:372 TRootEmbeddedCanvas.cxx:373 TRootEmbeddedCanvas.cxx:374 TRootEmbeddedCanvas.cxx:375 TRootEmbeddedCanvas.cxx:376 TRootEmbeddedCanvas.cxx:377 TRootEmbeddedCanvas.cxx:378 TRootEmbeddedCanvas.cxx:379 TRootEmbeddedCanvas.cxx:380 TRootEmbeddedCanvas.cxx:381 TRootEmbeddedCanvas.cxx:382 TRootEmbeddedCanvas.cxx:383 TRootEmbeddedCanvas.cxx:384 TRootEmbeddedCanvas.cxx:385 TRootEmbeddedCanvas.cxx:386 TRootEmbeddedCanvas.cxx:387 TRootEmbeddedCanvas.cxx:388 TRootEmbeddedCanvas.cxx:389 TRootEmbeddedCanvas.cxx:390 TRootEmbeddedCanvas.cxx:391 TRootEmbeddedCanvas.cxx:392 TRootEmbeddedCanvas.cxx:393 TRootEmbeddedCanvas.cxx:394 TRootEmbeddedCanvas.cxx:395 TRootEmbeddedCanvas.cxx:396 TRootEmbeddedCanvas.cxx:397 TRootEmbeddedCanvas.cxx:398 TRootEmbeddedCanvas.cxx:399 TRootEmbeddedCanvas.cxx:400 TRootEmbeddedCanvas.cxx:401 TRootEmbeddedCanvas.cxx:402 TRootEmbeddedCanvas.cxx:403 TRootEmbeddedCanvas.cxx:404 TRootEmbeddedCanvas.cxx:405 TRootEmbeddedCanvas.cxx:406 TRootEmbeddedCanvas.cxx:407 TRootEmbeddedCanvas.cxx:408 TRootEmbeddedCanvas.cxx:409 TRootEmbeddedCanvas.cxx:410 TRootEmbeddedCanvas.cxx:411 TRootEmbeddedCanvas.cxx:412 TRootEmbeddedCanvas.cxx:413 TRootEmbeddedCanvas.cxx:414 TRootEmbeddedCanvas.cxx:415 TRootEmbeddedCanvas.cxx:416 TRootEmbeddedCanvas.cxx:417 TRootEmbeddedCanvas.cxx:418 TRootEmbeddedCanvas.cxx:419 TRootEmbeddedCanvas.cxx:420 TRootEmbeddedCanvas.cxx:421 TRootEmbeddedCanvas.cxx:422 TRootEmbeddedCanvas.cxx:423 TRootEmbeddedCanvas.cxx:424 TRootEmbeddedCanvas.cxx:425 TRootEmbeddedCanvas.cxx:426 TRootEmbeddedCanvas.cxx:427 TRootEmbeddedCanvas.cxx:428 TRootEmbeddedCanvas.cxx:429 TRootEmbeddedCanvas.cxx:430 TRootEmbeddedCanvas.cxx:431 TRootEmbeddedCanvas.cxx:432 TRootEmbeddedCanvas.cxx:433 TRootEmbeddedCanvas.cxx:434 TRootEmbeddedCanvas.cxx:435 TRootEmbeddedCanvas.cxx:436 TRootEmbeddedCanvas.cxx:437 TRootEmbeddedCanvas.cxx:438 TRootEmbeddedCanvas.cxx:439 TRootEmbeddedCanvas.cxx:440 TRootEmbeddedCanvas.cxx:441 TRootEmbeddedCanvas.cxx:442 TRootEmbeddedCanvas.cxx:443 TRootEmbeddedCanvas.cxx:444 TRootEmbeddedCanvas.cxx:445 TRootEmbeddedCanvas.cxx:446 TRootEmbeddedCanvas.cxx:447 TRootEmbeddedCanvas.cxx:448 TRootEmbeddedCanvas.cxx:449 TRootEmbeddedCanvas.cxx:450 TRootEmbeddedCanvas.cxx:451 TRootEmbeddedCanvas.cxx:452 TRootEmbeddedCanvas.cxx:453 TRootEmbeddedCanvas.cxx:454 TRootEmbeddedCanvas.cxx:455 TRootEmbeddedCanvas.cxx:456 TRootEmbeddedCanvas.cxx:457 TRootEmbeddedCanvas.cxx:458 TRootEmbeddedCanvas.cxx:459 TRootEmbeddedCanvas.cxx:460 TRootEmbeddedCanvas.cxx:461 TRootEmbeddedCanvas.cxx:462 TRootEmbeddedCanvas.cxx:463 TRootEmbeddedCanvas.cxx:464 TRootEmbeddedCanvas.cxx:465 TRootEmbeddedCanvas.cxx:466 TRootEmbeddedCanvas.cxx:467 TRootEmbeddedCanvas.cxx:468 TRootEmbeddedCanvas.cxx:469 TRootEmbeddedCanvas.cxx:470 TRootEmbeddedCanvas.cxx:471 TRootEmbeddedCanvas.cxx:472 TRootEmbeddedCanvas.cxx:473 TRootEmbeddedCanvas.cxx:474 TRootEmbeddedCanvas.cxx:475 TRootEmbeddedCanvas.cxx:476 TRootEmbeddedCanvas.cxx:477 TRootEmbeddedCanvas.cxx:478 TRootEmbeddedCanvas.cxx:479 TRootEmbeddedCanvas.cxx:480 TRootEmbeddedCanvas.cxx:481 TRootEmbeddedCanvas.cxx:482 TRootEmbeddedCanvas.cxx:483 TRootEmbeddedCanvas.cxx:484 TRootEmbeddedCanvas.cxx:485 TRootEmbeddedCanvas.cxx:486 TRootEmbeddedCanvas.cxx:487 TRootEmbeddedCanvas.cxx:488 TRootEmbeddedCanvas.cxx:489 TRootEmbeddedCanvas.cxx:490 TRootEmbeddedCanvas.cxx:491 TRootEmbeddedCanvas.cxx:492 TRootEmbeddedCanvas.cxx:493 TRootEmbeddedCanvas.cxx:494 TRootEmbeddedCanvas.cxx:495 TRootEmbeddedCanvas.cxx:496 TRootEmbeddedCanvas.cxx:497 TRootEmbeddedCanvas.cxx:498 TRootEmbeddedCanvas.cxx:499 TRootEmbeddedCanvas.cxx:500 TRootEmbeddedCanvas.cxx:501 TRootEmbeddedCanvas.cxx:502 TRootEmbeddedCanvas.cxx:503 TRootEmbeddedCanvas.cxx:504 TRootEmbeddedCanvas.cxx:505 TRootEmbeddedCanvas.cxx:506 TRootEmbeddedCanvas.cxx:507 TRootEmbeddedCanvas.cxx:508 TRootEmbeddedCanvas.cxx:509 TRootEmbeddedCanvas.cxx:510 TRootEmbeddedCanvas.cxx:511 TRootEmbeddedCanvas.cxx:512 TRootEmbeddedCanvas.cxx:513 TRootEmbeddedCanvas.cxx:514 TRootEmbeddedCanvas.cxx:515 TRootEmbeddedCanvas.cxx:516 TRootEmbeddedCanvas.cxx:517 TRootEmbeddedCanvas.cxx:518 TRootEmbeddedCanvas.cxx:519 TRootEmbeddedCanvas.cxx:520 TRootEmbeddedCanvas.cxx:521 TRootEmbeddedCanvas.cxx:522 TRootEmbeddedCanvas.cxx:523 TRootEmbeddedCanvas.cxx:524 TRootEmbeddedCanvas.cxx:525 TRootEmbeddedCanvas.cxx:526 TRootEmbeddedCanvas.cxx:527 TRootEmbeddedCanvas.cxx:528 TRootEmbeddedCanvas.cxx:529 TRootEmbeddedCanvas.cxx:530 TRootEmbeddedCanvas.cxx:531 TRootEmbeddedCanvas.cxx:532 TRootEmbeddedCanvas.cxx:533 TRootEmbeddedCanvas.cxx:534 TRootEmbeddedCanvas.cxx:535 TRootEmbeddedCanvas.cxx:536 TRootEmbeddedCanvas.cxx:537 TRootEmbeddedCanvas.cxx:538 TRootEmbeddedCanvas.cxx:539 TRootEmbeddedCanvas.cxx:540 TRootEmbeddedCanvas.cxx:541 TRootEmbeddedCanvas.cxx:542 TRootEmbeddedCanvas.cxx:543 TRootEmbeddedCanvas.cxx:544 TRootEmbeddedCanvas.cxx:545 TRootEmbeddedCanvas.cxx:546 TRootEmbeddedCanvas.cxx:547 TRootEmbeddedCanvas.cxx:548 TRootEmbeddedCanvas.cxx:549 TRootEmbeddedCanvas.cxx:550 TRootEmbeddedCanvas.cxx:551 TRootEmbeddedCanvas.cxx:552 TRootEmbeddedCanvas.cxx:553 TRootEmbeddedCanvas.cxx:554 TRootEmbeddedCanvas.cxx:555 TRootEmbeddedCanvas.cxx:556 TRootEmbeddedCanvas.cxx:557 TRootEmbeddedCanvas.cxx:558 TRootEmbeddedCanvas.cxx:559 TRootEmbeddedCanvas.cxx:560 TRootEmbeddedCanvas.cxx:561 TRootEmbeddedCanvas.cxx:562 TRootEmbeddedCanvas.cxx:563 TRootEmbeddedCanvas.cxx:564 TRootEmbeddedCanvas.cxx:565 TRootEmbeddedCanvas.cxx:566 TRootEmbeddedCanvas.cxx:567 TRootEmbeddedCanvas.cxx:568 TRootEmbeddedCanvas.cxx:569 TRootEmbeddedCanvas.cxx:570 TRootEmbeddedCanvas.cxx:571 TRootEmbeddedCanvas.cxx:572 TRootEmbeddedCanvas.cxx:573 TRootEmbeddedCanvas.cxx:574 TRootEmbeddedCanvas.cxx:575 TRootEmbeddedCanvas.cxx:576