Refactoring

This commit is contained in:
Oleg Korshul
2023-07-02 13:39:49 +03:00
parent 88a3128b87
commit 4306486c3c
21 changed files with 734 additions and 693 deletions

View File

@ -151,6 +151,8 @@ namespace Aggplus
RELEASEOBJECT(m_pGraphics); RELEASEOBJECT(m_pGraphics);
RELEASEOBJECT(m_pBitmap); RELEASEOBJECT(m_pBitmap);
#endif #endif
RELEASEINTERFACE(m_pAlphaMask);
} }
INT CGraphics::IsDib() INT CGraphics::IsDib()
@ -1201,33 +1203,40 @@ namespace Aggplus
return TRUE; return TRUE;
} }
Status CGraphics::SetAlphaMask(const CAlphaMask &oAlphaMask) Status CGraphics::SetAlphaMask(CAlphaMask* pAlphaMask)
{ {
m_oAlphaMask = oAlphaMask; RELEASEINTERFACE(m_pAlphaMask);
m_oAlphaMask.m_internal->StartApplying(); m_pAlphaMask = pAlphaMask;
if (m_pAlphaMask)
{
m_pAlphaMask->AddRef();
m_pAlphaMask->m_internal->StartApplying();
}
return Ok; return Ok;
} }
Status CGraphics::CreateAlphaMask() Status CGraphics::CreateAlphaMask()
{ {
return m_oAlphaMask.CrateImageBuffer(m_frame_buffer.width(), m_frame_buffer.height()); RELEASEINTERFACE(m_pAlphaMask);
m_pAlphaMask = new CAlphaMask();
return m_pAlphaMask->CreateImageBuffer(m_frame_buffer.width(), m_frame_buffer.height());
} }
Status CGraphics::ResetAlphaMask() Status CGraphics::ResetAlphaMask()
{ {
m_oAlphaMask.Clear(); RELEASEINTERFACE(m_pAlphaMask);
return Ok; return Ok;
} }
Status CGraphics::StartApplyingAlphaMask() Status CGraphics::StartApplyingAlphaMask()
{ {
m_oAlphaMask.m_internal->StartApplying(); m_pAlphaMask->m_internal->StartApplying();
return Ok; return Ok;
} }
void CGraphics::CalculateFullTransform() void CGraphics::CalculateFullTransform()
{ {
m_oFullTransform = m_oCoordTransform; m_oFullTransform = m_oCoordTransform;
m_oFullTransform.Multiply(&m_oBaseTransform, MatrixOrderAppend); m_oFullTransform.Multiply(&m_oBaseTransform, MatrixOrderAppend);
m_oFullTransform.Multiply(&m_oTransform, MatrixOrderPrepend); m_oFullTransform.Multiply(&m_oTransform, MatrixOrderPrepend);
} }
@ -1236,18 +1245,18 @@ namespace Aggplus
return m_oClip.IsClip(); return m_oClip.IsClip();
} }
agg::rendering_buffer &CGraphics::GetRenderingBuffer() agg::rendering_buffer& CGraphics::GetRenderingBuffer()
{ {
if (GenerationAlphaMask == m_oAlphaMask.m_internal->GetStatus()) if (m_pAlphaMask && GenerationAlphaMask == m_pAlphaMask->m_internal->GetStatus())
return m_oAlphaMask.m_internal->GetRenderingBuffer(); return m_pAlphaMask->m_internal->GetRenderingBuffer();
return m_frame_buffer.ren_buf(); return m_frame_buffer.ren_buf();
} }
base_renderer_type &CGraphics::GetRendererBase() base_renderer_type& CGraphics::GetRendererBase()
{ {
if (GenerationAlphaMask == m_oAlphaMask.m_internal->GetStatus() && ImageBuffer == m_oAlphaMask.m_internal->GetDataType()) if (GenerationAlphaMask == m_pAlphaMask->GetStatus() && ImageBuffer == m_pAlphaMask->GetDataType())
return m_oAlphaMask.m_internal->GetRendererBaseImage(); return m_pAlphaMask->m_internal->GetRendererBaseImage();
return m_frame_buffer.ren_base(); return m_frame_buffer.ren_base();
} }
@ -1257,12 +1266,12 @@ namespace Aggplus
{ {
if (!m_oClip.IsClip()) if (!m_oClip.IsClip())
{ {
if (ApplyingAlphaMask == m_oAlphaMask.m_internal->GetStatus()) if (m_pAlphaMask && ApplyingAlphaMask == m_pAlphaMask->GetStatus())
{ {
if (ImageBuffer == m_oAlphaMask.m_internal->GetDataType()) if (ImageBuffer == m_pAlphaMask->GetDataType())
return agg::render_scanlines(m_rasterizer.get_rasterizer(), m_oAlphaMask.m_internal->GetScanlineImage(), ren); return agg::render_scanlines(m_rasterizer.get_rasterizer(), m_pAlphaMask->m_internal->GetScanlineImage(), ren);
else if (AlphaBuffer == m_oAlphaMask.m_internal->GetDataType()) else if (AlphaBuffer == m_pAlphaMask->GetDataType())
return agg::render_scanlines(m_rasterizer.get_rasterizer(), m_oAlphaMask.m_internal->GetScanlineABuffer(), ren); return agg::render_scanlines(m_rasterizer.get_rasterizer(), m_pAlphaMask->m_internal->GetScanlineABuffer(), ren);
} }
return agg::render_scanlines(m_rasterizer.get_rasterizer(), m_rasterizer.get_scanline(), ren); return agg::render_scanlines(m_rasterizer.get_rasterizer(), m_rasterizer.get_scanline(), ren);
@ -1317,12 +1326,12 @@ namespace Aggplus
{ {
if (!m_oClip.IsClip()) if (!m_oClip.IsClip())
{ {
if (ApplyingAlphaMask == m_oAlphaMask.m_internal->GetStatus()) if (m_pAlphaMask && ApplyingAlphaMask == m_pAlphaMask->GetStatus())
{ {
if (ImageBuffer == m_oAlphaMask.m_internal->GetDataType()) if (ImageBuffer == m_pAlphaMask->GetDataType())
return agg::render_scanlines(ras, m_oAlphaMask.m_internal->GetScanlineImage(), ren); return agg::render_scanlines(ras, m_pAlphaMask->m_internal->GetScanlineImage(), ren);
else if (AlphaBuffer == m_oAlphaMask.m_internal->GetDataType()) else if (AlphaBuffer == m_pAlphaMask->GetDataType())
return agg::render_scanlines(ras, m_oAlphaMask.m_internal->GetScanlineABuffer(), ren); return agg::render_scanlines(ras, m_pAlphaMask->m_internal->GetScanlineABuffer(), ren);
} }
return agg::render_scanlines(ras, m_rasterizer.get_scanline(), ren); return agg::render_scanlines(ras, m_rasterizer.get_scanline(), ren);

View File

@ -279,7 +279,7 @@ protected:
CClipMulti m_oClip; CClipMulti m_oClip;
CAlphaMask m_oAlphaMask; CAlphaMask* m_pAlphaMask;
agg::svg::frame_buffer_rgba m_frame_buffer; agg::svg::frame_buffer_rgba m_frame_buffer;
agg::svg::rasterizer m_rasterizer; agg::svg::rasterizer m_rasterizer;
@ -396,7 +396,7 @@ public:
INT DrawStringPathC(const LONG& lText, CFontManager* pFont, CBrush* pBrush, double x, double y); INT DrawStringPathC(const LONG& lText, CFontManager* pFont, CBrush* pBrush, double x, double y);
//Работа с альфа-маской //Работа с альфа-маской
Status SetAlphaMask(const CAlphaMask& oAlphaMask); Status SetAlphaMask(CAlphaMask* pAlphaMask);
Status CreateAlphaMask(); Status CreateAlphaMask();
Status ResetAlphaMask(); Status ResetAlphaMask();
Status StartApplyingAlphaMask(); Status StartApplyingAlphaMask();

View File

@ -556,9 +556,9 @@ HRESULT CGraphicsRenderer::put_BrushTexturePath(const std::wstring& bsPath)
m_oBrush.TexturePath = bsPath; m_oBrush.TexturePath = bsPath;
return S_OK; return S_OK;
} }
HRESULT CGraphicsRenderer::get_BrushTextureImage(Aggplus::CImage *pImage) HRESULT CGraphicsRenderer::get_BrushTextureImage(Aggplus::CImage** pImage)
{ {
pImage = m_oBrush.Image; *pImage = m_oBrush.Image;
return S_OK; return S_OK;
} }
HRESULT CGraphicsRenderer::put_BrushTextureImage(Aggplus::CImage *pImage) HRESULT CGraphicsRenderer::put_BrushTextureImage(Aggplus::CImage *pImage)
@ -1406,9 +1406,9 @@ void CGraphicsRenderer::CreateFlip(BYTE* pPixels, const Aggplus::CDoubleRect& oR
m_pRenderer->SetPageUnit(Aggplus::UnitMillimeter); m_pRenderer->SetPageUnit(Aggplus::UnitMillimeter);
} }
void CGraphicsRenderer::SetAlphaMask(const Aggplus::CAlphaMask &oAlphaMask) void CGraphicsRenderer::SetAlphaMask(Aggplus::CAlphaMask* pAlphaMask)
{ {
m_pRenderer->SetAlphaMask(oAlphaMask); m_pRenderer->SetAlphaMask(pAlphaMask);
} }
void CGraphicsRenderer::put_GlobalAlphaEnabled(const bool& bEnabled, const double& dVal) void CGraphicsRenderer::put_GlobalAlphaEnabled(const bool& bEnabled, const double& dVal)

View File

@ -179,7 +179,7 @@ public:
virtual HRESULT put_BrushAlpha2(const LONG& lAlpha); virtual HRESULT put_BrushAlpha2(const LONG& lAlpha);
virtual HRESULT get_BrushTexturePath(std::wstring* bsPath); virtual HRESULT get_BrushTexturePath(std::wstring* bsPath);
virtual HRESULT put_BrushTexturePath(const std::wstring& bsPath); virtual HRESULT put_BrushTexturePath(const std::wstring& bsPath);
virtual HRESULT get_BrushTextureImage(Aggplus::CImage* pImage); virtual HRESULT get_BrushTextureImage(Aggplus::CImage** pImage);
virtual HRESULT put_BrushTextureImage(Aggplus::CImage* pImage); virtual HRESULT put_BrushTextureImage(Aggplus::CImage* pImage);
virtual HRESULT get_BrushTextureMode(LONG* lMode); virtual HRESULT get_BrushTextureMode(LONG* lMode);
virtual HRESULT put_BrushTextureMode(const LONG& lMode); virtual HRESULT put_BrushTextureMode(const LONG& lMode);
@ -352,7 +352,7 @@ public:
inline double GetPixH() { return m_pRenderer->GetPixH(); } inline double GetPixH() { return m_pRenderer->GetPixH(); }
// alpha mask methods // alpha mask methods
void SetAlphaMask(const Aggplus::CAlphaMask& oAlphaMask); void SetAlphaMask(Aggplus::CAlphaMask* pAlphaMask);
// smart methods // smart methods
void drawHorLine(BYTE align, double y, double x, double r, double penW) void drawHorLine(BYTE align, double y, double x, double r, double penW)

View File

@ -199,7 +199,7 @@ public:
virtual HRESULT put_BrushAlpha2(const LONG& lAlpha) = 0; virtual HRESULT put_BrushAlpha2(const LONG& lAlpha) = 0;
virtual HRESULT get_BrushTexturePath(std::wstring* bsPath) = 0; virtual HRESULT get_BrushTexturePath(std::wstring* bsPath) = 0;
virtual HRESULT put_BrushTexturePath(const std::wstring& bsPath) = 0; virtual HRESULT put_BrushTexturePath(const std::wstring& bsPath) = 0;
virtual HRESULT get_BrushTextureImage(Aggplus::CImage* pImage) = 0; virtual HRESULT get_BrushTextureImage(Aggplus::CImage** pImage) = 0;
virtual HRESULT put_BrushTextureImage(Aggplus::CImage* pImage) = 0; virtual HRESULT put_BrushTextureImage(Aggplus::CImage* pImage) = 0;
virtual HRESULT get_BrushTextureMode(LONG* lMode) = 0; virtual HRESULT get_BrushTextureMode(LONG* lMode) = 0;
virtual HRESULT put_BrushTextureMode(const LONG& lMode) = 0; virtual HRESULT put_BrushTextureMode(const LONG& lMode) = 0;

View File

@ -46,95 +46,95 @@
namespace Aggplus namespace Aggplus
{ {
class CDIB : public IGrObject class CDIB : public IGrObject
{ {
public: public:
BYTE* m_pBits; BYTE* m_pBits;
LONG m_lWidth; LONG m_lWidth;
LONG m_lHeight; LONG m_lHeight;
public: public:
CDIB() : IGrObject() CDIB() : IGrObject()
{ {
m_pBits = NULL; m_pBits = NULL;
m_lWidth = 0; m_lWidth = 0;
m_lHeight = 0; m_lHeight = 0;
} }
virtual ~CDIB() virtual ~CDIB()
{ {
// delete all in system wrapper // delete all in system wrapper
} }
virtual INT Create(LONG lWidth, LONG lHeight, double dDPIX, double dDPIY) = 0; virtual INT Create(LONG lWidth, LONG lHeight, double dDPIX, double dDPIY) = 0;
}; };
} }
namespace NSGraphics namespace NSGraphics
{ {
class GRAPHICS_DECL IGraphicsRenderer : public IRenderer class GRAPHICS_DECL IGraphicsRenderer : public IRenderer
{ {
public: public:
IGraphicsRenderer() {} IGraphicsRenderer() {}
virtual ~IGraphicsRenderer() {} virtual ~IGraphicsRenderer() {}
public: public:
virtual void SetImageCache(NSImages::IImageFilesCache* pCache) = 0; virtual void SetImageCache(NSImages::IImageFilesCache* pCache) = 0;
virtual void SetFontManager(NSFonts::IFontManager* pManager = NULL) = 0; virtual void SetFontManager(NSFonts::IFontManager* pManager = NULL) = 0;
virtual void CheckFontManager() = 0; virtual void CheckFontManager() = 0;
virtual NSFonts::IFontManager* GetFontManager() = 0; virtual NSFonts::IFontManager* GetFontManager() = 0;
virtual void CloseFont() = 0; virtual void CloseFont() = 0;
virtual void ClearInstallFont() = 0; virtual void ClearInstallFont() = 0;
virtual void SetSwapRGB(bool bValue) = 0;
virtual void SetTileImageDpi(const double& dDpi) = 0;
public: virtual void SetSwapRGB(bool bValue) = 0;
virtual void CreateFromBgraFrame(CBgraFrame* pFrame) = 0; virtual void SetTileImageDpi(const double& dDpi) = 0;
virtual void SetCoordTransformOffset(double dOffsetX, double dOffsetY) = 0;
public:
virtual void CreateFromBgraFrame(CBgraFrame* pFrame) = 0;
virtual void SetCoordTransformOffset(double dOffsetX, double dOffsetY) = 0;
virtual void SavePen(NSStructures::CPen& oPen) = 0; virtual void SavePen(NSStructures::CPen& oPen) = 0;
virtual void RestorePen(const NSStructures::CPen& oPen) = 0; virtual void RestorePen(const NSStructures::CPen& oPen) = 0;
virtual void SaveBrush(NSStructures::CBrush& oBrush) = 0; virtual void SaveBrush(NSStructures::CBrush& oBrush) = 0;
virtual void RestoreBrush(const NSStructures::CBrush& oBrush) = 0; virtual void RestoreBrush(const NSStructures::CBrush& oBrush) = 0;
virtual void put_GlobalAlphaEnabled(const bool& bEnabled, const double& dVal) = 0; virtual void put_GlobalAlphaEnabled(const bool& bEnabled, const double& dVal) = 0;
virtual void put_IntegerGrid(const bool& bEnabled) = 0; virtual void put_IntegerGrid(const bool& bEnabled) = 0;
virtual bool get_IntegerGrid() = 0; virtual bool get_IntegerGrid() = 0;
virtual void AddRect(const double& x, const double& y, const double& w, const double& h) = 0; virtual void AddRect(const double& x, const double& y, const double& w, const double& h) = 0;
virtual void SetFontAttack() = 0; virtual void SetFontAttack() = 0;
virtual void Create(BYTE* pPixels, const Aggplus::CDoubleRect& oRect, LONG lWidthControl, LONG lHeightControl, Aggplus::CDIB* pDib = NULL) = 0; virtual void Create(BYTE* pPixels, const Aggplus::CDoubleRect& oRect, LONG lWidthControl, LONG lHeightControl, Aggplus::CDIB* pDib = NULL) = 0;
virtual void CreateFlip(BYTE* pPixels, const Aggplus::CDoubleRect& oRect, LONG lWidthControl, LONG lHeightControl, Aggplus::CDIB* pDib = NULL) = 0; virtual void CreateFlip(BYTE* pPixels, const Aggplus::CDoubleRect& oRect, LONG lWidthControl, LONG lHeightControl, Aggplus::CDIB* pDib = NULL) = 0;
virtual Aggplus::CMatrix* GetFullTransform() = 0; virtual Aggplus::CMatrix* GetFullTransform() = 0;
virtual Aggplus::CMatrix* GetTransformMatrix() = 0; virtual Aggplus::CMatrix* GetTransformMatrix() = 0;
virtual void CalculateFullTransform() = 0; virtual void CalculateFullTransform() = 0;
virtual void PathCommandRect(double x, double y, double w, double h) = 0; virtual void PathCommandRect(double x, double y, double w, double h) = 0;
virtual Aggplus::CMatrix* GetCoordTransform() = 0; virtual Aggplus::CMatrix* GetCoordTransform() = 0;
virtual void Fill() = 0; virtual void Fill() = 0;
virtual void Stroke() = 0; virtual void Stroke() = 0;
virtual double GetPixW() = 0; virtual double GetPixW() = 0;
virtual double GetPixH() = 0; virtual double GetPixH() = 0;
//alpha mask methods //alpha mask methods
virtual void SetAlphaMask(const Aggplus::CAlphaMask& oAlphaMask) = 0; virtual void SetAlphaMask(Aggplus::CAlphaMask* pAlphaMask) = 0;
// smart methods // smart methods
virtual void drawHorLine(BYTE align, double y, double x, double r, double penW) = 0; virtual void drawHorLine(BYTE align, double y, double x, double r, double penW) = 0;
virtual void drawHorLine2(BYTE align, double y, double x, double r, double penW) = 0; virtual void drawHorLine2(BYTE align, double y, double x, double r, double penW) = 0;
virtual void drawVerLine(BYTE align, double x, double y, double b, double penW) = 0; virtual void drawVerLine(BYTE align, double x, double y, double b, double penW) = 0;
virtual void drawHorLineExt(BYTE align, double y, double x, double r, double penW, double leftMW, double rightMW) = 0; virtual void drawHorLineExt(BYTE align, double y, double x, double r, double penW, double leftMW, double rightMW) = 0;
// test // test
virtual void put_BrushGradInfo(const NSStructures::GradientInfo &_ginfo) = 0; virtual void put_BrushGradInfo(const NSStructures::GradientInfo &_ginfo) = 0;
virtual void put_BlendMode(const unsigned int nBlendMode) = 0; virtual void put_BlendMode(const unsigned int nBlendMode) = 0;
}; };
GRAPHICS_DECL IGraphicsRenderer* Create(); GRAPHICS_DECL IGraphicsRenderer* Create();
GRAPHICS_DECL std::string GetHatchBase64(const std::wstring& name, GRAPHICS_DECL std::string GetHatchBase64(const std::wstring& name,
unsigned char r1, unsigned char g1, unsigned char b1, unsigned char a1, unsigned char r1, unsigned char g1, unsigned char b1, unsigned char a1,

View File

@ -8,12 +8,12 @@ CONFIG += graphics_dynamic_library
DEFINES += _QT DEFINES += _QT
graphics_dynamic_library { graphics_dynamic_library {
CONFIG += shared CONFIG += shared
CONFIG += plugin CONFIG += plugin
DEFINES += GRAPHICS_USE_DYNAMIC_LIBRARY_BUILDING DEFINES += GRAPHICS_USE_DYNAMIC_LIBRARY_BUILDING
} else { } else {
DEFINES += GRAPHICS_NO_USE_DYNAMIC_LIBRARY DEFINES += GRAPHICS_NO_USE_DYNAMIC_LIBRARY
CONFIG += static CONFIG += static
} }
CORE_ROOT_DIR = $$PWD/../../.. CORE_ROOT_DIR = $$PWD/../../..
@ -36,6 +36,7 @@ INCLUDEPATH += \
# matrix # matrix
HEADERS += \ HEADERS += \
$$GRAPHICS_AGG_PATH/include/test_grads/custom_gradients.h \
./../Matrix_private.h \ ./../Matrix_private.h \
./../Matrix.h ./../Matrix.h
@ -60,7 +61,7 @@ HEADERS += \
SOURCES += \ SOURCES += \
./../AlphaMask_private.cpp \ ./../AlphaMask_private.cpp \
./../AlphaMask.cpp ./../AlphaMask.cpp
SOURCES += \ SOURCES += \
$$GRAPHICS_AGG_PATH/src/agg_arc.cpp \ $$GRAPHICS_AGG_PATH/src/agg_arc.cpp \
@ -110,11 +111,12 @@ HEADERS += \
./../MetafileToGraphicsRenderer.h \ ./../MetafileToGraphicsRenderer.h \
./../FormField.h \ ./../FormField.h \
./../structures.h \ ./../structures.h \
./../shading_info.h \
./../Graphics.h \ ./../Graphics.h \
./../GraphicsRenderer.h \ ./../GraphicsRenderer.h \
\ \
./Graphics.h \ ./Graphics.h \
./Image.h \ ./Image.h
SOURCES += \ SOURCES += \
./../ArrowHead.cpp \ ./../ArrowHead.cpp \

View File

@ -67,57 +67,72 @@ METAFILE_PATH = $$PWD/../../raster/Metafile
!metafile_disable_svg { !metafile_disable_svg {
DEFINES += METAFILE_SUPPORT_SVG DEFINES += METAFILE_SUPPORT_SVG
HEADERS += \ # DEPRECATED ENGINE. REMOVE IN 7.6+ VERSIONS
$$METAFILE_PATH/svg/SVGFramework.h \ #CONFIG += svg_old_version
$$METAFILE_PATH/svg/SVGTransformer.h \
$$METAFILE_PATH/svg/SvgTypes.h \
$$METAFILE_PATH/svg/CSvgFile.h \
$$METAFILE_PATH/svg/CSvgParser.h \
$$METAFILE_PATH/svg/SvgObjects/CContainer.h \
$$METAFILE_PATH/svg/SvgObjects/CGradient.h \
$$METAFILE_PATH/svg/SvgObjects/CClipPath.h \
$$METAFILE_PATH/svg/SvgObjects/CMask.h \
$$METAFILE_PATH/svg/SvgObjects/CPattern.h \
$$METAFILE_PATH/svg/SvgObjects/CSymbol.h \
$$METAFILE_PATH/svg/SvgObjects/CMarker.h \
$$METAFILE_PATH/svg/SvgObjects/CImage.h \
$$METAFILE_PATH/svg/SvgObjects/CLine.h \
$$METAFILE_PATH/svg/SvgObjects/CRect.h \
$$METAFILE_PATH/svg/SvgObjects/CCircle.h \
$$METAFILE_PATH/svg/SvgObjects/CEllipse.h \
$$METAFILE_PATH/svg/SvgObjects/CPath.h \
$$METAFILE_PATH/svg/SvgObjects/CText.h \
$$METAFILE_PATH/svg/SvgObjects/CUse.h \
$$METAFILE_PATH/svg/SvgObjects/CPolyline.h \
$$METAFILE_PATH/svg/SvgObjects/CStyle.h \
$$METAFILE_PATH/svg/SvgObjects/CObjectBase.h \
$$METAFILE_PATH/svg/SvgUtils.h
SOURCES += \ svg_old_version {
$$METAFILE_PATH/svg/SVGFramework.cpp \
$$METAFILE_PATH/svg/SVGTransformer.cpp \
$$METAFILE_PATH/svg/CSvgFile.cpp \
$$METAFILE_PATH/svg/CSvgParser.cpp \
$$METAFILE_PATH/svg/SvgObjects/CContainer.cpp \
$$METAFILE_PATH/svg/SvgObjects/CGradient.cpp \
$$METAFILE_PATH/svg/SvgObjects/CClipPath.cpp \
$$METAFILE_PATH/svg/SvgObjects/CMask.cpp \
$$METAFILE_PATH/svg/SvgObjects/CMarker.cpp \
$$METAFILE_PATH/svg/SvgObjects/CPattern.cpp \
$$METAFILE_PATH/svg/SvgObjects/CSymbol.cpp \
$$METAFILE_PATH/svg/SvgObjects/CImage.cpp \
$$METAFILE_PATH/svg/SvgObjects/CLine.cpp \
$$METAFILE_PATH/svg/SvgObjects/CRect.cpp \
$$METAFILE_PATH/svg/SvgObjects/CCircle.cpp \
$$METAFILE_PATH/svg/SvgObjects/CEllipse.cpp \
$$METAFILE_PATH/svg/SvgObjects/CPath.cpp \
$$METAFILE_PATH/svg/SvgObjects/CText.cpp \
$$METAFILE_PATH/svg/SvgObjects/CUse.cpp \
$$METAFILE_PATH/svg/SvgObjects/CPolyline.cpp \
$$METAFILE_PATH/svg/SvgObjects/CObjectBase.cpp \
$$METAFILE_PATH/svg/SvgObjects/CStyle.cpp
include($$METAFILE_PATH/../../../Common/3dParty/html/css/CssCalculator.pri) DEFINES += SVG_OLD_ENGINE
HEADERS += \
$$METAFILE_PATH/svg/SVGFramework.h \
$$METAFILE_PATH/svg/SVGTransformer.h
SOURCES += \
$$METAFILE_PATH/svg/SVGFramework.cpp \
$$METAFILE_PATH/svg/SVGTransformer.cpp
} else {
HEADERS += \
$$METAFILE_PATH/svg/SvgTypes.h \
$$METAFILE_PATH/svg/CSvgFile.h \
$$METAFILE_PATH/svg/CSvgParser.h \
$$METAFILE_PATH/svg/SvgObjects/CContainer.h \
$$METAFILE_PATH/svg/SvgObjects/CGradient.h \
$$METAFILE_PATH/svg/SvgObjects/CClipPath.h \
$$METAFILE_PATH/svg/SvgObjects/CMask.h \
$$METAFILE_PATH/svg/SvgObjects/CPattern.h \
$$METAFILE_PATH/svg/SvgObjects/CSymbol.h \
$$METAFILE_PATH/svg/SvgObjects/CMarker.h \
$$METAFILE_PATH/svg/SvgObjects/CImage.h \
$$METAFILE_PATH/svg/SvgObjects/CLine.h \
$$METAFILE_PATH/svg/SvgObjects/CRect.h \
$$METAFILE_PATH/svg/SvgObjects/CCircle.h \
$$METAFILE_PATH/svg/SvgObjects/CEllipse.h \
$$METAFILE_PATH/svg/SvgObjects/CPath.h \
$$METAFILE_PATH/svg/SvgObjects/CText.h \
$$METAFILE_PATH/svg/SvgObjects/CUse.h \
$$METAFILE_PATH/svg/SvgObjects/CPolyline.h \
$$METAFILE_PATH/svg/SvgObjects/CStyle.h \
$$METAFILE_PATH/svg/SvgObjects/CObjectBase.h \
$$METAFILE_PATH/svg/SvgUtils.h
SOURCES += \
$$METAFILE_PATH/svg/CSvgFile.cpp \
$$METAFILE_PATH/svg/CSvgParser.cpp \
$$METAFILE_PATH/svg/SvgObjects/CContainer.cpp \
$$METAFILE_PATH/svg/SvgObjects/CGradient.cpp \
$$METAFILE_PATH/svg/SvgObjects/CClipPath.cpp \
$$METAFILE_PATH/svg/SvgObjects/CMask.cpp \
$$METAFILE_PATH/svg/SvgObjects/CMarker.cpp \
$$METAFILE_PATH/svg/SvgObjects/CPattern.cpp \
$$METAFILE_PATH/svg/SvgObjects/CSymbol.cpp \
$$METAFILE_PATH/svg/SvgObjects/CImage.cpp \
$$METAFILE_PATH/svg/SvgObjects/CLine.cpp \
$$METAFILE_PATH/svg/SvgObjects/CRect.cpp \
$$METAFILE_PATH/svg/SvgObjects/CCircle.cpp \
$$METAFILE_PATH/svg/SvgObjects/CEllipse.cpp \
$$METAFILE_PATH/svg/SvgObjects/CPath.cpp \
$$METAFILE_PATH/svg/SvgObjects/CText.cpp \
$$METAFILE_PATH/svg/SvgObjects/CUse.cpp \
$$METAFILE_PATH/svg/SvgObjects/CPolyline.cpp \
$$METAFILE_PATH/svg/SvgObjects/CObjectBase.cpp \
$$METAFILE_PATH/svg/SvgObjects/CStyle.cpp
include($$METAFILE_PATH/../../../Common/3dParty/html/css/CssCalculator.pri)
}
} }
!metafile_disable_svm { !metafile_disable_svm {

File diff suppressed because it is too large Load Diff

View File

@ -32,16 +32,12 @@
#ifndef _BUILD_GRAPHICS_STRUCTURES_H_ #ifndef _BUILD_GRAPHICS_STRUCTURES_H_
#define _BUILD_GRAPHICS_STRUCTURES_H_ #define _BUILD_GRAPHICS_STRUCTURES_H_
#include "../common/Array.h"
#include "../graphics/aggplustypes.h"
#include "../agg-2.4/include/agg_color_rgba.h"
#include "shading_info.h"
#include <cmath> #include <cmath>
#include <string> #include <string>
#include <string.h> #include <string.h>
#include <stdlib.h> #include <stdlib.h>
#include <iostream>
#include "shading_info.h"
#include "Matrix.h" #include "Matrix.h"
// pen ----------------------------------------------------------- // pen -----------------------------------------------------------

View File

@ -69,7 +69,7 @@ int main(int argc, char *argv[])
} }
case LoadMaskFromBuffer: case LoadMaskFromBuffer:
{ {
Aggplus::CAlphaMask oAlphaMask; Aggplus::CAlphaMask* pAlphaMask = new Aggplus::CAlphaMask();
BYTE* pAlphaBuffer = new BYTE[unWidth * unHeight]; BYTE* pAlphaBuffer = new BYTE[unWidth * unHeight];
@ -84,10 +84,11 @@ int main(int argc, char *argv[])
uchAlphaValue += 25; uchAlphaValue += 25;
} }
oAlphaMask.LoadFromAlphaBuffer(pAlphaBuffer, unWidth, unHeight, false); pAlphaMask->LoadFromAlphaBuffer(pAlphaBuffer, unWidth, unHeight, false);
pRasterRenderer->SetAlphaMask(oAlphaMask); pRasterRenderer->SetAlphaMask(pAlphaMask);
pAlphaMask->Release();
break; break;
} }
case LoadMaskFromFile: case LoadMaskFromFile:

View File

@ -303,7 +303,6 @@ namespace MetaFile
#ifdef METAFILE_SUPPORT_SVG #ifdef METAFILE_SUPPORT_SVG
m_oSvgFile.SetFontManager(m_pFontManager); m_oSvgFile.SetFontManager(m_pFontManager);
m_oSvgFile2.SetFontManager(m_pFontManager);
#endif #endif
//------------------------------------------------------ //------------------------------------------------------
@ -351,7 +350,7 @@ namespace MetaFile
#endif #endif
// Это не svm // Это не svm
#ifdef METAFILE_SUPPORT_SVG #ifdef METAFILE_SUPPORT_SVG
if (m_oSvgFile2.OpenFromFile(wsFilePath) == true) if (m_oSvgFile.OpenFromFile(wsFilePath) == true)
{ {
m_lType = c_lMetaSvg; m_lType = c_lMetaSvg;
return true; return true;
@ -486,7 +485,7 @@ namespace MetaFile
#ifdef METAFILE_SUPPORT_SVG #ifdef METAFILE_SUPPORT_SVG
case c_lMetaSvg: case c_lMetaSvg:
{ {
m_oSvgFile2.Draw(pRenderer, dX, dY, dWidth, dHeight); m_oSvgFile.Draw(pRenderer, dX, dY, dWidth, dHeight);
break; break;
} }
#endif #endif
@ -565,7 +564,7 @@ namespace MetaFile
#ifdef METAFILE_SUPPORT_SVG #ifdef METAFILE_SUPPORT_SVG
case c_lMetaSvg: case c_lMetaSvg:
{ {
m_oSvgFile2.GetBounds(*pdX, *pdY, *pdW, *pdH); m_oSvgFile.GetBounds(*pdX, *pdY, *pdW, *pdH);
break; break;
} }
#endif #endif

View File

@ -46,9 +46,13 @@
#endif #endif
#ifdef METAFILE_SUPPORT_SVG #ifdef METAFILE_SUPPORT_SVG
#ifdef SVG_OLD_ENGINE
#include "svg/SVGTransformer.h" #include "svg/SVGTransformer.h"
typedef CSVGTransformer CSvgFile;
#else
#include "svg/CSvgFile.h" #include "svg/CSvgFile.h"
#endif #endif
#endif
namespace MetaFile namespace MetaFile
{ {
@ -95,8 +99,7 @@ namespace MetaFile
#endif #endif
#ifdef METAFILE_SUPPORT_SVG #ifdef METAFILE_SUPPORT_SVG
CSVGTransformer m_oSvgFile; CSvgFile m_oSvgFile;
CSvgFile m_oSvgFile2;
#endif #endif
int m_lType; int m_lType;

View File

@ -99,3 +99,13 @@ int CSVGTransformer::get_Metrics()
{ {
return m_internal->m_oXmlParser.GetMetrics(); return m_internal->m_oXmlParser.GetMetrics();
} }
bool CSVGTransformer::GetBounds(double &dX, double &dY, double &dWidth, double &dHeight)
{
dX = 0;
dY = 0;
dWidth = get_Width();
dHeight = get_Height();
return true;
}

View File

@ -27,6 +27,8 @@ public:
int get_Height(); int get_Height();
int get_Metrics(); int get_Metrics();
bool GetBounds(double &dX, double &dY, double &dWidth, double &dHeight);
private: private:
CSVGTransformer_private* m_internal; CSVGTransformer_private* m_internal;
}; };

View File

@ -5,7 +5,7 @@
namespace SVG namespace SVG
{ {
CMarker::CMarker(XmlUtils::CXmlNode &oNode) CMarker::CMarker(XmlUtils::CXmlNode &oNode)
: CObject(oNode), m_pImage(NULL) : CObject(oNode), m_pImage(NULL)
{ {
m_oWindow.m_oX .SetValue(oNode.GetAttribute(L"refX")); m_oWindow.m_oX .SetValue(oNode.GetAttribute(L"refX"));

View File

@ -16,7 +16,7 @@
namespace SVG namespace SVG
{ {
#define DefaultFontFamily L"Times New Roman" #define DefaultFontFamily L"Times New Roman"
CTSpan::CTSpan(XmlUtils::CXmlNode& oNode, CRenderedObject* pParent, NSFonts::IFontManager* pFontManager, bool bCheckText) CTSpan::CTSpan(XmlUtils::CXmlNode& oNode, CRenderedObject* pParent, NSFonts::IFontManager* pFontManager, bool bCheckText)
: CRenderedObject(oNode, pParent), m_pFontManager(pFontManager), pPrevElement(NULL) : CRenderedObject(oNode, pParent), m_pFontManager(pFontManager), pPrevElement(NULL)

View File

@ -73,7 +73,7 @@ namespace SVG
bool Draw(IRenderer* pRenderer, const CSvgFile* pFile, CommandeMode oMode = CommandeModeDraw, const TSvgStyles* pOtherStyles = NULL) const override; bool Draw(IRenderer* pRenderer, const CSvgFile* pFile, CommandeMode oMode = CommandeModeDraw, const TSvgStyles* pOtherStyles = NULL) const override;
static CTextPath* Create(XmlUtils::CXmlNode& oNode, CRenderedObject* pParent = NULL, NSFonts::IFontManager* pFontManager = NULL, const CSvgFile* pFile = NULL); static CTextPath* Create(XmlUtils::CXmlNode& oNode, CRenderedObject* pParent = NULL, NSFonts::IFontManager* pFontManager = NULL, const CSvgFile* pFile = NULL);
private: private:
void DrawGlyph(CTSpan* pTSpan, CMovingPath& oMovingPath, IRenderer* pRenderer, const CSvgFile* pFile, CommandeMode oMode) const; void DrawGlyph(CTSpan* pTSpan, CMovingPath& oMovingPath, IRenderer* pRenderer, const CSvgFile* pFile, CommandeMode oMode) const;

View File

@ -6,7 +6,7 @@
namespace SVG namespace SVG
{ {
class CUse : public CRenderedObject class CUse : public CRenderedObject
{ {
public: public:
CUse(XmlUtils::CXmlNode& oNode, CRenderedObject* pParent = NULL, const CSvgFile* pFile = NULL); CUse(XmlUtils::CXmlNode& oNode, CRenderedObject* pParent = NULL, const CSvgFile* pFile = NULL);

View File

@ -8,16 +8,16 @@
namespace SVG namespace SVG
{ {
#define MapCI std::map<std::wstring, std::wstring>::const_iterator #define MapCI std::map<std::wstring, std::wstring>::const_iterator
#define SvgDigit NSCSS::NSProperties::CDigit #define SvgDigit NSCSS::NSProperties::CDigit
#define SvgString NSCSS::NSProperties::CString #define SvgString NSCSS::NSProperties::CString
#define SvgColor NSCSS::NSProperties::CColor #define SvgColor NSCSS::NSProperties::CColor
#define SvgEnum NSCSS::NSProperties::CEnum #define SvgEnum NSCSS::NSProperties::CEnum
#define SvgTransform NSCSS::NSProperties::CTransform #define SvgTransform NSCSS::NSProperties::CTransform
#define SvgFont NSCSS::NSProperties::CFont #define SvgFont NSCSS::NSProperties::CFont
#define SvgText NSCSS::NSProperties::CText #define SvgText NSCSS::NSProperties::CText
struct TStroke struct TStroke
{ {

View File

@ -9,7 +9,7 @@
namespace SVG namespace SVG
{ {
#define ADD_COLOR( COLOR, R, G, B ) m_Table.insert(std::pair<std::wstring, unsigned int>( L##COLOR, ( R << 0 ) | ( G << 8 ) | ( B << 16 ) )) #define ADD_COLOR( COLOR, R, G, B ) m_Table.insert(std::pair<std::wstring, unsigned int>( L##COLOR, ( R << 0 ) | ( G << 8 ) | ( B << 16 ) ))
enum Metrics enum Metrics
{ {
@ -219,18 +219,18 @@ namespace SVG
{ {
switch (eMetrics) switch (eMetrics)
{ {
case EM: break; case EM: break;
case EX: break; case EX: break;
case PX: dValue *= 96 / 25.4; case PX: dValue *= 96 / 25.4;
case PT: break; case PT: break;
case PC: break; case PC: break;
case CM: break; case CM: break;
case MM: break; case MM: break;
case INCH: break; case INCH: break;
case PCT: break; case PCT: break;
case UNDEFINED: break; case UNDEFINED: break;
} }
} }