Commit 29c879f1 authored by Ilya.Kirillov's avatar Ilya.Kirillov Committed by Alexander Trofimov

Сделано, чтобы метафайлы конвертировались в растр.

git-svn-id: svn://fileserver/activex/AVS/Sources/TeamlabOffice/trunk/ServerComponents@65497 954022d7-b5bf-4e40-9824-e11837661b57
parent 7d511bb5
...@@ -13,6 +13,7 @@ ...@@ -13,6 +13,7 @@
#include "../DesktopEditor/cximage/CxImage/ximage.h" #include "../DesktopEditor/cximage/CxImage/ximage.h"
#include "../DesktopEditor/fontengine/ApplicationFonts.h" #include "../DesktopEditor/fontengine/ApplicationFonts.h"
#include "../DesktopEditor/fontengine/FontManager.h" #include "../DesktopEditor/fontengine/FontManager.h"
#include "../DesktopEditor/raster/Metafile/MetaFile.h"
#include "../DesktopEditor/common/File.h" #include "../DesktopEditor/common/File.h"
#include "../DesktopEditor/common/Directory.h" #include "../DesktopEditor/common/Directory.h"
...@@ -1243,9 +1244,36 @@ HRESULT CPdfRenderer::DrawImageFromFile(const std::wstring& wsImagePath, const d ...@@ -1243,9 +1244,36 @@ HRESULT CPdfRenderer::DrawImageFromFile(const std::wstring& wsImagePath, const d
if (!IsPageValid()) if (!IsPageValid())
return S_OK; return S_OK;
Aggplus::CImage oAggImage(wsImagePath); Aggplus::CImage* pAggImage = NULL;
if (!DrawImage(&oAggImage, dX, dY, dW, dH, nAlpha))
CImageFileFormatChecker oImageFormat(wsImagePath);
if (_CXIMAGE_FORMAT_WMF == oImageFormat.eFileType || _CXIMAGE_FORMAT_EMF == oImageFormat.eFileType || _CXIMAGE_FORMAT_SVM == oImageFormat.eFileType)
{
// TODO: Реализовать отрисовку метофайлов по нормальному
MetaFile::CMetaFile oMeta(m_pAppFonts);
oMeta.LoadFromFile(wsImagePath.c_str());
double dNewW = std::max(10.0, dW) / 25.4 * 300;
std::wstring wsTempFile = GetTempFile();
oMeta.ConvertToRaster(wsTempFile.c_str(), _CXIMAGE_FORMAT_PNG, dNewW);
pAggImage = new Aggplus::CImage(wsTempFile);
}
else
{
pAggImage = new Aggplus::CImage(wsImagePath);
}
if (!pAggImage)
return S_FALSE;
if (!DrawImage(pAggImage, dX, dY, dW, dH, nAlpha))
{
delete pAggImage;
return S_FALSE; return S_FALSE;
}
delete pAggImage;
return S_OK; return S_OK;
} }
...@@ -1609,6 +1637,25 @@ void CPdfRenderer::UpdateBrush() ...@@ -1609,6 +1637,25 @@ void CPdfRenderer::UpdateBrush()
pImage->LoadJpx(wsTexturePath.c_str(), nImageW, nImageH); pImage->LoadJpx(wsTexturePath.c_str(), nImageW, nImageH);
} }
} }
else if (_CXIMAGE_FORMAT_WMF == oImageFormat.eFileType || _CXIMAGE_FORMAT_EMF == oImageFormat.eFileType || _CXIMAGE_FORMAT_SVM == oImageFormat.eFileType)
{
// TODO: Реализовать отрисовку метофайлов по нормальному
MetaFile::CMetaFile oMeta(m_pAppFonts);
oMeta.LoadFromFile(wsTexturePath.c_str());
double dL, dR, dT, dB;
m_oPath.GetBounds(dL, dT, dR, dB);
double dNewW = std::max(10.0, dR - dL) / 72 * 300;
std::wstring wsTempFile = GetTempFile();
oMeta.ConvertToRaster(wsTempFile.c_str(), _CXIMAGE_FORMAT_PNG, dNewW);
Aggplus::CImage oImage(wsTempFile);
nImageW = abs((int)oImage.GetWidth());
nImageH = abs((int)oImage.GetHeight());
pImage = LoadImage(&oImage, 255);
}
else else
{ {
Aggplus::CImage oImage(wsTexturePath); Aggplus::CImage oImage(wsTexturePath);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment