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;