[Libreoffice-commits] core.git: include/vcl

Chris Sherlock chris.sherlock79 at gmail.com
Sun Sep 28 15:58:01 PDT 2014


 include/vcl/abstdlg.hxx          |   32 +--
 include/vcl/accel.hxx            |   94 +++++-----
 include/vcl/alpha.hxx            |  128 ++++----------
 include/vcl/animate.hxx          |  285 +++++++++++++++----------------
 include/vcl/apptypes.hxx         |   14 -
 include/vcl/bitmap.hxx           |  355 +++++++++++++++++++++------------------
 include/vcl/bitmapex.hxx         |  151 ++++++++--------
 include/vcl/bitmapfilter.hxx     |    5 
 include/vcl/bitmapscalesuper.hxx |   15 -
 include/vcl/bmpacc.hxx           |  105 +++++------
 include/vcl/btndlg.hxx           |   56 +++---
 include/vcl/builder.hxx          |  332 ++++++++++++++++++++----------------
 include/vcl/button.hxx           |    4 
 13 files changed, 817 insertions(+), 759 deletions(-)

New commits:
commit 8730974f3da0ce385cac84b81b8ae3169001399c
Author: Chris Sherlock <chris.sherlock79 at gmail.com>
Date:   Sun Sep 28 22:33:50 2014 +1000

    vcl: cleanup headers - remove comments, tabify
    
    Change-Id: I718832960abe07450bc9fdda15297cb5e56f84e4
    Reviewed-on: https://gerrit.libreoffice.org/11674
    Reviewed-by: Chris Sherlock <chris.sherlock79 at gmail.com>
    Tested-by: Chris Sherlock <chris.sherlock79 at gmail.com>

diff --git a/include/vcl/abstdlg.hxx b/include/vcl/abstdlg.hxx
index d877e6d..2b31b1b 100644
--- a/include/vcl/abstdlg.hxx
+++ b/include/vcl/abstdlg.hxx
@@ -29,50 +29,52 @@ class Link;
 class VCL_DLLPUBLIC VclAbstractDialog
 {
 public:
-    virtual short           Execute() = 0;
-    virtual                 ~VclAbstractDialog();
+    virtual             ~VclAbstractDialog();
+
+    virtual short       Execute() = 0;
 };
 
 class VCL_DLLPUBLIC VclAbstractDialog2
 {
 public:
-    virtual void            StartExecuteModal( const Link& rEndDialogHdl ) = 0;
-    virtual long            GetResult() = 0;
-    virtual                 ~VclAbstractDialog2();
+    virtual             ~VclAbstractDialog2();
+
+    virtual void        StartExecuteModal( const Link& rEndDialogHdl ) = 0;
+    virtual long        GetResult() = 0;
 };
 
 class VCL_DLLPUBLIC VclAbstractTerminatedDialog : public VclAbstractDialog
 {
 public:
-    virtual void            EndDialog(long nResult =0) = 0;
+    virtual void        EndDialog(long nResult =0) = 0;
 };
 
 class VCL_DLLPUBLIC VclAbstractRefreshableDialog : public VclAbstractDialog
 {
 public:
-    virtual void            Update() = 0;
-    virtual void            Sync() = 0;
+    virtual void        Update() = 0;
+    virtual void        Sync() = 0;
 };
 
 class VCL_DLLPUBLIC AbstractPasswordToOpenModifyDialog : public VclAbstractDialog
 {
 public:
-    virtual OUString  GetPasswordToOpen() const   = 0;
-    virtual OUString  GetPasswordToModify() const = 0;
-    virtual bool      IsRecommendToOpenReadonly() const = 0;
+    virtual OUString    GetPasswordToOpen() const   = 0;
+    virtual OUString    GetPasswordToModify() const = 0;
+    virtual bool        IsRecommendToOpenReadonly() const = 0;
 };
 
 class VCL_DLLPUBLIC VclAbstractDialogFactory
 {
 public:
-                                        virtual ~VclAbstractDialogFactory();    // needed for export of vtable
-    static VclAbstractDialogFactory*    Create();
+    virtual             ~VclAbstractDialogFactory();    // needed for export of vtable
+    static VclAbstractDialogFactory* Create();
     // nDialogId was previously a ResId without ResMgr; the ResourceId is now
     // an implementation detail of the factory
-    virtual VclAbstractDialog*          CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) = 0;
+    virtual VclAbstractDialog* CreateVclDialog( vcl::Window* pParent, sal_uInt32 nResId ) = 0;
 
     // creates instance of PasswordToOpenModifyDialog from cui
-    virtual AbstractPasswordToOpenModifyDialog *    CreatePasswordToOpenModifyDialog( vcl::Window * pParent, sal_uInt16 nMinPasswdLen, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify ) = 0;
+    virtual AbstractPasswordToOpenModifyDialog* CreatePasswordToOpenModifyDialog( vcl::Window * pParent, sal_uInt16 nMinPasswdLen, sal_uInt16 nMaxPasswdLen, bool bIsPasswordToModify ) = 0;
 };
 
 #endif
diff --git a/include/vcl/accel.hxx b/include/vcl/accel.hxx
index 2e6e26d..5088dc5 100644
--- a/include/vcl/accel.hxx
+++ b/include/vcl/accel.hxx
@@ -34,65 +34,69 @@ class VCL_DLLPUBLIC Accelerator : public Resource
     friend class ImplAccelManager;
 
 private:
-    ImplAccelData*  mpData;
-    OUString        maHelpStr;
-    Link            maActivateHdl;
-    Link            maDeactivateHdl;
-    Link            maSelectHdl;
+    ImplAccelData*          mpData;
+    OUString                maHelpStr;
+    Link                    maActivateHdl;
+    Link                    maDeactivateHdl;
+    Link                    maSelectHdl;
 
     // Will be set by AcceleratorManager
-    vcl::KeyCode    maCurKeyCode;
-    sal_uInt16      mnCurId;
-    sal_uInt16      mnCurRepeat;
-    bool        mbIsCancel;
-    bool*       mpDel;
-
-    SAL_DLLPRIVATE  void        ImplInit();
-    SAL_DLLPRIVATE  void        ImplCopyData( ImplAccelData& rAccelData );
-    SAL_DLLPRIVATE  void        ImplDeleteData();
-    SAL_DLLPRIVATE  void        ImplInsertAccel( sal_uInt16 nItemId, const vcl::KeyCode& rKeyCode,
-                                     bool bEnable, Accelerator* pAutoAccel );
-
-    SAL_DLLPRIVATE  ImplAccelEntry* ImplGetAccelData( const vcl::KeyCode& rKeyCode ) const;
+    vcl::KeyCode            maCurKeyCode;
+    sal_uInt16              mnCurId;
+    sal_uInt16              mnCurRepeat;
+    bool                    mbIsCancel;
+    bool*                   mpDel;
+
+    SAL_DLLPRIVATE  void    ImplInit();
+    SAL_DLLPRIVATE  void    ImplCopyData( ImplAccelData& rAccelData );
+    SAL_DLLPRIVATE  void    ImplDeleteData();
+    SAL_DLLPRIVATE  void    ImplInsertAccel(
+                                sal_uInt16 nItemId,
+                                const vcl::KeyCode& rKeyCode,
+                                bool bEnable,
+                                Accelerator* pAutoAccel );
+
+    SAL_DLLPRIVATE  ImplAccelEntry*
+                            ImplGetAccelData( const vcl::KeyCode& rKeyCode ) const;
 
 protected:
-    SAL_DLLPRIVATE  void        ImplLoadRes( const ResId& rResId );
+    SAL_DLLPRIVATE  void    ImplLoadRes( const ResId& rResId );
 
 public:
-                    Accelerator();
-                    Accelerator( const Accelerator& rAccel );
-                    Accelerator( const ResId& rResId );
-    virtual         ~Accelerator();
+                            Accelerator();
+                            Accelerator( const Accelerator& rAccel );
+                            Accelerator( const ResId& rResId );
+    virtual                 ~Accelerator();
 
-    virtual void    Activate();
-    virtual void    Deactivate();
-    virtual void    Select();
+    virtual void            Activate();
+    virtual void            Deactivate();
+    virtual void            Select();
 
-    void            InsertItem( sal_uInt16 nItemId, const vcl::KeyCode& rKeyCode );
-    void            InsertItem( const ResId& rResId );
+    void                    InsertItem( sal_uInt16 nItemId, const vcl::KeyCode& rKeyCode );
+    void                    InsertItem( const ResId& rResId );
 
-    sal_uInt16          GetCurItemId() const { return mnCurId; }
-    const vcl::KeyCode& GetCurKeyCode() const { return maCurKeyCode; }
-    sal_uInt16          GetCurRepeat() const { return mnCurRepeat; }
-    bool            IsCancel() const { return mbIsCancel; }
+    sal_uInt16              GetCurItemId() const { return mnCurId; }
+    const vcl::KeyCode&     GetCurKeyCode() const { return maCurKeyCode; }
+    sal_uInt16              GetCurRepeat() const { return mnCurRepeat; }
+    bool                    IsCancel() const { return mbIsCancel; }
 
-    sal_uInt16          GetItemCount() const;
-    sal_uInt16          GetItemId( sal_uInt16 nPos ) const;
-    vcl::KeyCode        GetKeyCode( sal_uInt16 nItemId ) const;
+    sal_uInt16              GetItemCount() const;
+    sal_uInt16              GetItemId( sal_uInt16 nPos ) const;
+    vcl::KeyCode            GetKeyCode( sal_uInt16 nItemId ) const;
 
-    Accelerator*    GetAccel( sal_uInt16 nItemId ) const;
+    Accelerator*            GetAccel( sal_uInt16 nItemId ) const;
 
-    void            SetHelpText( const OUString& rHelpText ) { maHelpStr = rHelpText; }
-    const OUString& GetHelpText() const { return maHelpStr; }
+    void                    SetHelpText( const OUString& rHelpText ) { maHelpStr = rHelpText; }
+    const OUString&         GetHelpText() const { return maHelpStr; }
 
-    void            SetActivateHdl( const Link& rLink ) { maActivateHdl = rLink; }
-    const Link&     GetActivateHdl() const { return maActivateHdl; }
-    void            SetDeactivateHdl( const Link& rLink ) { maDeactivateHdl = rLink; }
-    const Link&     GetDeactivateHdl() const { return maDeactivateHdl; }
-    void            SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
-    const Link&     GetSelectHdl() const { return maSelectHdl; }
+    void                    SetActivateHdl( const Link& rLink ) { maActivateHdl = rLink; }
+    const Link&             GetActivateHdl() const { return maActivateHdl; }
+    void                    SetDeactivateHdl( const Link& rLink ) { maDeactivateHdl = rLink; }
+    const Link&             GetDeactivateHdl() const { return maDeactivateHdl; }
+    void                    SetSelectHdl( const Link& rLink ) { maSelectHdl = rLink; }
+    const Link&             GetSelectHdl() const { return maSelectHdl; }
 
-    Accelerator&    operator=( const Accelerator& rAccel );
+    Accelerator&            operator=( const Accelerator& rAccel );
 };
 
 #endif // INCLUDED_VCL_ACCEL_HXX
diff --git a/include/vcl/alpha.hxx b/include/vcl/alpha.hxx
index bd8ce8a..fd84765 100644
--- a/include/vcl/alpha.hxx
+++ b/include/vcl/alpha.hxx
@@ -24,108 +24,60 @@
 #include <vcl/bitmap.hxx>
 
 
-// - AlphaMask -
-
-
 class ImageList;
 class BitmapEx;
 
 class VCL_DLLPUBLIC AlphaMask : private Bitmap
 {
-private:
-    friend class BitmapEx;
-    friend class OutputDevice;
-    friend bool VCL_DLLPUBLIC ReadDIBBitmapEx(BitmapEx& rTarget, SvStream& rIStm);
-
-    SAL_DLLPRIVATE const Bitmap&    ImplGetBitmap() const;
-    SAL_DLLPRIVATE void             ImplSetBitmap( const Bitmap& rBitmap );
-
 public:
 
-    AlphaMask();
-    AlphaMask( const Bitmap& rBitmap );
-    AlphaMask( const AlphaMask& rAlphaMask );
-    AlphaMask( const Size& rSizePixel, sal_uInt8* pEraseTransparency = NULL );
-    virtual ~AlphaMask();
+                AlphaMask();
+                AlphaMask( const Bitmap& rBitmap );
+                AlphaMask( const AlphaMask& rAlphaMask );
+                AlphaMask( const Size& rSizePixel, sal_uInt8* pEraseTransparency = NULL );
+    virtual     ~AlphaMask();
 
     AlphaMask&  operator=( const Bitmap& rBitmap );
-    AlphaMask&  operator=( const AlphaMask& rAlphaMask )
-    {
-        return static_cast<AlphaMask&>( Bitmap::operator=( rAlphaMask ) );
-    }
-
-    bool operator!() const
-    {
-        return Bitmap::operator!();
-    }
-
-    bool operator==( const AlphaMask& rAlphaMask ) const
-    {
-        return Bitmap::operator==( rAlphaMask );
-    }
-
-    bool operator!=( const AlphaMask& rAlphaMask ) const
-    {
-        return Bitmap::operator!=( rAlphaMask );
-    }
-
-    const MapMode&  GetPrefMapMode() const
-    {
-        return Bitmap::GetPrefMapMode();
-    }
-
-    void    SetPrefMapMode( const MapMode& rMapMode )
-    {
-        Bitmap::SetPrefMapMode( rMapMode );
-    }
-
-    const Size& GetPrefSize() const
-    {
-        return Bitmap::GetPrefSize();
-    }
-
-    void    SetPrefSize( const Size& rSize )
-    {
-        Bitmap::SetPrefSize( rSize );
-    }
-
-    Size    GetSizePixel() const
-    {
-        return Bitmap::GetSizePixel();
-    }
-
-    sal_uLong   GetSizeBytes() const
-    {
-        return Bitmap::GetSizeBytes();
-    }
-    sal_uLong   GetChecksum() const
-    {
-        return Bitmap::GetChecksum();
-    }
-
-    Bitmap  GetBitmap() const;
-
-    bool    Erase( sal_uInt8 cTransparency );
-    bool    Replace( const Bitmap& rMask, sal_uInt8 rReplaceTransparency );
-    bool    Replace( sal_uInt8 cSearchTransparency, sal_uInt8 cReplaceTransparency,
-                         sal_uLong nTol = 0UL );
-
-    BitmapReadAccess*   AcquireReadAccess()
-    {
-        return Bitmap::AcquireReadAccess();
-    }
-
-    BitmapWriteAccess*  AcquireWriteAccess()
-    {
-        return Bitmap::AcquireWriteAccess();
-    }
-
-    void    ReleaseAccess( BitmapReadAccess* pAccess );
+    AlphaMask&  operator=( const AlphaMask& rAlphaMask ) { return static_cast<AlphaMask&>( Bitmap::operator=( rAlphaMask ) ); }
+    bool        operator!() const { return Bitmap::operator!(); }
+    bool        operator==( const AlphaMask& rAlphaMask ) const { return Bitmap::operator==( rAlphaMask ); }
+    bool        operator!=( const AlphaMask& rAlphaMask ) const { return Bitmap::operator!=( rAlphaMask ); }
+
+    const       MapMode&  GetPrefMapMode() const { return Bitmap::GetPrefMapMode(); }
+    void        SetPrefMapMode( const MapMode& rMapMode ) { Bitmap::SetPrefMapMode( rMapMode ); }
+
+    const       Size& GetPrefSize() const { return Bitmap::GetPrefSize(); }
+    void        SetPrefSize( const Size& rSize ) { Bitmap::SetPrefSize( rSize ); }
+
+    Size        GetSizePixel() const { return Bitmap::GetSizePixel(); }
+    sal_uLong   GetSizeBytes() const { return Bitmap::GetSizeBytes(); }
+
+    sal_uLong   GetChecksum() const { return Bitmap::GetChecksum(); }
+
+    Bitmap      GetBitmap() const;
+
+    bool        Erase( sal_uInt8 cTransparency );
+    bool        Replace( const Bitmap& rMask, sal_uInt8 rReplaceTransparency );
+    bool        Replace( sal_uInt8 cSearchTransparency, sal_uInt8 cReplaceTransparency, sal_uLong nTol = 0UL );
+
+    BitmapReadAccess*  AcquireReadAccess() { return Bitmap::AcquireReadAccess(); }
+    BitmapWriteAccess* AcquireWriteAccess() { return Bitmap::AcquireWriteAccess(); }
+
+    void        ReleaseAccess( BitmapReadAccess* pAccess );
 
     typedef vcl::ScopedBitmapAccess< BitmapReadAccess, AlphaMask, &AlphaMask::AcquireReadAccess >
         ScopedReadAccess;
     typedef vcl::ScopedBitmapAccess< BitmapWriteAccess, AlphaMask, &AlphaMask::AcquireWriteAccess >
         ScopedWriteAccess;
+
+private:
+    friend class BitmapEx;
+    friend class OutputDevice;
+    friend bool VCL_DLLPUBLIC ReadDIBBitmapEx(BitmapEx& rTarget, SvStream& rIStm);
+
+    SAL_DLLPRIVATE const Bitmap&    ImplGetBitmap() const;
+    SAL_DLLPRIVATE void             ImplSetBitmap( const Bitmap& rBitmap );
+
 };
 
 #endif // INCLUDED_VCL_ALPHA_HXX
diff --git a/include/vcl/animate.hxx b/include/vcl/animate.hxx
index f75caf6..25f10f0 100644
--- a/include/vcl/animate.hxx
+++ b/include/vcl/animate.hxx
@@ -45,59 +45,58 @@ enum CycleMode
 
 struct VCL_DLLPUBLIC AnimationBitmap
 {
-    BitmapEx    aBmpEx;
-    Point       aPosPix;
-    Size        aSizePix;
-    long        nWait;
-    Disposal    eDisposal;
-    bool    bUserInput;
-
-                AnimationBitmap()
-                    : nWait(0)
-                    , eDisposal(DISPOSE_NOT)
-                    , bUserInput(false)
-                {
-                }
-
-                AnimationBitmap(
-                    const BitmapEx& rBmpEx,
-                    const Point& rPosPix,
-                    const Size& rSizePix,
-                    long _nWait = 0L,
-                    Disposal _eDisposal = DISPOSE_NOT
-                ) :
-                    aBmpEx      ( rBmpEx ),
-                    aPosPix     ( rPosPix ),
-                    aSizePix    ( rSizePix ),
-                    nWait       ( _nWait ),
-                    eDisposal   ( _eDisposal ),
-                    bUserInput  ( false )
-                {}
-
-    bool    operator==( const AnimationBitmap& rAnimBmp ) const
-                {
-                    return( rAnimBmp.aBmpEx == aBmpEx &&
-                            rAnimBmp.aPosPix == aPosPix &&
-                            rAnimBmp.aSizePix == aSizePix &&
-                            rAnimBmp.nWait == nWait &&
-                            rAnimBmp.eDisposal == eDisposal &&
-                            rAnimBmp.bUserInput == bUserInput );
-                }
-
-    bool    operator!=( const AnimationBitmap& rAnimBmp ) const
-                { return !( *this == rAnimBmp ); }
-
-    bool    IsEqual( const AnimationBitmap& rAnimBmp ) const
-                {
-                    return( rAnimBmp.aPosPix == aPosPix &&
-                            rAnimBmp.aSizePix == aSizePix &&
-                            rAnimBmp.nWait == nWait &&
-                            rAnimBmp.eDisposal == eDisposal &&
-                            rAnimBmp.bUserInput == bUserInput &&
-                            rAnimBmp.aBmpEx.IsEqual( aBmpEx ) );
-                }
-
-    sal_uLong   GetChecksum() const;
+    BitmapEx        aBmpEx;
+    Point           aPosPix;
+    Size            aSizePix;
+    long            nWait;
+    Disposal        eDisposal;
+    bool            bUserInput;
+
+                    AnimationBitmap()
+                        : nWait(0)
+                        , eDisposal(DISPOSE_NOT)
+                        , bUserInput(false)
+                    {}
+
+                    AnimationBitmap(
+                        const BitmapEx& rBmpEx,
+                        const Point& rPosPix,
+                        const Size& rSizePix,
+                        long _nWait = 0L,
+                        Disposal _eDisposal = DISPOSE_NOT
+                    ) :
+                        aBmpEx      ( rBmpEx ),
+                        aPosPix     ( rPosPix ),
+                        aSizePix    ( rSizePix ),
+                        nWait       ( _nWait ),
+                        eDisposal   ( _eDisposal ),
+                        bUserInput  ( false )
+                    {}
+
+    bool            operator==( const AnimationBitmap& rAnimBmp ) const
+                        {
+                            return( rAnimBmp.aBmpEx == aBmpEx &&
+                                    rAnimBmp.aPosPix == aPosPix &&
+                                    rAnimBmp.aSizePix == aSizePix &&
+                                    rAnimBmp.nWait == nWait &&
+                                    rAnimBmp.eDisposal == eDisposal &&
+                                    rAnimBmp.bUserInput == bUserInput );
+                        }
+
+    bool            operator!=( const AnimationBitmap& rAnimBmp ) const
+                        { return !( *this == rAnimBmp ); }
+
+    bool            IsEqual( const AnimationBitmap& rAnimBmp ) const
+                        {
+                            return( rAnimBmp.aPosPix == aPosPix &&
+                                    rAnimBmp.aSizePix == aSizePix &&
+                                    rAnimBmp.nWait == nWait &&
+                                    rAnimBmp.eDisposal == eDisposal &&
+                                    rAnimBmp.bUserInput == bUserInput &&
+                                    rAnimBmp.aBmpEx.IsEqual( aBmpEx ) );
+                        }
+
+    sal_uLong       GetChecksum() const;
 };
 
 struct AInfo
@@ -112,8 +111,8 @@ struct AInfo
     OutputDevice*   pOutDev;
     void*           pViewData;
     long            nExtraData;
-    bool        bWithSize;
-    bool        bPause;
+    bool            bWithSize;
+    bool            bPause;
 
                     AInfo() : pOutDev( NULL ),
                               pViewData( NULL ),
@@ -128,111 +127,115 @@ typedef ::std::vector< ImplAnimView* > AnimViewList_impl;
 
 class VCL_DLLPUBLIC Animation
 {
-    SAL_DLLPRIVATE static sal_uLong     mnAnimCount;
-
-    AnimationBitmapList_impl    maList;
-    AnimViewList_impl           maViewList;
-    Link                    maNotifyLink;
-    BitmapEx                maBitmapEx;
-    Timer                   maTimer;
-    Size                    maGlobalSize;
-    long                    mnLoopCount;
-    long                    mnLoops;
-    size_t                  mnPos;
-    CycleMode               meCycleMode;
-    bool                mbIsInAnimation;
-    bool                mbLoopTerminated;
-    bool                mbIsWaiting;
-
-
-    SAL_DLLPRIVATE void     ImplRestartTimer( sal_uLong nTimeout );
-    DECL_DLLPRIVATE_LINK(   ImplTimeoutHdl, void* );
-
 public:
+                    Animation();
+                    Animation( const Animation& rAnimation );
+                    ~Animation();
 
-    SAL_DLLPRIVATE static void  ImplIncAnimCount() { mnAnimCount++; }
-    SAL_DLLPRIVATE static void  ImplDecAnimCount() { mnAnimCount--; }
-    SAL_DLLPRIVATE sal_uLong    ImplGetCurPos() const { return mnPos; }
+    Animation&      operator=( const Animation& rAnimation );
+    bool            operator==( const Animation& rAnimation ) const;
+    bool            operator!=( const Animation& rAnimation ) const
+                        { return !(*this==rAnimation); }
 
+    void            Clear();
 
-public:
-                            Animation();
-                            Animation( const Animation& rAnimation );
-                            ~Animation();
+    bool            Start(
+                        OutputDevice* pOutDev,
+                        const Point& rDestPt,
+                        const Size& rDestSz,
+                        long nExtraData = 0,
+                        OutputDevice* pFirstFrameOutDev = NULL);
 
-    Animation&              operator=( const Animation& rAnimation );
-    bool                operator==( const Animation& rAnimation ) const;
-    bool                operator!=( const Animation& rAnimation ) const
-                            { return !(*this==rAnimation); }
+    void            Stop( OutputDevice* pOutDev = NULL, long nExtraData = 0 );
 
-    void                    Clear();
+    void            Draw( OutputDevice* pOutDev, const Point& rDestPt ) const;
+    void            Draw( OutputDevice* pOutDev, const Point& rDestPt, const Size& rDestSz ) const;
 
-    bool                Start(
-                                OutputDevice* pOutDev,
-                                const Point& rDestPt,
-                                const Size& rDestSz,
-                                long nExtraData = 0,
-                                OutputDevice* pFirstFrameOutDev = NULL
-                            );
-    void                    Stop( OutputDevice* pOutDev = NULL, long nExtraData = 0 );
+    bool            IsInAnimation() const { return mbIsInAnimation; }
+    bool            IsTransparent() const;
+    bool            IsTerminated() const { return mbLoopTerminated; }
 
-    void                    Draw( OutputDevice* pOutDev, const Point& rDestPt ) const;
-    void                    Draw( OutputDevice* pOutDev, const Point& rDestPt, const Size& rDestSz ) const;
+    const Size&     GetDisplaySizePixel() const { return maGlobalSize; }
+    void            SetDisplaySizePixel( const Size& rSize ) { maGlobalSize = rSize; }
 
-    bool                IsInAnimation() const { return mbIsInAnimation; }
-    bool                IsTransparent() const;
-    bool                IsTerminated() const { return mbLoopTerminated; }
+    const BitmapEx& GetBitmapEx() const { return maBitmapEx; }
+    void            SetBitmapEx( const BitmapEx& rBmpEx ) { maBitmapEx = rBmpEx; }
 
-    const Size&             GetDisplaySizePixel() const { return maGlobalSize; }
-    void                    SetDisplaySizePixel( const Size& rSize ) { maGlobalSize = rSize; }
+    sal_uLong       GetLoopCount() const { return mnLoopCount; }
+    void            SetLoopCount( const sal_uLong nLoopCount );
+    void            ResetLoopCount();
 
-    const BitmapEx&         GetBitmapEx() const { return maBitmapEx; }
-    void                    SetBitmapEx( const BitmapEx& rBmpEx ) { maBitmapEx = rBmpEx; }
+    void            SetCycleMode( CycleMode eMode );
+    CycleMode       GetCycleMode() const { return meCycleMode; }
 
-    sal_uLong               GetLoopCount() const { return mnLoopCount; }
-    void                    SetLoopCount( const sal_uLong nLoopCount );
-    void                    ResetLoopCount();
+    void            SetNotifyHdl( const Link& rLink ) { maNotifyLink = rLink; }
+    const Link&     GetNotifyHdl() const { return maNotifyLink; }
 
-    void                    SetCycleMode( CycleMode eMode );
-    CycleMode               GetCycleMode() const { return meCycleMode; }
+    size_t          Count() const { return maList.size(); }
+    bool            Insert( const AnimationBitmap& rAnimationBitmap );
+    const AnimationBitmap&
+                    Get( sal_uInt16 nAnimation ) const;
+    void            Replace( const AnimationBitmap& rNewAnimationBmp, sal_uInt16 nAnimation );
 
-    void                    SetNotifyHdl( const Link& rLink ) { maNotifyLink = rLink; }
-    const Link&             GetNotifyHdl() const { return maNotifyLink; }
+    sal_uLong       GetSizeBytes() const;
+    sal_uLong       GetChecksum() const;
 
-    size_t                  Count() const { return maList.size(); }
-    bool                Insert( const AnimationBitmap& rAnimationBitmap );
-    const AnimationBitmap&  Get( sal_uInt16 nAnimation ) const;
-    void                    Replace( const AnimationBitmap& rNewAnimationBmp, sal_uInt16 nAnimation );
+public:
 
-    sal_uLong               GetSizeBytes() const;
-    sal_uLong               GetChecksum() const;
+    bool            Convert( BmpConversion eConversion );
+    bool            ReduceColors(
+                        sal_uInt16 nNewColorCount,
+                        BmpReduce eReduce = BMP_REDUCE_SIMPLE );
+
+    bool            Invert();
+    bool            Mirror( sal_uLong nMirrorFlags );
+    bool            Adjust(
+                        short nLuminancePercent = 0,
+                        short nContrastPercent = 0,
+                        short nChannelRPercent = 0,
+                        short nChannelGPercent = 0,
+                        short nChannelBPercent = 0,
+                        double fGamma = 1.0,
+                        bool bInvert = false );
+
+    bool            Filter(
+                        BmpFilter eFilter,
+                        const BmpFilterParam* pFilterParam = NULL,
+                        const Link* pProgress = NULL );
+
+    friend VCL_DLLPUBLIC SvStream& ReadAnimation( SvStream& rIStream, Animation& rAnimation );
+    friend VCL_DLLPUBLIC SvStream& WriteAnimation( SvStream& rOStream, const Animation& rAnimation );
 
 public:
 
-    bool                Convert( BmpConversion eConversion );
-    bool                ReduceColors(
-                                sal_uInt16 nNewColorCount,
-                                BmpReduce eReduce = BMP_REDUCE_SIMPLE
-                            );
-    bool                Invert();
-    bool                Mirror( sal_uLong nMirrorFlags );
-    bool                Adjust(
-                                short nLuminancePercent = 0,
-                                short nContrastPercent = 0,
-                                short nChannelRPercent = 0,
-                                short nChannelGPercent = 0,
-                                short nChannelBPercent = 0,
-                                double fGamma = 1.0,
-                                bool bInvert = false
-                            );
-    bool                Filter(
-                                BmpFilter eFilter,
-                                const BmpFilterParam* pFilterParam = NULL,
-                                const Link* pProgress = NULL
-                            );
-
-    friend VCL_DLLPUBLIC SvStream&  ReadAnimation( SvStream& rIStream, Animation& rAnimation );
-    friend VCL_DLLPUBLIC SvStream&  WriteAnimation( SvStream& rOStream, const Animation& rAnimation );
+    SAL_DLLPRIVATE static void
+                    ImplIncAnimCount() { mnAnimCount++; }
+    SAL_DLLPRIVATE static void
+                    ImplDecAnimCount() { mnAnimCount--; }
+    SAL_DLLPRIVATE sal_uLong
+                    ImplGetCurPos() const { return mnPos; }
+
+private:
+    SAL_DLLPRIVATE static sal_uLong mnAnimCount;
+
+    AnimationBitmapList_impl maList;
+    AnimViewList_impl maViewList;
+
+    Link            maNotifyLink;
+    BitmapEx        maBitmapEx;
+    Timer           maTimer;
+    Size            maGlobalSize;
+    long            mnLoopCount;
+    long            mnLoops;
+    size_t          mnPos;
+    CycleMode       meCycleMode;
+    bool            mbIsInAnimation;
+    bool            mbLoopTerminated;
+    bool            mbIsWaiting;
+
+    SAL_DLLPRIVATE void ImplRestartTimer( sal_uLong nTimeout );
+    DECL_DLLPRIVATE_LINK( ImplTimeoutHdl, void* );
+
 };
 
 #endif // INCLUDED_VCL_ANIMATE_HXX
diff --git a/include/vcl/apptypes.hxx b/include/vcl/apptypes.hxx
index 60ead54..bc0307c 100644
--- a/include/vcl/apptypes.hxx
+++ b/include/vcl/apptypes.hxx
@@ -23,13 +23,13 @@
 #include <vcl/dllapi.h>
 #include <tools/rtti.hxx>
 
-#define EXC_RSCNOTLOADED            ((sal_uInt16)0x0100)
-#define EXC_SYSTEM                  ((sal_uInt16)0x0300)
-#define EXC_DISPLAY                 ((sal_uInt16)0x0400)
-#define EXC_REMOTE                  ((sal_uInt16)0x0500)
-#define EXC_USER                    ((sal_uInt16)0x1000)
-#define EXC_MAJORTYPE               ((sal_uInt16)0xFF00)
-#define EXC_MINORTYPE               ((sal_uInt16)0x00FF)
+#define EXC_RSCNOTLOADED   ((sal_uInt16)0x0100)
+#define EXC_SYSTEM         ((sal_uInt16)0x0300)
+#define EXC_DISPLAY        ((sal_uInt16)0x0400)
+#define EXC_REMOTE         ((sal_uInt16)0x0500)
+#define EXC_USER           ((sal_uInt16)0x1000)
+#define EXC_MAJORTYPE      ((sal_uInt16)0xFF00)
+#define EXC_MINORTYPE      ((sal_uInt16)0x00FF)
 
 #define VCL_INPUT_MOUSE                 0x0001
 #define VCL_INPUT_KEYBOARD              0x0002
diff --git a/include/vcl/bitmap.hxx b/include/vcl/bitmap.hxx
index d2f0cac..6f66f9c 100644
--- a/include/vcl/bitmap.hxx
+++ b/include/vcl/bitmap.hxx
@@ -60,7 +60,7 @@
 #define BMP_VECTORIZE_BOUND_ONLY    0x00000004UL
 #define BMP_VECTORIZE_REDUCE_EDGES  0x00000008UL
 
-#define BMP_COL_TRANS                   Color( 252, 3, 251 )
+#define BMP_COL_TRANS               Color( 252, 3, 251 )
 
 enum BmpConversion
 {
@@ -127,39 +127,6 @@ enum BmpFilter
 
 class VCL_DLLPUBLIC BmpFilterParam
 {
-    friend class Bitmap;
-    friend class BitmapEx;
-    friend class Animation;
-
-private:
-    BmpFilter       meFilter;
-    sal_uLong       mnProgressStart;
-    sal_uLong       mnProgressEnd;
-
-public:
-    struct MosaicTileSize
-    {
-        sal_uLong mnTileWidth;
-        sal_uLong mnTileHeight;
-    };
-
-    struct EmbossAngles
-    {
-        sal_uInt16 mnAzimuthAngle100;
-        sal_uInt16 mnElevationAngle100;
-    };
-
-private:
-    union
-    {
-        sal_uInt16  mnSepiaPercent;
-        sal_uInt8   mcSolarGreyThreshold;
-        double      mnRadius;
-
-        MosaicTileSize maMosaicTileSize;
-        EmbossAngles maEmbossAngles;
-    };
-
 public:
 
     BmpFilterParam( sal_uLong nProgressStart = 0, sal_uLong nProgressEnd = 0 ) :
@@ -190,36 +157,68 @@ public:
             maEmbossAngles.mnAzimuthAngle100 = nEmbossAzimuthAngle100;
             maEmbossAngles.mnElevationAngle100 = nEmbossElevationAngle100;
         }
-};
 
+private:
+    friend class Bitmap;
+    friend class BitmapEx;
+    friend class Animation;
 
-// Resample kernels
+private:
+    BmpFilter       meFilter;
+    sal_uLong       mnProgressStart;
+    sal_uLong       mnProgressEnd;
+
+public:
+    struct MosaicTileSize
+    {
+        sal_uLong   mnTileWidth;
+        sal_uLong   mnTileHeight;
+    };
+
+    struct EmbossAngles
+    {
+        sal_uInt16  mnAzimuthAngle100;
+        sal_uInt16  mnElevationAngle100;
+    };
+
+private:
+    union
+    {
+        sal_uInt16  mnSepiaPercent;
+        sal_uInt8   mcSolarGreyThreshold;
+        double      mnRadius;
+
+        MosaicTileSize maMosaicTileSize;
+        EmbossAngles maEmbossAngles;
+    };
 
+};
+
+// Resample kernels
 
 class Kernel
 {
 
 public:
-    Kernel () {}
-    virtual ~Kernel() {}
+                    Kernel () {}
+    virtual         ~Kernel() {}
 
-    virtual double GetWidth() const = 0;
-    virtual double Calculate( double x ) const = 0;
+    virtual double  GetWidth() const = 0;
+    virtual double  Calculate( double x ) const = 0;
 };
 
 class Lanczos3Kernel : public Kernel
 {
-    typedef boost::math::policies::policy<
-        boost::math::policies::promote_double<false> > SincPolicy;
 public:
-    Lanczos3Kernel() : Kernel () {}
-    virtual double GetWidth() const SAL_OVERRIDE { return 3.0; }
-    virtual double Calculate (double x) const SAL_OVERRIDE
+                    Lanczos3Kernel() : Kernel () {}
+
+    virtual double  GetWidth() const SAL_OVERRIDE { return 3.0; }
+    virtual double  Calculate (double x) const SAL_OVERRIDE
     {
         return (-3.0 <= x && x < 3.0) ? SincFilter(x) * SincFilter( x / 3.0 ) : 0.0;
     }
 
-    inline double SincFilter(double x) const
+    inline double   SincFilter(double x) const
     {
         if (x == 0.0)
         {
@@ -228,14 +227,20 @@ public:
         x = x * M_PI;
         return boost::math::sinc_pi(x, SincPolicy());
     }
+
+private:
+    typedef boost::math::policies::policy<
+        boost::math::policies::promote_double<false> > SincPolicy;
 };
 
-class BicubicKernel : public Kernel {
+class BicubicKernel : public Kernel
+{
 public:
-    BicubicKernel() : Kernel () {}
+                    BicubicKernel() : Kernel () {}
+
 private:
-    virtual double GetWidth() const SAL_OVERRIDE { return 2.0; }
-    virtual double Calculate (double x) const SAL_OVERRIDE
+    virtual double  GetWidth() const SAL_OVERRIDE { return 2.0; }
+    virtual double  Calculate (double x) const SAL_OVERRIDE
     {
         if (x < 0.0)
         {
@@ -254,12 +259,13 @@ private:
     }
 };
 
-class BilinearKernel : public Kernel {
+class BilinearKernel : public Kernel
+{
 public:
-    BilinearKernel() : Kernel () {}
+                    BilinearKernel() : Kernel () {}
 private:
-    virtual double GetWidth() const SAL_OVERRIDE { return 1.0; }
-    virtual double Calculate (double x) const SAL_OVERRIDE
+    virtual double  GetWidth() const SAL_OVERRIDE { return 1.0; }
+    virtual double  Calculate (double x) const SAL_OVERRIDE
     {
         if (x < 0.0)
         {
@@ -273,12 +279,14 @@ private:
     }
 };
 
-class BoxKernel : public Kernel {
+class BoxKernel : public Kernel
+{
 public:
-    BoxKernel() : Kernel () {}
+                    BoxKernel() : Kernel () {}
+
 private:
-    virtual double GetWidth() const SAL_OVERRIDE { return 0.5; }
-    virtual double Calculate (double x) const SAL_OVERRIDE
+    virtual double  GetWidth() const SAL_OVERRIDE { return 0.5; }
+    virtual double  Calculate (double x) const SAL_OVERRIDE
     {
         if (-0.5 <= x && x < 0.5)
             return 1.0;
@@ -313,67 +321,14 @@ struct BitmapSystemData
 
 class VCL_DLLPUBLIC Bitmap
 {
-private:
-
-    ImpBitmap*          mpImpBmp;
-    MapMode             maPrefMapMode;
-    Size                maPrefSize;
-
-public:
-
-    SAL_DLLPRIVATE void                 ImplReleaseRef();
-    SAL_DLLPRIVATE void                 ImplMakeUnique();
-                   ImpBitmap*           ImplGetImpBitmap() const { return mpImpBmp;}
-    SAL_DLLPRIVATE void                 ImplSetImpBitmap( ImpBitmap* pImpBmp );
-    SAL_DLLPRIVATE void                 ImplAssignWithSize( const Bitmap& rBitmap );
-
-    SAL_DLLPRIVATE void                 ImplAdaptBitCount(Bitmap& rNew) const;
-    SAL_DLLPRIVATE bool             ImplScaleFast( const double& rScaleX, const double& rScaleY );
-    SAL_DLLPRIVATE bool             ImplScaleInterpolate( const double& rScaleX, const double& rScaleY );
-    SAL_DLLPRIVATE bool             ImplScaleSuper( const double& rScaleX, const double& rScaleY );
-    SAL_DLLPRIVATE bool             ImplScaleConvolution( const double& rScaleX, const double& rScaleY, const Kernel& aKernel);
-
-    SAL_DLLPRIVATE bool                 ImplConvolutionPass( Bitmap& aNewBitmap, const int nNewSize, BitmapReadAccess* pReadAcc,
-                                                int aNumberOfContributions, double* pWeights, int* pPixels, int* pCount );
-
-    SAL_DLLPRIVATE bool             ImplMakeMono( sal_uInt8 cThreshold );
-    SAL_DLLPRIVATE bool             ImplMakeMonoDither();
-    SAL_DLLPRIVATE bool             ImplMakeGreyscales( sal_uInt16 nGreyscales );
-    SAL_DLLPRIVATE bool             ImplConvertUp( sal_uInt16 nBitCount, Color* pExtColor = NULL );
-    SAL_DLLPRIVATE bool             ImplConvertDown( sal_uInt16 nBitCount, Color* pExtColor = NULL );
-    SAL_DLLPRIVATE bool             ImplConvertGhosted();
-    SAL_DLLPRIVATE bool             ImplDitherMatrix();
-    SAL_DLLPRIVATE bool             ImplDitherFloyd();
-    SAL_DLLPRIVATE bool             ImplDitherFloyd16();
-    SAL_DLLPRIVATE bool             ImplReduceSimple( sal_uInt16 nColorCount );
-    SAL_DLLPRIVATE bool             ImplReducePopular( sal_uInt16 nColorCount );
-    SAL_DLLPRIVATE bool             ImplReduceMedian( sal_uInt16 nColorCount );
-    SAL_DLLPRIVATE void                 ImplMedianCut( sal_uLong* pColBuf, BitmapPalette& rPal,
-                                                long nR1, long nR2, long nG1, long nG2, long nB1, long nB2,
-                                                long nColors, long nPixels, long& rIndex );
-    SAL_DLLPRIVATE bool             ImplConvolute3( const long* pMatrix, long nDivisor,
-                                                            const BmpFilterParam* pFilterParam, const Link* pProgress );
-    SAL_DLLPRIVATE bool             ImplMedianFilter( const BmpFilterParam* pFilterParam, const Link* pProgress );
-    SAL_DLLPRIVATE bool             ImplSobelGrey( const BmpFilterParam* pFilterParam, const Link* pProgress );
-    SAL_DLLPRIVATE bool             ImplEmbossGrey( const BmpFilterParam* pFilterParam, const Link* pProgress );
-    SAL_DLLPRIVATE bool             ImplSolarize( const BmpFilterParam* pFilterParam, const Link* pProgress );
-    SAL_DLLPRIVATE bool             ImplSepia( const BmpFilterParam* pFilterParam, const Link* pProgress );
-    SAL_DLLPRIVATE bool             ImplMosaic( const BmpFilterParam* pFilterParam, const Link* pProgress );
-    SAL_DLLPRIVATE bool             ImplPopArt( const BmpFilterParam* pFilterParam, const Link* pProgress );
-
-    SAL_DLLPRIVATE bool                 ImplSeparableBlurFilter( const double aRadius = 0.7 );
-    SAL_DLLPRIVATE bool                 ImplSeparableUnsharpenFilter( const double aRadius = 0.7 );
-    SAL_DLLPRIVATE bool                 ImplDuotoneFilter( const sal_uLong nColorOne,  sal_uLong nColorTwo );
-    SAL_DLLPRIVATE void                 ImplBlurContributions( const int aSize, const int aNumberOfContributions,
-                                                double* pBlurVector, double*& pWeights, int*& pPixels, int*& pCount );
 public:
 
-    Bitmap();
-    Bitmap( const Bitmap& rBitmap );
-    Bitmap( const Size& rSizePixel, sal_uInt16 nBitCount, const BitmapPalette* pPal = NULL );
-    Bitmap( const ResId& rResId );
-    Bitmap( SalBitmap* pSalBitmap );
-    virtual ~Bitmap();
+                            Bitmap();
+                            Bitmap( const Bitmap& rBitmap );
+                            Bitmap( const Size& rSizePixel, sal_uInt16 nBitCount, const BitmapPalette* pPal = NULL );
+                            Bitmap( const ResId& rResId );
+                            Bitmap( SalBitmap* pSalBitmap );
+    virtual                 ~Bitmap();
 
     Bitmap&                 operator=( const Bitmap& rBitmap );
     inline bool             operator!() const;
@@ -394,9 +349,9 @@ public:
 
     Size                    GetSizePixel() const;
 
-    sal_uInt16                  GetBitCount() const;
-    inline sal_uLong            GetColorCount() const;
-    inline sal_uLong            GetSizeBytes() const;
+    sal_uInt16              GetBitCount() const;
+    inline sal_uLong        GetColorCount() const;
+    inline sal_uLong        GetSizeBytes() const;
     bool                    HasGreyPalette() const;
     /** get system dependent bitmap data
 
@@ -407,16 +362,17 @@ public:
     */
     bool                    GetSystemData( BitmapSystemData& rData ) const;
 
-    sal_uLong                   GetChecksum() const;
+    sal_uLong               GetChecksum() const;
 
     Bitmap                  CreateDisplayBitmap( OutputDevice* pDisplay );
     Bitmap                  GetColorTransformedBitmap() const;
 
-    static const BitmapPalette& GetGreyPalette( int nEntries );
+    static const BitmapPalette&
+                            GetGreyPalette( int nEntries );
 
 public:
 
-    bool MakeMono( sal_uInt8 cThreshold );
+    bool                    MakeMono( sal_uInt8 cThreshold );
 
 
     /** Convert bitmap format
@@ -438,8 +394,9 @@ public:
 
         @return true, if the color reduction operation was completed successfully.
      */
-    bool                    ReduceColors( sal_uInt16 nNewColorCount,
-                                          BmpReduce eReduce = BMP_REDUCE_SIMPLE );
+    bool                    ReduceColors(
+                                sal_uInt16 nNewColorCount,
+                                BmpReduce eReduce = BMP_REDUCE_SIMPLE );
 
     /** Apply a dither algorithm to the bitmap
 
@@ -483,8 +440,9 @@ public:
         not only returned when the operation failed, but also if
         nothing had to be done, e.g. because nDX and nDY were zero.
      */
-    bool                    Expand( sal_uLong nDX, sal_uLong nDY,
-                                    const Color* pInitColor = NULL );
+    bool                    Expand(
+                                sal_uLong nDX, sal_uLong nDY,
+                                const Color* pInitColor = NULL );
 
     /** Copy a rectangular area from another bitmap
 
@@ -508,12 +466,15 @@ public:
         nothing had to be done, e.g. because one of the rectangles are
         empty.
      */
-    bool                    CopyPixel( const Rectangle& rRectDst,
-                                       const Rectangle& rRectSrc,
-                                       const Bitmap* pBmpSrc = NULL );
+    bool                    CopyPixel(
+                                const Rectangle& rRectDst,
+                                const Rectangle& rRectSrc,
+                                const Bitmap* pBmpSrc = NULL );
 
-    bool    CopyPixel_AlphaOptimized( const Rectangle& rRectDst, const Rectangle& rRectSrc,
-                           const Bitmap* pBmpSrc = NULL);
+    bool                    CopyPixel_AlphaOptimized(
+                                const Rectangle& rRectDst,
+                                const Rectangle& rRectSrc,
+                                const Bitmap* pBmpSrc = NULL );
 
     /** Perform boolean operations with another bitmap
 
@@ -525,8 +486,9 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                    CombineSimple( const Bitmap& rMask,
-                                           BmpCombine eCombine );
+    bool                    CombineSimple(
+                                const Bitmap& rMask,
+                                BmpCombine eCombine );
 
     /** Alpha-blend the given bitmap against a specified uniform
           background color.
@@ -544,8 +506,9 @@ public:
 
         @return true, if blending was successful, false otherwise
      */
-    bool                    Blend( const AlphaMask& rAlpha,
-                                   const Color&     rBackgroundColor );
+    bool                    Blend(
+                                const AlphaMask& rAlpha,
+                                const Color& rBackgroundColor );
 
     /** Fill the entire bitmap with the given color
 
@@ -600,7 +563,7 @@ public:
 
     // Adapt the BitCount of rNew to BitCount of lolal, including grey or color paltette
     // Can be used to create alpha/mask bitmaps after their processing in 24bit
-    void AdaptBitCount(Bitmap& rNew) const;
+    void                    AdaptBitCount(Bitmap& rNew) const;
 
     /** Rotate bitmap by the specified angle
 
@@ -707,8 +670,11 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                    Replace( const Color* pSearchColors, const Color* rReplaceColors,
-                                     sal_uLong nColorCount, sal_uLong* pTols = NULL );
+    bool                    Replace(
+                                const Color* pSearchColors,
+                                const Color* rReplaceColors,
+                                sal_uLong nColorCount,
+                                sal_uLong* pTols = NULL );
 
     /** Convert the bitmap to a PolyPolygon
 
@@ -727,9 +693,10 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                    Vectorize( PolyPolygon& rPolyPoly,
-                                       sal_uLong nFlags = BMP_VECTORIZE_OUTER,
-                                       const Link* pProgress = NULL );
+    bool                    Vectorize(
+                                PolyPolygon& rPolyPoly,
+                                sal_uLong nFlags = BMP_VECTORIZE_OUTER,
+                                const Link* pProgress = NULL );
 
     /** Convert the bitmap to a meta file
 
@@ -752,9 +719,11 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                    Vectorize( GDIMetaFile& rMtf, sal_uInt8 cReduce = 0,
-                                       sal_uLong nFlags = BMP_VECTORIZE_INNER,
-                                       const Link* pProgress = NULL );
+    bool                    Vectorize(
+                                GDIMetaFile& rMtf,
+                                sal_uInt8 cReduce = 0,
+                                sal_uLong nFlags = BMP_VECTORIZE_INNER,
+                                const Link* pProgress = NULL );
 
     /** Change various global color characteristics
 
@@ -786,14 +755,15 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                    Adjust( short nLuminancePercent = 0,
-                                    short nContrastPercent = 0,
-                                    short nChannelRPercent = 0,
-                                    short nChannelGPercent = 0,
-                                    short nChannelBPercent = 0,
-                                    double fGamma = 1.0,
-                                    bool bInvert = false,
-                                    bool msoBrightness = false );
+    bool                    Adjust(
+                                short nLuminancePercent = 0,
+                                short nContrastPercent = 0,
+                                short nChannelRPercent = 0,
+                                short nChannelGPercent = 0,
+                                short nChannelBPercent = 0,
+                                double fGamma = 1.0,
+                                bool bInvert = false,
+                                bool msoBrightness = false );
 
     /** Apply specified filter to the bitmap
 
@@ -808,9 +778,75 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                    Filter( BmpFilter eFilter,
-                                    const BmpFilterParam* pFilterParam = NULL,
-                                    const Link* pProgress = NULL );
+    bool                    Filter(
+                                BmpFilter eFilter,
+                                const BmpFilterParam* pFilterParam = NULL,
+                                const Link* pProgress = NULL );
+
+public:
+
+    SAL_DLLPRIVATE void     ImplReleaseRef();
+    SAL_DLLPRIVATE void     ImplMakeUnique();
+    ImpBitmap*              ImplGetImpBitmap() const { return mpImpBmp;}
+    SAL_DLLPRIVATE void     ImplSetImpBitmap( ImpBitmap* pImpBmp );
+    SAL_DLLPRIVATE void     ImplAssignWithSize( const Bitmap& rBitmap );
+
+    SAL_DLLPRIVATE void     ImplAdaptBitCount(Bitmap& rNew) const;
+    SAL_DLLPRIVATE bool     ImplScaleFast( const double& rScaleX, const double& rScaleY );
+    SAL_DLLPRIVATE bool     ImplScaleInterpolate( const double& rScaleX, const double& rScaleY );
+    SAL_DLLPRIVATE bool     ImplScaleSuper( const double& rScaleX, const double& rScaleY );
+    SAL_DLLPRIVATE bool     ImplScaleConvolution( const double& rScaleX, const double& rScaleY, const Kernel& aKernel);
+
+    SAL_DLLPRIVATE bool     ImplConvolutionPass(
+                                Bitmap& aNewBitmap,
+                                const int nNewSize,
+                                BitmapReadAccess* pReadAcc,
+                                int aNumberOfContributions,
+                                double* pWeights,
+                                int* pPixels,
+                                int* pCount );
+
+    SAL_DLLPRIVATE bool     ImplMakeMono( sal_uInt8 cThreshold );
+    SAL_DLLPRIVATE bool     ImplMakeMonoDither();
+    SAL_DLLPRIVATE bool     ImplMakeGreyscales( sal_uInt16 nGreyscales );
+    SAL_DLLPRIVATE bool     ImplConvertUp( sal_uInt16 nBitCount, Color* pExtColor = NULL );
+    SAL_DLLPRIVATE bool     ImplConvertDown( sal_uInt16 nBitCount, Color* pExtColor = NULL );
+    SAL_DLLPRIVATE bool     ImplConvertGhosted();
+    SAL_DLLPRIVATE bool     ImplDitherMatrix();
+    SAL_DLLPRIVATE bool     ImplDitherFloyd();
+    SAL_DLLPRIVATE bool     ImplDitherFloyd16();
+    SAL_DLLPRIVATE bool     ImplReduceSimple( sal_uInt16 nColorCount );
+    SAL_DLLPRIVATE bool     ImplReducePopular( sal_uInt16 nColorCount );
+    SAL_DLLPRIVATE bool     ImplReduceMedian( sal_uInt16 nColorCount );
+    SAL_DLLPRIVATE void     ImplMedianCut(
+                                sal_uLong* pColBuf,
+                                BitmapPalette& rPal,
+                                long nR1, long nR2, long nG1, long nG2, long nB1, long nB2,
+                                long nColors, long nPixels, long& rIndex );
+
+    SAL_DLLPRIVATE bool     ImplConvolute3(
+                                const long* pMatrix, long nDivisor,
+                                const BmpFilterParam* pFilterParam,
+                                const Link* pProgress );
+
+    SAL_DLLPRIVATE bool     ImplMedianFilter( const BmpFilterParam* pFilterParam, const Link* pProgress );
+    SAL_DLLPRIVATE bool     ImplSobelGrey( const BmpFilterParam* pFilterParam, const Link* pProgress );
+    SAL_DLLPRIVATE bool     ImplEmbossGrey( const BmpFilterParam* pFilterParam, const Link* pProgress );
+    SAL_DLLPRIVATE bool     ImplSolarize( const BmpFilterParam* pFilterParam, const Link* pProgress );
+    SAL_DLLPRIVATE bool     ImplSepia( const BmpFilterParam* pFilterParam, const Link* pProgress );
+    SAL_DLLPRIVATE bool     ImplMosaic( const BmpFilterParam* pFilterParam, const Link* pProgress );
+    SAL_DLLPRIVATE bool     ImplPopArt( const BmpFilterParam* pFilterParam, const Link* pProgress );
+
+    SAL_DLLPRIVATE bool     ImplSeparableBlurFilter( const double aRadius = 0.7 );
+    SAL_DLLPRIVATE bool     ImplSeparableUnsharpenFilter( const double aRadius = 0.7 );
+    SAL_DLLPRIVATE bool     ImplDuotoneFilter( const sal_uLong nColorOne,  sal_uLong nColorTwo );
+    SAL_DLLPRIVATE void     ImplBlurContributions(
+                                const int aSize,
+                                const int aNumberOfContributions,
+                                double* pBlurVector,
+                                double*& pWeights,
+                                int*& pPixels,
+                                int*& pCount );
 
 public:
 
@@ -822,6 +858,13 @@ public:
         ScopedReadAccess;
     typedef vcl::ScopedBitmapAccess< BitmapWriteAccess, Bitmap, &Bitmap::AcquireWriteAccess >
         ScopedWriteAccess;
+
+private:
+
+    ImpBitmap*              mpImpBmp;
+    MapMode                 maPrefMapMode;
+    Size                    maPrefSize;
+
 };
 
 inline bool Bitmap::operator!() const
diff --git a/include/vcl/bitmapex.hxx b/include/vcl/bitmapex.hxx
index 5571ee4..dc875ff 100644
--- a/include/vcl/bitmapex.hxx
+++ b/include/vcl/bitmapex.hxx
@@ -27,15 +27,12 @@
 #include <basegfx/color/bcolormodifier.hxx>
 
 #include <com/sun/star/uno/Reference.hxx>
+#include <sal/types.h>
 
 namespace com { namespace sun { namespace star { namespace rendering {
     class XBitmapCanvas;
 } } } }
 
-
-// - TransparentType -
-
-
 enum TransparentType
 {
     TRANSPARENT_NONE,
@@ -43,29 +40,10 @@ enum TransparentType
     TRANSPARENT_BITMAP
 };
 
-
-// - BitmapEx -
-
-
 class VCL_DLLPUBLIC BitmapEx
 {
-private:
-    friend class ImpGraphic;
-    friend bool VCL_DLLPUBLIC WriteDIBBitmapEx(const BitmapEx& rSource, SvStream& rOStm);
-
-    Bitmap              aBitmap;
-    Bitmap              aMask;
-    Size                aBitmapSize;
-    Color               aTransparentColor;
-    TransparentType     eTransparent;
-    bool            bAlpha;
-
 public:
 
-
-    SAL_DLLPRIVATE  ImpBitmap*  ImplGetBitmapImpBitmap() const { return aBitmap.ImplGetImpBitmap(); }
-    SAL_DLLPRIVATE  ImpBitmap*  ImplGetMaskImpBitmap() const { return aMask.ImplGetImpBitmap(); }
-
                         BitmapEx();
                         BitmapEx( const ResId& rResId );
                         BitmapEx( const BitmapEx& rBitmapEx );
@@ -115,9 +93,9 @@ public:
     const Color&        GetTransparentColor() const { return aTransparentColor; }
     void                SetTransparentColor( const Color& rColor ) { aTransparentColor = rColor; }
 
-    sal_uInt16              GetBitCount() const { return aBitmap.GetBitCount(); }
-    sal_uLong               GetSizeBytes() const;
-    sal_uLong               GetChecksum() const;
+    sal_uInt16          GetBitCount() const { return aBitmap.GetBitCount(); }
+    sal_uLong           GetSizeBytes() const;
+    sal_uLong           GetChecksum() const;
 
 public:
 
@@ -140,8 +118,9 @@ public:
 
         @return true, if the color reduction operation was completed successfully.
      */
-    bool                ReduceColors( sal_uInt16 nNewColorCount,
-                                      BmpReduce eReduce = BMP_REDUCE_SIMPLE );
+    bool                ReduceColors(
+                            sal_uInt16 nNewColorCount,
+                            BmpReduce eReduce = BMP_REDUCE_SIMPLE );
 
     /** Apply a dither algorithm to the bitmap
 
@@ -188,9 +167,10 @@ public:
         not only returned when the operation failed, but also if
         nothing had to be done, e.g. because nDX and nDY were zero.
      */
-    bool                Expand( sal_uLong nDX, sal_uLong nDY,
-                                const Color* pInitColor = NULL,
-                                bool bExpandTransparent = false );
+    bool                Expand(
+                            sal_uLong nDX, sal_uLong nDY,
+                            const Color* pInitColor = NULL,
+                            bool bExpandTransparent = false );
 
     /** Copy a rectangular area from another bitmap
 
@@ -214,9 +194,10 @@ public:
         nothing had to be done, e.g. because one of the rectangles are
         empty.
      */
-    bool                CopyPixel( const Rectangle& rRectDst,
-                                   const Rectangle& rRectSrc,
-                                   const BitmapEx* pBmpExSrc = NULL );
+    bool                CopyPixel(
+                            const Rectangle& rRectDst,
+                            const Rectangle& rRectSrc,
+                            const BitmapEx* pBmpExSrc = NULL );
 
     /** Fill the entire bitmap with the given color
 
@@ -253,7 +234,9 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                Scale( const Size& rNewSize, sal_uInt32 nScaleFlag = BMP_SCALE_DEFAULT );
+    bool                Scale(
+                            const Size& rNewSize,
+                            sal_uInt32 nScaleFlag = BMP_SCALE_DEFAULT );
 
     /** Scale the bitmap
 
@@ -268,7 +251,10 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                Scale( const double& rScaleX, const double& rScaleY, sal_uInt32 nScaleFlag = BMP_SCALE_DEFAULT );
+    bool                Scale(
+                            const double& rScaleX,
+                            const double& rScaleY,
+                            sal_uInt32 nScaleFlag = BMP_SCALE_DEFAULT );
 
     /** Rotate bitmap by the specified angle
 
@@ -283,7 +269,9 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                Rotate( long nAngle10, const Color& rFillColor );
+    bool                Rotate(
+                            long nAngle10,
+                            const Color& rFillColor );
 
     /** Replace all pixel having the search color with the specified color
 
@@ -300,7 +288,10 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                Replace( const Color& rSearchColor, const Color& rReplaceColor, sal_uLong nTol = 0 );
+    bool                Replace(
+                            const Color& rSearchColor,
+                            const Color& rReplaceColor,
+                            sal_uLong nTol = 0 );
 
     /** Replace all pixel having one the search colors with the corresponding replace color
 
@@ -320,8 +311,11 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                Replace( const Color* pSearchColors, const Color* pReplaceColors,
-                                 sal_uLong nColorCount, const sal_uLong* pTols = NULL );
+    bool                Replace(
+                            const Color* pSearchColors,
+                            const Color* pReplaceColors,
+                            sal_uLong nColorCount,
+                            const sal_uLong* pTols = NULL );
 
     /** Change various global color characteristics
 
@@ -353,14 +347,15 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                Adjust( short nLuminancePercent = 0,
-                                short nContrastPercent = 0,
-                                short nChannelRPercent = 0,
-                                short nChannelGPercent = 0,
-                                short nChannelBPercent = 0,
-                                double fGamma = 1.0,
-                                bool bInvert = false,
-                                bool msoBrightness = false );
+    bool                Adjust(
+                            short nLuminancePercent = 0,
+                            short nContrastPercent = 0,
+                            short nChannelRPercent = 0,
+                            short nChannelGPercent = 0,
+                            short nChannelBPercent = 0,
+                            double fGamma = 1.0,
+                            bool bInvert = false,
+                            bool msoBrightness = false );
 
     /** Apply specified filter to the bitmap
 
@@ -375,9 +370,10 @@ public:
 
         @return true, if the operation was completed successfully.
      */
-    bool                Filter( BmpFilter eFilter,
-                                const BmpFilterParam* pFilterParam = NULL,
-                                const Link* pProgress = NULL );
+    bool                Filter(
+                            BmpFilter eFilter,
+                            const BmpFilterParam* pFilterParam = NULL,
+                            const Link* pProgress = NULL );
 
     /** Get transparency at given position
 
@@ -390,7 +386,9 @@ public:
         @return transparency value in the range of [0 .. 255] where
                 0 is not transparent, 255 is fully transparent
      */
-    sal_uInt8 GetTransparency(sal_Int32 nX, sal_Int32 nY) const;
+    sal_uInt8           GetTransparency(
+                            sal_Int32 nX,
+                            sal_Int32 nY) const;
 
     /** Create transformed Bitmap
 
@@ -407,11 +405,11 @@ public:
         @param bSmooth
         Defines if pixel interpolation is to be used to create the result
     */
-    BitmapEx TransformBitmapEx(
-        double fWidth,
-        double fHeight,
-        const basegfx::B2DHomMatrix& rTransformation,
-        bool bSmooth = true) const;
+    BitmapEx            TransformBitmapEx(
+                            double fWidth,
+                            double fHeight,
+                            const basegfx::B2DHomMatrix& rTransformation,
+                            bool bSmooth = true) const;
 
     /** Create transformed Bitmap
 
@@ -434,27 +432,42 @@ public:
 
         @return The transformed bitmap
     */
-    BitmapEx getTransformed(
-        const basegfx::B2DHomMatrix& rTransformation,
-        const basegfx::B2DRange& rVisibleRange,
-        double fMaximumArea = 500000.0,
-        bool bSmooth = true) const;
+    BitmapEx            getTransformed(
+                            const basegfx::B2DHomMatrix& rTransformation,
+                            const basegfx::B2DRange& rVisibleRange,
+                            double fMaximumArea = 500000.0,
+                            bool bSmooth = true) const;
 
     /** Create ColorStack-modified version of this BitmapEx
 
         @param rBColorModifierStack
         A ColrModifierStack which defines how each pixel has to be modified
     */
-    BitmapEx ModifyBitmapEx(const basegfx::BColorModifierStack& rBColorModifierStack) const;
+    BitmapEx            ModifyBitmapEx( const basegfx::BColorModifierStack& rBColorModifierStack) const;
+
+    static BitmapEx     AutoScaleBitmap( BitmapEx & aBitmap, const long aStandardSize );
 
+    /// populate from a canvas implementation
+    bool                Create(
+                            const css::uno::Reference< css::rendering::XBitmapCanvas > &xBitmapCanvas,
+                            const Size &rSize );
 public:
 
-    static BitmapEx AutoScaleBitmap(BitmapEx & aBitmap, const long aStandardSize);
+    SAL_DLLPRIVATE  ImpBitmap*  ImplGetBitmapImpBitmap() const { return aBitmap.ImplGetImpBitmap(); }
+    SAL_DLLPRIVATE  ImpBitmap*  ImplGetMaskImpBitmap() const { return aMask.ImplGetImpBitmap(); }
+
+
+private:
+    friend class ImpGraphic;
+    friend bool VCL_DLLPUBLIC WriteDIBBitmapEx(const BitmapEx& rSource, SvStream& rOStm);
+
+    Bitmap              aBitmap;
+    Bitmap              aMask;
+    Size                aBitmapSize;
+    Color               aTransparentColor;
+    TransparentType     eTransparent;
+    bool                bAlpha;
 
-    /// populate from a canvas implementation
-    bool Create( const ::com::sun::star::uno::Reference<
-                 ::com::sun::star::rendering::XBitmapCanvas > &xBitmapCanvas,
-                 const Size &rSize );
 };
 
 
@@ -498,8 +511,6 @@ BitmapEx VCL_DLLPUBLIC createBlendFrame(
     Color aColorBottomRight,
     Color aColorBottomLeft);
 
-
-
 #endif // INCLUDED_VCL_BITMAPEX_HXX
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/include/vcl/bitmapfilter.hxx b/include/vcl/bitmapfilter.hxx
index 37cdac1..c23bd7f 100644
--- a/include/vcl/bitmapfilter.hxx
+++ b/include/vcl/bitmapfilter.hxx
@@ -16,8 +16,9 @@
 class VCL_DLLPUBLIC BitmapFilter
 {
 public:
-    BitmapFilter();
-    virtual ~BitmapFilter();
+                 BitmapFilter();
+    virtual      ~BitmapFilter();
+
     virtual bool filter(Bitmap& rBitmap) = 0;
 };
 
diff --git a/include/vcl/bitmapscalesuper.hxx b/include/vcl/bitmapscalesuper.hxx
index 3b59b99..e7fffea 100644
--- a/include/vcl/bitmapscalesuper.hxx
+++ b/include/vcl/bitmapscalesuper.hxx
@@ -24,13 +24,16 @@
 
 class VCL_DLLPUBLIC BitmapScaleSuper : public BitmapFilter
 {
-    double mrScaleX;
-    double mrScaleY;
-
 public:
-    BitmapScaleSuper(const double& rScaleX, const double& rScaleY);
-    virtual ~BitmapScaleSuper();
-    virtual bool filter(Bitmap& rBitmap) SAL_OVERRIDE;
+                    BitmapScaleSuper(const double& rScaleX, const double& rScaleY);
+    virtual         ~BitmapScaleSuper();
+
+    virtual bool    filter(Bitmap& rBitmap) SAL_OVERRIDE;
+
+private:
+    double          mrScaleX;
+    double          mrScaleY;
+
 };
 
 #endif // INCLUDED_VCL_BITMAPSCALESUPER_HXX
diff --git a/include/vcl/bmpacc.hxx b/include/vcl/bmpacc.hxx
index 359c168..252599b 100644
--- a/include/vcl/bmpacc.hxx
+++ b/include/vcl/bmpacc.hxx
@@ -67,50 +67,6 @@ class VCL_DLLPUBLIC BitmapReadAccess
 {
     friend class BitmapWriteAccess;
 
-private:
-
-                                BitmapReadAccess() {}
-                                BitmapReadAccess( const BitmapReadAccess& ) {}
-    BitmapReadAccess&           operator=( const BitmapReadAccess& ) { return *this; }
-
-protected:
-    Bitmap                      maBitmap;
-    BitmapBuffer*               mpBuffer;
-    Scanline*                   mpScanBuf;
-    ColorMask                   maColorMask;
-    FncGetPixel                 mFncGetPixel;
-    FncSetPixel                 mFncSetPixel;
-    bool                        mbModify;
-
-
-SAL_DLLPRIVATE  void            ImplCreate( Bitmap& rBitmap );
-SAL_DLLPRIVATE  void            ImplDestroy();
-SAL_DLLPRIVATE  bool            ImplSetAccessPointers( sal_uLong nFormat );
-
-public:
-
-SAL_DLLPRIVATE  void            ImplZeroInitUnusedBits();
-SAL_DLLPRIVATE  BitmapBuffer*   ImplGetBitmapBuffer() const { return mpBuffer; }
-
-                                DECL_FORMAT( _1BIT_MSB_PAL )
-                                DECL_FORMAT( _1BIT_LSB_PAL )
-                                DECL_FORMAT( _4BIT_MSN_PAL )
-                                DECL_FORMAT( _4BIT_LSN_PAL )
-                                DECL_FORMAT( _8BIT_PAL )
-                                DECL_FORMAT( _8BIT_TC_MASK )
-                                DECL_FORMAT( _16BIT_TC_MSB_MASK )
-                                DECL_FORMAT( _16BIT_TC_LSB_MASK )
-                                DECL_FORMAT( _24BIT_TC_BGR )
-                                DECL_FORMAT( _24BIT_TC_RGB )
-                                DECL_FORMAT( _24BIT_TC_MASK )
-                                DECL_FORMAT( _32BIT_TC_ABGR )
-                                DECL_FORMAT( _32BIT_TC_ARGB )
-                                DECL_FORMAT( _32BIT_TC_BGRA )
-                                DECL_FORMAT( _32BIT_TC_RGBA )
-                                DECL_FORMAT( _32BIT_TC_MASK )
-protected:
-                                BitmapReadAccess( Bitmap& rBitmap, bool bModify );
-
 public:
                                 BitmapReadAccess( Bitmap& rBitmap );
     virtual                     ~BitmapReadAccess();
@@ -125,10 +81,10 @@ public:
     inline bool                 IsTopDown() const;
     inline bool                 IsBottomUp() const;
 
-    inline sal_uLong                GetScanlineFormat() const;
-    inline sal_uLong                GetScanlineSize() const;
+    inline sal_uLong            GetScanlineFormat() const;
+    inline sal_uLong            GetScanlineSize() const;
 
-    inline sal_uInt16               GetBitCount() const;
+    inline sal_uInt16           GetBitCount() const;
     inline BitmapColor          GetBestMatchingColor( const BitmapColor& rBitmapColor );
 
     inline Scanline             GetBuffer() const;
@@ -136,10 +92,10 @@ public:
 
     inline bool                 HasPalette() const;
     inline const BitmapPalette& GetPalette() const;
-    inline sal_uInt16               GetPaletteEntryCount() const;
+    inline sal_uInt16           GetPaletteEntryCount() const;
     inline const BitmapColor&   GetPaletteColor( sal_uInt16 nColor ) const;
     inline const BitmapColor&   GetBestPaletteColor( const BitmapColor& rBitmapColor ) const;
-    sal_uInt16                      GetBestPaletteIndex( const BitmapColor& rBitmapColor ) const;
+    sal_uInt16                  GetBestPaletteIndex( const BitmapColor& rBitmapColor ) const;
 
     inline bool                 HasColorMask() const;
     inline ColorMask&           GetColorMask() const;
@@ -152,11 +108,58 @@ public:
     inline sal_uInt8            GetLuminance( long nY, long nX ) const;
 
     /** Get the interpolated color at coordinates fY, fX; if outside, return rFallback */
-    BitmapColor GetInterpolatedColorWithFallback( double fY, double fX, const BitmapColor& rFallback ) const;
+    BitmapColor                 GetInterpolatedColorWithFallback( double fY, double fX, const BitmapColor& rFallback ) const;
 
     /** Get the color at coordinates fY, fX; if outside, return rFallback. Automatically does the correct
         inside/outside checks, e.g. static_cast< sal_uInt32 >(-0.25) *is* 0, not -1 and has to be outside */
-    BitmapColor GetColorWithFallback( double fY, double fX, const BitmapColor& rFallback ) const;
+    BitmapColor                 GetColorWithFallback( double fY, double fX, const BitmapColor& rFallback ) const;
+
+private:
+
+                                BitmapReadAccess() {}
+                                BitmapReadAccess( const BitmapReadAccess& ) {}
+    BitmapReadAccess&           operator=( const BitmapReadAccess& ) { return *this; }
+
+protected:
+    Bitmap                      maBitmap;
+    BitmapBuffer*               mpBuffer;
+    Scanline*                   mpScanBuf;
+    ColorMask                   maColorMask;
+    FncGetPixel                 mFncGetPixel;
+    FncSetPixel                 mFncSetPixel;
+    bool                        mbModify;
+
+
+    SAL_DLLPRIVATE  void        ImplCreate( Bitmap& rBitmap );
+    SAL_DLLPRIVATE  void        ImplDestroy();
+    SAL_DLLPRIVATE  bool        ImplSetAccessPointers( sal_uLong nFormat );
+
+public:
+
+    SAL_DLLPRIVATE  void        ImplZeroInitUnusedBits();
+    SAL_DLLPRIVATE  BitmapBuffer*
+                                ImplGetBitmapBuffer() const { return mpBuffer; }
+
+                                DECL_FORMAT( _1BIT_MSB_PAL )
+                                DECL_FORMAT( _1BIT_LSB_PAL )
+                                DECL_FORMAT( _4BIT_MSN_PAL )
+                                DECL_FORMAT( _4BIT_LSN_PAL )
+                                DECL_FORMAT( _8BIT_PAL )
+                                DECL_FORMAT( _8BIT_TC_MASK )
+                                DECL_FORMAT( _16BIT_TC_MSB_MASK )
+                                DECL_FORMAT( _16BIT_TC_LSB_MASK )
+                                DECL_FORMAT( _24BIT_TC_BGR )
+                                DECL_FORMAT( _24BIT_TC_RGB )
+                                DECL_FORMAT( _24BIT_TC_MASK )
+                                DECL_FORMAT( _32BIT_TC_ABGR )
+                                DECL_FORMAT( _32BIT_TC_ARGB )
+                                DECL_FORMAT( _32BIT_TC_BGRA )
+                                DECL_FORMAT( _32BIT_TC_RGBA )
+                                DECL_FORMAT( _32BIT_TC_MASK )
+
+protected:
+                                BitmapReadAccess( Bitmap& rBitmap, bool bModify );
+
 };
 
 // - BitmapWriteAccess -
diff --git a/include/vcl/btndlg.hxx b/include/vcl/btndlg.hxx
index 958b0f3..81df3d1 100644
--- a/include/vcl/btndlg.hxx
+++ b/include/vcl/btndlg.hxx
@@ -37,32 +37,9 @@ class PushButton;
 
 class VCL_DLLPUBLIC ButtonDialog : public Dialog
 {
-private:
-    boost::ptr_vector<ImplBtnDlgItem> maItemList;
-    Size                maPageSize;
-    Size                maCtrlSize;
-    long                mnButtonSize;
-    sal_uInt16              mnCurButtonId;
-    sal_uInt16              mnFocusButtonId;
-    bool                mbFormat;
-    Link                maClickHdl;
-
-    SAL_DLLPRIVATE void             ImplInitButtonDialogData();
-    SAL_DLLPRIVATE PushButton*      ImplCreatePushButton( sal_uInt16 nBtnFlags );
-    SAL_DLLPRIVATE ImplBtnDlgItem*  ImplGetItem( sal_uInt16 nId ) const;
-    DECL_DLLPRIVATE_LINK(           ImplClickHdl, PushButton* pBtn );
-    SAL_DLLPRIVATE void             ImplPosControls();
-
-    // Copy assignment is forbidden and not implemented.
-    SAL_DLLPRIVATE      ButtonDialog( const ButtonDialog & );
-    SAL_DLLPRIVATE      ButtonDialog& operator=( const ButtonDialog& );
-protected:
-                        ButtonDialog( WindowType nType );
-    SAL_DLLPRIVATE long ImplGetButtonSize();
-
 public:
                         ButtonDialog( vcl::Window* pParent, WinBits nStyle = WB_STDDIALOG );
-                        virtual ~ButtonDialog();
+    virtual             ~ButtonDialog();
 
     virtual void        Resize() SAL_OVERRIDE;
     virtual void        StateChanged( StateChangedType nStateChange ) SAL_OVERRIDE;
@@ -72,11 +49,12 @@ public:
     void                SetPageSizePixel( const Size& rSize ) { maPageSize = rSize; }
     const Size&         GetPageSizePixel() const { return maPageSize; }
 
-    sal_uInt16              GetCurButtonId() const { return mnCurButtonId; }
+    sal_uInt16          GetCurButtonId() const { return mnCurButtonId; }
 
     void                AddButton( const OUString& rText, sal_uInt16 nId, sal_uInt16 nBtnFlags, long nSepPixel = 0 );
     void                AddButton( StandardButtonType eType, sal_uInt16 nId, sal_uInt16 nBtnFlags, long nSepPixel = 0 );
     void                RemoveButton( sal_uInt16 nId );
+
     void                Clear();
     sal_uInt16          GetButtonId( sal_uInt16 nButton ) const;
     PushButton*         GetPushButton( sal_uInt16 nId ) const;
@@ -84,10 +62,36 @@ public:
     void                SetButtonHelpText( sal_uInt16 nId, const OUString& rText );
 
     void                SetFocusButton( sal_uInt16 nId = BUTTONDIALOG_BUTTON_NOTFOUND ) { mnFocusButtonId = nId; }
-    sal_uInt16              GetFocusButton() const { return mnFocusButtonId; }
+    sal_uInt16          GetFocusButton() const { return mnFocusButtonId; }
 
     void                SetClickHdl( const Link& rLink ) { maClickHdl = rLink; }
     const Link&         GetClickHdl() const { return maClickHdl; }
+
+protected:
+                        ButtonDialog( WindowType nType );
+    SAL_DLLPRIVATE long ImplGetButtonSize();
+
+private:
+    // Copy assignment is forbidden and not implemented.
+    SAL_DLLPRIVATE      ButtonDialog( const ButtonDialog & );
+    SAL_DLLPRIVATE      ButtonDialog& operator=( const ButtonDialog& );
+
+private:
+    boost::ptr_vector<ImplBtnDlgItem> maItemList;
+    Size                maPageSize;
+    Size                maCtrlSize;
+    long                mnButtonSize;
+    sal_uInt16          mnCurButtonId;
+    sal_uInt16          mnFocusButtonId;
+    bool                mbFormat;
+    Link                maClickHdl;
+
+    SAL_DLLPRIVATE void             ImplInitButtonDialogData();
+    SAL_DLLPRIVATE PushButton*      ImplCreatePushButton( sal_uInt16 nBtnFlags );
+    SAL_DLLPRIVATE ImplBtnDlgItem*  ImplGetItem( sal_uInt16 nId ) const;
+    DECL_DLLPRIVATE_LINK(           ImplClickHdl, PushButton* pBtn );
+    SAL_DLLPRIVATE void             ImplPosControls();
+
 };
 
 #endif // INCLUDED_VCL_BTNDLG_HXX
diff --git a/include/vcl/builder.hxx b/include/vcl/builder.hxx
index 4e62f41..c314134 100644
--- a/include/vcl/builder.hxx
+++ b/include/vcl/builder.hxx
@@ -45,19 +45,89 @@ class VCL_DLLPUBLIC VclBuilder: private boost::noncopyable
 public:
     typedef std::map<OString, OString> stringmap;
     typedef vcl::Window* (*customMakeWidget)(vcl::Window *pParent, stringmap &rVec);
+
+public:
+                    VclBuilder(
+                            vcl::Window *pParent,
+                            const OUString& sUIRootDir,
+                            const OUString& sUIFile,
+                            const OString& sID = OString(),
+                            const css::uno::Reference<css::frame::XFrame> &rFrame = css::uno::Reference<css::frame::XFrame>());
+                    ~VclBuilder();
+
+    //sID must exist and be of type T
+    template <typename T> T* get(T*& ret, const OString& sID);
+
+    //sID may not exist, but must be of type T if it does
+    template <typename T /*= vcl::Window if we had c++11*/> T* get(const OString& sID);
+
+    vcl::Window*    get_widget_root();
+
+    PopupMenu*      get_menu(PopupMenu*& ret, const OString& sID);
+
+    //sID may not exist
+    PopupMenu*      get_menu(const OString& sID);
+
+    //given an sID return the response value for that widget
+    short           get_response(const vcl::Window *pWindow) const;
+
+    OString         get_by_window(const vcl::Window *pWindow) const;
+    void            delete_by_window(const vcl::Window *pWindow);
+
+    //release ownership of pWindow, i.e. don't delete it
+    void            drop_ownership(const vcl::Window *pWindow);
+
+    //apply the properties of rProps to pWindow
+    static void     set_properties(vcl::Window *pWindow, const stringmap &rProps);
+
+    //Convert _ gtk markup to ~ vcl markup
+    static          OString convertMnemonicMarkup(const OString &rIn);
+
+    static OString  extractCustomProperty(stringmap &rMap);
+    static FieldUnit detectUnit(OString const&);
+
+    static bool     extractDropdown(stringmap &rMap);
+
+    //add a default value of 25 width-chars to a map if width-chars not set
+    static void     ensureDefaultWidthChars(VclBuilder::stringmap &rMap);
+
+    //see m_aDeferredProperties, you need this for toplevel dialogs
+    //which build themselves from their ctor. The properties on
+    //the top level are stored in m_aDeferredProperties and need
+    //to be applied post ctor
+    void            setDeferredProperties();
+
+    //Helpers to retrofit all the existing code to the builder
+    static void     reorderWithinParent(std::vector< vcl::Window*>& rChilds, bool bIsButtonBox);
+    static void     reorderWithinParent(vcl::Window &rWindow, sal_uInt16 nNewPosition);
+
+    /// Get label of the command (like of .uno:Save) from the description service
+    static          OUString getCommandLabel(const OUString& rCommand, const css::uno::Reference<css::uno::XComponentContext>& rContext, const OUString& rModuleId);
+
+    /// Get image of the command (like of .uno:Save) from the description service
+    static Image    getCommandImage(
+                        const OUString& rCommand,
+                        bool bLarge,
+                        const css::uno::Reference<css::uno::XComponentContext>& rContext,
+                        const css::uno::Reference<css::frame::XFrame>& rFrame,
+                        const OUString& rModuleId );
+
+    css::uno::Reference<css::frame::XFrame> getFrame() { return m_xFrame; }
+
 private:
     typedef boost::ptr_map<OUString, osl::Module> ModuleMap;
+
     //We store these until the builder is deleted, that way we can use the
     //ui-previewer on custom widgets and guarantee the modules they are from
     //exist for the duration of the dialog
-    ModuleMap m_aModuleMap;
+    ModuleMap       m_aModuleMap;
 
     //If the toplevel window has any properties which need to be set on it,
     //but the toplevel is the owner of the builder, then its ctor
     //has not been completed during the building, so properties for it
     //are collected here and need to be set afterwards, e.g. during
     //Show or Execute
-    stringmap m_aDeferredProperties;
+    stringmap       m_aDeferredProperties;
 
     struct PackingData
     {
@@ -147,19 +217,23 @@ private:
         typedef std::vector<OString> row;
         std::vector<row> m_aEntries;
     };
+
     const ListStore* get_model_by_name(const OString& sID) const;
-    static void mungeModel(ListBox &rTarget, const ListStore &rStore, sal_uInt16 nActiveId);
+    static void     mungeModel(ListBox &rTarget, const ListStore &rStore, sal_uInt16 nActiveId);
 
     typedef stringmap TextBuffer;
-    const TextBuffer* get_buffer_by_name(const OString& sID) const;
-    static void mungeTextBuffer(VclMultiLineEdit &rTarget, const TextBuffer &rTextBuffer);
+    const TextBuffer*
+                    get_buffer_by_name(const OString& sID) const;
+
+    static void     mungeTextBuffer(VclMultiLineEdit &rTarget, const TextBuffer &rTextBuffer);
 
     typedef stringmap Adjustment;
-    const Adjustment *get_adjustment_by_name(const OString& sID) const;
-    static void mungeAdjustment(NumericFormatter &rTarget, const Adjustment &rAdjustment);
-    static void mungeAdjustment(DateField &rTarget, const Adjustment &rAdjustment);
-    static void mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustment);
-    static void mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustment);
+    const Adjustment* get_adjustment_by_name(const OString& sID) const;
+
+    static void     mungeAdjustment(NumericFormatter &rTarget, const Adjustment &rAdjustment);
+    static void     mungeAdjustment(DateField &rTarget, const Adjustment &rAdjustment);
+    static void     mungeAdjustment(TimeField &rTarget, const Adjustment &rAdjustment);
+    static void     mungeAdjustment(ScrollBar &rTarget, const Adjustment &rAdjustment);
 
     typedef std::map<OString, OString> WidgetTranslations;
     typedef std::map<OString, WidgetTranslations> Translations;
@@ -226,175 +300,133 @@ private:
         {}
     };
 
-    void loadTranslations(const LanguageTag &rLanguageTag, const OUString &rUri);
-    OString getTranslation(const OString &rId, const OString &rProperty) const;
+    void        loadTranslations(const LanguageTag &rLanguageTag, const OUString &rUri);
+    OString     getTranslation(const OString &rId, const OString &rProperty) const;
 
-    OString m_sID;
-    OString m_sHelpRoot;
+    OString     m_sID;
+    OString     m_sHelpRoot;
     ResHookProc m_pStringReplace;
     vcl::Window *m_pParent;
-    bool m_bToplevelHasDeferredInit;
-    bool m_bToplevelHasDeferredProperties;
-    bool m_bToplevelParentFound;
+    bool        m_bToplevelHasDeferredInit;
+    bool        m_bToplevelHasDeferredProperties;
+    bool        m_bToplevelParentFound;
     ParserState *m_pParserState;
 
     vcl::Window *get_by_name(const OString& sID);
-    void delete_by_name(const OString& sID);
+    void        delete_by_name(const OString& sID);
 
     class sortIntoBestTabTraversalOrder
         : public std::binary_function<const vcl::Window*, const vcl::Window*, bool>
     {
-        VclBuilder *m_pBuilder;
     public:
-        sortIntoBestTabTraversalOrder(VclBuilder *pBuilder)
-            : m_pBuilder(pBuilder)
-        {
-        }
-        bool operator()(const vcl::Window *pA, const vcl::Window *pB) const;
+                sortIntoBestTabTraversalOrder(VclBuilder *pBuilder)
+                    : m_pBuilder(pBuilder) {}
+
+        bool    operator()(const vcl::Window *pA, const vcl::Window *pB) const;
+
+    private:
+        VclBuilder *m_pBuilder;
     };
 
     /// XFrame to be able to extract labels and other properties of the UNO commands (like of .uno:Bold).
     css::uno::Reference<css::frame::XFrame> m_xFrame;
 
-public:
-    VclBuilder(vcl::Window *pParent, const OUString& sUIRootDir, const OUString& sUIFile,
-            const OString& sID = OString(),
-            const css::uno::Reference<css::frame::XFrame> &rFrame = css::uno::Reference<css::frame::XFrame>());
-    ~VclBuilder();
-    vcl::Window *get_widget_root();
-    //sID must exist and be of type T
-    template <typename T> T* get(T*& ret, const OString& sID)
-    {
-        vcl::Window *w = get_by_name(sID);
-        SAL_WARN_IF(!w, "vcl.layout", "widget \"" << sID.getStr() << "\" not found in .ui");
-        SAL_WARN_IF(!dynamic_cast<T*>(w),
-            "vcl.layout", ".ui widget \"" << sID.getStr() << "\" needs to correspond to vcl type " << typeid(T).name());
-        assert(w && dynamic_cast<T*>(w));
-        ret = static_cast<T*>(w);
-        return ret;
-    }
-    PopupMenu* get_menu(PopupMenu*& ret, const OString& sID)
-    {
-        ret = get_menu(sID);
-        SAL_WARN_IF(!ret, "vcl.layout", "menu \"" << sID.getStr() << "\" not found in .ui");
-        assert(ret);
-        return ret;
-    }
-    //sID may not exist, but must be of type T if it does
-    template <typename T /*= vcl::Window if we had c++11*/> T* get(const OString& sID)
-    {
-        vcl::Window *w = get_by_name(sID);
-        SAL_WARN_IF(w && !dynamic_cast<T*>(w),
-            "vcl.layout", ".ui widget \"" << sID.getStr() << "\" needs to correspond to vcl type " << typeid(T).name());
-        assert(!w || dynamic_cast<T*>(w));
-        return static_cast<T*>(w);
-    }
-    //sID may not exist
-    PopupMenu* get_menu(const OString& sID);
-
-    //given an sID return the response value for that widget
-    short get_response(const vcl::Window *pWindow) const;
-
-    OString get_by_window(const vcl::Window *pWindow) const;
-    void delete_by_window(const vcl::Window *pWindow);
-
-    //release ownership of pWindow, i.e. don't delete it
-    void drop_ownership(const vcl::Window *pWindow);
-
-    //apply the properties of rProps to pWindow
-    static void set_properties(vcl::Window *pWindow, const stringmap &rProps);
-
-    //Convert _ gtk markup to ~ vcl markup
-    static OString convertMnemonicMarkup(const OString &rIn);
-
-    static OString extractCustomProperty(stringmap &rMap);
-    static FieldUnit detectUnit(OString const&);
-
-    static bool extractDropdown(stringmap &rMap);
-
-    //add a default value of 25 width-chars to a map if width-chars not set
-    static void ensureDefaultWidthChars(VclBuilder::stringmap &rMap);
-
-    //see m_aDeferredProperties, you need this for toplevel dialogs
-    //which build themselves from their ctor. The properties on
-    //the top level are stored in m_aDeferredProperties and need
-    //to be applied post ctor
-    void setDeferredProperties();
-
-    //Helpers to retrofit all the existing code to the builder
-    static void reorderWithinParent(std::vector< vcl::Window*>& rChilds, bool bIsButtonBox);
-    static void reorderWithinParent(vcl::Window &rWindow, sal_uInt16 nNewPosition);
-
-    /// Get label of the command (like of .uno:Save) from the description service
-    static OUString getCommandLabel(const OUString& rCommand, const css::uno::Reference<css::uno::XComponentContext>& rContext, const OUString& rModuleId);
-
-    /// Get image of the command (like of .uno:Save) from the description service
-    static Image getCommandImage(const OUString& rCommand, bool bLarge,
-            const css::uno::Reference<css::uno::XComponentContext>& rContext, const css::uno::Reference<css::frame::XFrame>& rFrame,
-            const OUString& rModuleId);
-
-    css::uno::Reference<css::frame::XFrame> getFrame() { return m_xFrame; }
 private:
     vcl::Window *insertObject(vcl::Window *pParent,
-        const OString &rClass, const OString &rID,
-        stringmap &rProps, stringmap &rPangoAttributes,
-        stringmap &rAtkProps, std::vector<OString> &rItems);
+                    const OString &rClass, const OString &rID,
+                    stringmap &rProps, stringmap &rPangoAttributes,
+                    stringmap &rAtkProps, std::vector<OString> &rItems);
 
     vcl::Window *makeObject(vcl::Window *pParent,
-        const OString &rClass, const OString &rID,
-        stringmap &rVec, const std::vector<OString> &rItems);
+                    const OString &rClass, const OString &rID,
+                    stringmap &rVec, const std::vector<OString> &rItems);
 
-    void connectNumericFormatterAdjustment(const OString &id, const OString &rAdjustment);
-    void connectTimeFormatterAdjustment(const OString &id, const OString &rAdjustment);
-    void connectDateFormatterAdjustment(const OString &id, const OString &rAdjustment);
+    void        connectNumericFormatterAdjustment(const OString &id, const OString &rAdjustment);
+    void        connectTimeFormatterAdjustment(const OString &id, const OString &rAdjustment);
+    void        connectDateFormatterAdjustment(const OString &id, const OString &rAdjustment);
 
-    bool extractGroup(const OString &id, stringmap &rVec);
-    bool extractModel(const OString &id, stringmap &rVec);
-    bool extractBuffer(const OString &id, stringmap &rVec);
-    bool extractScrollAdjustment(const OString &id, stringmap &rVec);
-    bool extractButtonImage(const OString &id, stringmap &rMap, bool bRadio);
-    bool extractStock(const OString &id, stringmap &rMap);
-    void extractMnemonicWidget(const OString &id, stringmap &rMap);
+    bool        extractGroup(const OString &id, stringmap &rVec);
+    bool        extractModel(const OString &id, stringmap &rVec);
+    bool        extractBuffer(const OString &id, stringmap &rVec);
+    bool        extractScrollAdjustment(const OString &id, stringmap &rVec);
+    bool        extractButtonImage(const OString &id, stringmap &rMap, bool bRadio);
+    bool        extractStock(const OString &id, stringmap &rMap);
+    void        extractMnemonicWidget(const OString &id, stringmap &rMap);
 
-    void handleTranslations(xmlreader::XmlReader &reader);
+    void        handleTranslations(xmlreader::XmlReader &reader);
 
-    void handleChild(vcl::Window *pParent, xmlreader::XmlReader &reader);
+    void        handleChild(vcl::Window *pParent, xmlreader::XmlReader &reader);
     vcl::Window* handleObject(vcl::Window *pParent, xmlreader::XmlReader &reader);
-    void handlePacking(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader);
-    void applyPackingProperty(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader);
-    void collectProperty(xmlreader::XmlReader &reader, const OString &rID, stringmap &rVec);
-    void collectPangoAttribute(xmlreader::XmlReader &reader, stringmap &rMap);
-    void collectAtkAttribute(xmlreader::XmlReader &reader, stringmap &rMap);
-    void collectAccelerator(xmlreader::XmlReader &reader, stringmap &rMap);
-
-    void insertMenuObject(PopupMenu *pParent, const OString &rClass, const OString &rID,
-        stringmap &rProps, stringmap &rAccels);
-    void handleMenuChild(PopupMenu *pParent, xmlreader::XmlReader &reader);
-    void handleMenuObject(PopupMenu *pParent, xmlreader::XmlReader &reader);
-
-    void handleListStore(xmlreader::XmlReader &reader, const OString &rID);
-    void handleRow(xmlreader::XmlReader &reader, const OString &rID, sal_Int32 nRowIndex);
-    void handleAdjustment(const OString &rID, stringmap &rProperties);
-    void handleTextBuffer(const OString &rID, stringmap &rProperties);
-    void handleTabChild(vcl::Window *pParent, xmlreader::XmlReader &reader);
-    void handleMenu(xmlreader::XmlReader &reader, const OString &rID);
+    void        handlePacking(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader);
+    void        applyPackingProperty(vcl::Window *pCurrent, vcl::Window *pParent, xmlreader::XmlReader &reader);
+    void        collectProperty(xmlreader::XmlReader &reader, const OString &rID, stringmap &rVec);
+    void        collectPangoAttribute(xmlreader::XmlReader &reader, stringmap &rMap);
+    void        collectAtkAttribute(xmlreader::XmlReader &reader, stringmap &rMap);
+    void        collectAccelerator(xmlreader::XmlReader &reader, stringmap &rMap);
+
+    void        insertMenuObject(
+                   PopupMenu *pParent,
+                   const OString &rClass,
+                   const OString &rID,
+                   stringmap &rProps,
+                   stringmap &rAccels);
+
+    void        handleMenuChild(PopupMenu *pParent, xmlreader::XmlReader &reader);
+    void        handleMenuObject(PopupMenu *pParent, xmlreader::XmlReader &reader);
+
+    void        handleListStore(xmlreader::XmlReader &reader, const OString &rID);
+    void        handleRow(xmlreader::XmlReader &reader, const OString &rID, sal_Int32 nRowIndex);
+    void        handleAdjustment(const OString &rID, stringmap &rProperties);
+    void        handleTextBuffer(const OString &rID, stringmap &rProperties);
+    void        handleTabChild(vcl::Window *pParent, xmlreader::XmlReader &reader);
+    void        handleMenu(xmlreader::XmlReader &reader, const OString &rID);
     std::vector<OString> handleItems(xmlreader::XmlReader &reader, const OString &rID);
 
-    void handleSizeGroup(xmlreader::XmlReader &reader, const OString &rID);
+    void        handleSizeGroup(xmlreader::XmlReader &reader, const OString &rID);
 
-    void handleAtkObject(xmlreader::XmlReader &reader, const OString &rID, vcl::Window *pWindow);
+    void        handleAtkObject(xmlreader::XmlReader &reader, const OString &rID, vcl::Window *pWindow);
 
-    void handleActionWidget(xmlreader::XmlReader &reader);
+    void        handleActionWidget(xmlreader::XmlReader &reader);
 
     PackingData get_window_packing_data(const vcl::Window *pWindow) const;
-    void set_window_packing_position(const vcl::Window *pWindow, sal_Int32 nPosition);
+    void        set_window_packing_position(const vcl::Window *pWindow, sal_Int32 nPosition);
 
     vcl::Window* prepareWidgetOwnScrolling(vcl::Window *pParent, WinBits &rWinStyle);
-    void cleanupWidgetOwnScrolling(vcl::Window *pScrollParent, vcl::Window *pWindow, stringmap &rMap);
+    void        cleanupWidgetOwnScrolling(vcl::Window *pScrollParent, vcl::Window *pWindow, stringmap &rMap);
 
-    void set_response(const OString& sID, short nResponse);
+    void        set_response(const OString& sID, short nResponse);
 };
 
+template <typename T>
+inline T* VclBuilder::get(T*& ret, const OString& sID)
+{
+    vcl::Window *w = get_by_name(sID);
+    SAL_WARN_IF(!w, "vcl.layout", "widget \"" << sID.getStr() << "\" not found in .ui");
+    SAL_WARN_IF(!dynamic_cast<T*>(w),
+       "vcl.layout", ".ui widget \"" << sID.getStr() << "\" needs to correspond to vcl type " << typeid(T).name());
+    assert(w && dynamic_cast<T*>(w));
+    ret = static_cast<T*>(w);
+    return ret;
+}
+
+//sID may not exist, but must be of type T if it does
+template <typename T /*= vcl::Window if we had c++11*/>
+inline T* VclBuilder::get(const OString& sID)
+{
+    vcl::Window *w = get_by_name(sID);
+    SAL_WARN_IF(w && !dynamic_cast<T*>(w),
+        "vcl.layout", ".ui widget \"" << sID.getStr() << "\" needs to correspond to vcl type " << typeid(T).name());
+    assert(!w || dynamic_cast<T*>(w));
+    return static_cast<T*>(w);
+}
+
+inline PopupMenu* VclBuilder::get_menu(PopupMenu*& ret, const OString& sID)
+{
+    ret = get_menu(sID);
+    SAL_WARN_IF(!ret, "vcl.layout", "menu \"" << sID.getStr() << "\" not found in .ui");
+    assert(ret);
+    return ret;
+}
 
 //helper baseclass to ease retro fitting dialogs/tabpages that load a resource
 //to load a .ui file instead
@@ -409,14 +441,15 @@ private:
 
 class VCL_DLLPUBLIC VclBuilderContainer
 {
-protected:
-    VclBuilder *m_pUIBuilder;
 public:
-    VclBuilderContainer();
-    virtual ~VclBuilderContainer();
+                    VclBuilderContainer();
+    virtual         ~VclBuilderContainer();
+
     static OUString getUIRootDir();
-    bool hasBuilder() const { return m_pUIBuilder != NULL; }
+    bool            hasBuilder() const { return m_pUIBuilder != NULL; }
+
     css::uno::Reference<css::frame::XFrame> getFrame() { return m_pUIBuilder->getFrame(); }
+
     template <typename T> T* get(T*& ret, const OString& sID)
     {
         return m_pUIBuilder->get<T>(ret, sID);
@@ -439,6 +472,9 @@ public:
             return;
         m_pUIBuilder->setDeferredProperties();
     }
+
+protected:
+    VclBuilder *m_pUIBuilder;
 };
 
 /*
diff --git a/include/vcl/button.hxx b/include/vcl/button.hxx
index 13fd506..614312e 100644
--- a/include/vcl/button.hxx
+++ b/include/vcl/button.hxx
@@ -34,10 +34,6 @@
 class UserDrawEvent;
 class ImplCommonButtonData;
 
-
-// - Button -
-
-
 class VCL_DLLPUBLIC Button : public Control
 {
 private:


More information about the Libreoffice-commits mailing list