00001
00002
00003
00004
00005
00006 #ifndef H_CPPPDFImage
00007 #define H_CPPPDFImage
00008
00009 #include <PDF/GState.h>
00010 #include <C/PDF/TRN_Image.h>
00011
00012
00013 namespace pdftron {
00014 namespace PDF {
00015
00023 class Image
00024 {
00025 public:
00026
00089 static Image Create(SDF::SDFDoc& doc, const UString& filename, SDF::Obj encoder_hints = 0);
00090
00114 static Image Create(SDF::SDFDoc& doc,
00115 const char* image_data,
00116 size_t image_data_size,
00117 int width,
00118 int height,
00119 int bpc,
00120 ColorSpace color_space,
00121 SDF::Obj encoder_hints = 0);
00122
00128 static Image Create(SDF::SDFDoc& doc,
00129 Filters::FilterReader& image_data,
00130 int width,
00131 int height,
00132 int bpc,
00133 ColorSpace color_space,
00134 SDF::Obj encoder_hints = 0);
00135
00149 #if defined(_WIN32) && !defined(WINCE)
00150 static Image Create(SDF::SDFDoc& doc, Gdiplus::Bitmap* bmp, SDF::Obj encoder_hints = 0);
00151 #endif
00152
00174 static Image CreateImageMask(SDF::SDFDoc& doc,
00175 const char* image_data,
00176 size_t image_data_size,
00177 int width,
00178 int height,
00179 SDF::Obj encoder_hints = 0);
00180
00185 static Image CreateImageMask(SDF::SDFDoc& doc,
00186 Filters::FilterReader& image_data,
00187 int width,
00188 int height,
00189 SDF::Obj encoder_hints = 0);
00190
00214 static Image CreateSoftMask(SDF::SDFDoc& doc,
00215 const char* image_data,
00216 size_t image_data_size,
00217 int width,
00218 int height,
00219 int bpc,
00220 SDF::Obj encoder_hints = 0);
00221
00227 static Image CreateSoftMask(SDF::SDFDoc& doc,
00228 Filters::FilterReader& image_data,
00229 int width,
00230 int height,
00231 int bpc,
00232 SDF::Obj encoder_hints = 0);
00233
00234
00235
00236 enum InputFilter
00237 {
00238 e_none,
00239 e_jpeg,
00240 e_jp2,
00241 e_flate,
00242 e_g3,
00243 e_g4,
00244 e_ascii_hex
00245 };
00246
00267 static Image Create(SDF::SDFDoc& doc,
00268 const char* image_data,
00269 size_t image_data_size,
00270 int width,
00271 int height,
00272 int bpc,
00273 ColorSpace color_space,
00274 InputFilter input_format);
00275
00276
00281 static Image Create(SDF::SDFDoc& doc,
00282 Filters::FilterReader& image_data,
00283 int width,
00284 int height,
00285 int bpc,
00286 ColorSpace color_space,
00287 InputFilter input_format);
00288
00295 Image(SDF::Obj image_xobject = 0);
00296
00297 Image(const Image&);
00298 Image& operator=(const Image&);
00299
00303 SDF::Obj GetSDFObj () const;
00304
00310 bool IsValid() const;
00311
00315 Filters::Filter GetImageData() const;
00316
00320 int GetImageDataSize() const;
00321
00333 #if defined(_WIN32) && !defined(WINCE)
00334 Gdiplus::Bitmap* GetBitmap() const;
00335 #endif
00336
00345 ColorSpace GetImageColorSpace() const;
00346
00350 int GetImageWidth() const;
00351
00355 int GetImageHeight() const;
00356
00365 SDF::Obj GetDecodeArray() const;
00366
00372 int GetBitsPerComponent() const;
00373
00377 int GetComponentNum() const;
00378
00382 bool IsImageMask() const;
00383
00387 bool IsImageInterpolate() const;
00388
00396 SDF::Obj GetMask() const;
00397
00413 void SetMask(Image& image_mask);
00414
00426 void SetMask(SDF::Obj mask);
00427
00433 SDF::Obj GetSoftMask();
00434
00444 void SetSoftMask(Image& soft_mask);
00445
00449 GState::RenderingIntent GetImageRenderingIntent() const;
00450
00470 int Export(const UString& filename);
00471
00484 int Export(Filters::FilterWriter& writer);
00485
00492 void ExportAsTiff(const UString& filename);
00493
00499 void ExportAsTiff(Filters::FilterWriter& writer);
00500
00507 void ExportAsPng(const UString& filename);
00508
00514 void ExportAsPng(Filters::FilterWriter& writer);
00515
00516
00518 Image(TRN_Image impl);
00519 TRN_Image mp_image;
00521 };
00522
00523
00524
00525 #include <Impl/Image.inl>
00526
00527 };
00528 };
00529
00530 #endif
00531