1 #ifndef CACHEDIMAGE_H 2 #define CACHEDIMAGE_H 3 4 #include <iostream> 5 6 #include "progress.h" 7 #include "imagesource/imagesource.h" 8 9 // CachedImage_Deferred - the base class for cached images. Sets up the width, height, type, etc. 10 // and allocated storage, but doesn't actually read the data from the ImageSource until asked. 11 // ReadImage() reads and caches the entire image. 12 // ReadRow() reads and caches a single row. 13 // Generally you won't use this except with ImageSource_Tee. 14 15 class CachedImage_Deferred 16 { 17 public: 18 CachedImage_Deferred(ImageSource *source); 19 virtual ~CachedImage_Deferred(); 20 virtual void ReadImage(Progress *prog=NULL); 21 virtual void ReadRow(int row); 22 virtual ISDataType *GetRow(int row); 23 virtual ImageSource *GetImageSource(); 24 virtual ISDeviceNValue GetPixel(int x, int y); 25 protected: 26 ImageSource *source; 27 int width, height; 28 int samplesperpixel; 29 IS_TYPE type; 30 ISDataType *imagedata; 31 CMSProfile *embeddedprofile; 32 double xres,yres; 33 friend class ImageSource_CachedImage; 34 friend class ImageSource_Tee; 35 }; 36 37 38 // Convenience subclass, this variant completely builds and processes the Cached Image immediately. 39 40 class CachedImage : public CachedImage_Deferred 41 { 42 public: CachedImage_Deferred(source)43 CachedImage(ImageSource *source, Progress *prog=NULL) : CachedImage_Deferred(source) 44 { 45 ReadImage(prog); 46 } ~CachedImage()47 virtual ~CachedImage() 48 { 49 } 50 protected: 51 }; 52 53 54 55 // The GetImageSource member function of the CachedImage classes will return one of these. 56 // Unlike most imagesources, this one claims no ownership of the source data, so you can 57 // have as many operating concurrently and as many times on the Cached image as you like. 58 59 class ImageSource_CachedImage : public ImageSource 60 { 61 public: 62 ImageSource_CachedImage(CachedImage_Deferred *img); 63 ~ImageSource_CachedImage(); 64 ISDataType *GetRow(int row); 65 protected: 66 CachedImage_Deferred *image; 67 }; 68 69 #endif 70 71