[Libreoffice-commits] core.git: 4 commits - cppcanvas/source sw/source vcl/source
Miklos Vajna
vmiklos at suse.cz
Mon Feb 25 06:09:05 PST 2013
cppcanvas/source/inc/implrenderer.hxx | 2 +-
cppcanvas/source/mtfrenderer/emfplus.cxx | 14 +++++++-------
sw/source/core/text/itrcrsr.cxx | 6 +++++-
vcl/source/filter/wmf/winwmf.cxx | 2 +-
4 files changed, 14 insertions(+), 10 deletions(-)
New commits:
commit 5e992f88d9f78a062bd78ea8907fa247f1f49b5f
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Mon Feb 25 15:00:08 2013 +0100
n#793998 SwTxtCursor::GetCharRect: respect TabOverMargin compat mode
Change-Id: I47280399bd9e0757365db8f4f1930efd0a340424
diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx
index 501052b..ab249f3 100644
--- a/sw/source/core/text/itrcrsr.cxx
+++ b/sw/source/core/text/itrcrsr.cxx
@@ -1211,7 +1211,9 @@ sal_Bool SwTxtCursor::GetCharRect( SwRect* pOrig, const xub_StrLen nOfst,
pCMS->p2Lines->aPortion.Pos().Y() += aCharPos.Y();
}
- if( pOrig->Left() > nTmpRight )
+ const bool bTabOverMargin = GetTxtFrm()->GetTxtNode()->getIDocumentSettingAccess()->get(IDocumentSettingAccess::TAB_OVER_MARGIN);
+ // Make sure the cursor respects the right margin, unless in compat mode, where the tab size has priority over the margin size.
+ if( pOrig->Left() > nTmpRight && !bTabOverMargin)
pOrig->Pos().X() = nTmpRight;
if( nMax )
commit cb6d8b906347e03e3c1f279aa802bd87f463bbed
Author: Miklos Vajna <vmiklos at suse.cz>
Date: Mon Feb 25 14:59:27 2013 +0100
SwTxtCursor::GetCharRect: restore comment removed in 1b081132
Change-Id: I2d6cf0afad4d5237b44e21be051f6f593a12830d
diff --git a/sw/source/core/text/itrcrsr.cxx b/sw/source/core/text/itrcrsr.cxx
index e33ef54..501052b 100644
--- a/sw/source/core/text/itrcrsr.cxx
+++ b/sw/source/core/text/itrcrsr.cxx
@@ -1196,6 +1196,8 @@ sal_Bool SwTxtCursor::GetCharRect( SwRect* pOrig, const xub_StrLen nOfst,
_GetCharRect( pOrig, nFindOfst, pCMS );
+ // This actually would have to be "-1 LogicToPixel", but that seems too
+ // expensive, so it's a value (-12), that should hopefully be OK.
const SwTwips nTmpRight = Right() - 12;
pOrig->Pos().X() += aCharPos.X();
commit 251adf02222661bcabf05bd32bbf5cd7345f42b2
Author: Radek Doulik <rodo at novell.com>
Date: Mon Feb 25 15:06:11 2013 +0100
Revert "allow WMF's with missing EOF record"
This reverts commit 199f0edc93e25ff8144f16599184049573154232.
the problematic emf+ file with embedded wmf suffered from different problem
so I reverted this fix as it is not needed
diff --git a/vcl/source/filter/wmf/winwmf.cxx b/vcl/source/filter/wmf/winwmf.cxx
index 97a705b..ecdf04d 100644
--- a/vcl/source/filter/wmf/winwmf.cxx
+++ b/vcl/source/filter/wmf/winwmf.cxx
@@ -1188,7 +1188,7 @@ void WMFReader::ReadWMF()
|| pWMF->IsEof()
)
{
- if( pWMF->IsEof() && nPos != nEndPos)
+ if( pWMF->IsEof() )
pWMF->SetError( SVSTREAM_FILEFORMAT_ERROR );
break;
commit 41cfd0fd9d32b5e0a07d9f422aec2c7d97b27c01
Author: Radek Doulik <rodo at novell.com>
Date: Mon Feb 25 15:05:19 2013 +0100
workaround for emf+ files with broken dataSize of Image object record
Change-Id: I5005961e1b618af949dc978a7ac560fc9eca3e65
diff --git a/cppcanvas/source/inc/implrenderer.hxx b/cppcanvas/source/inc/implrenderer.hxx
index 7f34ad8..7d82ea7 100644
--- a/cppcanvas/source/inc/implrenderer.hxx
+++ b/cppcanvas/source/inc/implrenderer.hxx
@@ -259,7 +259,7 @@ static float GetSwapFloat( SvStream& rSt )
ActionVector::const_iterator& o_rRangeBegin,
ActionVector::const_iterator& o_rRangeEnd ) const;
- void processObjectRecord(SvMemoryStream& rObjectStream, sal_uInt16 flags, sal_Bool bUseWholeStream = sal_False);
+ void processObjectRecord(SvMemoryStream& rObjectStream, sal_uInt16 flags, sal_uInt32 dataSize, sal_Bool bUseWholeStream = sal_False);
/* EMF+ */
void processEMFPlus( MetaCommentAction* pAct, const ActionFactoryParameters& rFactoryParms, OutDevState& rState, const CanvasSharedPtr& rCanvas );
diff --git a/cppcanvas/source/mtfrenderer/emfplus.cxx b/cppcanvas/source/mtfrenderer/emfplus.cxx
index 0c9db41..9b3d92d 100644
--- a/cppcanvas/source/mtfrenderer/emfplus.cxx
+++ b/cppcanvas/source/mtfrenderer/emfplus.cxx
@@ -714,7 +714,7 @@ namespace cppcanvas
Graphic graphic;
- void Read (SvMemoryStream &s, sal_Bool bUseWholeStream)
+ void Read (SvMemoryStream &s, sal_uInt32 dataSize, sal_Bool bUseWholeStream)
{
sal_uInt32 header, unknown;
@@ -736,11 +736,11 @@ namespace cppcanvas
sal_Int32 mfType, mfSize;
s >> mfType >> mfSize;
- EMFP_DEBUG (printf ("EMF+\tmetafile type: %d dataSize: %d\n", mfType, mfSize));
+ EMFP_DEBUG (printf ("EMF+\tmetafile type: %d dataSize: %d real size calculated from record dataSize: %d\n", mfType, mfSize, dataSize - 16));
GraphicFilter filter;
// workaround buggy metafiles, which have wrong mfSize set (n#705956 for example)
- SvMemoryStream mfStream (((char *)s.GetData()) + s.Tell(), bUseWholeStream ? s.remainingSize() : mfSize, STREAM_READ);
+ SvMemoryStream mfStream (((char *)s.GetData()) + s.Tell(), bUseWholeStream ? s.remainingSize() : dataSize - 16, STREAM_READ);
filter.ImportGraphic (graphic, String (), mfStream);
@@ -1090,7 +1090,7 @@ namespace cppcanvas
}
}
- void ImplRenderer::processObjectRecord(SvMemoryStream& rObjectStream, sal_uInt16 flags, sal_Bool bUseWholeStream)
+ void ImplRenderer::processObjectRecord(SvMemoryStream& rObjectStream, sal_uInt16 flags, sal_uInt32 dataSize, sal_Bool bUseWholeStream)
{
sal_uInt32 index;
@@ -1145,7 +1145,7 @@ namespace cppcanvas
{
EMFPImage *image;
aObjects [index] = image = new EMFPImage ();
- image->Read (rObjectStream, bUseWholeStream);
+ image->Read (rObjectStream, dataSize, bUseWholeStream);
break;
}
@@ -1211,7 +1211,7 @@ namespace cppcanvas
if (mbMultipart) {
EMFP_DEBUG (printf ("EMF+ multipart record flags: %04hx\n", mMFlags));
mMStream.Seek (0);
- processObjectRecord (mMStream, mMFlags, sal_True);
+ processObjectRecord (mMStream, mMFlags, dataSize, sal_True);
}
mbMultipart = false;
}
@@ -1235,7 +1235,7 @@ namespace cppcanvas
EMFP_DEBUG (printf ("EMF+\talready used in svtools wmf/emf filter parser\n"));
break;
case EmfPlusRecordTypeObject:
- processObjectRecord (rMF, flags);
+ processObjectRecord (rMF, flags, dataSize);
break;
case EmfPlusRecordTypeFillPie:
{
More information about the Libreoffice-commits
mailing list