[Libreoffice-commits] core.git: Branch 'distro/collabora/cp-4.2' - 2 commits - vcl/source
Tomaž Vajngerl
tomaz.vajngerl at collabora.com
Sun Apr 27 10:49:34 PDT 2014
vcl/source/filter/wmf/winmtf.cxx | 17 +++--------------
vcl/source/filter/wmf/winwmf.cxx | 37 ++++++++++++++++++++++++++++---------
2 files changed, 31 insertions(+), 23 deletions(-)
New commits:
commit d0855e3a4d874b76b64d219ba2737901621bda6a
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Thu Apr 24 18:46:48 2014 +0200
fdo#77089 if available, use ext. dimensions for non-placable WMF
Change-Id: Idcfaa127ed6abed40d6eec7f81fbbfb36658cc91
diff --git a/vcl/source/filter/wmf/winwmf.cxx b/vcl/source/filter/wmf/winwmf.cxx
index d323d0f..a9a85c5 100644
--- a/vcl/source/filter/wmf/winwmf.cxx
+++ b/vcl/source/filter/wmf/winwmf.cxx
@@ -1132,19 +1132,22 @@ sal_Bool WMFReader::ReadHeader()
else
{
nUnitsPerInch = 96;
- pWMF->Seek( nStrmPos + 18 ); // set the streampos to the start of the metaactions
- GetPlaceableBound( aPlaceableBound, pWMF );
- pWMF->Seek( nStrmPos );
- if ( pExternalHeader != NULL && ( pExternalHeader->mapMode == MM_ISOTROPIC
- || pExternalHeader->mapMode == MM_ANISOTROPIC ) )
+ if ( pExternalHeader != NULL && ( pExternalHeader->mapMode == MM_ISOTROPIC || pExternalHeader->mapMode == MM_ANISOTROPIC ) )
{
// #n417818#: If we have an external header then overwrite the bounds!
Rectangle aExtRect(0, 0,
- pExternalHeader->xExt*567*nUnitsPerInch/1440/1000,
- pExternalHeader->yExt*567*nUnitsPerInch/1440/1000);
- GetWinExtMax( aExtRect, aPlaceableBound, pExternalHeader->mapMode );
+ (double) pExternalHeader->xExt * 567 * nUnitsPerInch / 1440000,
+ (double) pExternalHeader->yExt * 567 * nUnitsPerInch / 1440000);
+ aPlaceableBound = aExtRect;
pOut->SetMapMode( pExternalHeader->mapMode );
}
+ else
+ {
+ pWMF->Seek( nStrmPos + 18 ); // set the streampos to the start of the metaactions
+ GetPlaceableBound( aPlaceableBound, pWMF );
+ }
+
+ pWMF->Seek( nStrmPos );
}
pOut->SetWinOrg( aPlaceableBound.TopLeft() );
@@ -1357,6 +1360,22 @@ sal_Bool WMFReader::GetPlaceableBound( Rectangle& rPlaceableBound, SvStream* pSt
}
break;
+ case W_META_SETVIEWPORTORG:
+ {
+ Point aWinOrg;
+ aWinOrg = ReadYX();
+ rPlaceableBound.SetPos( aWinOrg );
+ }
+ break;
+
+ case W_META_SETVIEWPORTEXT:
+ {
+ sal_Int16 nWidth(0), nHeight(0);
+ *pStm >> nHeight >> nWidth;
+ rPlaceableBound.SetSize( Size( nWidth, nHeight ) );
+ }
+ break;
+
case W_META_SETMAPMODE :
*pStm >> nMapMode;
break;
@@ -1414,7 +1433,7 @@ sal_Bool WMFReader::GetPlaceableBound( Rectangle& rPlaceableBound, SvStream* pSt
SAL_WARN_IF(!bRecordOk, "vcl.filter", "polypolygon record has more polygons than we can handle");
- bRecordOk &= pStm->good();
+ bRecordOk = bRecordOk && pStm->good();
if (!bRecordOk)
{
commit 63dc30c49c5b560cff49ea69ac563dffa5b01a71
Author: Tomaž Vajngerl <tomaz.vajngerl at collabora.com>
Date: Thu Apr 24 18:41:11 2014 +0200
fdo#77089 if font width 0, pass 0 - don't take it from font metric
Conflicts:
vcl/source/filter/wmf/winmtf.cxx
Change-Id: I6c73da1d2470e75774affda836a8d587eebfbe4b
diff --git a/vcl/source/filter/wmf/winmtf.cxx b/vcl/source/filter/wmf/winmtf.cxx
index 97eed0c..8bc853c 100644
--- a/vcl/source/filter/wmf/winmtf.cxx
+++ b/vcl/source/filter/wmf/winmtf.cxx
@@ -240,26 +240,15 @@ WinMtfFontStyle::WinMtfFontStyle( LOGFONTW& rFont )
aVDev.SetFont( aFont );
FontMetric aMetric( aVDev.GetFontMetric() );
long nHeight = aMetric.GetAscent() + aMetric.GetDescent();
- if ( nHeight )
+ if (nHeight)
{
double fHeight = ((double)aFontSize.Height() * rFont.lfHeight ) / nHeight;
aFontSize.Height() = (sal_Int32)( fHeight + 0.5 );
}
}
- else if ( aFontSize.Height() < 0 )
- aFontSize.Height() *= -1;
-
- if ( !rFont.lfWidth )
- {
- // #i117968# VirtualDevice is not thread safe, but filter is used in multithreading
- SolarMutexGuard aGuard;
- VirtualDevice aVDev;
- aFont.SetSize( aFontSize );
- aVDev.SetFont( aFont );
- FontMetric aMetric( aVDev.GetFontMetric() );
- aFontSize.Width() = aMetric.GetWidth();
- }
+ // Convert height to positive
+ aFontSize.Height() = std::abs(aFontSize.Height());
aFont.SetSize( aFontSize );
};
More information about the Libreoffice-commits
mailing list