[Libreoffice-commits] core.git: Branch 'private/kohei/new-chart-type-skeleton' - 434 commits - accessibility/inc avmedia/Library_avmedia.mk avmedia/source basctl/source basebmp/test basegfx/source basic/inc basic/Library_sb.mk basic/qa basic/source bin/convwatch.py bridges/source canvas/source chart2/qa chart2/source codemaker/source comphelper/source compilerplugins/clang config_host.mk.in configure.ac connectivity/source cppcanvas/source cppuhelper/source cppu/source cui/source cui/uiconfig dbaccess/inc dbaccess/source dbaccess/uiconfig dbaccess/UIConfig_dbaccess.mk desktop/inc desktop/source drawinglayer/source dtrans/source editeng/source embeddedobj/source embeddedobj/test eventattacher/source extensions/source external/apr external/boost extras/source filter/source forms/source formula/source fpicker/source framework/inc framework/source helpcontent2 hwpfilter/source i18npool/inc i18npool/source idl/inc include/avmedia include/basic include/canvas include/comphelper include/connectivity inc lude/editeng include/filter include/formula include/framework include/linguistic include/o3tl include/oox include/sal include/sfx2 include/sot include/svl include/svtools include/svx include/toolkit include/tools include/ucbhelper include/unotools include/vcl include/xmloff ios/experimental io/source l10ntools/inc librelogo/source lingucomponent/source linguistic/source lotuswordpro/source odk/examples oox/source package/source postprocess/Rdb_services.mk pyuno/source reportdesign/source RepositoryExternal.mk Repository.mk rsc/inc rsc/source sal/cppunittester sal/CppunitTest_sal_rtl_oustring.mk salhelper/source sal/Library_sal.mk sal/osl sal/qa sal/rtl sal/workben sax/source sccomp/CppunitTest_sccomp_lpsolver.mk sccomp/Library_coinmpsolver.mk sccomp/Library_solver.mk sccomp/Module_sccomp.mk sccomp/qa sccomp/source sc/inc sc/Library_sc.mk scp2/InstallModule_calc.mk sc/qa scripting/source sc/source sc/uiconfig sc/UIConfig_scalc.mk sdext/source sd/inc sd/qa sd/source sfx2/inc sfx2/sour ce shell/source slideshow/source smoketest/CppunitTest_smoketest.mk smoketest/data solenv/bin solenv/gbuild soltools/cpp sot/source starmath/inc starmath/source starmath/uiconfig starmath/UIConfig_smath.mk stoc/source svgio/inc svl/qa svl/source svtools/source svx/inc svx/source sw/inc sw/qa sw/source test/source testtools/source toolkit/source tools/Library_tl.mk tools/source ucb/source udkapi/com UnoControls/inc unotools/source unusedcode.easy uui/source vbahelper/source vcl/android vcl/Executable_kdefilepicker.mk vcl/generic vcl/headless vcl/inc vcl/ios vcl/Library_vclplug_kde.mk vcl/null vcl/osx vcl/qa vcl/quartz vcl/README vcl/source vcl/uiconfig vcl/unx vcl/win vcl/workben winaccessibility/source wizards/com writerfilter/source writerperfect/CppunitTest_writerperfect_draw.mk writerperfect/CppunitTest_writerperfect_impress.mk writerperfect/CppunitTest_writerperfect_writer.mk writerperfect/Module_writerperfect.mk writerperfect/qa writerperfect/source writerperfect/StaticLibrary_ writerperfect_importtestbase.mk xmlhelp/source xmloff/inc xmloff/source xmlsecurity/inc xmlsecurity/source

Kohei Yoshida kohei.yoshida at collabora.com
Wed Apr 2 08:10:18 PDT 2014


Rebased ref, commits from common ancestor:
commit 79ed4980f7197a121fabd0c402a31e9efd538ad7
Author: Kohei Yoshida <kohei.yoshida at collabora.com>
Date:   Wed Mar 26 11:11:49 2014 -0400

    Re-enable the new chart type.
    
    Change-Id: If060d101c4a8f2486d3532f4048f9042df0cd204

diff --git a/chart2/source/inc/macros.hxx b/chart2/source/inc/macros.hxx
index 21e5911..2319afe 100644
--- a/chart2/source/inc/macros.hxx
+++ b/chart2/source/inc/macros.hxx
@@ -30,7 +30,7 @@
     typeid( ex ).name() << ", Message: " << \
     ex.Message )
 
-#define ENABLE_GL3D_BARCHART 0
+#define ENABLE_GL3D_BARCHART 1
 
 #endif
 
commit 31e4419ac7581aa7864905bcd4ce42e14df6c9bb
Author: Eike Rathke <erack at redhat.com>
Date:   Wed Apr 2 16:54:17 2014 +0200

    resolved fdo#76949 correct grammar is GRAM_OOXML
    
    Regression introduced with ca8ca8c28742879220f3ff88ae0d71c8d69b11cd that
    used GRAM_ENGLISH_XL_OOX instead, which is English UI function names
    with OOXML reference syntax.
    
    Change-Id: If6b73e85a45e57f6ef281d1edf8e34dec7cb9bb8

diff --git a/sc/source/filter/excel/xestream.cxx b/sc/source/filter/excel/xestream.cxx
index d5bf89d..04a8298 100644
--- a/sc/source/filter/excel/xestream.cxx
+++ b/sc/source/filter/excel/xestream.cxx
@@ -821,7 +821,7 @@ OUString XclXmlUtils::ToOUString(
     ScDocument& rDocument, const ScAddress& rAddress, const ScTokenArray* pTokenArray )
 {
     ScCompiler aCompiler( &rDocument, rAddress, const_cast<ScTokenArray&>(*pTokenArray));
-    aCompiler.SetGrammar(FormulaGrammar::GRAM_ENGLISH_XL_OOX);
+    aCompiler.SetGrammar(FormulaGrammar::GRAM_OOXML);
 
     OUStringBuffer aBuffer( pTokenArray->GetLen() * 5 );
     aCompiler.CreateStringFromTokenArray( aBuffer );
commit cc911e8bc428b16cff9fdc77c10d470110c4531b
Author: Eike Rathke <erack at redhat.com>
Date:   Tue Apr 1 15:59:45 2014 +0200

    just nitpicking on scope
    
    Change-Id: I01969fb4596e7866ddb348d026a22f45deeef0c8

diff --git a/sc/source/core/data/column3.cxx b/sc/source/core/data/column3.cxx
index 86ee9a2..38a92c0 100644
--- a/sc/source/core/data/column3.cxx
+++ b/sc/source/core/data/column3.cxx
@@ -2710,7 +2710,6 @@ class MaxNumStringLenHandler
 
         OUString aString;
         OUString aSep;
-        sal_Int32 nLen;
         sal_uInt16 nPrec;
         sal_uInt32 nFormat = static_cast<const SfxUInt32Item*>(
                 mrColumn.GetAttr(nRow, ATTR_VALUE_FORMAT))->GetValue();
@@ -2748,7 +2747,7 @@ class MaxNumStringLenHandler
             nPrec = SvNumberFormatter::UNLIMITED_PRECISION;
         }
 
-        nLen = aString.getLength();
+        sal_Int32 nLen = aString.getLength();
         if (nLen <= 0)
             // Ignore empty string.
             return;
commit ba17f5a34480f76942414eab79e297ae5fad59b7
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 13:00:26 2014 +0100

    coverity#708209 Uninitialized scalar field
    
    Change-Id: Ic24e147dd631bbed4e5759b1bd4bebbd0b8add4a

diff --git a/include/tools/inetmime.hxx b/include/tools/inetmime.hxx
index 72fd678..04b3141 100644
--- a/include/tools/inetmime.hxx
+++ b/include/tools/inetmime.hxx
@@ -978,6 +978,7 @@ inline INetMIMEEncodedWordOutputSink::INetMIMEEncodedWordOutputSink(
     m_nExtraSpaces(0),
     m_pEncodingList(INetMIME::createPreferredCharsetList(ePreferredEncoding)),
     m_ePrevCoding(CODING_NONE),
+    m_ePrevMIMEEncoding(RTL_TEXTENCODING_DONTKNOW),
     m_eCoding(CODING_NONE),
     m_nQuotedEscaped(0),
     m_eEncodedWordState(STATE_INITIAL)
commit 67e2de7d6c4340be605f6770b2e0b732d41dbeac
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:57:40 2014 +0100

    coverity#707967 Uninitialized scalar field
    
    Change-Id: I65aa00d79efe15f63c272fbcd5d3e0dea2c28dfc

diff --git a/reportdesign/source/core/api/ReportDefinition.cxx b/reportdesign/source/core/api/ReportDefinition.cxx
index c8922a7..2186b7e 100644
--- a/reportdesign/source/core/api/ReportDefinition.cxx
+++ b/reportdesign/source/core/api/ReportDefinition.cxx
@@ -616,6 +616,8 @@ struct OReportDefinitionImpl
     ,m_aDocEventListeners(_aMutex)
     ,m_sMimeType(_aCopy.m_sMimeType)
     ,m_sIdentifier(_aCopy.m_sIdentifier)
+    ,m_aVisualAreaSize(_aCopy.m_aVisualAreaSize)
+    ,m_nAspect(_aCopy.m_nAspect)
     ,m_nGroupKeepTogether(_aCopy.m_nGroupKeepTogether)
     ,m_nPageHeaderOption(_aCopy.m_nPageHeaderOption)
     ,m_nPageFooterOption(_aCopy.m_nPageFooterOption)
@@ -623,6 +625,7 @@ struct OReportDefinitionImpl
     ,m_bControllersLocked(_aCopy.m_bControllersLocked)
     ,m_bModified(_aCopy.m_bModified)
     ,m_bEscapeProcessing(_aCopy.m_bEscapeProcessing)
+    ,m_bSetModifiedEnabled(_aCopy.m_bSetModifiedEnabled)
     {}
     ~OReportDefinitionImpl();
 };
commit f6dd2b47f42917a185296969bca03c63b0b9e95b
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:53:26 2014 +0100

    coverity#707969 unused nMasterPageNameIndex
    
    Change-Id: I1a91871eb9f1952625b94b15d9ab8a4712487048

diff --git a/reportdesign/source/filter/xml/xmlStyleImport.hxx b/reportdesign/source/filter/xml/xmlStyleImport.hxx
index c3222da..e71d5f2 100644
--- a/reportdesign/source/filter/xml/xmlStyleImport.hxx
+++ b/reportdesign/source/filter/xml/xmlStyleImport.hxx
@@ -89,7 +89,6 @@ namespace rptxml
         const OUString m_sCellStyleFamilyName;
         ORptFilter&           m_rImport;
         sal_Int32 m_nNumberFormatIndex;
-        sal_Int32 nMasterPageNameIndex;
         sal_Bool bAutoStyles : 1;
 
         //mutable UniReference < SvXMLImportPropertyMapper > m_xControlImpPropMapper;
commit eac97e7925a7e7dc47c9860fecf47fa4ff498b41
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:52:27 2014 +0100

    coverity#707970 Uninitialized scalar field
    
    Change-Id: I70cc8c7667d9cfb2fc043e3889c7fb5adc9abd52

diff --git a/reportdesign/source/ui/inspection/GeometryHandler.cxx b/reportdesign/source/ui/inspection/GeometryHandler.cxx
index 325b3a7..6d5838b 100644
--- a/reportdesign/source/ui/inspection/GeometryHandler.cxx
+++ b/reportdesign/source/ui/inspection/GeometryHandler.cxx
@@ -225,13 +225,15 @@ OUString GeometryHandler::impl_convertToFormula( const uno::Any& _rControlValue
     aParser = ReportFormula( impl_isDataField(sName) ? ReportFormula::Field : ReportFormula::Expression, sName );
     return aParser.getCompleteFormula();
 }
-GeometryHandler::GeometryHandler(uno::Reference< uno::XComponentContext > const & context) :
-    GeometryHandler_Base(m_aMutex)
-    ,m_aPropertyListeners( m_aMutex )
-    ,m_xContext(context)
-    ,m_pInfoService(new OPropertyInfoService())
-    ,m_nDataFieldType(0)
-    ,m_bIn(false)
+
+GeometryHandler::GeometryHandler(uno::Reference< uno::XComponentContext > const & context)
+    : GeometryHandler_Base(m_aMutex)
+    , m_aPropertyListeners(m_aMutex)
+    , m_xContext(context)
+    , m_pInfoService(new OPropertyInfoService())
+    , m_nDataFieldType(0)
+    , m_bNewFunction(false)
+    , m_bIn(false)
 {
     try
     {
commit 4ab06a576313de973ae96787a19215b208737859
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:38:36 2014 +0100

    coverity#707971 Uninitialized scalar field
    
    Change-Id: I5c1045253c082a00397cf0f048baee947232c9b1

diff --git a/reportdesign/source/ui/report/ViewsWindow.cxx b/reportdesign/source/ui/report/ViewsWindow.cxx
index 19cf7ab..5f03f88 100644
--- a/reportdesign/source/ui/report/ViewsWindow.cxx
+++ b/reportdesign/source/ui/report/ViewsWindow.cxx
@@ -956,8 +956,17 @@ namespace
         sal_Bool            m_bCopy;
 
     public:
-        ApplySectionViewAction( sal_Bool _bCopy ) : m_eAction( eEndDragObj ), m_bCopy( _bCopy ) { }
-        ApplySectionViewAction(SectionViewAction _eAction = eEndAction ) : m_eAction( _eAction ) { }
+        ApplySectionViewAction(sal_Bool _bCopy)
+            : m_eAction(eEndDragObj)
+            , m_bCopy(_bCopy)
+        {
+        }
+
+        ApplySectionViewAction(SectionViewAction _eAction = eEndAction)
+            : m_eAction(_eAction)
+            , m_bCopy(false)
+        {
+        }
 
         void operator() ( const OViewsWindow::TSectionsMap::value_type& _rhs )
         {
commit bd3015129a57cbd88ebdb18a9606e60966453a53
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:35:16 2014 +0100

    coverity#738868 Uninitialized pointer field
    
    Change-Id: I150b47a6d4463479af7206b15441fefb27b8f603

diff --git a/svx/source/core/extedit.cxx b/svx/source/core/extedit.cxx
index 853ae77..24e93f9 100644
--- a/svx/source/core/extedit.cxx
+++ b/svx/source/core/extedit.cxx
@@ -32,10 +32,13 @@ using namespace css::uno;
 using namespace css::system;
 
 ExternalToolEdit::ExternalToolEdit()
-{}
+    : m_pGraphicObject(NULL)
+{
+}
 
 ExternalToolEdit::~ExternalToolEdit()
-{}
+{
+}
 
 void ExternalToolEdit::HandleCloseEvent(ExternalToolEdit* pData)
 {
@@ -116,3 +119,5 @@ void ExternalToolEdit::Edit( GraphicObject* pGraphicObject )
     // Create the data that is needed by the thread later
     osl_createThread(ExternalToolEdit::threadWorker, this);
 }
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
commit 6f3545833e4bf88a68995eab53356b3c7dd9bf53
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:33:24 2014 +0100

    coverity#738789 Uninitialized pointer field
    
    Change-Id: I990e8ba0e2b8ad2a43a33343ac832e42777e28cb

diff --git a/sc/source/core/data/dociter.cxx b/sc/source/core/data/dociter.cxx
index 70b2c83..060ac3b 100644
--- a/sc/source/core/data/dociter.cxx
+++ b/sc/source/core/data/dociter.cxx
@@ -114,16 +114,22 @@ void ScAttrArray_IterGetNumberFormat( sal_uLong& nFormat, const ScAttrArray*& rp
 }
 
 ScValueIterator::ScValueIterator( ScDocument* pDocument, const ScRange& rRange,
-            bool bSTotal, bool bTextZero ) :
-    pDoc( pDocument ),
-    nNumFmtIndex(0),
-    maStartPos(rRange.aStart),
-    maEndPos(rRange.aEnd),
-    nNumFmtType( NUMBERFORMAT_UNDEFINED ),
-    bNumValid( false ),
-    bSubTotal(bSTotal),
-    bCalcAsShown( pDocument->GetDocOptions().IsCalcAsShown() ),
-    bTextAsZero( bTextZero )
+            bool bSTotal, bool bTextZero )
+    : pDoc(pDocument)
+    , pAttrArray(NULL)
+    , nNumFormat(0) // Initialized in GetNumberFormat
+    , nNumFmtIndex(0)
+    , maStartPos(rRange.aStart)
+    , maEndPos(rRange.aEnd)
+    , mnCol(0)
+    , mnTab(0)
+    , nAttrEndRow(0)
+    , nNumFmtType(NUMBERFORMAT_UNDEFINED)
+    , bNumValid(false)
+    , bSubTotal(bSTotal)
+    , bCalcAsShown(pDocument->GetDocOptions().IsCalcAsShown())
+    , bTextAsZero(bTextZero)
+    , mpCells(NULL)
 {
     SCTAB nDocMaxTab = pDocument->GetTableCount() - 1;
 
@@ -133,10 +139,6 @@ ScValueIterator::ScValueIterator( ScDocument* pDocument, const ScRange& rRange,
     if (!ValidRow(maEndPos.Row())) maEndPos.SetRow(MAXROW);
     if (!ValidTab(maStartPos.Tab()) || maStartPos.Tab() > nDocMaxTab) maStartPos.SetTab(nDocMaxTab);
     if (!ValidTab(maEndPos.Tab()) || maEndPos.Tab() > nDocMaxTab) maEndPos.SetTab(nDocMaxTab);
-
-    nNumFormat = 0; // Initialized in GetNumberFormat
-    pAttrArray = 0;
-    nAttrEndRow = 0;
 }
 
 SCROW ScValueIterator::GetRow() const
commit 45ce21ac5ab41e49df0a8482d3cd98c61b8b326c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:29:23 2014 +0100

    coverity#738787 Uninitialized pointer field
    
    Change-Id: Ic2f968d3150bba458dc3f40799ef0933a423a9e0

diff --git a/sc/source/core/data/colorscale.cxx b/sc/source/core/data/colorscale.cxx
index a366b09..4588550 100644
--- a/sc/source/core/data/colorscale.cxx
+++ b/sc/source/core/data/colorscale.cxx
@@ -290,8 +290,9 @@ void ScColorScaleEntry::SetColor(const Color& rColor)
     maColor = rColor;
 }
 
-ScColorFormat::ScColorFormat(ScDocument* pDoc):
-    ScFormatEntry(pDoc)
+ScColorFormat::ScColorFormat(ScDocument* pDoc)
+    : ScFormatEntry(pDoc)
+    , mpParent(NULL)
 {
 }
 
commit b75204cd33901bd18e9000ee63a225283a6207a0
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:27:38 2014 +0100

    coverity#708642 Uninitialized pointer field
    
    Change-Id: I30b61ed5b383f4acb5d29cb1c898015b28b1431c

diff --git a/vcl/source/window/brdwin.cxx b/vcl/source/window/brdwin.cxx
index 4ec9579..84794f4 100644
--- a/vcl/source/window/brdwin.cxx
+++ b/vcl/source/window/brdwin.cxx
@@ -1008,13 +1008,16 @@ void ImplNoBorderWindowView::DrawWindow( sal_uInt16, OutputDevice*, const Point*
 }
 
 // - ImplSmallBorderWindowView -
-
 ImplSmallBorderWindowView::ImplSmallBorderWindowView( ImplBorderWindow* pBorderWindow )
     : mpBorderWindow(pBorderWindow)
+    , mpOutDev(NULL)
+    , mnWidth(0)
+    , mnHeight(0)
     , mnLeftBorder(0)
     , mnTopBorder(0)
     , mnRightBorder(0)
     , mnBottomBorder(0)
+    , mbNWFBorder(false)
 {
 }
 
commit dc1277767d507dde91a1c7999ebdc26caaa922a3
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:23:44 2014 +0100

    coverity#708600 Uninitialized pointer field
    
    Change-Id: I50da1da601981d55f413e03b063cda60b10893e6

diff --git a/vcl/source/gdi/impimage.cxx b/vcl/source/gdi/impimage.cxx
index 0e1fd7e..2d054ab7 100644
--- a/vcl/source/gdi/impimage.cxx
+++ b/vcl/source/gdi/impimage.cxx
@@ -119,6 +119,8 @@ bool ImplImageData::IsEqual( const ImplImageData& rData )
 
 ImplImage::ImplImage()
     : mnRefCount(1)
+    , mpData(NULL)
+    , meType(IMAGETYPE_BITMAP)
 {
 }
 
commit 99007fdb8e70ee6c2f05cf60808c3e6aa76311a2
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:21:50 2014 +0100

    coverity#708589 Uninitialized pointer field
    
    Change-Id: Ifc584276b32e517cb3105133de731e068851254b

diff --git a/vcl/source/control/lstbox.cxx b/vcl/source/control/lstbox.cxx
index c978fe4..a166de6 100644
--- a/vcl/source/control/lstbox.cxx
+++ b/vcl/source/control/lstbox.cxx
@@ -42,7 +42,9 @@ void ListBox::EnableQuickSelection( const bool& b )
     mpImplLB->GetMainWindow()->EnableQuickSelection(b);
 }
 
-ListBox::ListBox( WindowType nType ) : Control( nType )
+ListBox::ListBox(WindowType nType)
+    : Control(nType)
+    , mpImplLB(NULL)
 {
     ImplInitListBoxData();
 }
commit 617faefab11b2565b95fcff9133ebf7b01bc49f1
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:18:49 2014 +0100

    coverity#708314 Uninitialized pointer field
    
    Change-Id: Ifdd607c8bb1859af907ba2d6bbe6e9824681bc57

diff --git a/vcl/source/filter/ixpm/xpmread.cxx b/vcl/source/filter/ixpm/xpmread.cxx
index e3f48ec..04bc866 100644
--- a/vcl/source/filter/ixpm/xpmread.cxx
+++ b/vcl/source/filter/ixpm/xpmread.cxx
@@ -23,25 +23,31 @@
 #define _XPMPRIVATE
 #include "xpmread.hxx"
 
-XPMReader::XPMReader( SvStream& rStm ) :
-            mrIStm          ( rStm ),
-            mpAcc           ( NULL ),
-            mpMaskAcc       ( NULL ),
-            mnLastPos       ( rStm.Tell() ),
-            mnWidth         ( 0 ),
-            mnHeight        ( 0 ),
-            mnColors        ( 0 ),
-            mnCpp           ( 0 ),
-            mbTransparent   ( false ),
-            mbStatus        ( true ),
-            mnStatus        ( 0 ),
-            mnIdentifier    ( XPMIDENTIFIER ),
-            mcThisByte      ( 0 ),
-            mnTempAvail     ( 0 ),
-            mpFastColorTable( NULL ),
-            mpColMap        ( NULL )
+XPMReader::XPMReader(SvStream& rStm)
+    : mrIStm(rStm)
+    , mpAcc(NULL)
+    , mpMaskAcc(NULL)
+    , mnLastPos(rStm.Tell())
+    , mnWidth(0)
+    , mnHeight(0)
+    , mnColors(0)
+    , mnCpp(0)
+    , mbTransparent(false)
+    , mbStatus(true)
+    , mnStatus( 0 )
+    , mnIdentifier(XPMIDENTIFIER)
+    , mcThisByte(0)
+    , mcLastByte(0)
+    , mnTempAvail(0)
+    , mpTempBuf(NULL)
+    , mpTempPtr(NULL)
+    , mpFastColorTable(NULL)
+    , mpColMap(NULL)
+    , mnStringSize(0)
+    , mpStringBuf(NULL)
+    , mnParaSize(0)
+    , mpPara(NULL)
 {
-
 }
 
 XPMReader::~XPMReader()
commit f95f708548343d7589474b723a69508223f6da4c
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 12:11:32 2014 +0100

    coverity#707833 Uninitialized pointer field
    
    Change-Id: I355ada53d637ad16d88c7e8d8b0f333915f54b6e

diff --git a/filter/source/graphicfilter/itiff/itiff.cxx b/filter/source/graphicfilter/itiff/itiff.cxx
index c15465f..c274468 100644
--- a/filter/source/graphicfilter/itiff/itiff.cxx
+++ b/filter/source/graphicfilter/itiff/itiff.cxx
@@ -123,7 +123,54 @@ private:
     bool HasAlphaChannel() const;
 public:
 
-    TIFFReader() : pAlphaMask(0), pMaskAcc(0) {}
+    TIFFReader()
+        : bStatus(false)
+        , nLastPercent(0)
+        , pTIFF(NULL)
+        , pAcc(NULL)
+        , nDstBitsPerPixel(0)
+        , pAlphaMask(NULL)
+        , pMaskAcc(NULL)
+        , nOrigPos(0)
+        , nOrigNumberFormat(0)
+        , nDataType(0)
+        , bByteSwap(false)
+        , nNewSubFile(0)
+        , nSubFile(0)
+        , nImageWidth(0)
+        , nImageLength(0)
+        , nBitsPerSample(1)
+        , nCompression(1)
+        , nPhotometricInterpretation(0)
+        , nThresholding(1)
+        , nCellWidth(1)
+        , nCellLength(1)
+        , nFillOrder(1)
+        , pStripOffsets(NULL)
+        , nNumStripOffsets(0)
+        , nOrientation(1)
+        , nSamplesPerPixel(1)
+        , nRowsPerStrip(0xffffffff)
+        , pStripByteCounts(NULL)
+        , nNumStripByteCounts(0)
+        , nMinSampleValue(0)
+        , nMaxSampleValue(0)
+        , fXResolution(0.0)
+        , fYResolution(0.0)
+        , nPlanarConfiguration(1)
+        , nGroup3Options(0)
+        , nGroup4Options(0)
+        , nResolutionUnit(2)
+        , nPredictor(0)
+        , pColorMap(NULL)
+        , nNumColors(0)
+        , nPlanes(0)
+        , nStripsPerPlane(0)
+        , nBytesPerRow(0)
+    {
+        pMap[ 0 ] = pMap[ 1 ] = pMap[ 2 ] = pMap[ 3 ] = NULL;
+    }
+
     ~TIFFReader()
     {
         delete pAlphaMask;
commit 8e45fbd60e8c7e17503a12dcdd13f2aeeb243d25
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 11:59:27 2014 +0100

    coverity#707828 Uninitialized pointer field
    
    Change-Id: If4635aa5adc5d82712a779ae487b0a27539c2d70

diff --git a/filter/source/graphicfilter/ipict/ipict.cxx b/filter/source/graphicfilter/ipict/ipict.cxx
index 27cf0bf..0730d4f 100644
--- a/filter/source/graphicfilter/ipict/ipict.cxx
+++ b/filter/source/graphicfilter/ipict/ipict.cxx
@@ -242,7 +242,17 @@ private:
   static rtl_TextEncoding GetTextEncoding (sal_uInt16 fId = 0xFFFF);
 public:
 
-  PictReader() { aActFont.SetCharSet(GetTextEncoding()); }
+    PictReader()
+        : pPict(NULL)
+        , pVirDev(NULL)
+        , nOrigPos(0)
+        , nOrigNumberFormat(0)
+        , IsVersion2(false)
+        , eActROP(ROP_OVERPAINT)
+        , eActMethod(PDM_UNDEFINED)
+    {
+        aActFont.SetCharSet(GetTextEncoding());
+    }
 
     void ReadPict( SvStream & rStreamPict, GDIMetaFile & rGDIMetaFile );
         // reads a pict file from the stream and fills the GDIMetaFile
commit b89e9fa401fbfebc874e305122c6946662ba5800
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 11:52:46 2014 +0100

    coverity#705866 Dereference before null check
    
    Change-Id: I3f70fda1098c2da97f36e474689853379e5b9ac2

diff --git a/sd/source/ui/presenter/PresenterHelper.cxx b/sd/source/ui/presenter/PresenterHelper.cxx
index 8bcc7ec..e186ac9 100644
--- a/sd/source/ui/presenter/PresenterHelper.cxx
+++ b/sd/source/ui/presenter/PresenterHelper.cxx
@@ -132,23 +132,19 @@ Reference<awt::XWindow> SAL_CALL PresenterHelper::createWindow (
             pParentWindow->EnableChildTransparentMode(true);
     }
 
-    if (pWindow != NULL)
-    {
-        pWindow->Show(bInitiallyVisible);
-
-        pWindow->SetMapMode(MAP_PIXEL);
-        pWindow->SetBackground();
-        if ( ! bEnableParentClip)
-        {
-            pWindow->SetParentClipMode(PARENTCLIPMODE_NOCLIP);
-            pWindow->SetPaintTransparent(true);
-        }
-        else
-        {
-            pWindow->SetParentClipMode(PARENTCLIPMODE_CLIP);
-            pWindow->SetPaintTransparent(false);
-        }
+    pWindow->Show(bInitiallyVisible);
 
+    pWindow->SetMapMode(MAP_PIXEL);
+    pWindow->SetBackground();
+    if ( ! bEnableParentClip)
+    {
+        pWindow->SetParentClipMode(PARENTCLIPMODE_NOCLIP);
+        pWindow->SetPaintTransparent(true);
+    }
+    else
+    {
+        pWindow->SetParentClipMode(PARENTCLIPMODE_CLIP);
+        pWindow->SetPaintTransparent(false);
     }
 
     return xWindow;
commit a7ff16ada6ac8998863a0a9708bc1a89b38bfd82
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 11:50:33 2014 +0100

    coverity#705854 Dereference before null check
    
    Change-Id: I8bdedf38a29587bb504ccf310371dea756efd47d

diff --git a/sd/source/filter/eppt/epptso.cxx b/sd/source/filter/eppt/epptso.cxx
index d36590a..cb84f6f 100644
--- a/sd/source/filter/eppt/epptso.cxx
+++ b/sd/source/filter/eppt/epptso.cxx
@@ -693,7 +693,7 @@ void PPTWriter::ImplWriteParagraphs( SvStream& rOut, TextObj& rTextObj )
             }
             else
             {
-                if ( !pPara->mbFixedLineSpacing && pPortion && pPortion->mnCharHeight > (sal_uInt16)( ((double)-nLineSpacing) * 0.001 * 72.0 / 2.54 ) ) // 1/100mm to point
+                if ( !pPara->mbFixedLineSpacing && pPortion->mnCharHeight > (sal_uInt16)( ((double)-nLineSpacing) * 0.001 * 72.0 / 2.54 ) ) // 1/100mm to point
                     nLineSpacing = nNormalSpacing;
                 else
                     nLineSpacing = (sal_Int16)( (double)nLineSpacing / 4.40972 );
commit d69b30a84d8622a1bb93cb38cdb4d458c4d6a965
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 10:48:13 2014 +0100

    coverity#1019376 Resource leak
    
    Change-Id: Ifa9c5a7b3aa0d219e09fa3081e66d870a508a84d

diff --git a/pyuno/source/module/pyuno_impl.hxx b/pyuno/source/module/pyuno_impl.hxx
index 471ac95..02600cd 100644
--- a/pyuno/source/module/pyuno_impl.hxx
+++ b/pyuno/source/module/pyuno_impl.hxx
@@ -51,6 +51,8 @@
 #include <cppuhelper/implbase2.hxx>
 #include <cppuhelper/weakref.hxx>
 
+#include <osl/module.hxx>
+
 // In Python 3, the PyString_* functions have been replaced by PyBytes_*
 // and PyUnicode_* functions.
 #if PY_MAJOR_VERSION >= 3
@@ -276,6 +278,7 @@ struct RuntimeCargo
     com::sun::star::uno::Reference< com::sun::star::script::XInvocationAdapterFactory2 > xAdapterFactory;
     com::sun::star::uno::Reference< com::sun::star::beans::XIntrospection > xIntrospection;
     PyRef dictUnoModule;
+    osl::Module testModule;
     bool valid;
     ExceptionClassMap exceptionMap;
     ClassSet interfaceSet;
diff --git a/pyuno/source/module/pyuno_module.cxx b/pyuno/source/module/pyuno_module.cxx
index 47b57aa..27986e5 100644
--- a/pyuno/source/module/pyuno_module.cxx
+++ b/pyuno/source/module/pyuno_module.cxx
@@ -346,11 +346,13 @@ static PyObject* initPoniesMode(
             .replaceAll(OString('/'), OString('\\'))
 #endif
             ;
-        oslModule const mod( osl_loadModuleAscii(libname.getStr(),
-                                SAL_LOADMODULE_LAZY | SAL_LOADMODULE_GLOBAL) );
-        if (!mod) { abort(); }
+
+        osl::Module &mod = runtime.getImpl()->cargo->testModule;
+        mod.load(OStringToOUString(libname, osl_getThreadTextEncoding()),
+                                SAL_LOADMODULE_LAZY | SAL_LOADMODULE_GLOBAL);
+        if (!mod.is()) { abort(); }
         oslGenericFunction const pFunc(
-                osl_getAsciiFunctionSymbol(mod, "test_init"));
+                mod.getFunctionSymbol("test_init"));
         if (!pFunc) { abort(); }
         // guess casting pFunc is undefined behavior but don't see a better way
         ((void (SAL_CALL *)(XMultiServiceFactory*)) pFunc) (xMSF.get());
commit 0978c495da920c12934324c3c662fa94daf95475
Author: Tor Lillqvist <tml at collabora.com>
Date:   Wed Apr 2 17:30:11 2014 +0300

    WaE: comparison of constant 255 with expression of type 'const char'
    
    Change-Id: Ibe07fc9a61ae8432e92c43ac6ff07c4dc9e6c771

diff --git a/external/boost/boost.jsonparser.warnings.patch.0 b/external/boost/boost.jsonparser.warnings.patch.0
index 4a71b3b..b3d9bbf 100644
--- a/external/boost/boost.jsonparser.warnings.patch.0
+++ b/external/boost/boost.jsonparser.warnings.patch.0
@@ -56,3 +56,14 @@
            m_tr(tr), m_start(m_value.begin())
      {}
 
+--- boost/property_tree/detail/json_parser_write.hpp
++++ boost/property_tree/detail/json_parser_write.hpp
+@@ -33,7 +33,7 @@
+             // We escape everything outside ASCII, because this code can't
+             // handle high unicode characters.
+             if (*b == 0x20 || *b == 0x21 || (*b >= 0x23 && *b <= 0x2E) ||
+-                (*b >= 0x30 && *b <= 0x5B) || (*b >= 0x5D && *b <= 0xFF))
++                (*b >= 0x30 && *b <= 0x5B) || (*b >= 0x5D))
+                 result += *b;
+             else if (*b == Ch('\b')) result += Ch('\\'), result += Ch('b');
+             else if (*b == Ch('\f')) result += Ch('\\'), result += Ch('f');
commit f5b9db43080658201caf07cd646bae4f4f2acc95
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 15:18:05 2014 +0100

    Resolves: fdo#75307 discard invalid user data
    
    Change-Id: Id39b51c344004e02d3d5a281ba98721b944468c3

diff --git a/cui/source/tabpages/chardlg.cxx b/cui/source/tabpages/chardlg.cxx
index 5f8e255..28c118f 100644
--- a/cui/source/tabpages/chardlg.cxx
+++ b/cui/source/tabpages/chardlg.cxx
@@ -2897,6 +2897,26 @@ void SvxCharPositionPage::Reset( const SfxItemSet& rSet )
         m_nSubEsc = (short)sUser.getToken( 1, ';' ).toInt32();
         m_nSuperProp = (sal_uInt8)sUser.getToken( 2, ';' ).toInt32();
         m_nSubProp = (sal_uInt8)sUser.getToken( 3, ';' ).toInt32();
+
+        //fdo#75307 validate all the entries and discard all of them if any are
+        //out of range
+        bool bValid = true;
+        if (m_nSuperEsc < m_pHighLowMF->GetMin() || m_nSuperEsc > m_pHighLowMF->GetMax())
+            bValid = false;
+        if (m_nSubEsc*-1 < m_pHighLowMF->GetMin() || m_nSubEsc*-1 > m_pHighLowMF->GetMax())
+            bValid = false;
+        if (m_nSuperProp < m_pFontSizeMF->GetMin() || m_nSuperProp > m_pFontSizeMF->GetMax())
+            bValid = false;
+        if (m_nSubProp < m_pFontSizeMF->GetMin() || m_nSubProp > m_pFontSizeMF->GetMax())
+            bValid = false;
+
+        if (!bValid)
+        {
+            m_nSuperEsc = DFLT_ESC_SUPER;
+            m_nSubEsc = DFLT_ESC_SUB;
+            m_nSuperProp = DFLT_ESC_PROP;
+            m_nSubProp = DFLT_ESC_PROP;
+        }
     }
 
     short nEsc = 0;
commit 604f67db541060146a8a33944d4bcf31f2e346b4
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Wed Apr 2 14:14:36 2014 +0100

    set mnemonic widgets
    
    Change-Id: Id4f4d2dfab6cf7f370488e87c6e86eb8da50b6fd

diff --git a/cui/uiconfig/ui/positionpage.ui b/cui/uiconfig/ui/positionpage.ui
index c44bee6..ebd1b24 100644
--- a/cui/uiconfig/ui/positionpage.ui
+++ b/cui/uiconfig/ui/positionpage.ui
@@ -1,7 +1,8 @@
 <?xml version="1.0" encoding="UTF-8"?>
+<!-- Generated with glade 3.16.1 -->
 <interface>
   <!-- interface-requires LibreOffice 1.0 -->
-  <!-- interface-requires gtk+ 3.0 -->
+  <requires lib="gtk+" version="3.0"/>
   <object class="GtkAdjustment" id="adjustment1">
     <property name="lower">1</property>
     <property name="upper">100</property>
@@ -135,6 +136,8 @@
                         <property name="can_focus">False</property>
                         <property name="xalign">0</property>
                         <property name="label" translatable="yes">Raise/lower by</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">raiselowersb:0%</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -148,7 +151,6 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="invisible_char">●</property>
-                        <property name="invisible_char_set">True</property>
                         <property name="adjustment">adjustment1</property>
                       </object>
                       <packing>
@@ -163,7 +165,6 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="invisible_char">●</property>
-                        <property name="invisible_char_set">True</property>
                         <property name="adjustment">adjustment1</property>
                       </object>
                       <packing>
@@ -195,6 +196,8 @@
                         <property name="can_focus">False</property>
                         <property name="xalign">0</property>
                         <property name="label" translatable="yes">Relative font size</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">fontsizesb:0%</property>
                       </object>
                       <packing>
                         <property name="left_attach">0</property>
@@ -337,6 +340,8 @@
                         <property name="visible">True</property>
                         <property name="can_focus">False</property>
                         <property name="label" translatable="yes">Scale width</property>
+                        <property name="use_underline">True</property>
+                        <property name="mnemonic_widget">scalewidthsb:0%</property>
                       </object>
                       <packing>
                         <property name="expand">False</property>
@@ -349,7 +354,6 @@
                         <property name="visible">True</property>
                         <property name="can_focus">True</property>
                         <property name="invisible_char">●</property>
-                        <property name="invisible_char_set">True</property>
                         <property name="adjustment">adjustment2</property>
                       </object>
                       <packing>
@@ -460,7 +464,6 @@
                     <property name="visible">True</property>
                     <property name="can_focus">True</property>
                     <property name="invisible_char">●</property>
-                    <property name="invisible_char_set">True</property>
                     <property name="adjustment">adjustment3</property>
                     <property name="digits">1</property>
                   </object>
commit 4520973ccf0ab042b09b4233d54a1779625b0093
Author: Armin Le Grand <alg at apache.org>
Date:   Wed Apr 2 11:21:46 2014 +0000

    Resolves: #i124580# corrected some conversions of scale values...
    
    to integer positions
    
    (cherry picked from commit d3c4a0c2a87504007a30e6944f52da4654cfa784)
    
    Change-Id: Iae4c16250e95938999d60d1c60e1163dfba243cf

diff --git a/vcl/source/gdi/outdev2.cxx b/vcl/source/gdi/outdev2.cxx
index 6506095..74236bb 100644
--- a/vcl/source/gdi/outdev2.cxx
+++ b/vcl/source/gdi/outdev2.cxx
@@ -786,8 +786,11 @@ void OutputDevice::DrawTransformedBitmapEx(
     {
         // with no rotation, shear or mirroring it can be mapped to DrawBitmapEx
         // do *not* execute the mirroring here, it's done in the fallback
+        // #i124580# the correct DestSize needs to be calculated based on MaxXY values
         const Point aDestPt(basegfx::fround(aTranslate.getX()), basegfx::fround(aTranslate.getY()));
-        const Size aDestSize(basegfx::fround(aScale.getX()), basegfx::fround(aScale.getY()));
+        const Size aDestSize(
+            basegfx::fround(aScale.getX() + aTranslate.getX()) - aDestPt.X(),
+            basegfx::fround(aScale.getY() + aTranslate.getY()) - aDestPt.Y());
 
         DrawBitmapEx(aDestPt, aDestSize, rBitmapEx);
         return;
@@ -814,8 +817,11 @@ void OutputDevice::DrawTransformedBitmapEx(
         {
             // with no rotation or shear it can be mapped to DrawBitmapEx
             // do *not* execute the mirroring here, it's done in the fallback
+            // #i124580# the correct DestSize needs to be calculated based on MaxXY values
             const Point aDestPt(basegfx::fround(aTranslate.getX()), basegfx::fround(aTranslate.getY()));
-            const Size aDestSize(basegfx::fround(aScale.getX()), basegfx::fround(aScale.getY()));
+            const Size aDestSize(
+                basegfx::fround(aScale.getX() + aTranslate.getX()) - aDestPt.X(),
+                basegfx::fround(aScale.getY() + aTranslate.getY()) - aDestPt.Y());
 
             DrawBitmapEx(aDestPt, aDestSize, rBitmapEx);
             return;
@@ -879,8 +885,11 @@ void OutputDevice::DrawTransformedBitmapEx(
                     aTargetRange.getMinimum()));
 
             // extract point and size; do not remove size, the bitmap may have been prepared reduced by purpose
+            // #i124580# the correct DestSize needs to be calculated based on MaxXY values
             const Point aDestPt(basegfx::fround(aVisibleRange.getMinX()), basegfx::fround(aVisibleRange.getMinY()));
-            const Size aDestSize(basegfx::fround(aVisibleRange.getWidth()), basegfx::fround(aVisibleRange.getHeight()));
+            const Size aDestSize(
+                basegfx::fround(aVisibleRange.getMaxX()) - aDestPt.X(),
+                basegfx::fround(aVisibleRange.getMaxY()) - aDestPt.Y());
 
             DrawBitmapEx(aDestPt, aDestSize, aTransformed);
         }
commit 0635918c5153116a22eebec12d1b5de9d6e83e01
Author: Miklos Vajna <vmiklos at collabora.co.uk>
Date:   Wed Apr 2 15:42:30 2014 +0200

    SwFrmFmts: add a dumpAsXml() method
    
    With this, it's possible to see properties of e.g. fly frames in a
    document.
    
    Change-Id: Iba68156ba7f0149dfea3e0a6367b71b8642a2a80

diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx
index 93f1815..3269eb0 100644
--- a/sw/inc/docary.hxx
+++ b/sw/inc/docary.hxx
@@ -81,6 +81,7 @@ public:
     virtual SwFmt* GetFmt(size_t idx) const SAL_OVERRIDE { return (SwFmt*)operator[](idx); }
     sal_uInt16 GetPos(const SwFrmFmt* pFmt) const;
     bool Contains(const SwFrmFmt* pFmt) const;
+    void dumpAsXml(xmlTextWriterPtr w);
     /// free's any remaining child objects
     virtual ~SwFrmFmts();
 };
diff --git a/sw/source/core/docnode/nodedump.cxx b/sw/source/core/docnode/nodedump.cxx
index dbdf480..11ebfa1 100644
--- a/sw/source/core/docnode/nodedump.cxx
+++ b/sw/source/core/docnode/nodedump.cxx
@@ -16,7 +16,11 @@
 #include "docufld.hxx"
 #include "txatbase.hxx"
 #include "fmtautofmt.hxx"
+#include "fmtcntnt.hxx"
 #include "charfmt.hxx"
+#include "frmfmt.hxx"
+#include "fmtanchr.hxx"
+#include "fmtsrnd.hxx"
 #include "paratr.hxx"
 #include "redline.hxx"
 #include <swmodule.hxx>
@@ -28,8 +32,10 @@
 #include <editeng/fhgtitem.hxx>
 #include <editeng/editobj.hxx>
 #include <editeng/outlobj.hxx>
+#include <svx/xdef.hxx>
 #include <svx/svdpage.hxx>
 #include <svx/svdmodel.hxx>
+#include <svx/xfillit0.hxx>
 #include <tools/datetimeutils.hxx>
 
 #include <libxml/encoding.h>
@@ -171,6 +177,7 @@ void SwDoc::dumpAsXml( xmlTextWriterPtr w )
     mpFldTypes->dumpAsXml( writer );
     mpTxtFmtCollTbl->dumpAsXml( writer );
     mpCharFmtTbl->dumpAsXml( writer );
+    mpSpzFrmFmtTbl->dumpAsXml( writer );
     mpNumRuleTbl->dumpAsXml( writer );
     mpRedlineTbl->dumpAsXml( writer );
     mpExtraRedlineTbl->dumpAsXml( writer );
@@ -365,8 +372,8 @@ void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet)
                 css::uno::Any aAny;
                 static_cast<const SvxRsidItem*>(pItem)->QueryValue(aAny);
                 oValue = OString::number(aAny.get<sal_uInt32>());
+                break;
             }
-            break;
             case RES_CHRATR_ROTATE: pWhich = "character rotation"; oValue = OString::number(static_cast<const SvxCharRotateItem*>(pItem)->GetValue()); break;
             case RES_PARATR_OUTLINELEVEL: pWhich = "paragraph outline level"; oValue = OString::number(static_cast<const SfxUInt16Item*>(pItem)->GetValue()); break;
             case RES_PARATR_NUMRULE: pWhich = "paragraph numbering rule"; oValue = OUStringToOString(static_cast<const SwNumRuleItem*>(pItem)->GetValue(), RTL_TEXTENCODING_UTF8); break;
@@ -378,8 +385,103 @@ void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet)
                 pWhich = "character font size";
                 const SvxFontHeightItem* pFontHeightItem = static_cast<const SvxFontHeightItem*>(pItem);
                 oValue = "nHeight: " + OString::number(pFontHeightItem->GetHeight()) + ", nProp: " + OString::number(pFontHeightItem->GetProp());
+                break;
+            }
+            case RES_CNTNT:
+            {
+                pWhich = "frame content";
+                const SwFmtCntnt* pCntnt = static_cast<const SwFmtCntnt*>(pItem);
+                oValue = "node index: " + OString::number(pCntnt->GetCntntIdx()->GetNode().GetIndex());
+                break;
+            }
+            case RES_FRM_SIZE:
+            {
+                pWhich = "frame size";
+                break;
+            }
+            case RES_VERT_ORIENT:
+            {
+                pWhich = "frame vertical orientation";
+                break;
+            }
+            case RES_HORI_ORIENT:
+            {
+                pWhich = "frame horizontal orientation";
+                break;
+            }
+            case RES_ANCHOR:
+            {
+                pWhich = "frame anchor";
+                const SwFmtAnchor* pAnchor = static_cast<const SwFmtAnchor*>(pItem);
+                const SwPosition* pPosition = pAnchor->GetCntntAnchor();
+                if (pPosition)
+                    oValue = "node index: " + OString::number(pPosition->nNode.GetNode().GetIndex()) + ", index: " + OString::number(pPosition->nContent.GetIndex());
+                break;
+            }
+            case RES_SURROUND:
+            {
+                pWhich = "frame surround";
+                const SwFmtSurround* pSurround = static_cast<const SwFmtSurround*>(pItem);
+                switch (pSurround->GetSurround())
+                {
+                case SURROUND_NONE:
+                    oValue = "none";
+                    break;
+                case SURROUND_THROUGHT:
+                    oValue = "throught";
+                    break;
+                case SURROUND_PARALLEL:
+                    oValue = "parallel";
+                    break;
+                case SURROUND_IDEAL:
+                    oValue = "ideal";
+                    break;
+                case SURROUND_LEFT:
+                    oValue = "left";
+                    break;
+                case SURROUND_RIGHT:
+                    oValue = "right";
+                    break;
+                case SURROUND_END:
+                    oValue = "end";
+                    break;
+                }
+                break;
+            }
+            case RES_FOLLOW_TEXT_FLOW:
+            {
+                pWhich = "frame follow text flow";
+                break;
+            }
+            case RES_WRAP_INFLUENCE_ON_OBJPOS:
+            {
+                pWhich = "frame wrap influence on object position";
+                break;
+            }
+            case XATTR_FILLSTYLE:
+            {
+                pWhich = "fill style";
+                const XFillStyleItem* pFillStyleItem = static_cast<const XFillStyleItem*>(pItem);
+                switch (pFillStyleItem->GetValue())
+                {
+                case XFILL_NONE:
+                    oValue = "none";
+                    break;
+                case XFILL_SOLID:
+                    oValue = "solid";
+                    break;
+                case XFILL_GRADIENT:
+                    oValue = "gradient";
+                    break;
+                case XFILL_HATCH:
+                    oValue = "hatch";
+                    break;
+                case XFILL_BITMAP:
+                    oValue = "bitmap";
+                    break;
+                }
+                break;
             }
-            break;
         }
         if (pWhich)
             writer.writeFormatAttribute("which", "%s", BAD_CAST(pWhich));
@@ -390,6 +492,26 @@ void lcl_dumpSfxItemSet(WriterHelper& writer, const SfxItemSet* pSet)
     }
 }
 
+void SwFrmFmts::dumpAsXml(xmlTextWriterPtr w)
+{
+    WriterHelper writer(w);
+    if (size())
+    {
+        writer.startElement("swfrmfmts");
+        for (size_t i = 0; i < size(); ++i)
+        {
+            SwFrmFmt* pFmt = static_cast<SwFrmFmt*>(GetFmt(i));
+            writer.startElement("swfrmfmt");
+            OString aName = OUStringToOString(pFmt->GetName(), RTL_TEXTENCODING_UTF8);
+            writer.writeFormatAttribute("name", "%s", BAD_CAST(aName.getStr()));
+
+            lcl_dumpSfxItemSet(writer, &pFmt->GetAttrSet());
+            writer.endElement();
+        }
+        writer.endElement();
+    }
+}
+
 void SwCharFmts::dumpAsXml(xmlTextWriterPtr w)
 {
     WriterHelper writer(w);
commit 44405c95b63fcd4b8b594c47106a7491424cbc40
Author: Tor Lillqvist <tml at collabora.com>
Date:   Wed Apr 2 17:12:09 2014 +0300

    We use four column indentation steps in this file
    
    Change-Id: I52898b460669ce7afaaeef4d28f36883eb20effa

diff --git a/configure.ac b/configure.ac
index c4b86ff..3726dfa 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5402,23 +5402,23 @@ if test "$GXX" = "yes"; then
 
     dnl see https://code.google.com/p/android/issues/detail?id=41770
     if test "$_gpp_majmin" -ge "401"; then
-            glibcxx_threads=no
-            AC_LANG_PUSH([C++])
-            AC_REQUIRE_CPP
-            AC_MSG_CHECKING([whether $CXX is broken with boost.thread])
-            AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
-                #include <bits/c++config.h>]],[[
-                #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
-                && !defined(_GLIBCXX__PTHREADS) \
-                && !defined(_GLIBCXX_HAS_GTHREADS)
-                choke me
-                #endif
-            ]])],[AC_MSG_RESULT([yes])
-            glibcxx_threads=yes],[AC_MSG_RESULT([no])])
-            AC_LANG_POP([C++])
-            if test $glibcxx_threads = yes; then
-                  BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
-            fi
+        glibcxx_threads=no
+        AC_LANG_PUSH([C++])
+        AC_REQUIRE_CPP
+        AC_MSG_CHECKING([whether $CXX is broken with boost.thread])
+        AC_PREPROC_IFELSE([AC_LANG_PROGRAM([[
+            #include <bits/c++config.h>]],[[
+            #if !defined(_GLIBCXX_HAVE_GTHR_DEFAULT) \
+            && !defined(_GLIBCXX__PTHREADS) \
+            && !defined(_GLIBCXX_HAS_GTHREADS)
+            choke me
+            #endif
+        ]])],[AC_MSG_RESULT([yes])
+        glibcxx_threads=yes],[AC_MSG_RESULT([no])])
+        AC_LANG_POP([C++])
+        if test $glibcxx_threads = yes; then
+              BOOST_CXXFLAGS="-D_GLIBCXX_HAS_GTHREADS"
+        fi
      fi
 fi
 AC_SUBST(BOOST_CXXFLAGS)
commit 3ec4b907991d62155801b42acff9d09417fe66ed
Author: Tor Lillqvist <tml at collabora.com>
Date:   Wed Apr 2 17:08:16 2014 +0300

    Fix g++ version test
    
    Change-Id: I03bb06ddda9f8d54fae926004f5cf55cf5846833

diff --git a/configure.ac b/configure.ac
index cebff52..c4b86ff 100644
--- a/configure.ac
+++ b/configure.ac
@@ -5394,14 +5394,14 @@ if test "$GXX" = "yes"; then
     _gpp_version=`$CXX -dumpversion`
     _gpp_majmin=`echo $_gpp_version | $AWK -F. '{ print \$1*100+\$2 }'`
 
-    if test "$_gpp_majmin" -lt "410"; then
-        AC_MSG_ERROR([You need to use GNU C++ compiler version >= 4.1 to build LibreOffice.])
+    if test "$_gpp_majmin" -lt "401"; then
+        AC_MSG_ERROR([You need to use GNU C++ compiler version >= 4.1 to build LibreOffice, you have $_gpp_version.])
     else
         AC_MSG_RESULT([checked (g++ $_gpp_version)])
     fi
 
     dnl see https://code.google.com/p/android/issues/detail?id=41770
-    if test "$_gpp_majmin" -ge "410"; then
+    if test "$_gpp_majmin" -ge "401"; then
             glibcxx_threads=no
             AC_LANG_PUSH([C++])
             AC_REQUIRE_CPP
commit 22dac22fe256b28b78c8e0783f2625aee0f75ace
Author: Winfried Donkers <winfrieddonkers at libreoffice.org>
Date:   Thu Mar 27 13:33:15 2014 +0100

    fdo#73147 add Excel2010 functions NETWORKDAYS.INTL and WORKDAY.INTL
    
    Change-Id: I3ab9dde5c421a3a3e6022a27be37f23547197317
    Reviewed-on: https://gerrit.libreoffice.org/8772
    Reviewed-by: Eike Rathke <erack at redhat.com>
    Tested-by: Eike Rathke <erack at redhat.com>

diff --git a/formula/source/core/resource/core_resource.src b/formula/source/core/resource/core_resource.src
index 28ecee3..e008f6c 100644
--- a/formula/source/core/resource/core_resource.src
+++ b/formula/source/core/resource/core_resource.src
@@ -385,6 +385,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_ODFF
     String SC_OPCODE_WEEK { Text = "ISOWEEKNUM" ; };
     String SC_OPCODE_EASTERSUNDAY { Text = "ORG.OPENOFFICE.EASTERSUNDAY" ; };
     String SC_OPCODE_GET_DAY_OF_WEEK { Text = "WEEKDAY" ; };
+    String SC_OPCODE_NETWORKDAYS_MS { Text = "COM.MICROSOFT.NETWORKDAYS.INTL" ; };
+    String SC_OPCODE_WORKDAY_MS { Text = "COM.MICROSOFT.WORKDAY.INTL" ; };
     String SC_OPCODE_NO_NAME { Text = "#NAME!" ; };
     String SC_OPCODE_STYLE { Text = "ORG.OPENOFFICE.STYLE" ; };
     String SC_OPCODE_DDE { Text = "DDE" ; };
@@ -786,6 +788,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH_OOXML
     String SC_OPCODE_WEEK { Text = "WEEKNUM" ; };
     String SC_OPCODE_EASTERSUNDAY { Text = "EASTERSUNDAY" ; };
     String SC_OPCODE_GET_DAY_OF_WEEK { Text = "WEEKDAY" ; };
+    String SC_OPCODE_NETWORKDAYS_MS { Text = "NETWORKDAYS.INTL" ; };
+    String SC_OPCODE_WORKDAY_MS { Text = "WORKDAY.INTL" ; };
     String SC_OPCODE_NO_NAME { Text = "#NAME!" ; };
     String SC_OPCODE_STYLE { Text = "STYLE" ; };
     String SC_OPCODE_DDE { Text = "DDE" ; };
@@ -1189,6 +1193,8 @@ Resource RID_STRLIST_FUNCTION_NAMES_ENGLISH
     String SC_OPCODE_WEEK { Text = "WEEKNUM" ; };
     String SC_OPCODE_EASTERSUNDAY { Text = "EASTERSUNDAY" ; };
     String SC_OPCODE_GET_DAY_OF_WEEK { Text = "WEEKDAY" ; };
+    String SC_OPCODE_NETWORKDAYS_MS { Text = "NETWORKDAYS.INTL" ; };
+    String SC_OPCODE_WORKDAY_MS { Text = "WORKDAY.INTL" ; };
     String SC_OPCODE_NO_NAME { Text = "#NAME!" ; };
     String SC_OPCODE_STYLE { Text = "STYLE" ; };
     String SC_OPCODE_DDE { Text = "DDE" ; };
@@ -2606,6 +2612,14 @@ Resource RID_STRLIST_FUNCTION_NAMES
     {
         Text [ en-US ] = "WEEKDAY" ;
     };
+    String SC_OPCODE_NETWORKDAYS_MS
+    {
+        Text [ en-US ] = "NETWORKDAYS.INTL" ;
+    };
+    String SC_OPCODE_WORKDAY_MS
+    {
+        Text [ en-US ] = "WORKDAY.INTL" ;
+    };
     String SC_OPCODE_NO_NAME
     {
         Text [ en-US ] = "#NAME!" ;
diff --git a/include/formula/compiler.hrc b/include/formula/compiler.hrc
index 23eedf3..47d22aa 100644
--- a/include/formula/compiler.hrc
+++ b/include/formula/compiler.hrc
@@ -463,8 +463,10 @@
 #define SC_OPCODE_CEIL_MS           465
 #define SC_OPCODE_CEIL_ISO          466
 #define SC_OPCODE_FLOOR_MS          467
+#define SC_OPCODE_NETWORKDAYS_MS    468
+#define SC_OPCODE_WORKDAY_MS        469
 
-#define SC_OPCODE_STOP_2_PAR        468     /* last function with two or more parameters' OpCode + 1 */
+#define SC_OPCODE_STOP_2_PAR        470     /* last function with two or more parameters' OpCode + 1 */
 #define SC_OPCODE_STOP_FUNCTION     SC_OPCODE_STOP_2_PAR            /* last function's OpCode + 1 */
 #define SC_OPCODE_LAST_OPCODE_ID    (SC_OPCODE_STOP_FUNCTION - 1)   /* last OpCode */
 
diff --git a/include/formula/opcode.hxx b/include/formula/opcode.hxx
index 13daeff..4239c53 100644
--- a/include/formula/opcode.hxx
+++ b/include/formula/opcode.hxx
@@ -436,6 +436,8 @@ enum OpCodeEnum
     // miscellaneous
         ocWeek              = SC_OPCODE_WEEK,
         ocGetDayOfWeek      = SC_OPCODE_GET_DAY_OF_WEEK,
+        ocNetWorkdays_MS    = SC_OPCODE_NETWORKDAYS_MS,
+        ocWorkday_MS        = SC_OPCODE_WORKDAY_MS,
         ocNoName            = SC_OPCODE_NO_NAME,
         ocStyle             = SC_OPCODE_STYLE,
         ocDde               = SC_OPCODE_DDE,
diff --git a/sc/inc/helpids.h b/sc/inc/helpids.h
index bc28f46..2aa8e60 100644
--- a/sc/inc/helpids.h
+++ b/sc/inc/helpids.h
@@ -702,5 +702,7 @@
 #define HID_FUNC_CEIL_MS                                        "SC_HID_FUNC_CEIL_MS"
 #define HID_FUNC_CEIL_ISO                                       "SC_HID_FUNC_CEIL_ISO"
 #define HID_FUNC_FLOOR_MS                                       "SC_HID_FUNC_FLOOR_MS"
+#define HID_FUNC_NETWORKDAYS_MS                                 "SC_HID_FUNC_NETWORKDAYS_MS"
+#define HID_FUNC_WORKDAY_MS                                     "SC_HID_FUNC_WORKDAY_MS"
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/qa/unit/subsequent_filters-test.cxx b/sc/qa/unit/subsequent_filters-test.cxx
index 9d0368d..1e08cf7 100644
--- a/sc/qa/unit/subsequent_filters-test.cxx
+++ b/sc/qa/unit/subsequent_filters-test.cxx
@@ -465,7 +465,7 @@ void ScFiltersTest::testFunctionsExcel2010()
         { 40, true  },
         { 41, true  },
         { 42, true  },
-        { 43, false },
+        { 43, false }, // fdo73147 to be set to true
         { 44, true  },
         { 45, true  },
         { 46, true  },
@@ -494,7 +494,7 @@ void ScFiltersTest::testFunctionsExcel2010()
         { 69, true  },
         { 70, true  },
         { 71, true  },
-        { 72, false },
+        { 72, false }, // fdo73147 to be set to true
         { 73, true  }
     };
 
@@ -505,12 +505,24 @@ void ScFiltersTest::testFunctionsExcel2010()
             // Column A is description, B is formula, C is Excel result, D is
             // comparison.
             SCROW nRow = aTests[i].nRow - 1;    // 0-based
+
+            OString aStr = OString::number( aTests[i].nRow) +
+                ", function name=[ " +
+                OUStringToOString( pDoc->GetString( ScAddress( 0, nRow, 0)), RTL_TEXTENCODING_UTF8 ) +
+                " ], result=" +
+                OString::number( pDoc->GetValue( ScAddress( 1, nRow, 0)) ) +
+                ", expected=" +
+                OString::number( pDoc->GetValue( ScAddress( 2, nRow, 0)) );
+
+            ScFormulaCell* pFC = pDoc->GetFormulaCell( ScAddress( 1, nRow, 0) );
+            if ( pFC && pFC->GetErrCode() != 0 )
+                aStr += ", error code =" + OString::number( pFC->GetErrCode() );
+
             CPPUNIT_ASSERT_MESSAGE( OString( "Expected a formula cell without error at row " +
-                    OString::number( aTests[i].nRow)).getStr(),
-                    isFormulaWithoutError( *pDoc, ScAddress( 1, nRow, 0)));
+                    aStr ).getStr(), isFormulaWithoutError( *pDoc, ScAddress( 1, nRow, 0)));
             CPPUNIT_ASSERT_MESSAGE( OString( "Expected a TRUE value at row " +
-                    OString::number( aTests[i].nRow)).getStr(),
-                    0 != pDoc->GetValue( ScAddress( 3, nRow, 0)));
+                    aStr ).getStr(), 0 != pDoc->GetValue( ScAddress( 3, nRow, 0)));
+
         }
     }
 
diff --git a/sc/qa/unit/ucalc.cxx b/sc/qa/unit/ucalc.cxx
index 7bb90ca..f670e9c 100644
--- a/sc/qa/unit/ucalc.cxx
+++ b/sc/qa/unit/ucalc.cxx
@@ -2374,6 +2374,7 @@ void Test::testFunctionLists()
         "HOUR",
         "MINUTE",
         "MONTH",
+        "NETWORKDAYS.INTL",
         "NOW",
         "SECOND",
         "TIME",
@@ -2381,6 +2382,7 @@ void Test::testFunctionLists()
         "TODAY",
         "WEEKDAY",
         "WEEKNUM",
+        "WORKDAY.INTL",
         "YEAR",
         0
     };
diff --git a/sc/source/core/inc/interpre.hxx b/sc/source/core/inc/interpre.hxx
index bfebfd4..e0e36ed 100644
--- a/sc/source/core/inc/interpre.hxx
+++ b/sc/source/core/inc/interpre.hxx
@@ -32,6 +32,7 @@
 #include "token.hxx"
 
 #include <map>
+#include <vector>
 
 class ScDocument;
 class SbxVariable;
@@ -589,6 +590,10 @@ void ScGetDay();
 void ScGetDayOfWeek();
 void ScGetWeekOfYear();
 void ScEasterSunday();
+sal_uInt16 GetWeekendAndHolidayMasks( const sal_uInt8 nParamCount, const Date& rNullDate,
+        ::std::vector<double>& rSortArray, OUString& rWeekendDays, bool bWeekendMask[ 7 ] );
+void ScNetWorkdays_MS();
+void ScWorkday_MS();
 void ScGetHour();
 void ScGetMin();
 void ScGetSec();
diff --git a/sc/source/core/tool/interpr2.cxx b/sc/source/core/tool/interpr2.cxx
index 0c38865..85707a2 100644
--- a/sc/source/core/tool/interpr2.cxx
+++ b/sc/source/core/tool/interpr2.cxx
@@ -50,6 +50,7 @@
 #include <string.h>
 #include <math.h>
 
+using ::std::vector;
 using namespace com::sun::star;
 using namespace formula;
 
@@ -247,6 +248,201 @@ void ScInterpreter::ScEasterSunday()
     }
 }
 
+sal_uInt16 ScInterpreter::GetWeekendAndHolidayMasks(
+    const sal_uInt8 nParamCount, const Date& rNullDate, vector< double >& rSortArray,
+    OUString& rWeekendDays, bool bWeekendMask[ 7 ] )
+{
+    sal_uInt16 nErr = 0;
+    if ( nParamCount == 4 )
+    {
+        GetSortArray( 1, rSortArray );
+        size_t nMax = rSortArray.size();
+        for ( size_t i = 0; i < nMax; i++ )
+        {
+            Date aTempDate( rNullDate );
+            aTempDate += ::rtl::math::approxFloor( rSortArray.at( i ) );
+            rSortArray.at( i ) = aTempDate.GetDate();
+        }
+    }
+
+    if ( nParamCount >= 3 )
+        rWeekendDays = GetString().getString();
+
+    for ( int i = 0; i < 7; i++ )
+        bWeekendMask[ i] = false;
+
+    if ( rWeekendDays.isEmpty() )
+    {
+        bWeekendMask[ SATURDAY ] = true;
+        bWeekendMask[ SUNDAY ]   = true;
+    }
+    else
+    {
+        switch ( rWeekendDays.getLength() )
+        {
+            case 1 :
+                // Weekend days defined by code
+                switch ( rWeekendDays[ 0 ] )
+                {
+                    case '1' : bWeekendMask[ SATURDAY ]  = true; bWeekendMask[ SUNDAY ]    = true; break;
+                    case '2' : bWeekendMask[ SUNDAY ]    = true; bWeekendMask[ MONDAY ]    = true; break;
+                    case '3' : bWeekendMask[ MONDAY ]    = true; bWeekendMask[ TUESDAY ]   = true; break;
+                    case '4' : bWeekendMask[ TUESDAY ]   = true; bWeekendMask[ WEDNESDAY ] = true; break;
+                    case '5' : bWeekendMask[ WEDNESDAY ] = true; bWeekendMask[ THURSDAY ]  = true; break;
+                    case '6' : bWeekendMask[ THURSDAY ]  = true; bWeekendMask[ FRIDAY ]    = true; break;
+                    case '7' : bWeekendMask[ FRIDAY ]    = true; bWeekendMask[ SATURDAY ]  = true; break;
+                    default  : nErr = errIllegalArgument;                                          break;
+                }
+                break;
+            case 2 :
+                // Weekend day defined by code
+                if ( rWeekendDays[ 0 ] == '1' )
+                {
+                    switch ( rWeekendDays[ 1 ] )
+                    {
+                        case '1' : bWeekendMask[ SUNDAY ]    = true; break;
+                        case '2' : bWeekendMask[ MONDAY ]    = true; break;
+                        case '3' : bWeekendMask[ TUESDAY ]   = true; break;
+                        case '4' : bWeekendMask[ WEDNESDAY ] = true; break;
+                        case '5' : bWeekendMask[ THURSDAY ]  = true; break;
+                        case '6' : bWeekendMask[ FRIDAY ]    = true; break;
+                        case '7' : bWeekendMask[ SATURDAY ]  = true; break;
+                        default  : nErr = errIllegalArgument;        break;
+                    }
+                }
+                else
+                    nErr = errIllegalArgument;
+                break;
+            case 7 :
+                // Weekend days defined by string
+                for ( int i = 0; i < 7 && !nErr; i++ )
+                {
+                    switch ( rWeekendDays[ i ] )
+                    {
+                        case '0' : bWeekendMask[ i ] = false; break;
+                        case '1' : bWeekendMask[ i ] = true;  break;
+                        default  : nErr = errIllegalArgument; break;
+                    }
+                }
+                break;
+            default :
+                nErr = errIllegalArgument;
+                break;
+        }
+    }
+    return nErr;
+}
+
+void ScInterpreter::ScNetWorkdays_MS()
+{
+    sal_uInt8 nParamCount = GetByte();
+    if ( MustHaveParamCount( nParamCount, 2, 4 ) )
+    {
+        vector<double> nSortArray;
+        bool bWeekendMask[ 7 ];
+        OUString aWeekendDays;
+        Date aNullDate = *( pFormatter->GetNullDate() );
+        sal_uInt16 nErr = GetWeekendAndHolidayMasks( nParamCount, aNullDate,
+                            nSortArray , aWeekendDays, bWeekendMask );
+        if ( nErr )
+            PushError( nErr );
+        else
+        {
+            double nDate2 = GetDouble();
+            double nDate1 = GetDouble();
+            Date aDate2( aNullDate );
+            aDate2 += ( long )::rtl::math::approxFloor( nDate2 );
+            Date aDate1( aNullDate );
+            aDate1 += ( long )::rtl::math::approxFloor( nDate1 );
+
+            sal_Int32 nCnt = 0;
+            size_t nRef = 0;
+            bool bReverse = ( aDate1 > aDate2 );
+            if ( bReverse )
+            {
+                Date aTempDate( aDate1 );
+                aDate1 = aDate2;
+                aDate2 = aTempDate;
+            }
+            size_t nMax = nSortArray.size();
+            while ( aDate1 <= aDate2 )
+            {
+                if ( !bWeekendMask[ aDate1.GetDayOfWeek() ] )
+                {
+                    while ( nRef < nMax && nSortArray.at( nRef ) < aDate1.GetDate() )
+                        nRef++;
+                    if ( !( nRef < nMax && nSortArray.at( nRef ) == aDate1.GetDate() ) )
+                        nCnt++;
+                }
+                ++aDate1;
+            }
+            PushDouble( ( double ) ( bReverse ? -nCnt : nCnt ) );
+        }
+    }
+}
+
+void ScInterpreter::ScWorkday_MS()
+{
+    sal_uInt8 nParamCount = GetByte();
+    if ( MustHaveParamCount( nParamCount, 2, 4 ) )
+    {
+        nFuncFmtType = NUMBERFORMAT_DATE;
+        vector<double> nSortArray;
+        bool bWeekendMask[ 7 ];
+        OUString aWeekendDays;
+        Date aNullDate = *( pFormatter->GetNullDate() );
+        sal_uInt16 nErr = GetWeekendAndHolidayMasks( nParamCount, aNullDate,
+                            nSortArray , aWeekendDays, bWeekendMask );
+        if ( nErr )
+            PushError( nErr );
+        else
+        {
+            sal_Int32 nDays = ::rtl::math::approxFloor( GetDouble() );
+            double nDate = GetDouble();
+            Date aDate( aNullDate );
+            aDate += ( long )::rtl::math::approxFloor( nDate );
+
+            if ( !nDays )
+                PushDouble( ( double ) ( aDate - aNullDate ) );
+            else
+            {
+                size_t nMax = nSortArray.size();
+                if ( nDays > 0 )
+                {
+                    size_t nRef = 0;
+                    while ( nDays )
+                    {
+                        while ( nRef < nMax && nSortArray.at( nRef ) < aDate.GetDate() )
+                            nRef++;
+                        if ( !( nRef < nMax && nSortArray.at( nRef ) == aDate.GetDate() ) || nRef >= nMax )
+                             nDays--;
+
+                        do
+                            ++aDate;
+                        while ( bWeekendMask[ aDate.GetDayOfWeek() ] ); //jump over weekend day(s)
+                    }
+                }
+                else
+                {
+                    sal_Int16 nRef = nMax - 1;
+                    while ( nDays )
+                    {
+                        while ( nRef >= 0 && nSortArray.at( nRef ) > aDate.GetDate() )
+                            nRef--;
+                        if ( !( nRef >= 0 && nSortArray.at( nRef ) == aDate.GetDate() ) || nRef < 0 )
+                             nDays++;
+
+                        do
+                          --aDate;
+                        while ( bWeekendMask[ aDate.GetDayOfWeek() ] ); //jump over weekend day(s)
+                    }
+                }
+                PushDouble( ( double ) ( aDate - aNullDate ) );
+            }
+        }
+    }
+}
+
 void ScInterpreter::ScGetDate()
 {
     nFuncFmtType = NUMBERFORMAT_DATE;
diff --git a/sc/source/core/tool/interpr4.cxx b/sc/source/core/tool/interpr4.cxx
index c641b7a..1048c1a 100644
--- a/sc/source/core/tool/interpr4.cxx
+++ b/sc/source/core/tool/interpr4.cxx
@@ -3978,6 +3978,8 @@ StackVar ScInterpreter::Interpret()
                 case ocGetDayOfWeek     : ScGetDayOfWeek();             break;
                 case ocWeek             : ScGetWeekOfYear();            break;
                 case ocEasterSunday     : ScEasterSunday();             break;
+                case ocNetWorkdays_MS   : ScNetWorkdays_MS();           break;
+                case ocWorkday_MS       : ScWorkday_MS();               break;
                 case ocGetHour          : ScGetHour();                  break;
                 case ocGetMin           : ScGetMin();                   break;
                 case ocGetSec           : ScGetSec();                   break;
diff --git a/sc/source/core/tool/parclass.cxx b/sc/source/core/tool/parclass.cxx
index 2b74084..b19b361 100644
--- a/sc/source/core/tool/parclass.cxx
+++ b/sc/source/core/tool/parclass.cxx
@@ -208,6 +208,8 @@ const ScParameterClassification::RawData ScParameterClassification::pRawData[] =
     { ocXor,             {{ Reference                                            }, 1 }},
     { ocZTest,           {{ Reference, Value, Value                              }, 0 }},
     { ocZTest_MS,        {{ Reference, Value, Value                              }, 0 }},
+    { ocNetWorkdays_MS,  {{ Value, Value, Value, Reference                       }, 0 }},
+    { ocWorkday_MS,      {{ Value, Value, Value, Reference                       }, 0 }},
     // Excel doubts:
     // ocN, ocT: Excel says (and handles) Reference, error? This means no
     // position dependent SingleRef if DoubleRef, and no array calculation,
diff --git a/sc/source/filter/excel/xlformula.cxx b/sc/source/filter/excel/xlformula.cxx
index c000ff1..e7222a7 100644
--- a/sc/source/filter/excel/xlformula.cxx
+++ b/sc/source/filter/excel/xlformula.cxx
@@ -398,8 +398,11 @@ static const XclFunctionInfo saFuncTable_Oox[] =
     { ocAverageIfs,         255,    4,  MX, V, { RO_E, RO, RO, VR }, EXC_FUNCFLAG_EXPORTONLY|EXC_FUNCFLAG_PARAMPAIRS, EXC_FUNCNAME( "AVERAGEIFS" ) },
     { ocIfError,            NOID,   2,  2,  V, { VO, RO }, EXC_FUNCFLAG_IMPORTONLY, EXC_FUNCNAME( "IFERROR" ) },
     { ocIfError,            255,    3,  3,  V, { RO_E, VO, RO }, EXC_FUNCFLAG_EXPORTONLY, EXC_FUNCNAME( "IFERROR" ) },
-
-    EXC_FUNCENTRY_V_VR( ocCeil_ISO,         2,  2,  0,  "ISO.CEILING" ),
+    { ocNetWorkdays_MS,     NOID,   2,  4,  V, { VR, VR, VR, RO }, EXC_FUNCFLAG_IMPORTONLY, EXC_FUNCNAME( "NETWORKDAYS.INTL" ) },
+    { ocNetWorkdays_MS,     255,    3,  5,  V, { RO_E, VR, VR, VR, RO }, EXC_FUNCFLAG_EXPORTONLY, EXC_FUNCNAME( "NETWORKDAYS.INTL" ) },
+    { ocWorkday_MS,         NOID,   2,  4,  V, { VR, VR, VR, RO }, EXC_FUNCFLAG_IMPORTONLY, EXC_FUNCNAME( "NETWORKDAYS.INTL" ) },
+    { ocWorkday_MS,         255,    3,  5,  V, { RO_E, VR, VR, VR, RO }, EXC_FUNCFLAG_EXPORTONLY, EXC_FUNCNAME( "NETWORKDAYS.INTL" ) },
+    EXC_FUNCENTRY_V_VR( ocCeil_ISO,         2,  2,  0,  "ISO.CEILING" )
 };
 
 
@@ -486,7 +489,7 @@ static const XclFunctionInfo saFuncTable_2010[] =
     EXC_FUNCENTRY_V_VR( ocNegBinomDist_MS,  4,  4,  0,  "NEGBINOM.DIST" ),
     EXC_FUNCENTRY_V_VR( ocZTest_MS,         2,  3,  0,  "Z.TEST" ),
     EXC_FUNCENTRY_V_VR( ocCeil_MS,          2,  2,  0,  "CEILING.PRECISE" ),
-    EXC_FUNCENTRY_V_VR( ocFloor_MS,         2,  2,  0,  "FLOOR.PRECISE" )
+    EXC_FUNCENTRY_V_VR( ocFloor_MS,         2,  2,  0,  "FLOOR.PRECISE" ),
 };
 
 /** Functions new in Excel 2013.
diff --git a/sc/source/filter/oox/formulabase.cxx b/sc/source/filter/oox/formulabase.cxx
index b44f605..25021e8 100644
--- a/sc/source/filter/oox/formulabase.cxx
+++ b/sc/source/filter/oox/formulabase.cxx
@@ -726,7 +726,9 @@ static const FunctionData saFuncTableOox[] =
     { "SUMIFS",                 "SUMIFS",               482,    NOID,   3,  MX, V, { RO, RO, VR }, FUNCFLAG_MACROCALL | FUNCFLAG_PARAMPAIRS },
     { "AVERAGEIF",              "AVERAGEIF",            483,    NOID,   2,  3,  V, { RO, VR, RO }, FUNCFLAG_MACROCALL },
     { "AVERAGEIFS",             "AVERAGEIFS",           484,    NOID,   3,  MX, V, { RO, RO, VR }, FUNCFLAG_MACROCALL | FUNCFLAG_PARAMPAIRS },
-    { "COM.MICROSOFT.ISO.CEILING",  "ISO.CEILING",     NOID,    NOID,   2,  2,  V, { VR }, FUNCFLAG_MACROCALL }
+    { "COM.MICROSOFT.ISO.CEILING",  "ISO.CEILING",     NOID,    NOID,   2,  2,  V, { VR }, FUNCFLAG_MACROCALL },
+    { "COM.MICROSOFT.NETWORKDAYS.INTL", "NETWORKDAYS.INTL", NOID, NOID, 2,  4,  V, { VR, VR, VR, RX }, FUNCFLAG_MACROCALL },
+    { "COM.MICROSOFT.WORKDAY.INTL",     "WORKDAY.INTL",     NOID, NOID, 2,  4,  V, { VR, VR, VR, RX }, FUNCFLAG_MACROCALL }
 };
 
 /** Functions new in Excel 2010.
@@ -802,7 +804,7 @@ static const FunctionData saFuncTable2010[] =
     { "COM.MICROSOFT.NEGBINOM.DIST",          "NEGBINOM.DIST",       NOID,   NOID,    4,  4,  V, { VR }, FUNCFLAG_MACROCALL_NEW },
     { "COM.MICROSOFT.Z.TEST",                 "Z.TEST",              NOID,   NOID,    2,  3,  V, { RX, VR }, FUNCFLAG_MACROCALL_NEW },
     { "COM.MICROSOFT.CEILING.PRECISE",        "CEILING.PRECISE",     NOID,   NOID,    2,  2,  V, { VR }, FUNCFLAG_MACROCALL_NEW },
-    { "COM.MICROSOFT.FLOOR.PRECISE",          "FLOOR.PRECISE",       NOID,   NOID,    2,  2,  V, { VR }, FUNCFLAG_MACROCALL_NEW }
+    { "COM.MICROSOFT.FLOOR.PRECISE",          "FLOOR.PRECISE",       NOID,   NOID,    2,  2,  V, { VR }, FUNCFLAG_MACROCALL_NEW },
 };
 
 /** Functions new in Excel 2013.
diff --git a/sc/source/ui/src/scfuncs.src b/sc/source/ui/src/scfuncs.src
index e3d1525..3e35e79 100644
--- a/sc/source/ui/src/scfuncs.src
+++ b/sc/source/ui/src/scfuncs.src
@@ -686,6 +686,102 @@ Resource RID_SC_FUNCTION_DESCRIPTIONS1
             Text [ en-US ] = "Method used to form differences: Type = 0 denotes US method (NASD), Type = 1 denotes the European method." ;
         };
     };
+     // -=*# Resource for function NETWORKDAYS.INTL #*=-
+    Resource SC_OPCODE_NETWORKDAYS_MS
+    {
+        String 1 // Description
+        {
+            Text [ en-US ] = "Returns the number of workdays between two dates using arguments to indicate weekenddays and holidays." ;
+        };
+        ExtraData =
+        {
+            0;
+            ID_FUNCTION_GRP_DATETIME;
+            U2S( HID_FUNC_NETWORKDAYS_MS );
+            4;  0;  0;  1;  1;
+            0;
+        };
+        String 2 // Name of Parameter 1
+        {
+            Text [ en-US ] = "Start Date" ;
+        };
+        String 3 // Description of Parameter 1
+        {
+            Text [ en-US ] = "Start date for calculation." ;
+        };
+        String 4 // Name of Parameter 2
+        {
+            Text [ en-US ] = "End Date" ;
+        };
+        String 5 // Description of Parameter 2
+        {
+            Text [ en-US ] = "End date for calculation." ;
+        };
+        String 6 // Name of Parameter 3
+        {
+            Text [ en-US ] = "number or string" ;
+        };
+        String 7 // Description of Parameter 3
+        {
+            Text [ en-US ] = "Optional number or string to indicate to indicate when weekends occur. When omitted, weekend is Saturday and Sunday." ;
+        };
+        String 8 // Name of Parameter 4
+        {
+            Text [ en-US ] = "array" ;
+        };
+        String 9 // Description of Parameter 4
+        {
+            Text [ en-US ] = "Optional set of one or more dates to be considered as holiday." ;
+        };
+    };
+     // -=*# Resource for function WORKDAY.INTL #*=-
+    Resource SC_OPCODE_WORKDAY_MS
+    {
+        String 1 // Description
+        {
+            Text [ en-US ] = "Returns the serial number of the date before or after a number of workdays using arguments to indicate weekenddays and holidays." ;
+        };
+        ExtraData =
+        {
+            0;
+            ID_FUNCTION_GRP_DATETIME;
+            U2S( HID_FUNC_WORKDAY_MS );
+            4;  0;  0;  1;  1;
+            0;
+        };
+        String 2 // Name of Parameter 1
+        {
+            Text [ en-US ] = "Start Date" ;
+        };
+        String 3 // Description of Parameter 1
+        {
+            Text [ en-US ] = "Start date for calculation." ;
+        };
+        String 4 // Name of Parameter 2
+        {
+            Text [ en-US ] = "Days" ;
+        };
+        String 5 // Description of Parameter 2
+        {
+            Text [ en-US ] = "RThe number of workdays before or after start date." ;
+        };
+        String 6 // Name of Parameter 3
+        {
+            Text [ en-US ] = "number or string" ;
+        };
+        String 7 // Description of Parameter 3
+        {
+            Text [ en-US ] = "Optional number or string to indicate to indicate when weekends occur. When omitted, weekend is Saturday and Sunday." ;
+        };
+        String 8 // Name of Parameter 4
+        {
+            Text [ en-US ] = "array" ;
+        };
+        String 9 // Description of Parameter 4
+        {
+            Text [ en-US ] = "Optional set of one or more dates to be considered as holiday." ;
+        };
+    };
      // -=*# Resource for function STUNDE #*=-
     Resource SC_OPCODE_GET_HOUR
     {
commit 50bf123ddbeb457b89636621a99c971834adf3ab
Author: Tor Lillqvist <tml at collabora.com>
Date:   Wed Apr 2 16:45:44 2014 +0300

    Kill superfluous vertical whitespace
    
    Change-Id: I81ce8fd7022bf283db668705efdfb0666f87bde9

diff --git a/vcl/android/androidinst.cxx b/vcl/android/androidinst.cxx
index 25f8853..21d9007 100644
--- a/vcl/android/androidinst.cxx
+++ b/vcl/android/androidinst.cxx
@@ -293,7 +293,6 @@ SalFrame *AndroidSalInstance::CreateFrame( SalFrame* pParent, sal_uLong nStyle )
     return new AndroidSalFrame( this, pParent, nStyle, NULL );
 }
 
-
 // All the interesting stuff is slaved from the AndroidSalInstance
 void InitSalData()   {}
 void DeInitSalData() {}
diff --git a/vcl/generic/app/gendisp.cxx b/vcl/generic/app/gendisp.cxx
index 0e197c1..1275465 100644
--- a/vcl/generic/app/gendisp.cxx
+++ b/vcl/generic/app/gendisp.cxx
@@ -21,7 +21,6 @@
 #include <generic/gendisp.hxx>
 #include <generic/geninst.h>
 
-
 SalGenericDisplay::SalGenericDisplay()
 {
     m_pCapture = NULL;
@@ -145,6 +144,4 @@ bool SalGenericDisplay::HasUserEvents() const
     return bRet;
 }
 
-
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/generic/app/geninst.cxx b/vcl/generic/app/geninst.cxx
index 1bb9fa4..cf2f301 100644
--- a/vcl/generic/app/geninst.cxx
+++ b/vcl/generic/app/geninst.cxx
@@ -26,12 +26,8 @@
 
 #include "generic/geninst.h"
 
-
-
 // SalYieldMutex
 
-
-
 SalYieldMutex::SalYieldMutex()
 {
     mnCount     = 0;
diff --git a/vcl/generic/fontmanager/fontcache.cxx b/vcl/generic/fontmanager/fontcache.cxx
index ea5b443..8a0f809 100644
--- a/vcl/generic/fontmanager/fontcache.cxx
+++ b/vcl/generic/fontmanager/fontcache.cxx
@@ -17,7 +17,6 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-
 #include <cstdlib>
 #include <cstring>
 
@@ -45,7 +44,6 @@ using namespace std;
 using namespace psp;
 using namespace utl;
 
-
 /*
  *  FontCache constructor
  */
@@ -247,7 +245,6 @@ void FontCache::read()
         return;
     }
 
-
     OString aLine;
     aStream.ReadLine( aLine );
     if ( !(aLine == CACHE_MAGIC) )
diff --git a/vcl/generic/fontmanager/fontconfig.cxx b/vcl/generic/fontmanager/fontconfig.cxx
index e145c68..05581c5 100644
--- a/vcl/generic/fontmanager/fontconfig.cxx
+++ b/vcl/generic/fontmanager/fontconfig.cxx
@@ -17,7 +17,6 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-
 #include "fontcache.hxx"
 #include "impfont.hxx"
 #include "fontmanager.hxx"
diff --git a/vcl/generic/fontmanager/fontmanager.cxx b/vcl/generic/fontmanager/fontmanager.cxx
index e5854a3..12bc307 100644
--- a/vcl/generic/fontmanager/fontmanager.cxx
+++ b/vcl/generic/fontmanager/fontmanager.cxx
@@ -50,7 +50,6 @@
 
 #include "i18nlangtag/mslangid.hxx"
 
-
 #include "parseAFM.hxx"
 #include "sft.hxx"
 
@@ -108,8 +107,6 @@ inline sal_uInt32 getUInt32BE( const sal_uInt8*& pBuffer )
     return nRet;
 }
 
-
-
 static FontWeight parseWeight( const OString& rWeight )
 {
     FontWeight eWeight = WEIGHT_DONTKNOW;
@@ -173,21 +170,15 @@ PrintFontManager::PrintFont::PrintFont( fonttype::type eType ) :
 {
 }
 
-
-
 PrintFontManager::PrintFont::~PrintFont()
 {
     delete m_pMetrics;
 }
 
-
-
 PrintFontManager::Type1FontFile::~Type1FontFile()
 {
 }
 
-
-
 PrintFontManager::TrueTypeFontFile::TrueTypeFontFile()
 :   PrintFont( fonttype::TrueType )
 ,   m_nDirectory( 0 )
@@ -195,21 +186,15 @@ PrintFontManager::TrueTypeFontFile::TrueTypeFontFile()
 ,   m_nTypeFlags( TYPEFLAG_INVALID )
 {}
 
-
-
 PrintFontManager::TrueTypeFontFile::~TrueTypeFontFile()
 {
 }
 
-
-
 bool PrintFontManager::Type1FontFile::queryMetricPage( int /*nPage*/, MultiAtomProvider* pProvider )
 {
     return readAfmMetrics( pProvider, false, false );
 }
 
-
-
 bool PrintFontManager::TrueTypeFontFile::queryMetricPage( int nPage, MultiAtomProvider* /*pProvider*/ )
 {
     bool bSuccess = false;
@@ -275,8 +260,6 @@ bool PrintFontManager::TrueTypeFontFile::queryMetricPage( int nPage, MultiAtomPr
     return bSuccess;
 }
 
-
-
 /* #i73387# There seem to be fonts with a rather unwell chosen family name
 *  consider e.g. "Helvetica Narrow" which defines its family as "Helvetica"
 *  It can really only be distinguished by its PSName and FullName. Both of
@@ -664,8 +647,6 @@ PrintFontManager& PrintFontManager::get()
     return *pManager;
 }
 
-
-
 /*
  *  the PrintFontManager
  */
@@ -691,8 +672,6 @@ PrintFontManager::PrintFontManager()
     m_aFontInstallerTimer.SetTimeout(5000);
 }
 
-
-
 PrintFontManager::~PrintFontManager()
 {
     m_aFontInstallerTimer.Stop();
@@ -703,16 +682,12 @@ PrintFontManager::~PrintFontManager()
     delete m_pFontCache;
 }
 
-
-
 OString PrintFontManager::getDirectory( int nAtom ) const
 {
     ::boost::unordered_map< int, OString >::const_iterator it( m_aAtomToDir.find( nAtom ) );
     return it != m_aAtomToDir.end() ? it->second : OString();
 }
 
-
-
 int PrintFontManager::getDirectoryAtom( const OString& rDirectory, bool bCreate )
 {
     int nAtom = 0;
@@ -729,8 +704,6 @@ int PrintFontManager::getDirectoryAtom( const OString& rDirectory, bool bCreate
     return nAtom;
 }
 
-
-
 std::vector<fontID> PrintFontManager::addFontFile( const OString& rFileName )
 {
     rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
@@ -919,8 +892,6 @@ bool PrintFontManager::analyzeFontFile( int nDirID, const OString& rFontFile, ::
     return ! rNewFonts.empty();
 }
 
-
-
 fontID PrintFontManager::findFontFileID( int nDirID, const OString& rFontFile, int nFaceIndex ) const
 {
     fontID nID = 0;
@@ -999,8 +970,6 @@ std::vector<fontID> PrintFontManager::findFontFileIDs( int nDirID, const OString
     return aIds;
 }
 
-
-
 OUString PrintFontManager::convertTrueTypeName( void* pRecord ) const
 {
     NameRecord* pNameRecord = (NameRecord*)pRecord;
@@ -1085,8 +1054,6 @@ namespace
     }
 }
 
-
-
 void PrintFontManager::analyzeTrueTypeFamilyName( void* pTTFont, ::std::list< OUString >& rNames ) const
 {
     OUString aFamily;
@@ -1140,8 +1107,6 @@ void PrintFontManager::analyzeTrueTypeFamilyName( void* pTTFont, ::std::list< OU
     return;
 }
 
-
-
 bool PrintFontManager::analyzeTrueTypeFile( PrintFont* pFont ) const
 {
     bool bSuccess = false;
@@ -1436,7 +1401,6 @@ void PrintFontManager::initialize()
     aStep1 = times( &tms );
 #endif
 
-
     // part three - fill in family styles
     ::boost::unordered_map< fontID, PrintFont* >::iterator font_it;
     for (font_it = m_aFonts.begin(); font_it != m_aFonts.end(); ++font_it)
@@ -1467,8 +1431,6 @@ void PrintFontManager::initialize()
     #endif
 }
 
-
-
 void PrintFontManager::getFontList( ::std::list< fontID >& rFontIDs )
 {
     rFontIDs.clear();
@@ -1478,8 +1440,6 @@ void PrintFontManager::getFontList( ::std::list< fontID >& rFontIDs )
         rFontIDs.push_back( it->first );
 }
 
-
-
 void PrintFontManager::fillPrintFontInfo( PrintFont* pFont, FastPrintFontInfo& rInfo ) const
 {
     ::boost::unordered_map< int, FontFamily >::const_iterator style_it =
@@ -1502,8 +1462,6 @@ void PrintFontManager::fillPrintFontInfo( PrintFont* pFont, FastPrintFontInfo& r
         rInfo.m_aAliases.push_back( m_pAtoms->getString( ATOM_FAMILYNAME, *it ) );
 }
 
-
-
 void PrintFontManager::fillPrintFontInfo( PrintFont* pFont, PrintFontInfo& rInfo ) const
 {
     if( ( pFont->m_nAscend == 0 && pFont->m_nDescend == 0 ) ||
@@ -1525,8 +1483,6 @@ void PrintFontManager::fillPrintFontInfo( PrintFont* pFont, PrintFontInfo& rInfo
     rInfo.m_nWidth          = pFont->m_aGlobalMetricX.width < pFont->m_aGlobalMetricY.width ? pFont->m_aGlobalMetricY.width : pFont->m_aGlobalMetricX.width;
 }
 
-
-
 bool PrintFontManager::getFontInfo( fontID nFontID, PrintFontInfo& rInfo ) const
 {
     PrintFont* pFont = getFont( nFontID );
@@ -1538,8 +1494,6 @@ bool PrintFontManager::getFontInfo( fontID nFontID, PrintFontInfo& rInfo ) const
     return pFont ? true : false;
 }
 
-
-
 bool PrintFontManager::getFontFastInfo( fontID nFontID, FastPrintFontInfo& rInfo ) const
 {
     PrintFont* pFont = getFont( nFontID );
@@ -1551,8 +1505,6 @@ bool PrintFontManager::getFontFastInfo( fontID nFontID, FastPrintFontInfo& rInfo
     return pFont ? true : false;
 }
 
-
-
 bool PrintFontManager::getFontBoundingBox( fontID nFontID, int& xMin, int& yMin, int& xMax, int& yMax )
 {
     bool bSuccess = false;
@@ -1576,8 +1528,6 @@ bool PrintFontManager::getFontBoundingBox( fontID nFontID, int& xMin, int& yMin,
     return bSuccess;
 }
 
-
-
 int PrintFontManager::getFontFaceNumber( fontID nFontID ) const
 {
     int nRet = 0;
@@ -1589,9 +1539,6 @@ int PrintFontManager::getFontFaceNumber( fontID nFontID ) const
     return nRet;
 }
 
-
-
-
 FontFamily PrintFontManager::matchFamilyName( const OUString& rFamily ) const
 {
     typedef struct {
@@ -1657,8 +1604,6 @@ FontFamily PrintFontManager::matchFamilyName( const OUString& rFamily ) const
     return FAMILY_DONTKNOW;
 }
 
-
-
 OString PrintFontManager::getAfmFile( PrintFont* pFont ) const
 {
     OString aMetricPath;
@@ -1680,8 +1625,6 @@ OString PrintFontManager::getAfmFile( PrintFont* pFont ) const
     return aMetricPath;
 }
 
-
-
 OString PrintFontManager::getFontFile( PrintFont* pFont ) const
 {
     OString aPath;
@@ -1705,8 +1648,6 @@ OString PrintFontManager::getFontFile( PrintFont* pFont ) const
     return aPath;
 }
 
-
-
 const OUString& PrintFontManager::getPSName( fontID nFontID ) const
 {
     PrintFont* pFont = getFont( nFontID );
@@ -1774,8 +1715,6 @@ void PrintFontManager::hasVerticalSubstitutions( fontID nFontID,
     }
 }
 
-
-
 bool PrintFontManager::isFontDownloadingAllowedForPrinting( fontID nFont ) const
 {
     static const char* pEnable = getenv( "PSPRINT_ENABLE_TTF_COPYRIGHTAWARENESS" );
@@ -1812,8 +1751,6 @@ bool PrintFontManager::isFontDownloadingAllowedForPrinting( fontID nFont ) const
     return bRet;
 }
 
-
-
 bool PrintFontManager::getMetrics( fontID nFontID, const sal_Unicode* pString, int nLen, CharacterMetric* pArray, bool bVertical ) const
 {
     PrintFont* pFont = getFont( nFontID );
@@ -1855,8 +1792,6 @@ bool PrintFontManager::getMetrics( fontID nFontID, const sal_Unicode* pString, i
     return true;
 }
 
-
-
 bool PrintFontManager::getMetrics( fontID nFontID, sal_Unicode minCharacter, sal_Unicode maxCharacter, CharacterMetric* pArray, bool bVertical ) const
 {
     OSL_PRECOND(minCharacter <= maxCharacter, "invalid char. range");
@@ -1904,8 +1839,6 @@ bool PrintFontManager::getMetrics( fontID nFontID, sal_Unicode minCharacter, sal
     return true;
 }
 
-
-
 // TODO: move most of this stuff into the central font-subsetting code
 bool PrintFontManager::createFontSubset(
                                         FontSubsetInfo& rInfo,
@@ -2137,8 +2070,6 @@ void PrintFontManager::getGlyphWidths( fontID nFont,
     }
 }
 
-
-
 const std::map< sal_Unicode, sal_Int32 >* PrintFontManager::getEncodingMap( fontID nFont, const std::map< sal_Unicode, OString >** pNonEncoded ) const
 {
     PrintFont* pFont = getFont( nFont );
@@ -2154,8 +2085,6 @@ const std::map< sal_Unicode, sal_Int32 >* PrintFontManager::getEncodingMap( font
     return pFont->m_aEncodingVector.size() ? &pFont->m_aEncodingVector : NULL;
 }
 
-
-
 std::list< OString > PrintFontManager::getAdobeNameFromUnicode( sal_Unicode aChar ) const
 {
     std::pair< boost::unordered_multimap< sal_Unicode, OString >::const_iterator,
@@ -2176,7 +2105,6 @@ std::list< OString > PrintFontManager::getAdobeNameFromUnicode( sal_Unicode aCha
     return aRet;
 }
 
-
 std::list< sal_Unicode >  PrintFontManager::getUnicodeFromAdobeName( const OString& rName ) const
 {
     std::pair< boost::unordered_multimap< OString, sal_Unicode, OStringHash >::const_iterator,
diff --git a/vcl/generic/fontmanager/fontsubst.cxx b/vcl/generic/fontmanager/fontsubst.cxx
index 4c10c9a..269fd92 100644
--- a/vcl/generic/fontmanager/fontsubst.cxx
+++ b/vcl/generic/fontmanager/fontsubst.cxx
@@ -35,10 +35,8 @@
 #include <unotools/fontdefs.hxx>
 #include <list>
 
-
 // platform specific font substitution hooks
 
-
 struct FontSelectPatternAttributesHash
 {
     size_t operator()(const FontSelectPatternAttributes& rAttributes) const
@@ -115,8 +113,6 @@ void SalGenericInstance::RegisterFontSubstitutors( PhysicalFontCollection* pFont
     }
 }
 
-
-
 static FontSelectPattern GetFcSubstitute(const FontSelectPattern &rFontSelData, OUString& rMissingCodes )
 {
     FontSelectPattern aSubstituted(rFontSelData);
@@ -153,8 +149,6 @@ namespace
     };
 }
 
-
-
 bool FcPreMatchSubstititution::FindFontSubstitute( FontSelectPattern &rFontSelData ) const
 {
     // We don't actually want to talk to Fontconfig at all for symbol fonts
@@ -220,8 +214,6 @@ bool FcPreMatchSubstititution::FindFontSubstitute( FontSelectPattern &rFontSelDa
     return bHaveSubstitute;
 }
 
-
-
 bool FcGlyphFallbackSubstititution::FindFontSubstitute( FontSelectPattern& rFontSelData,
     OUString& rMissingCodes ) const
 {
@@ -263,7 +255,4 @@ bool FcGlyphFallbackSubstititution::FindFontSubstitute( FontSelectPattern& rFont
     return bHaveSubstitute;
 }
 
-
-
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/generic/fontmanager/helper.cxx b/vcl/generic/fontmanager/helper.cxx
index a35264f..7250964 100644
--- a/vcl/generic/fontmanager/helper.cxx
+++ b/vcl/generic/fontmanager/helper.cxx
@@ -382,5 +382,4 @@ void psp::splitPath( OString& rPath, OString& rDir, OString& rBase )
         rBase = rPath.copy( nIndex+1 );
 }
 
-
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/vcl/generic/fontmanager/parseAFM.cxx b/vcl/generic/fontmanager/parseAFM.cxx
index 1567c9e..8d5690e 100644
--- a/vcl/generic/fontmanager/parseAFM.cxx
+++ b/vcl/generic/fontmanager/parseAFM.cxx
@@ -43,7 +43,6 @@
  *                           in recognize() routine
  */
 
-
 /* parseAFM.c
  *
  * This file is used in conjuction with the parseAFM.h header file.
@@ -290,7 +289,6 @@ static char *token( FileInputStream* stream, int& rLen )
 
 } /* token */
 
-
 /*************************** linetoken *************************/
 
 /*  "linetoken" will get read all tokens until the EOL character from
@@ -319,7 +317,6 @@ static char *linetoken( FileInputStream* stream )
 
 } /* linetoken */
 
-
 /*************************** recognize *************************/
 
 /*  This function tries to match a string to a known list of
@@ -349,7 +346,6 @@ static inline enum parseKey recognize( char* ident, int len)
 
 } /* recognize */
 
-
 /************************* parseGlobals *****************************/
 
 /*  This function is called by "parseFile". It will parse the AFM file
@@ -555,7 +551,6 @@ static int parseGlobals( FileInputStream* fp, GlobalFontInfo* gfi )
 
 } /* parseGlobals */
 
-
 /************************* parseCharWidths **************************/
 
 /*  This function is called by "parseFile". It will parse the AFM file
@@ -668,7 +663,6 @@ static int parseCharWidths( FileInputStream* fp, int* cwi)
 
 } /* parseCharWidths */
 
-
 /*
  * number of char metrics is almost always inaccurate, so be gentle and try to
  * adapt our internal storage by adjusting the allocated list
@@ -871,8 +865,6 @@ static int parseCharMetrics( FileInputStream* fp, FontInfo* fi)
 
 } /* parseCharMetrics */
 
-
-
 /************************* parseTrackKernData ***********************/
 
 /*  This function is called by "parseFile". It will parse the AFM file
@@ -980,7 +972,6 @@ static int parseTrackKernData( FileInputStream* fp, FontInfo* fi)
 
 } /* parseTrackKernData */
 
-
 /************************* parsePairKernData ************************/
 
 /*  This function is called by "parseFile". It will parse the AFM file
@@ -1107,7 +1098,6 @@ static int parsePairKernData( FileInputStream* fp, FontInfo* fi)
 
 } /* parsePairKernData */
 
-
 /************************* parseCompCharData **************************/
 
 /*  This function is called by "parseFile". It will parse the AFM file
@@ -1246,12 +1236,8 @@ static int parseCompCharData( FileInputStream* fp, FontInfo* fi)
 
 } /* parseCompCharData */
 
-
-
-
 /*************************** 'PUBLIC' FUNCTION ********************/
 
-
 /*************************** parseFile *****************************/
 
 /*  parseFile is the only 'public' procedure available. It is called
@@ -1283,7 +1269,6 @@ int parseFile( const char* pFilename, FontInfo** fi, FLAGS flags)
 
     char *keyword; /* used to store a token */
 
-
     (*fi) = (FontInfo *) calloc(1, sizeof(FontInfo));
     if ((*fi) == NULL) {error = storageProblem; return(error);}
 
diff --git a/vcl/generic/fontmanager/parseAFM.hxx b/vcl/generic/fontmanager/parseAFM.hxx
index 0c390bd..f77f84a 100644
--- a/vcl/generic/fontmanager/parseAFM.hxx
+++ b/vcl/generic/fontmanager/parseAFM.hxx
@@ -98,8 +98,6 @@ namespace psp {
 #define MAX_NAME 4096           /* max length for identifiers */
 #define FLAGS int
 
-
-
 /* Flags that can be AND'ed together to specify exactly what
  * information from the AFM file should be saved.
  */
@@ -110,7 +108,6 @@ namespace psp {
 #define P_T 0x10    /* 0001 0000 */   /* Track Kerning Info    */
 #define P_C 0x20    /* 0010 0000 */   /* Composite Char Info   */
 
-
 /* Commonly used flags
  */
 #define P_GW    (P_G | P_W)
@@ -119,8 +116,6 @@ namespace psp {
 #define P_GMK   (P_G | P_M | P_P | P_T)
 #define P_ALL   (P_G | P_M | P_P | P_T | P_C)
 
-
-
 /* Possible return codes from the parseFile procedure.
  *
  * ok means there were no problems parsing the file.
@@ -140,14 +135,12 @@ namespace psp {
 
 enum afmError { ok = 0, parseError = -1, earlyEOF = -2, storageProblem = -3 };
 
-
 /************************* TYPES *********************************/
 /* Below are all of the data structure definitions. These structures
  * try to map as closely as possible to grouping and naming of data
  * in the AFM Files.
  */
 
-
 /* Bounding box definition. Used for the Font BBox as well as the
  * Character BBox.
  */
@@ -159,7 +152,6 @@ typedef struct
     int ury;    /* upper right y-position */
 } BBox;
 
-
 /* Global Font information.
  * The key that each field is associated with is in comments. For an
  * explanation about each key and its value please refer to the AFM
@@ -187,7 +179,6 @@ typedef struct
     int charwidth;      /* key: CharWidth */
 } GlobalFontInfo;
 
-
 /* Ligature definition is a linked list since any character can have
  * any number of ligatures.
  */
@@ -197,7 +188,6 @@ typedef struct _t_ligature
     struct _t_ligature *next;
 } Ligature;
 
-
 /* Character Metric Information. This structure is used only if ALL
  * character metric information is requested. If only the character
  * widths is requested, then only an array of the character x-widths
@@ -219,7 +209,6 @@ typedef struct
     Ligature *ligs; /* key: L (linked list; not a fixed number of Ls */
 } CharMetricInfo;
 
-
 /* Track kerning data structure.
  * The fields of this record are the five values associated with every
  * TrackKern entry.
@@ -237,7 +226,6 @@ typedef struct
         maxKernAmt;
 } TrackKernData;
 
-
 /* Pair Kerning data structure.
  * The fields of this record are the four values associated with every
  * KP entry. For KPX entries, the yamt will be zero.
@@ -254,7 +242,6 @@ typedef struct
         yamt;
 } PairKernData;
 
-
 /* PCC is a piece of a composite character. This is a sub structure of a
  * compCharData described below.
  * These fields will be filled in with the values from the key PCC.
@@ -270,7 +257,6 @@ typedef struct
         deltay;
 } Pcc;
 
-
 /* Composite Character Information data structure.
  * The fields ccName and numOfPieces are filled with the values associated
  * with the key CC. The field pieces points to an array (size = numOfPieces)
@@ -288,7 +274,6 @@ typedef struct
     Pcc *pieces;
 } CompCharData;
 
-
 /*  FontInfo
  *  Record type containing pointers to all of the other data
  *  structures containing information about a font.
@@ -309,8 +294,6 @@ typedef struct
     CompCharData *ccd;      /* ptr to comp char array */
 } FontInfo;
 
-
-
 /************************* PROCEDURES ****************************/
 
 /*  Call this procedure to do the grunt work of parsing an AFM file.
diff --git a/vcl/generic/glyphs/gcach_ftyp.cxx b/vcl/generic/glyphs/gcach_ftyp.cxx
index 92da831..ab5ddd8 100644
--- a/vcl/generic/glyphs/gcach_ftyp.cxx
+++ b/vcl/generic/glyphs/gcach_ftyp.cxx
@@ -17,7 +17,6 @@
  *   the License at http://www.apache.org/licenses/LICENSE-2.0 .
  */
 
-
 #include "gcach_ftyp.hxx"
 
 #include "vcl/svapp.hxx"
@@ -89,8 +88,6 @@ static void InitGammaTable()
     }
 }
 
-
-
 static FT_Library aLibFT = 0;
 
 // enable linking with old FT versions
@@ -100,8 +97,6 @@ typedef ::boost::unordered_map<const char*, boost::shared_ptr<FtFontFile>, rtl::
 
 namespace { struct vclFontFileList : public rtl::Static< FontFileList, vclFontFileList > {}; }
 
-
-
 // TODO: remove when the priorities are selected by UI
 // if (AH==0) => disable autohinting
 // if (AA==0) => disable antialiasing
@@ -113,10 +108,8 @@ static int nDefaultPrioEmbedded    = 2;
 static int nDefaultPrioAutoHint    = 1;
 static int nDefaultPrioAntiAlias   = 1;
 
-
 // FreetypeManager
 
-
 FtFontFile::FtFontFile( const OString& rNativeFileName )
 :   maNativeFileName( rNativeFileName ),
     mpFileMap( NULL ),
@@ -143,8 +136,6 @@ FtFontFile::FtFontFile( const OString& rNativeFileName )
     }
 }
 
-
-
 FtFontFile* FtFontFile::FindFontFile( const OString& rNativeFileName )
 {
     // font file already known? (e.g. for ttc, synthetic, aliased fonts)
@@ -161,8 +152,6 @@ FtFontFile* FtFontFile::FindFontFile( const OString& rNativeFileName )
     return pFontFile;
 }
 
-
-
 bool FtFontFile::Map()
 {
     if( mnRefCount++ <= 0 )
@@ -190,8 +179,6 @@ bool FtFontFile::Map()
     return (mpFileMap != NULL);
 }
 
-
-
 void FtFontFile::Unmap()
 {
     if( (--mnRefCount > 0) || (mpFileMap == NULL) )
@@ -228,8 +215,6 @@ const void * graphiteFontTable(const void* appFaceHandle, unsigned int name, siz
 }
 #endif
 
-
-
 FtFontInfo::FtFontInfo( const ImplDevFontAttributes& rDevFontAttributes,
     const OString& rNativeFileName, int nFaceNum, sal_IntPtr nFontId, int nSynthetic)
 :
@@ -254,8 +239,6 @@ FtFontInfo::FtFontInfo( const ImplDevFontAttributes& rDevFontAttributes,
     maDevFontAttributes.mnQuality += mpFontFile->GetLangBoost();
 }
 
-
-
 FtFontInfo::~FtFontInfo()
 {
     if( mpFontCharMap )
@@ -274,8 +257,6 @@ void FtFontInfo::InitHashes() const
     mpGlyph2Char = new Int2IntMap();
 }
 
-
-
 FT_FaceRec_* FtFontInfo::GetFaceFT()
 {
     if (!maFaceFT && mpFontFile->Map())
@@ -314,8 +295,6 @@ GraphiteFaceWrapper * FtFontInfo::GetGraphiteFace()
 }
 #endif
 
-
-
 void FtFontInfo::ReleaseFaceFT()
 {
     if (--mnRefCount <= 0)
@@ -326,8 +305,6 @@ void FtFontInfo::ReleaseFaceFT()
     }
 }
 
-
-
 static unsigned GetUInt( const unsigned char* p ) { return((p[0]<<24)+(p[1]<<16)+(p[2]<<8)+p[3]);}
 static unsigned GetUShort( const unsigned char* p ){ return((p[0]<<8)+p[1]);}
 //static signed GetSShort( const unsigned char* p ){ return((short)((p[0]<<8)+p[1]));}
@@ -372,16 +349,12 @@ const unsigned char* FtFontInfo::GetTable( const char* pTag, sal_uLong* pLength
     return NULL;
 }
 
-
-
 void FtFontInfo::AnnounceFont( PhysicalFontCollection* pFontCollection )
 {
     ImplFTSFontData* pFD = new ImplFTSFontData( this, maDevFontAttributes );
     pFontCollection->Add( pFD );
 }
 
-
-
 FreetypeManager::FreetypeManager()
 :   mnMaxFontId( 0 )
 {
@@ -407,8 +380,6 @@ FreetypeManager::FreetypeManager()
     vclFontFileList::get();
 }
 
-
-
 FT_Face ServerFont::GetFtFace() const
 {
     FT_Activate_Size( maSizeFT );
@@ -416,15 +387,11 @@ FT_Face ServerFont::GetFtFace() const
     return maFaceFT;
 }
 
-
-
 FreetypeManager::~FreetypeManager()
 {
     ClearFontList();
 }
 
-
-
 void FreetypeManager::AddFontFile( const OString& rNormalizedName,
     int nFaceNum, sal_IntPtr nFontId, const ImplDevFontAttributes& rDevFontAttr)
 {
@@ -441,8 +408,6 @@ void FreetypeManager::AddFontFile( const OString& rNormalizedName,
         mnMaxFontId = nFontId;
 }
 
-
-
 void FreetypeManager::AnnounceFonts( PhysicalFontCollection* pToAdd ) const
 {
     for( FontList::const_iterator it = maFontList.begin(); it != maFontList.end(); ++it )
@@ -452,8 +417,6 @@ void FreetypeManager::AnnounceFonts( PhysicalFontCollection* pToAdd ) const
     }
 }
 
-
-
 void FreetypeManager::ClearFontList( )
 {
     for( FontList::iterator it = maFontList.begin(); it != maFontList.end(); ++it )
@@ -464,8 +427,6 @@ void FreetypeManager::ClearFontList( )
     maFontList.clear();
 }
 
-
-
 ServerFont* FreetypeManager::CreateFont( const FontSelectPattern& rFSD )
 {
     FtFontInfo* pFontInfo = NULL;
@@ -484,8 +445,6 @@ ServerFont* FreetypeManager::CreateFont( const FontSelectPattern& rFSD )
     return pNew;
 }
 
-
-
 ImplFTSFontData::ImplFTSFontData( FtFontInfo* pFI, const ImplDevFontAttributes& rDFA )
 :   PhysicalFontFace( rDFA, IFTSFONT_MAGIC ),
     mpFtFontInfo( pFI )
@@ -494,18 +453,14 @@ ImplFTSFontData::ImplFTSFontData( FtFontInfo* pFI, const ImplDevFontAttributes&
     mbOrientation   = true;
 }
 
-
-
 ImplFontEntry* ImplFTSFontData::CreateFontInstance( FontSelectPattern& rFSD ) const
 {
     ImplServerFontEntry* pEntry = new ImplServerFontEntry( rFSD );
     return pEntry;
 }
 
-
 // ServerFont
 
-
 ServerFont::ServerFont( const FontSelectPattern& rFSD, FtFontInfo* pFI )
 :   maGlyphList( 0),
     maFontSelData(rFSD),
@@ -668,8 +623,6 @@ bool ServerFont::TestFont() const
     return mbFaceOk;
 }
 
-
-
 ServerFont::~ServerFont()
 {
     if( mpLayoutEngine )
@@ -683,15 +636,11 @@ ServerFont::~ServerFont()
     ReleaseFromGarbageCollect();
 }
 
-
-
 int ServerFont::GetEmUnits() const
 {
     return maFaceFT->units_per_EM;
 }
 
-
-
 void ServerFont::FetchFontMetric( ImplFontMetricData& rTo, long& rFactor ) const
 {
     static_cast<ImplFontAttributes&>(rTo) = mpFontInfo->GetFontAttributes();
@@ -814,8 +763,6 @@ void ServerFont::FetchFontMetric( ImplFontMetricData& rTo, long& rFactor ) const
     }
 }
 
-
-
 static inline void SplitGlyphFlags( const ServerFont& rFont, sal_GlyphId& rGlyphId, int& nGlyphFlags )
 {
     nGlyphFlags = rGlyphId & GF_FLAGMASK;
@@ -825,8 +772,6 @@ static inline void SplitGlyphFlags( const ServerFont& rFont, sal_GlyphId& rGlyph
         rGlyphId = rFont.GetRawGlyphIndex( rGlyphId );
 }
 
-
-
 int ServerFont::ApplyGlyphTransform( int nGlyphFlags,
     FT_Glyph pGlyphFT, bool bForBitmapProcessing ) const
 {
@@ -900,8 +845,6 @@ int ServerFont::ApplyGlyphTransform( int nGlyphFlags,
     return nAngle;
 }
 
-
-
 sal_GlyphId ServerFont::GetRawGlyphIndex(sal_UCS4 aChar, sal_UCS4 aVS) const
 {
     if( mpFontInfo->IsSymbolFont() )
@@ -945,8 +888,6 @@ sal_GlyphId ServerFont::GetRawGlyphIndex(sal_UCS4 aChar, sal_UCS4 aVS) const
     return sal_GlyphId( nGlyphIndex);
 }
 
-
-
 sal_GlyphId ServerFont::FixupGlyphIndex( sal_GlyphId aGlyphId, sal_UCS4 aChar ) const
 {
     int nGlyphFlags = GF_NONE;
@@ -981,9 +922,6 @@ sal_GlyphId ServerFont::FixupGlyphIndex( sal_GlyphId aGlyphId, sal_UCS4 aChar )
     return aGlyphId;
 }
 
-
-
-
 sal_GlyphId ServerFont::GetGlyphIndex( sal_UCS4 aChar ) const
 {
     sal_GlyphId aGlyphId = GetRawGlyphIndex( aChar );
@@ -991,8 +929,6 @@ sal_GlyphId ServerFont::GetGlyphIndex( sal_UCS4 aChar ) const
     return aGlyphId;
 }
 
-
-
 static int lcl_GetCharWidth( FT_FaceRec_* pFaceFT, double fStretch, int nGlyphFlags )
 {
     int nCharWidth = pFaceFT->glyph->metrics.horiAdvance;
@@ -1006,8 +942,6 @@ static int lcl_GetCharWidth( FT_FaceRec_* pFaceFT, double fStretch, int nGlyphFl
     return (nCharWidth + 32) >> 6;
 }
 
-
-
 void ServerFont::InitGlyphData( sal_GlyphId aGlyphId, GlyphData& rGD ) const
 {
     FT_Activate_Size( maSizeFT );
@@ -1058,8 +992,6 @@ void ServerFont::InitGlyphData( sal_GlyphId aGlyphId, GlyphData& rGD ) const
     FT_Done_Glyph( pGlyphFT );
 }
 
-
-
 bool ServerFont::GetAntialiasAdvice( void ) const
 {
     if( GetFontSelData().mbNonAntialiased || (mnPrioAntiAlias<=0) )
@@ -1069,8 +1001,6 @@ bool ServerFont::GetAntialiasAdvice( void ) const
     return bAdviseAA;
 }
 
-
-
 bool ServerFont::GetGlyphBitmap1( sal_GlyphId aGlyphId, RawBitmap& rRawBitmap ) const
 {
     FT_Activate_Size( maSizeFT );
@@ -1210,8 +1140,6 @@ bool ServerFont::GetGlyphBitmap1( sal_GlyphId aGlyphId, RawBitmap& rRawBitmap )
     return true;
 }
 
-
-
 bool ServerFont::GetGlyphBitmap8( sal_GlyphId aGlyphId, RawBitmap& rRawBitmap ) const
 {
     FT_Activate_Size( maSizeFT );
@@ -1342,10 +1270,8 @@ bool ServerFont::GetGlyphBitmap8( sal_GlyphId aGlyphId, RawBitmap& rRawBitmap )
     return true;
 }
 
-
 // determine unicode ranges in font
 
-
 const ImplFontCharMap* ServerFont::GetImplFontCharMap( void ) const
 {
     const ImplFontCharMap* pIFCMap = mpFontInfo->GetImplFontCharMap();
@@ -1442,10 +1368,8 @@ bool ServerFont::GetFontCapabilities(vcl::FontCapabilities &rFontCapabilities) c
     return bRet;
 }
 
-
 // outline stuff
 
-
 class PolyArgs
 {
 public:
@@ -1471,8 +1395,6 @@ private:
     bool        bHasOffline;
 };
 
-
-
 PolyArgs::PolyArgs( PolyPolygon& rPolyPoly, sal_uInt16 nMaxPoints )
 :   mrPolyPoly(rPolyPoly),
     mnMaxPoints(nMaxPoints),
@@ -1485,17 +1407,12 @@ PolyArgs::PolyArgs( PolyPolygon& rPolyPoly, sal_uInt16 nMaxPoints )
     maPosition.x = maPosition.y = 0;
 }
 
-
-
-
 PolyArgs::~PolyArgs()
 {
     delete[] mpFlagAry;
     delete[] mpPointAry;
 }
 
-
-
 void PolyArgs::AddPoint( long nX, long nY, PolyFlags aFlag )
 {
     DBG_ASSERT( (mnPoints < mnMaxPoints), "FTGlyphOutline: AddPoint overflow!" );
@@ -1509,8 +1426,6 @@ void PolyArgs::AddPoint( long nX, long nY, PolyFlags aFlag )
     bHasOffline |= (aFlag != POLY_NORMAL);
 }
 
-
-
 void PolyArgs::ClosePolygon()
 {
     if( !mnPoly++ )
@@ -1555,8 +1470,6 @@ void PolyArgs::ClosePolygon()
     bHasOffline = false;
 }
 
-
-
 extern "C" {
 
 // TODO: wait till all compilers accept that calling conventions
@@ -1608,8 +1521,6 @@ static int FT_cubic_to( FT_Vector_CPtr p1, FT_Vector_CPtr p2, FT_Vector_CPtr p3,
 
 } // extern "C"
 
-
-
 bool ServerFont::GetGlyphOutline( sal_GlyphId aGlyphId,
     ::basegfx::B2DPolyPolygon& rB2DPolyPoly ) const
 {
@@ -1686,8 +1597,6 @@ bool ServerFont::GetGlyphOutline( sal_GlyphId aGlyphId,
     return true;
 }
 
-
-
 bool ServerFont::ApplyGSUB( const FontSelectPattern& rFSD )
 {
 #define MKTAG(s) ((((((s[0]<<8)+s[1])<<8)+s[2])<<8)+s[3])
@@ -1943,6 +1852,4 @@ GraphiteFaceWrapper* ServerFont::GetGraphiteFace() const
 }
 #endif
 
-
-

... etc. - the rest is truncated


More information about the Libreoffice-commits mailing list