//////////////////////////////////////////////////////////////////////////////// // Thanks to Abe <God(dot)bless(at)marihuana(dot)com> bool CxImageTIF::Encode(CxFile * hFile, CxImage ** pImages, int pagecount) { try{ if (hFile==NULL) throw "invalid file pointer"; if (pImages==NULL || pagecount==0) throw "multipage TIFF, no images!"; CxImageTIF ghost; for (int i=1; i<=pagecount; i++){ if (pImages[i-1]==NULL) throw "Bad image pointer"; ghost.Ghost(pImages[i-1]); if (!ghost.Encode(hFile,true)) throw "Error saving TIFF file"; } } catch (char *message) { strncpy(info.szLastError,message,255); return false; } return true; }
/** * Saves to disk or memory pagecount images, referenced by an array of CxImage pointers. * \param hFile: file handle (CxMemFile or CxIOFile), with write access. * \param pImages: array of CxImage pointers. * \param pagecount: number of images. * \param imagetype: can be CXIMAGE_FORMAT_TIF, CXIMAGE_FORMAT_GIF or CXIMAGE_FORMAT_ICO. * \return true if everything is ok */ bool CxImage::Encode(CxFile * hFile, CxImage ** pImages, int32_t pagecount, uint32_t imagetype) { #if CXIMAGE_SUPPORT_TIF if (imagetype==CXIMAGE_FORMAT_TIF){ CxImageTIF newima; newima.Ghost(this); if (newima.Encode(hFile,pImages,pagecount)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_GIF if (imagetype==CXIMAGE_FORMAT_GIF){ CxImageGIF newima; newima.Ghost(this); if (newima.Encode(hFile,pImages,pagecount)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_ICO if (imagetype==CXIMAGE_FORMAT_ICO){ CxImageICO newima; newima.Ghost(this); if (newima.Encode(hFile,pImages,pagecount)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif strcpy(info.szLastError,"Multipage Encode, Unsupported operation for this format"); return false; }
/** * Saves to disk the image in a specific format. * \param hFile: file handle (CxMemFile or CxIOFile), with write access. * \param imagetype: file format, see ENUM_CXIMAGE_FORMATS * \return true if everything is ok * \sa ENUM_CXIMAGE_FORMATS */ bool CxImage::Encode(CxFile *hFile, uint32_t imagetype) { #if CXIMAGE_SUPPORT_BMP if (CXIMAGE_FORMAT_BMP==imagetype){ CxImageBMP *newima = new CxImageBMP; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_ICO if (CXIMAGE_FORMAT_ICO==imagetype){ CxImageICO *newima = new CxImageICO; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_TIF if (CXIMAGE_FORMAT_TIF==imagetype){ CxImageTIF *newima = new CxImageTIF; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_JPG if (CXIMAGE_FORMAT_JPG==imagetype){ CxImageJPG *newima = new CxImageJPG; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_GIF if (CXIMAGE_FORMAT_GIF==imagetype){ CxImageGIF *newima = new CxImageGIF; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_PNG if (CXIMAGE_FORMAT_PNG==imagetype){ CxImagePNG *newima = new CxImagePNG; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_MNG if (CXIMAGE_FORMAT_MNG==imagetype){ CxImageMNG *newima = new CxImageMNG; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_TGA if (CXIMAGE_FORMAT_TGA==imagetype){ CxImageTGA *newima = new CxImageTGA; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_PCX if (CXIMAGE_FORMAT_PCX==imagetype){ CxImagePCX *newima = new CxImagePCX; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_WBMP if (CXIMAGE_FORMAT_WBMP==imagetype){ CxImageWBMP *newima = new CxImageWBMP; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_WMF && CXIMAGE_SUPPORT_WINDOWS // <vho> - WMF/EMF support if (CXIMAGE_FORMAT_WMF==imagetype){ CxImageWMF *newima = new CxImageWMF; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_JBG if (CXIMAGE_FORMAT_JBG==imagetype){ CxImageJBG *newima = new CxImageJBG; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_JASPER if ( #if CXIMAGE_SUPPORT_JP2 CXIMAGE_FORMAT_JP2==imagetype || #endif #if CXIMAGE_SUPPORT_JPC CXIMAGE_FORMAT_JPC==imagetype || #endif #if CXIMAGE_SUPPORT_PGX CXIMAGE_FORMAT_PGX==imagetype || #endif #if CXIMAGE_SUPPORT_PNM CXIMAGE_FORMAT_PNM==imagetype || #endif #if CXIMAGE_SUPPORT_RAS CXIMAGE_FORMAT_RAS==imagetype || #endif false ){ CxImageJAS *newima = new CxImageJAS; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile,imagetype)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_SKA if (CXIMAGE_FORMAT_SKA==imagetype){ CxImageSKA *newima = new CxImageSKA; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_RAW if (CXIMAGE_FORMAT_RAW==imagetype){ CxImageRAW *newima = new CxImageRAW; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif #if CXIMAGE_SUPPORT_PSD if (CXIMAGE_FORMAT_PSD==imagetype){ CxImagePSD *newima = new CxImagePSD; if (!newima) return false; newima->Ghost(this); if (newima->Encode(hFile)){ delete newima; return true; } else { strcpy(info.szLastError,newima->GetLastError()); delete newima; return false; } } #endif strcpy(info.szLastError,"Encode: Unknown format"); return false; }
/** * Saves to disk the image in a specific format. * \param hFile: file handle (CxMemFile or CxIOFile), with write access. * \param imagetype: file format, see ENUM_CXIMAGE_FORMATS * \return true if everything is ok * \sa ENUM_CXIMAGE_FORMATS */ bool CxImage::Encode(CxFile *hFile, DWORD imagetype) { #if CXIMAGE_SUPPORT_BMP if (imagetype==CXIMAGE_FORMAT_BMP){ CxImageBMP newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_ICO if (imagetype==CXIMAGE_FORMAT_ICO){ CxImageICO newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_TIF if (imagetype==CXIMAGE_FORMAT_TIF){ CxImageTIF newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_JPG if (imagetype==CXIMAGE_FORMAT_JPG){ CxImageJPG newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_GIF if (imagetype==CXIMAGE_FORMAT_GIF){ CxImageGIF newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_PNG if (imagetype==CXIMAGE_FORMAT_PNG){ CxImagePNG newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_MNG if (imagetype==CXIMAGE_FORMAT_MNG){ CxImageMNG newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_TGA if (imagetype==CXIMAGE_FORMAT_TGA){ CxImageTGA newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_PCX if (imagetype==CXIMAGE_FORMAT_PCX){ CxImagePCX newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_WBMP if (imagetype==CXIMAGE_FORMAT_WBMP){ CxImageWBMP newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_WMF && CXIMAGE_SUPPORT_WINDOWS // <vho> - WMF/EMF support if (imagetype==CXIMAGE_FORMAT_WMF){ CxImageWMF newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_JBG if (imagetype==CXIMAGE_FORMAT_JBG){ CxImageJBG newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_JASPER if ( #if CXIMAGE_SUPPORT_JP2 imagetype==CXIMAGE_FORMAT_JP2 || #endif #if CXIMAGE_SUPPORT_JPC imagetype==CXIMAGE_FORMAT_JPC || #endif #if CXIMAGE_SUPPORT_PGX imagetype==CXIMAGE_FORMAT_PGX || #endif #if CXIMAGE_SUPPORT_PNM imagetype==CXIMAGE_FORMAT_PNM || #endif #if CXIMAGE_SUPPORT_RAS imagetype==CXIMAGE_FORMAT_RAS || #endif false ){ CxImageJAS newima; newima.Ghost(this); if (newima.Encode(hFile,imagetype)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_SKA if (imagetype==CXIMAGE_FORMAT_SKA){ CxImageSKA newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif #if CXIMAGE_SUPPORT_RAW if (imagetype==CXIMAGE_FORMAT_RAW){ CxImageRAW newima; newima.Ghost(this); if (newima.Encode(hFile)){ return true; } else { strcpy(info.szLastError,newima.GetLastError()); return false; } } #endif strcpy(info.szLastError,"Encode: Unknown format"); return false; }