#ifndef ROOT_TVirtualPadEditor
#define ROOT_TVirtualPadEditor
#ifndef ROOT_TString
#include "TString.h"
#endif
class TCanvas;
class TVirtualPadEditor {
protected:
   static TVirtualPadEditor *fgPadEditor;    
   static TString            fgEditorName;   
public:
   TVirtualPadEditor();
   virtual ~TVirtualPadEditor();
   virtual Bool_t   IsGlobal() const = 0;
   
   virtual void     DrawLine(Double_t, Double_t , Double_t , Double_t ) { }
   virtual void     DrawLineNDC(Double_t , Double_t , Double_t , Double_t ) { }
   virtual void     DrawText(Double_t , Double_t , const char *) { }
   virtual void     DrawTextNDC(Double_t , Double_t , const char *) { }
   virtual void     FillAttributes(Int_t , Int_t ) { }
   virtual void     LineAttributes(Int_t , Int_t , Int_t ) { }
   virtual void     MarkerAttributes(Int_t , Int_t , Float_t ) { }
   virtual void     TextAttributes(Int_t ,Float_t ,Int_t ,Int_t ,Float_t ) { }
   virtual void     Build() { }
   virtual void     Show() { }
   virtual void     Hide() { }
   virtual void     DeleteEditors() { }
   virtual void     SetGlobal(Bool_t) { }
   virtual TCanvas* GetCanvas() const = 0;
   
   
   static const char        *GetEditorName();
   static TVirtualPadEditor *GetPadEditor(Bool_t load = kTRUE);
   static TVirtualPadEditor *LoadEditor();
   static void      HideEditor();
   static void      ShowEditor();
   static void      SetPadEditorName(const char *name);
   static void      Terminate();
   static void      UpdateFillAttributes(Int_t col, Int_t sty);
   static void      UpdateLineAttributes(Int_t col, Int_t sty, Int_t width);
   static void      UpdateMarkerAttributes(Int_t col, Int_t sty, Float_t msiz);
   static void      UpdateTextAttributes(Int_t align,Float_t angle,Int_t col,Int_t font,Float_t tsize);
   ClassDef(TVirtualPadEditor,0)  
};
#endif