Fix hatches in svg (x2t: wmf/emf => svg)

This commit is contained in:
Oleg Korshul
2022-09-06 20:59:01 +03:00
parent e82fd3c949
commit 238fc8969d
4 changed files with 814 additions and 740 deletions

View File

@ -130,6 +130,10 @@ namespace NSGraphics
};
GRAPHICS_DECL IGraphicsRenderer* Create();
GRAPHICS_DECL std::string GetHatchBase64(const std::wstring& name,
unsigned char r1, unsigned char g1, unsigned char b1, unsigned char a1,
unsigned char r2, unsigned char g2, unsigned char b2, unsigned char a2);
}

View File

@ -38,4 +38,34 @@ namespace NSGraphics
{
return new CGraphicsRenderer();
}
std::string GetHatchBase64(const std::wstring& name,
unsigned char r1, unsigned char g1, unsigned char b1, unsigned char a1,
unsigned char r2, unsigned char g2, unsigned char b2, unsigned char a2)
{
agg::rgba8 c1 = agg::rgba8(r1, g1, b1, a1);
agg::rgba8 c2 = agg::rgba8(r2, g2, b2, a2);
BYTE* pPattern = new BYTE[HATCH_TX_SIZE * HATCH_TX_SIZE * 4];
agg::GetHatchPattern(name, (agg::rgba8*)pPattern, c1, c2);
CBgraFrame oFrame;
oFrame.put_Data(pPattern);
oFrame.put_Width(HATCH_TX_SIZE);
oFrame.put_Height(HATCH_TX_SIZE);
oFrame.put_Stride(4 * HATCH_TX_SIZE);
BYTE* pPngBuffer = NULL;
int nPngSize = 0;
oFrame.Encode(pPngBuffer, nPngSize, 4);
char* cData64 = NULL;
int nData64Dst = 0;
NSFile::CBase64Converter::Encode(pPngBuffer, nPngSize, cData64, nData64Dst, NSBase64::B64_BASE64_FLAG_NOCRLF);
std::string sRet(cData64, (size_t)nData64Dst);
RELEASEARRAYOBJECTS(cData64);
return sRet;
}
}