00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011 #ifndef __PICTUREDECODER_H_
00012 #define __PICTUREDECODER_H_
00013
00014 #include "resource.h"
00015 #include "planydec.h"
00016 #include "plbitmap.h"
00017 #include "plexcept.h"
00018 #include "plstreamsink.h"
00019
00020 extern CComModule _Module;
00021
00022
00023
00024 class ATL_NO_VTABLE CPictureDecoder :
00025 public CComObjectRootEx<CComSingleThreadModel>,
00026 public CComCoClass<CPictureDecoder, &CLSID_PictureDecoder>,
00027 public ISupportErrorInfo,
00028 public IDispatchImpl<IPictureDecoder2, &IID_IPictureDecoder2, &LIBID_PaintX>
00029 {
00030 public:
00031 CPictureDecoder()
00032 {
00033 }
00034
00035 DECLARE_REGISTRY_RESOURCEID(IDR_PICTUREDECODER)
00036
00037 BEGIN_COM_MAP(CPictureDecoder)
00038 COM_INTERFACE_ENTRY(IPictureDecoder)
00039 COM_INTERFACE_ENTRY(IPictureDecoder2)
00040 COM_INTERFACE_ENTRY(IDispatch)
00041 COM_INTERFACE_ENTRY(ISupportErrorInfo)
00042 END_COM_MAP()
00043
00044
00045 STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid);
00046
00047
00048 public:
00049 STDMETHOD(LoadMemPicture)( VARIANT* vByteArray, IUnknown ** ppUnk);
00050 STDMETHOD(LoadResPicture)( int ResourceID, IUnknown ** ppUnk);
00051 STDMETHOD(LoadPicture)( BSTR Filename, IUnknown ** ppUnk);
00052 protected:
00053 IPictureDisp * BitmapToPicture(PLBmp* pBmp);
00054 HRESULT SignalPictureChanged(IUnknown * pUnknown);
00055 HRESULT CreateErrorInfo(PLTextException TextException,REFIID riidSource);
00056 PLAnyPicDecoder m_AnyPicDecoder;
00057 };
00058
00059 #endif //__PICTUREDECODER_H_
00060
00061
00062
00063
00064
00065
00066
00067
00068
00069
00070
00071
00072
00073
00074
00075