Files
Slnkdwf/SlnkDWFCom/Whip2PNG.h
Jos Groot Lipman 80d0142c23 SLNKDWF 2.00
svn path=/Slnkdwf/trunk/; revision=12481
2007-08-01 13:42:28 +00:00

122 lines
3.4 KiB
C++

// Whip2PNG.h : Declaration of the CWhip2PNG
#pragma once
#include "resource.h" // main symbols
#include "SLNKDWF.h"
#include "SLNKEvent.h"
// CWhip2PNG
class ATL_NO_VTABLE CWhip2PNG :
public CComObjectRootEx<CComSingleThreadModel>,
public CComCoClass<CWhip2PNG, &CLSID_Whip2PNG>,
public IDispatchImpl<IWhip2PNG, &IID_IWhip2PNG, &LIBID_SLNKDWFLib, /*wMajor =*/ 1, /*wMinor =*/ 0>
{
public:
DECLARE_REGISTRY_RESOURCEID(IDR_WHIP2PNG)
BEGIN_COM_MAP(CWhip2PNG)
COM_INTERFACE_ENTRY(IWhip2PNG)
COM_INTERFACE_ENTRY(IDispatch)
END_COM_MAP()
DECLARE_PROTECT_FINAL_CONSTRUCT()
HRESULT FinalConstruct()
{
CComObject<CSLNKEvent> *pSLNKEvent; // For when the user has clicked on the drawing
HRESULT hr = CComObject<CSLNKEvent>::CreateInstance(&pSLNKEvent);
if(FAILED(hr)) return hr;
pSLNKEvent->AddRef();
hr = pSLNKEvent->QueryInterface(IID_ISLNKEvent, (void **)&m_SLNKEvent);
pSLNKEvent->Release();
if(FAILED(hr)) return hr;
// CComObject< CWhip2DC >* pWhip2DC;
// hr = CComObject<CWhip2DC>::CreateInstance(&pWhip2DC);
// if(FAILED(hr)) return hr;
// pWhip2DC->AddRef();
// hr = pWhip2DC->QueryInterface(&m_iWhip2DC);
// pWhip2DC->Release();
return hr;
}
void FinalRelease()
{
}
public:
CWhip2PNG(); // Default constructor
// Een van de volgende twee moet gebruikt worden om de file te laden
STDMETHOD(Load)(BSTR WhipPath);
STDMETHOD(LoadStream)(VARIANT EPlotStream);
STDMETHOD(SetDimensions)(LONG sizeX, LONG sizeY, LONG offsetX, LONG offsetY, DOUBLE dScale, LONG lRotation);
STDMETHOD(SetLayers)(BSTR RegExp);
STDMETHOD(SaveAsPNG)(BSTR PNGPath);
STDMETHOD(SaveAsWMF)(BSTR WMFPath);
STDMETHOD(TextAsPNG)(BSTR Message, VARIANT *ImageData);
STDMETHOD(GetAsPNG)(VARIANT *ImageData);
STDMETHOD(GetAsTransGIF)(VARIANT *ImageData);
STDMETHOD(GetAsXXX)(VARIANT *ImageData, BOOL bPNG);
STDMETHOD(Find)(LONG findX, LONG findY, BSTR* foundLabel);
STDMETHOD(GetAsMap)(BSTR* AsMap);
STDMETHOD(get_AtlRegExp)(BSTR RegExp, BSTR TestExp, BSTR* pVal);
private:
bool CreateCxImage(CxImage* img);
void InitDC(HDC &myDC);
HRESULT StreamPNG(CxImage &img, VARIANT *ImageData, BOOL bPNG);
CComQIPtr<ISLNKEvent> m_SLNKEvent; // For when the user has clicked on the drawing
// Will also hold minmax drawing XY?
//CComQIPtr<IWhip2DC> m_iWhip2DC;
CWhip2DCImpl m_iWhip2DC;
// Een van de volgende twee zal gezet zijn
CComQIPtr<IEPlotSection> m_iEPlotSection;
CString m_WhipPath;
void putDWGInfo();
LONG m_sizeX, m_sizeY;
LONG m_offsetX, m_offsetY;
double m_dScale;
LONG m_lRotation;
COLORREF m_paperColor; BOOL m_forcePaper;
BOOL m_forceBW;
BOOL m_forceGray;
BOOL m_Maximize;
double m_dwgScale;
CString m_RegExp;
public:
STDMETHOD(get_SLNKEvent)(ISLNKEvent** pVal);
STDMETHOD(get_paperColor)(LONG* pVal);
STDMETHOD(put_paperColor)(LONG newVal);
STDMETHOD(ReplaceColor)(LONG paperColor, LONG oldColor, LONG newColor);
STDMETHOD(get_Maximize)(VARIANT_BOOL* pVal);
STDMETHOD(put_Maximize)(VARIANT_BOOL newVal);
STDMETHOD(get_dwgScale)(DOUBLE* pVal);
STDMETHOD(put_dwgScale)(DOUBLE newVal);
STDMETHOD(get_forceBW)(VARIANT_BOOL* pVal);
STDMETHOD(put_forceBW)(VARIANT_BOOL newVal);
STDMETHOD(get_forceGray)(VARIANT_BOOL* pVal);
STDMETHOD(put_forceGray)(VARIANT_BOOL newVal);
};
OBJECT_ENTRY_AUTO(__uuidof(Whip2PNG), CWhip2PNG)