00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022 #pragma once
00023
00024 #include "ImageFile.h"
00025
00026
00027 class CImageServices : public CComObject
00028 {
00029
00030 public:
00031 CImageServices();
00032 virtual ~CImageServices();
00033
00034 DECLARE_DYNAMIC(CImageServices)
00035
00036
00037 public:
00038 void Cleanup();
00039 protected:
00040 BOOL LoadFromMemory(CImageFile* pFile, LPCTSTR pszType, LPCVOID pData, DWORD nLength, BOOL bScanOnly = FALSE, BOOL bPartialOk = FALSE);
00041 BOOL LoadFromFile(CImageFile* pFile, LPCTSTR pszType, HANDLE hFile, DWORD nLength, BOOL bScanOnly = FALSE, BOOL bPartialOk = FALSE);
00042 BOOL PostLoad(CImageFile* pFile, IMAGESERVICEDATA* pParams, SAFEARRAY* pArray, BOOL bSuccess);
00043 protected:
00044 BOOL SaveToMemory(CImageFile* pFile, LPCTSTR pszType, int nQuality, LPBYTE* ppBuffer, DWORD* pnLength);
00045 BOOL SaveToFile(CImageFile* pFile, LPCTSTR pszType, int nQuality, HANDLE hFile, DWORD* pnLength = NULL);
00046 SAFEARRAY* ImageToArray(CImageFile* pFile);
00047 protected:
00048 IImageServicePlugin* GetService(LPCTSTR pszFile, CLSID** ppCLSID = NULL);
00049 IImageServicePlugin* LoadService(LPCTSTR pszType, CLSID* pCLSID = NULL);
00050
00051
00052 public:
00053 static BOOL LoadBitmap(CBitmap* pBitmap, UINT nResourceID, LPCTSTR pszType);
00054
00055
00056 protected:
00057 CMapStringToPtr m_pService;
00058 CMapStringToPtr m_pCLSID;
00059 BOOL m_bCOM;
00060
00061 friend class CImageFile;
00062 };
00063
00064 extern LPCTSTR RT_JPEG;
00065 extern LPCTSTR RT_PNG;