Files
Slnkdwf/SlnkDWFCom/Whip2PNG.h
Jos Groot Lipman dcf444798e v4.29 ZLMV#78395 Whip2DC ook correctie voor niet orthogonale Units
Whip2PNG.flags en Whipfile.flags ingevoerd. Bitje +1 om bovenstaande te activeren

svn path=/Slnkdwf/trunk/; revision=61777
2023-09-12 09:25:39 +00:00

133 lines
3.7 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;
LONG m_AAFactor, m_AAMethod;
double m_dScale;
LONG m_lRotation;
COLORREF m_paperColor; BOOL m_forcePaper;
BOOL m_forceBW;
LONG m_markers;
LONG m_flags;
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_markers)(LONG* pVal);
STDMETHOD(put_markers)(LONG newVal);
STDMETHOD(get_flags)(LONG* pVal);
STDMETHOD(put_flags)(LONG newVal);
STDMETHOD(get_forceGray)(VARIANT_BOOL* pVal);
STDMETHOD(put_forceGray)(VARIANT_BOOL newVal);
STDMETHOD(get_LayerCount)(LONG* pVal);
STDMETHOD(get_LayerItem)(ULONG i, BSTR* pVal);
STDMETHOD(SetAntialias)(LONG lFactor, LONG lMethod);
};
OBJECT_ENTRY_AUTO(__uuidof(Whip2PNG), CWhip2PNG)