29 class TImage : 
public TNamed, 
public TAttImage {
 
   31 friend TImage operator+(
const TImage &i1, 
const TImage &s2);
 
   32 friend TImage operator/(
const TImage &i1, 
const TImage &s2);
 
   36    enum EImageFileTypes {
 
   95       kAllChan   = kRedChan | kGreenChan | kBlueChan | kAlphaChan
 
   99    TImage(
const char *file) : TNamed(file, 
"") { }
 
  103    TImage(
const TImage &img) : TNamed(img), TAttImage(img) { }
 
  104    TImage &operator=(
const TImage &img)
 
  105             { TNamed::operator=(img); TAttImage::operator=(img); 
return *
this; }
 
  106    TImage(UInt_t , UInt_t ) : TNamed(), TAttImage() { }
 
  108    virtual ~TImage() { }
 
  111    virtual TObject *Clone(
const char *)
 const { 
return 0; }
 
  114    virtual void ReadImage(
const char * , EImageFileTypes  = TImage::kUnknown) {}
 
  115    virtual void WriteImage(
const char * , EImageFileTypes  = TImage::kUnknown)  {}
 
  116    virtual void SetImage(
const Double_t * , UInt_t , UInt_t , TImagePalette *  = 0) {}
 
  117    virtual void SetImage(
const TArrayD & , UInt_t , TImagePalette *  = 0) {}
 
  118    virtual void SetImage(
const TVectorD & , UInt_t , TImagePalette *  = 0) {}
 
  119    virtual void SetImage(Pixmap_t , Pixmap_t  = 0) {}
 
  122    virtual void FromPad(TVirtualPad * , Int_t  = 0, Int_t  = 0, UInt_t  = 0, UInt_t  = 0) {}
 
  125    virtual void UnZoom() {}
 
  128    virtual void Zoom(UInt_t , UInt_t , UInt_t , UInt_t ) {}
 
  131    virtual void Flip(Int_t  = 180) {}
 
  134    virtual void Gray(Bool_t  = kTRUE) {}
 
  135    virtual Bool_t IsGray()
 const { 
return kFALSE; }
 
  138    virtual void Mirror(Bool_t  = kTRUE) {}
 
  141    virtual void Scale(UInt_t , UInt_t ) {}
 
  144    virtual void Slice(UInt_t , UInt_t , UInt_t ,  UInt_t ,
 
  148    virtual void Tile(UInt_t , UInt_t ) {}
 
  151    virtual void Crop(Int_t  = 0, Int_t  = 0, UInt_t  = 0, UInt_t  = 0) {}
 
  154    virtual void Pad(
const char *  = 
"#FFFFFFFF", UInt_t  = 0,
 
  155                    UInt_t  = 0, UInt_t  = 0, UInt_t  = 0) {}
 
  158    virtual void Blur(Double_t  = 3, Double_t  = 3) { }
 
  161    virtual Double_t *Vectorize(UInt_t  = 256, UInt_t  = 4, Int_t  = 0) { 
return 0; }
 
  164    virtual void HSV(UInt_t  = 0, UInt_t  = 360, Int_t  = 0, Int_t  = 0, Int_t  = 0,
 
  165                     Int_t  = 0, Int_t  = 0, UInt_t  = 0, UInt_t  = 0) {}
 
  168    virtual void Gradient(UInt_t  = 0, 
const char *  = 
"#FFFFFF #000000", 
const char *  = 0,
 
  169                          Int_t  = 0, Int_t  = 0, UInt_t  = 0, UInt_t  = 0) {}
 
  172    virtual void Merge(
const TImage * , 
const char *  = 
"alphablend", Int_t  = 0, Int_t  = 0) {}
 
  175    virtual void Append(
const TImage * , 
const char *  = 
"+", 
const char *  = 
"#00000000") {}
 
  178    virtual void Bevel(Int_t  = 0, Int_t  = 0, UInt_t  = 0, UInt_t  = 0,
 
  179                       const char *  = 
"#ffdddddd", 
const char *  = 
"#ff555555",
 
  180                       UShort_t  = 1, Bool_t  = kFALSE) {}
 
  182    virtual void BeginPaint(Bool_t  = kTRUE) {}
 
  183    virtual void EndPaint() {}
 
  184    virtual void DrawLine(UInt_t , UInt_t , UInt_t , UInt_t ,
 
  185                          const char *  = 
"#000000", UInt_t  = 1) {}
 
  186    virtual void DrawDashLine(UInt_t , UInt_t , UInt_t , UInt_t , UInt_t ,
 
  187                              const char * , 
const char *  = 
"#000000", UInt_t  = 1) {}
 
  188    virtual void DrawBox(Int_t , Int_t , Int_t , Int_t ,
 
  189                          const char *  = 
"#000000", UInt_t  = 1, Int_t  = 0) {}
 
  190    virtual void DrawRectangle(UInt_t , UInt_t , UInt_t , UInt_t ,
 
  191                               const char *  = 
"#000000", UInt_t  = 1) {}
 
  192    virtual void FillRectangle(
const char *  = 0, Int_t  = 0, Int_t  = 0,
 
  193                               UInt_t  = 0, UInt_t  = 0) {}
 
  194    virtual void DrawPolyLine(UInt_t , TPoint * , 
const char *  = 
"#000000",
 
  195                              UInt_t  = 1, TImage::ECoordMode  = kCoordModeOrigin) {}
 
  196    virtual void PutPixel(Int_t , Int_t , 
const char *  = 
"#000000") {}
 
  197    virtual void PolyPoint(UInt_t , TPoint * , 
const char *  = 
"#000000",
 
  198                           TImage::ECoordMode  = kCoordModeOrigin) {}
 
  199    virtual void DrawSegments(UInt_t , Segment_t * , 
const char *  = 
"#000000", UInt_t  = 1) {}
 
  200    virtual void DrawText(Int_t  = 0, Int_t  = 0, 
const char *  = 
"", Int_t  = 12,
 
  201                          const char *  = 0, 
const char *  = 
"fixed",
 
  202                          EText3DType  = TImage::kPlain, 
const char *  = 0, Float_t  = 0) { }
 
  203    virtual void DrawText(TText * , Int_t  = 0, Int_t  = 0) { }
 
  204    virtual void FillPolygon(UInt_t , TPoint * , 
const char *  = 
"#000000",
 
  205                            const char *  = 0, UInt_t  = 16, UInt_t  = 16) {}
 
  206    virtual void FillPolygon(UInt_t , TPoint * , TImage * ) {}
 
  207    virtual void CropPolygon(UInt_t , TPoint * ) {}
 
  208    virtual void DrawFillArea(UInt_t , TPoint * , 
const char *  = 
"#000000",
 
  209                            const char *  = 0, UInt_t  = 16, UInt_t  = 16) {}
 
  210    virtual void DrawFillArea(UInt_t , TPoint * , TImage * ) {}
 
  211    virtual void FillSpans(UInt_t , TPoint * , UInt_t * ,  
const char *  = 
"#000000",
 
  212                          const char *  = 0, UInt_t  = 16, UInt_t  = 16) {}
 
  213    virtual void FillSpans(UInt_t , TPoint * , UInt_t * , TImage * ) {}
 
  214    virtual void CropSpans(UInt_t , TPoint * , UInt_t * ) {}
 
  215    virtual void CopyArea(TImage * , Int_t , Int_t , UInt_t , UInt_t ,
 
  216                          Int_t  = 0, Int_t  = 0, Int_t  = 3, EColorChan  = kAllChan) {}
 
  217    virtual void DrawCellArray(Int_t , Int_t , Int_t , Int_t , Int_t , Int_t , UInt_t * ) {}
 
  218    virtual void FloodFill(Int_t , Int_t , 
const char * , 
const char * , 
const char *  = 0) {}
 
  219    virtual void DrawCubeBezier(Int_t , Int_t , Int_t , Int_t , Int_t , Int_t , 
const char *  = 
"#000000", UInt_t  = 1) {}
 
  220    virtual void DrawStraightEllips(Int_t , Int_t , Int_t , Int_t , 
const char *  = 
"#000000", Int_t  = 1) {}
 
  221    virtual void DrawCircle(Int_t , Int_t , Int_t , 
const char *  = 
"#000000", Int_t  = 1) {}
 
  222    virtual void DrawEllips(Int_t , Int_t , Int_t , Int_t , Int_t , 
const char *  = 
"#000000", Int_t  = 1) {}
 
  223    virtual void DrawEllips2(Int_t , Int_t , Int_t , Int_t , Int_t , 
const char *  = 
"#000000", Int_t  = 1) {}
 
  225    virtual void SetEditable(Bool_t  = kTRUE) {}
 
  226    virtual Bool_t IsEditable()
 const { 
return kFALSE; }
 
  228    virtual UInt_t GetWidth()
 const { 
return 0; }
 
  229    virtual UInt_t GetHeight()
 const { 
return 0; }
 
  230    virtual Bool_t IsValid()
 const { 
return kTRUE; }
 
  231    virtual TImage *GetScaledImage()
 const { 
return 0; }
 
  233    virtual TArrayL  *GetPixels(Int_t = 0, Int_t = 0, UInt_t  = 0, UInt_t  = 0) { 
return 0; }
 
  234    virtual TArrayD  *GetArray(UInt_t  = 0, UInt_t  = 0, TImagePalette * = gWebImagePalette) { 
return 0; }
 
  235    virtual Pixmap_t  GetPixmap() { 
return 0; }
 
  236    virtual Pixmap_t  GetMask() { 
return 0; }
 
  237    virtual UInt_t   *GetArgbArray() { 
return 0; }
 
  238    virtual UInt_t   *GetRgbaArray() { 
return 0; }
 
  239    virtual Double_t *GetVecArray() { 
return 0; }
 
  240    virtual UInt_t   *GetScanline(UInt_t ) { 
return 0; }
 
  241    virtual void      GetImageBuffer(
char ** , 
int* , EImageFileTypes  = TImage::kPng) {}
 
  242    virtual Bool_t    SetImageBuffer(
char ** , EImageFileTypes  = TImage::kPng) { 
return kFALSE; }
 
  243    virtual void      PaintImage(Drawable_t , Int_t , Int_t , Int_t  = 0, Int_t  = 0, UInt_t  = 0, UInt_t  = 0, Option_t *  = 
"") { }
 
  244    virtual void      FromWindow(Drawable_t , Int_t  = 0, Int_t  = 0, UInt_t  = 0, UInt_t  = 0) {}
 
  245    virtual void      FromGLBuffer(UChar_t* , UInt_t , UInt_t ) {}
 
  246    static EImageFileTypes GetImageFileTypeFromFilename(
const char* opt);
 
  248    static TImage *Create();
 
  249    static TImage *Open(
const char *file, EImageFileTypes type = kUnknown);
 
  250    static TImage *Open(
char **data);
 
  251    static TImage *Open(
const char *name, 
const Double_t *imageData, UInt_t width, UInt_t height, TImagePalette *palette);
 
  252    static TImage *Open(
const char *name, 
const TArrayD &imageData, UInt_t width, TImagePalette *palette = 0);
 
  253    static TImage *Open(
const char *name, 
const TVectorD &imageData, UInt_t width, TImagePalette *palette = 0);
 
  255    TImage    &operator+=(
const TImage &i) { Append(&i, 
"+"); 
return *
this; }
 
  256    TImage    &operator/=(
const TImage &i) { Append(&i, 
"/"); 
return *
this; }
 
  258    virtual void  ls(Option_t *option=
"") 
const;