You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by st...@apache.org on 2013/02/01 09:46:35 UTC

svn commit: r1441343 [32/35] - in /openoffice/branches/ia2: ./ ext_libraries/apr-util/ ext_libraries/apr/ ext_sources/ extras/l10n/source/ast/ extras/l10n/source/da/ extras/l10n/source/eu/ extras/l10n/source/gd/ extras/l10n/source/ko/ extras/l10n/sourc...

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/fixed.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/fixed.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/fixed.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/fixed.hxx Fri Feb  1 08:46:00 2013
@@ -58,9 +58,9 @@ protected:
                     GetCanonicalTextColor( const StyleSettings& _rStyle ) const;
 
 public:
-                    FixedText( Window* pParent, WinBits nStyle = 0 );
-                    FixedText( Window* pParent, const ResId& rResId );
-                    FixedText( Window* pParent, const ResId& rResId, bool bDisableAccessibleLabelForRelation );
+    explicit        FixedText( Window* pParent, WinBits nStyle = 0 );
+    explicit        FixedText( Window* pParent, const ResId& );
+    explicit        FixedText( Window* pParent, const ResId&, bool bDisableAccessibleLabelForRelation );
 
     virtual void    Paint( const Rectangle& rRect );
     virtual void    Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
@@ -95,8 +95,8 @@ protected:
                     GetCanonicalTextColor( const StyleSettings& _rStyle ) const;
 
 public:
-                    FixedLine( Window* pParent, WinBits nStyle = WB_HORZ );
-                    FixedLine( Window* pParent, const ResId& rResId );
+    explicit        FixedLine( Window* pParent, WinBits nStyle = WB_HORZ );
+    explicit        FixedLine( Window* pParent, const ResId& );
 
     virtual void    Paint( const Rectangle& rRect );
     virtual void    Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
@@ -129,9 +129,9 @@ protected:
     SAL_DLLPRIVATE void    ImplLoadRes( const ResId& rResId );
 
 public:
-                    FixedBitmap( Window* pParent, WinBits nStyle = 0 );
-                    FixedBitmap( Window* pParent, const ResId& rResId );
-                    ~FixedBitmap();
+    explicit        FixedBitmap( Window* pParent, WinBits nStyle = 0 );
+    explicit        FixedBitmap( Window* pParent, const ResId& );
+    virtual         ~FixedBitmap();
 
     virtual void    Paint( const Rectangle& rRect );
     virtual void    Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
@@ -170,9 +170,9 @@ protected:
     SAL_DLLPRIVATE void    ImplLoadRes( const ResId& rResId );
 
 public:
-                    FixedImage( Window* pParent, WinBits nStyle = 0 );
-                    FixedImage( Window* pParent, const ResId& rResId );
-                    ~FixedImage();
+    explicit        FixedImage( Window* pParent, WinBits nStyle = 0 );
+    explicit        FixedImage( Window* pParent, const ResId& );
+    virtual         ~FixedImage();
 
     virtual void    Paint( const Rectangle& rRect );
     virtual void    Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
@@ -193,3 +193,4 @@ public:
 };
 
 #endif  // _SV_FIXED_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/floatwin.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/floatwin.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/floatwin.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/floatwin.hxx Fri Feb  1 08:46:00 2013
@@ -121,9 +121,9 @@ public:
 //#endif
 
 public:
-					FloatingWindow( Window* pParent, WinBits nStyle = WB_STDFLOATWIN );
-					FloatingWindow( Window* pParent, const ResId& rResId );
-					~FloatingWindow();
+	explicit		FloatingWindow( Window* pParent, WinBits nStyle = WB_STDFLOATWIN );
+	explicit		FloatingWindow( Window* pParent, const ResId& );
+	virtual			~FloatingWindow();
 
 	virtual long	Notify( NotifyEvent& rNEvt );
 	virtual void	StateChanged( StateChangedType nType );

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/fontmanager.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/fontmanager.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/fontmanager.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/fontmanager.hxx Fri Feb  1 08:46:00 2013
@@ -290,7 +290,7 @@ class VCL_PLUGIN_PUBLIC PrintFontManager
         std::map< sal_Unicode, sal_Int32 >			m_aEncodingVector;
         std::map< sal_Unicode, rtl::OString >		m_aNonEncoded;
 
-        PrintFont( fonttype::type eType );
+        explicit PrintFont( fonttype::type eType );
         virtual ~PrintFont();
         virtual bool queryMetricPage( int nPage, utl::MultiAtomProvider* pProvider ) = 0;
 

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/group.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/group.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/group.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/group.hxx Fri Feb  1 08:46:00 2013
@@ -50,8 +50,8 @@ private:
                     GetCanonicalTextColor( const StyleSettings& _rStyle ) const;
 
 public:
-                    GroupBox( Window* pParent, WinBits nStyle = 0 );
-                    GroupBox( Window* pParent, const ResId& rResId );
+    explicit        GroupBox( Window* pParent, WinBits nStyle = 0 );
+    explicit        GroupBox( Window* pParent, const ResId& );
 
     virtual void    Paint( const Rectangle& rRect );
     virtual void    Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
@@ -61,3 +61,4 @@ public:
 };
 
 #endif  // _SV_GROUP_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/lstbox.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/lstbox.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/lstbox.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/lstbox.hxx Fri Feb  1 08:46:00 2013
@@ -82,9 +82,9 @@ protected:
     virtual void        FillLayoutData() const;
 
 public:
-					    ListBox( Window* pParent, WinBits nStyle = WB_BORDER );
-                        ListBox( Window* pParent, const ResId& rResId );
-                        ~ListBox();
+	explicit		    ListBox( Window* pParent, WinBits nStyle = WB_BORDER );
+	explicit		    ListBox( Window* pParent, const ResId& );
+    virtual             ~ListBox();
 
 	virtual void	    Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
 	virtual void	    Resize();
@@ -260,8 +260,9 @@ private:
 	sal_uInt16			GetSavedValue();
 
 public:
-					MultiListBox( Window* pParent, WinBits nStyle = 0 );
-					MultiListBox( Window* pParent, const ResId& rResId );
+	explicit		MultiListBox( Window* pParent, WinBits nStyle = 0 );
+	explicit		MultiListBox( Window* pParent, const ResId& );
 };
 
 #endif	// _SV_LSTBOX_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/menu.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/menu.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/menu.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/menu.hxx Fri Feb  1 08:46:00 2013
@@ -104,7 +104,7 @@ struct ImplMenuDelData
 	ImplMenuDelData* mpNext;
 	const Menu* mpMenu;
 
-	ImplMenuDelData( const Menu* pMenu );
+	explicit ImplMenuDelData( const Menu* );
 	~ImplMenuDelData();
 
 	bool isDeleted() const { return mpMenu == 0; }
@@ -203,7 +203,7 @@ public:
     SAL_DLLPRIVATE Menu*            ImplGetStartedFrom() const;
 
 						    Menu();
-                            Menu( sal_Bool bMenuBar );
+    explicit                Menu( sal_Bool bMenuBar );
 	SAL_DLLPRIVATE Window*  ImplGetWindow() const { return pWindow; }
 
     
@@ -422,9 +422,9 @@ class VCL_DLLPUBLIC MenuBar : public Men
 
 public:
 						MenuBar();
-						MenuBar( const ResId& rResId );
+	explicit			MenuBar( const ResId& );
 						MenuBar( const MenuBar& rMenu );
-						~MenuBar();
+	virtual				~MenuBar();
 
 	MenuBar&			operator =( const MenuBar& rMenu );
 
@@ -512,8 +512,8 @@ protected:
 public:
 						PopupMenu();
 						PopupMenu( const PopupMenu& rMenu );
-						PopupMenu( const ResId& rResId );
-						~PopupMenu();
+	explicit			PopupMenu( const ResId& );
+	virtual				~PopupMenu();
 
 	void				SetText( const XubString& rTitle )	{ aTitleText = rTitle; }
 	const XubString&	GetText() const 					{ return aTitleText; }

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/menubtn.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/menubtn.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/menubtn.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/menubtn.hxx Fri Feb  1 08:46:00 2013
@@ -67,9 +67,9 @@ protected:
 	SAL_DLLPRIVATE void    ImplLoadRes( const ResId& rResId );
 
 public:
-					MenuButton( Window* pParent, WinBits nStyle = 0 );
-					MenuButton( Window* pParent, const ResId& rResId );
-					~MenuButton();
+	explicit		MenuButton( Window* pParent, WinBits nStyle = 0 );
+	explicit		MenuButton( Window* pParent, const ResId& );
+	virtual			~MenuButton();
 
 	virtual void	MouseButtonDown( const MouseEvent& rMEvt );
 	virtual void	KeyInput( const KeyEvent& rKEvt );
@@ -92,3 +92,4 @@ public:
 };
 
 #endif	// _SV_MENUBTN_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/metaact.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/metaact.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/metaact.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/metaact.hxx Fri Feb  1 08:46:00 2013
@@ -159,7 +159,7 @@ protected:
 
 public:
 						MetaAction();
-						MetaAction( sal_uInt16 nType );
+	explicit			MetaAction( sal_uInt16 nType );
 
 	virtual void		Execute( OutputDevice* pOut );
 
@@ -221,7 +221,7 @@ private:
 public:
 						DECL_META_ACTION( Point, META_POINT_ACTION )
 
-						MetaPointAction( const Point& rPt );
+	explicit			MetaPointAction( const Point& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -272,7 +272,7 @@ private:
 public:
 						DECL_META_ACTION( Rect, META_RECT_ACTION )
 
-						MetaRectAction( const Rectangle& rRect );
+	explicit			MetaRectAction( const Rectangle& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -323,7 +323,7 @@ private:
 public:
 						DECL_META_ACTION( Ellipse, META_ELLIPSE_ACTION )
 
-						MetaEllipseAction( const Rectangle& rRect );
+	explicit			MetaEllipseAction( const Rectangle& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -431,8 +431,8 @@ private:
 public:
 						DECL_META_ACTION( PolyLine, META_POLYLINE_ACTION )
 
-						MetaPolyLineAction( const Polygon& rPoly );
-						MetaPolyLineAction( const Polygon& rPoly, const LineInfo& rLineInfo );
+	explicit			MetaPolyLineAction( const Polygon& );
+	explicit			MetaPolyLineAction( const Polygon&, const LineInfo& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -456,7 +456,7 @@ private:
 public:
 						DECL_META_ACTION( Polygon, META_POLYGON_ACTION )
 
-						MetaPolygonAction( const Polygon& rPoly );
+	explicit			MetaPolygonAction( const Polygon& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -479,7 +479,7 @@ private:
 public:
 						DECL_META_ACTION( PolyPolygon, META_POLYPOLYGON_ACTION )
 
-						MetaPolyPolygonAction( const PolyPolygon& rPolyPoly );
+	explicit			MetaPolyPolygonAction( const PolyPolygon& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -1065,7 +1065,7 @@ private:
 public:
 						DECL_META_ACTION( ISectRectClipRegion, META_ISECTRECTCLIPREGION_ACTION )
 
-						MetaISectRectClipRegionAction( const Rectangle& rRect );
+	explicit			MetaISectRectClipRegionAction( const Rectangle& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -1088,7 +1088,7 @@ private:
 public:
 						DECL_META_ACTION( ISectRegionClipRegion, META_ISECTREGIONCLIPREGION_ACTION )
 
-						MetaISectRegionClipRegionAction( const Region& rRegion );
+	explicit			MetaISectRegionClipRegionAction( const Region& );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -1179,7 +1179,7 @@ private:
 public:
 						DECL_META_ACTION( TextColor, META_TEXTCOLOR_ACTION )
 
-						MetaTextColorAction( const Color& rColor );
+	explicit			MetaTextColorAction( const Color& );
 
 	const Color&		GetColor() const { return maColor; }
 };
@@ -1265,7 +1265,7 @@ private:
 public:
 						DECL_META_ACTION( TextAlign, META_TEXTALIGN_ACTION )
 
-						MetaTextAlignAction( TextAlign aAlign );
+	explicit			MetaTextAlignAction( TextAlign eAlign );
 
 	TextAlign			GetTextAlign() const { return maAlign; }
 };
@@ -1285,7 +1285,7 @@ private:
 public:
 						DECL_META_ACTION( MapMode, META_MAPMODE_ACTION )
 
-						MetaMapModeAction( const MapMode& rMapMode );
+	explicit			MetaMapModeAction( const MapMode& );
 
 	virtual void		Scale( double fScaleX, double fScaleY );
 
@@ -1307,7 +1307,7 @@ private:
 public:
 						DECL_META_ACTION( Font, META_FONT_ACTION )
 
-						MetaFontAction( const Font& rFont );
+	explicit			MetaFontAction( const Font& );
 
 	virtual void		Scale( double fScaleX, double fScaleY );
 
@@ -1329,7 +1329,7 @@ private:
 public:
 						DECL_META_ACTION( Push, META_PUSH_ACTION )
 
-						MetaPushAction( sal_uInt16 nFlags );
+	explicit			MetaPushAction( sal_uInt16 nFlags );
 
 	sal_uInt16				GetFlags() const { return mnFlags; }
 };
@@ -1360,7 +1360,7 @@ private:
 public:
 						DECL_META_ACTION( RasterOp, META_RASTEROP_ACTION )
 
-						MetaRasterOpAction( RasterOp eRasterOp );
+	explicit			MetaRasterOpAction( RasterOp eRasterOp );
 
 	RasterOp			GetRasterOp() const { return meRasterOp; }
 };
@@ -1489,13 +1489,13 @@ private:
 	virtual	sal_Bool	Compare( const MetaAction& ) const;
 
 protected:
-						~MetaCommentAction();
+	virtual				~MetaCommentAction();
 
 public:
-						MetaCommentAction( sal_Int32 nValue = 0L );
-						MetaCommentAction( const MetaCommentAction& rAct );
-						MetaCommentAction( const ByteString& rComment, sal_Int32 nValue = 0L, const sal_uInt8* pData = NULL, sal_uInt32 nDataSize = 0UL );
-						MetaCommentAction( const sal_uInt8* pData, sal_uInt32 nDataSize );
+	explicit			MetaCommentAction( sal_Int32 nValue = 0L );
+	explicit			MetaCommentAction( const MetaCommentAction& );
+	explicit			MetaCommentAction( const ByteString& rComment, sal_Int32 nValue = 0L, const sal_uInt8* pData = NULL, sal_uInt32 nDataSize = 0UL );
+	explicit			MetaCommentAction( const sal_uInt8* pData, sal_uInt32 nDataSize );
 
 	virtual void		Move( long nHorzMove, long nVertMove );
 	virtual void		Scale( double fScaleX, double fScaleY );
@@ -1525,7 +1525,7 @@ private:
 public:
 						DECL_META_ACTION( LayoutMode, META_LAYOUTMODE_ACTION )
 
-						MetaLayoutModeAction( sal_uInt32 nLayoutMode );
+	explicit			MetaLayoutModeAction( sal_uInt32 nLayoutMode );
 
     sal_uInt32			GetLayoutMode() const { return mnLayoutMode; }
 };
@@ -1544,9 +1544,10 @@ private:
 public:
 						DECL_META_ACTION( TextLanguage, META_TEXTLANGUAGE_ACTION )
 
-						MetaTextLanguageAction( LanguageType );
+	explicit			MetaTextLanguageAction( LanguageType );
 
     LanguageType		GetTextLanguage() const { return meTextLanguage; }
 };
 
 #endif // _SV_METAACT_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/morebtn.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/morebtn.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/morebtn.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/morebtn.hxx Fri Feb  1 08:46:00 2013
@@ -54,9 +54,9 @@ protected:
 	SAL_DLLPRIVATE void	ImplLoadRes( const ResId& rResId );
 
 public:
-                        MoreButton( Window* pParent, WinBits nStyle = 0 );
-                        MoreButton( Window* pParent, const ResId& rResId );
-                        ~MoreButton();
+    explicit            MoreButton( Window* pParent, WinBits nStyle = 0 );
+    explicit            MoreButton( Window* pParent, const ResId& );
+    virtual             ~MoreButton();
 
     void                Click();
 
@@ -89,3 +89,4 @@ inline void MoreButton::SetState( sal_Bo
 }
 
 #endif  // _SV_MOREBTN_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/outdev.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/outdev.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/outdev.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/outdev.hxx Fri Feb  1 08:46:00 2013
@@ -77,6 +77,7 @@ class SalLayout;
 class ImplLayoutArgs;
 class ImplFontAttributes;
 class VirtualDevice;
+struct SalTwoRect;
 
 namespace com {
 namespace sun {
@@ -355,27 +356,29 @@ private:
     Point               maRefPoint;
     sal_uInt16              mnAntialiasing;
     LanguageType        meTextLanguage;
-    mutable sal_Bool       mbMap:1,
-                        mbMapIsDefault:1,
-                        mbClipRegion:1,
-                        mbBackground:1,
-                        mbOutput:1,
-                        mbDevOutput:1,
-                        mbOutputClipped:1,
-                        mbLineColor:1,
-                        mbFillColor:1,
-                        mbInitLineColor:1,
-                        mbInitFillColor:1,
-                        mbInitFont:1,
-                        mbInitTextColor:1,
-                        mbInitClipRegion:1,
-                        mbClipRegionSet:1,
-                        mbKerning:1,
-                        mbNewFont:1,
-                        mbTextLines:1,
-                        mbTextSpecial:1,
-                        mbRefPoint:1,
-                        mbEnableRTL:1;
+
+    /// bitfield
+    mutable bool        mbMap : 1;
+    mutable bool        mbMapIsDefault : 1;
+    mutable bool        mbClipRegion : 1;
+    mutable bool        mbBackground : 1;
+    mutable bool        mbOutput : 1;
+    mutable bool        mbDevOutput : 1;
+    mutable bool        mbOutputClipped : 1;
+    mutable bool        mbLineColor : 1;
+    mutable bool        mbFillColor : 1;
+    mutable bool        mbInitLineColor : 1;
+    mutable bool        mbInitFillColor : 1;
+    mutable bool        mbInitFont : 1;
+    mutable bool        mbInitTextColor : 1;
+    mutable bool        mbInitClipRegion : 1;
+    mutable bool        mbClipRegionSet : 1;
+    mutable bool        mbKerning : 1;
+    mutable bool        mbNewFont : 1;
+    mutable bool        mbTextLines : 1;
+    mutable bool        mbTextSpecial : 1;
+    mutable bool        mbRefPoint : 1;
+    mutable bool        mbEnableRTL : 1;
 
 public:
 	SAL_DLLPRIVATE sal_Int32	ImplGetDPIX() const { return mnDPIX; }
@@ -482,7 +485,7 @@ public:
 	SAL_DLLPRIVATE void			ImplDrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
 	SAL_DLLPRIVATE void			ImplDraw2ColorFrame( const Rectangle& rRect, const Color& rLeftTopColor, const Color& rRightBottomColor );
 
-	SAL_DLLPRIVATE void			ImplDrawOutDevDirect( const OutputDevice* pSrcDev, void* pPosAry );
+	SAL_DLLPRIVATE void			ImplDrawOutDevDirect( const OutputDevice* pSrcDev, SalTwoRect& rPosAry );
 	SAL_DLLPRIVATE void			ImplDrawBitmap( const Point& rDestPt, const Size& rDestSize,
 										const Point& rSrcPtPixel, const Size& rSrcSizePixel,
 										const Bitmap& rBitmap, const sal_uLong nAction );
@@ -772,6 +775,20 @@ public:
                                       const Point& rSrcPtPixel, const Size& rSrcSizePixel,
                                       const BitmapEx& rBitmapEx );
 
+    /** Draw BitampEx transformed
+
+        @param rTransformation
+        The transformation describing the target positioning of the given bitmap. Transforming
+        the unit object coordinates (0, 0, 1, 1) with this matrix is the transformation to
+        discrete coordinates
+
+        @param rBitmapEx
+        The BitmapEx to be painted
+    */
+    void DrawTransformedBitmapEx(
+        const basegfx::B2DHomMatrix& rTransformation,
+        const BitmapEx& rBitmapEx);
+
     void                DrawMask( const Point& rDestPt,
                                   const Bitmap& rBitmap, const Color& rMaskColor );
     void                DrawMask( const Point& rDestPt, const Size& rDestSize,
@@ -820,6 +837,14 @@ public:
     bool                DrawEPS( const Point& rPt, const Size& rSz,
                                  const GfxLink& rGfxLink, GDIMetaFile* pSubst = NULL );
 
+    /// Fill the given rectangle with checkered rectangles of size nLen x nLen using the colors aStart and aEnd
+    void DrawCheckered(
+        const Point& rPos, 
+        const Size& rSize, 
+        sal_uInt32 nLen = 8, 
+        Color aStart = Color(COL_WHITE), 
+        Color aEnd = Color(COL_BLACK));
+
     Color               GetPixel( const Point& rPt ) const;
     Color*              GetPixel( const Polygon& rPts ) const;
 

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/pngread.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/pngread.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/pngread.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/pngread.hxx Fri Feb  1 08:46:00 2013
@@ -44,7 +44,7 @@ namespace vcl
 
 		/* the PNG chunks are read within the c'tor, so the stream will
 		be positioned at the end of the PNG */
-		PNGReader( SvStream& rStm );
+		explicit PNGReader( SvStream& rStm );
 		~PNGReader();
 
         /* an empty preview size hint (=default) will read the whole image

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/pngwrite.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/pngwrite.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/pngwrite.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/pngwrite.hxx Fri Feb  1 08:46:00 2013
@@ -44,7 +44,7 @@ namespace vcl
 
 	public:
 
-		PNGWriter( const BitmapEx& BmpEx,
+		explicit PNGWriter( const BitmapEx&,
 			const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >* pFilterData = NULL );
 		~PNGWriter();
 

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/salbtype.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/salbtype.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/salbtype.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/salbtype.hxx Fri Feb  1 08:46:00 2013
@@ -255,6 +255,7 @@ public:
 	inline void 		SetColorFor24Bit( const BitmapColor& rColor, HPBYTE pPixel ) const;
 
 	inline void 		GetColorFor32Bit( BitmapColor& rColor, ConstHPBYTE pPixel ) const;
+	inline void 		GetColorAndAlphaFor32Bit( BitmapColor& rColor, sal_uInt8& rAlpha, ConstHPBYTE pPixel ) const;
 	inline void 		SetColorFor32Bit( const BitmapColor& rColor, HPBYTE pPixel ) const;
 };
 
@@ -281,8 +282,9 @@ struct VCL_DLLPUBLIC BitmapBuffer
 // - StretchAndConvert -
 // ---------------------
 
-VCL_DLLPUBLIC BitmapBuffer* StretchAndConvert( const BitmapBuffer& rSrcBuffer, const SalTwoRect& rTwoRect, 
-                                               sal_uLong nDstBitmapFormat, BitmapPalette* pDstPal = NULL, ColorMask* pDstMask = NULL );
+VCL_DLLPUBLIC BitmapBuffer* StretchAndConvert( 
+    const BitmapBuffer& rSrcBuffer, const SalTwoRect& rTwoRect, 
+    sal_uLong nDstBitmapFormat, const BitmapPalette* pDstPal = NULL, const ColorMask* pDstMask = NULL );
 
 // ------------------------------------------------------------------
 
@@ -880,6 +882,21 @@ inline void ColorMask::GetColorFor32Bit(
 
 // ------------------------------------------------------------------
 
+inline void ColorMask::GetColorAndAlphaFor32Bit( BitmapColor& rColor, sal_uInt8& rAlpha, ConstHPBYTE pPixel ) const
+{
+#ifdef OSL_BIGENDIAN
+	const sal_uInt32 nVal = (sal_uInt32) pPixel[ 0 ] | ( (sal_uInt32) pPixel[ 1 ] << 8UL ) |
+						( (sal_uInt32) pPixel[ 2 ] << 16UL ) | ( (sal_uInt32) pPixel[ 3 ] << 24UL );
+#else
+	const sal_uInt32 nVal = *(sal_uInt32*) pPixel;
+#endif
+    rAlpha = (sal_uInt8)(nVal >> 24);
+
+	MASK_TO_COLOR( nVal, mnRMask, mnGMask, mnBMask, mnRShift, mnGShift, mnBShift, rColor );
+}
+
+// ------------------------------------------------------------------
+
 inline void ColorMask::SetColorFor32Bit( const BitmapColor& rColor, HPBYTE pPixel ) const
 {
 #ifdef OSL_BIGENDIAN

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/scrbar.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/scrbar.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/scrbar.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/scrbar.hxx Fri Feb  1 08:46:00 2013
@@ -93,9 +93,9 @@ private:
 	DECL_DLLPRIVATE_LINK(       ImplAutoTimerHdl, AutoTimer* );
 
 public:
-                    ScrollBar( Window* pParent, WinBits nStyle = WB_VERT );
-                    ScrollBar( Window* pParent, const ResId& rResId );
-                    ~ScrollBar();
+    explicit        ScrollBar( Window* pParent, WinBits nStyle = WB_VERT );
+    explicit        ScrollBar( Window* pParent, const ResId& );
+    virtual         ~ScrollBar();
 
     virtual void    MouseButtonDown( const MouseEvent& rMEvt );
     virtual void    Tracking( const TrackingEvent& rTEvt );
@@ -156,11 +156,12 @@ private:
     SAL_DLLPRIVATE void ImplInitSettings();
 
 public:
-                    ScrollBarBox( Window* pParent, WinBits nStyle = 0 );
-                    ScrollBarBox( Window* pParent, const ResId& rResId );
+    explicit        ScrollBarBox( Window* pParent, WinBits nStyle = 0 );
+    explicit        ScrollBarBox( Window* pParent, const ResId& );
 
     virtual void    StateChanged( StateChangedType nType );
     virtual void    DataChanged( const DataChangedEvent& rDCEvt );
 };
 
 #endif // _SV_SCRBAR_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/spin.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/spin.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/spin.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/spin.hxx Fri Feb  1 08:46:00 2013
@@ -60,9 +60,9 @@ private:
     DECL_DLLPRIVATE_LINK(     ImplTimeout, Timer* );
 
 public:
-                    SpinButton( Window* pParent, WinBits nStyle = 0 );
-                    SpinButton( Window* pParent, const ResId& rResId );
-                    ~SpinButton();
+    explicit        SpinButton( Window* pParent, WinBits nStyle = 0 );
+    explicit        SpinButton( Window* pParent, const ResId& );
+    virtual         ~SpinButton();
 
     virtual void    Up();
     virtual void    Down();
@@ -111,3 +111,4 @@ private:
 };
 
 #endif  // _SV_SPIN_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/spinfld.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/spinfld.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/spinfld.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/spinfld.hxx Fri Feb  1 08:46:00 2013
@@ -63,7 +63,7 @@ private:
 	SAL_DLLPRIVATE void	  ImplCalcButtonAreas( OutputDevice* pDev, const Size& rOutSz, Rectangle& rDDArea, Rectangle& rSpinUpArea, Rectangle& rSpinDownArea );
 
 protected:
-					SpinField( WindowType nTyp );
+	explicit		SpinField( WindowType nTyp );
 
 	virtual long	Notify( NotifyEvent& rNEvt );
 	virtual void	Command( const CommandEvent& rCEvt );
@@ -73,9 +73,9 @@ protected:
     virtual void    FillLayoutData() const;
     Rectangle *     ImplFindPartRect( const Point& rPt );
 public:
-					SpinField( Window* pParent, WinBits nWinStyle = 0 );
-					SpinField( Window* pParent, const ResId& rResId );
-					~SpinField();
+	explicit		SpinField( Window* pParent, WinBits nWinStyle = 0 );
+	explicit		SpinField( Window* pParent, const ResId& );
+	virtual			~SpinField();
 
 	virtual sal_Bool	ShowDropDown( sal_Bool bShow );
 
@@ -109,3 +109,4 @@ public:
 };
 
 #endif // _SV_SPINFLD_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/split.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/split.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/split.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/split.hxx Fri Feb  1 08:46:00 2013
@@ -70,9 +70,9 @@ protected:
 	SAL_DLLPRIVATE void 	 ImplInit( Window* pParent, WinBits nWinStyle );
 
 public:
-                        Splitter( Window* pParent, WinBits nStyle = WB_VSCROLL );
-                        Splitter( Window* pParent, const ResId& rResId );
-                        ~Splitter();
+    explicit            Splitter( Window* pParent, WinBits nStyle = WB_VSCROLL );
+    explicit            Splitter( Window* pParent, const ResId& );
+    virtual             ~Splitter();
 
     virtual void        StartSplit();
 	virtual void        EndSplit();
@@ -120,3 +120,4 @@ public:
 };
 
 #endif  // _SV_SPLIT_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/svapp.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/svapp.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/svapp.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/svapp.hxx Fri Feb  1 08:46:00 2013
@@ -542,6 +542,7 @@ private:
 
 VCL_DLLPUBLIC bool TestBridgeRegistered();
 VCL_DLLPUBLIC bool IsBridgeRegistered();
+VCL_DLLPUBLIC bool RegAccBridge();
 #endif
 //-----IAccessibility2 Implementation 2009
 #endif // _APP_HXX

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/syschild.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/syschild.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/syschild.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/syschild.hxx Fri Feb  1 08:46:00 2013
@@ -47,11 +47,11 @@ private:
 	SAL_DLLPRIVATE          SystemChildWindow & operator= (const SystemChildWindow &);
 
 public:
-							SystemChildWindow( Window* pParent, WinBits nStyle = 0 );
+	explicit				SystemChildWindow( Window* pParent, WinBits nStyle = 0 );
                             // create a SystemChildWindow using the given SystemWindowData
-							SystemChildWindow( Window* pParent, WinBits nStyle, SystemWindowData *pData, sal_Bool bShow = sal_True );
-							SystemChildWindow( Window* pParent, const ResId& rResId );
-							~SystemChildWindow();
+	explicit				SystemChildWindow( Window* pParent, WinBits nStyle, SystemWindowData* pData, sal_Bool bShow = sal_True );
+	explicit				SystemChildWindow( Window* pParent, const ResId& );
+	virtual					~SystemChildWindow();
 
 	const SystemEnvData*	GetSystemData() const;
 

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/tabpage.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/tabpage.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/tabpage.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/tabpage.hxx Fri Feb  1 08:46:00 2013
@@ -40,8 +40,8 @@ private:
 	SAL_DLLPRIVATE void	ImplInitSettings();
 
 public:
-					TabPage( Window* pParent, WinBits nStyle = 0 );
-					TabPage( Window* pParent, const ResId& rResId );
+	explicit		TabPage( Window* pParent, WinBits nStyle = 0 );
+	explicit		TabPage( Window* pParent, const ResId& );
 
     virtual void    Paint( const Rectangle& rRect );
     virtual void    Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, sal_uLong nFlags );
@@ -56,3 +56,4 @@ public:
 };
 
 #endif	// _SV_TABPAGE_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/virdev.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/virdev.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/virdev.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/virdev.hxx Fri Feb  1 08:46:00 2013
@@ -68,8 +68,8 @@ private:
     SAL_DLLPRIVATE bool ForceZeroExtleadBug() const
         { return ((meRefDevMode & REFDEV_FORCE_ZERO_EXTLEAD) != 0); }
 public:
-						VirtualDevice( sal_uInt16 nBitCount = 0 );
-						VirtualDevice( const OutputDevice& rCompDev,
+	explicit			VirtualDevice( sal_uInt16 nBitCount = 0 );
+	explicit			VirtualDevice( const OutputDevice& rCompDev,
 									   sal_uInt16 nBitCount = 0 );
     /** Create a virtual device with alpha channel
 
@@ -94,7 +94,7 @@ public:
         Any rendering will happen directly on the context and not on any intermediate bitmap.
         Note: This might not be suported on all platforms !
     */
-						VirtualDevice( const SystemGraphicsData *pData, sal_uInt16 nBitCount );
+	explicit			VirtualDevice( const SystemGraphicsData *pData, sal_uInt16 nBitCount );
 
 	virtual 			~VirtualDevice();
 
@@ -123,3 +123,4 @@ private:
 };
 
 #endif // _SV_VIRDEV_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/wall.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/wall.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/wall.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/wall.hxx Fri Feb  1 08:46:00 2013
@@ -97,7 +97,7 @@ public:
 					Wallpaper();
 					Wallpaper( const Wallpaper& rWallpaper );
 					Wallpaper( const Color& rColor );
-					Wallpaper( const BitmapEx& rBmpEx );
+					explicit Wallpaper( const BitmapEx& rBmpEx );
 					Wallpaper( const Gradient& rGradient );
 					~Wallpaper();
 

Modified: openoffice/branches/ia2/main/vcl/inc/vcl/wrkwin.hxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/vcl/wrkwin.hxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/vcl/wrkwin.hxx (original)
+++ openoffice/branches/ia2/main/vcl/inc/vcl/wrkwin.hxx Fri Feb  1 08:46:00 2013
@@ -67,11 +67,11 @@ protected:
     SAL_DLLPRIVATE void ImplSetFrameState( sal_uLong aFrameState );
 
 public:
-                    WorkWindow( Window* pParent, const ResId& rResId );
-                    WorkWindow( Window* pParent, WinBits nStyle = WB_STDWORK );
-                    WorkWindow( Window* pParent, const ::com::sun::star::uno::Any& aSystemWorkWindowToken, WinBits nStyle = WB_STDWORK );
-                    WorkWindow( SystemParentData* pParent ); // Not in the REMOTE-Version
-                    ~WorkWindow();
+    explicit        WorkWindow( Window* pParent, const ResId& );
+    explicit        WorkWindow( Window* pParent, WinBits nStyle = WB_STDWORK );
+    explicit        WorkWindow( Window* pParent, const ::com::sun::star::uno::Any& aSystemWorkWindowToken, WinBits nStyle = WB_STDWORK );
+    explicit        WorkWindow( SystemParentData* pParent ); // Not in the REMOTE-Version
+    virtual         ~WorkWindow();
 
     virtual sal_Bool    Close();
 
@@ -102,3 +102,4 @@ public:
 };
 
 #endif // _SV_WRKWIN_HXX
+

Modified: openoffice/branches/ia2/main/vcl/inc/win/salbmp.h
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/win/salbmp.h?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/win/salbmp.h (original)
+++ openoffice/branches/ia2/main/vcl/inc/win/salbmp.h Fri Feb  1 08:46:00 2013
@@ -27,6 +27,7 @@
 #include <tools/gen.hxx>
 #include <win/wincomp.hxx>
 #include <salbmp.hxx>
+#include <boost/shared_ptr.hpp>
 
 // --------------
 // - SalBitmap	-
@@ -36,24 +37,38 @@ struct	BitmapBuffer;
 class	BitmapColor;
 class	BitmapPalette;
 class	SalGraphics;
+namespace Gdiplus { class Bitmap; }
+typedef boost::shared_ptr< Gdiplus::Bitmap > GdiPlusBmpPtr;
 
 class WinSalBitmap : public SalBitmap
 {
 private:
+    friend class GdiPlusBuffer; // allow buffer to remove maGdiPlusBitmap eventually
 
 	Size				maSize;
 	HGLOBAL 			mhDIB;
 	HBITMAP 			mhDDB;
-	sal_uInt16				mnBitCount;
+
+    // the buffered evtl. used Gdiplus::Bitmap instance. It is managed by
+    // GdiPlusBuffer. To make this safe, it is only handed out as shared
+    // pointer; the GdiPlusBuffer may delete the local instance
+    GdiPlusBmpPtr       maGdiPlusBitmap;
+
+    sal_uInt16			mnBitCount;
+
+    Gdiplus::Bitmap* ImplCreateGdiPlusBitmap(const WinSalBitmap& rAlphaSource);
+    Gdiplus::Bitmap* ImplCreateGdiPlusBitmap();
 
 public:
 
 	HGLOBAL 			ImplGethDIB() const { return mhDIB; }
 	HBITMAP 			ImplGethDDB() const { return mhDDB; }
+    
+    GdiPlusBmpPtr ImplGetGdiPlusBitmap(const WinSalBitmap* pAlphaSource = 0) const;
 
 	static HGLOBAL		ImplCreateDIB( const Size& rSize, sal_uInt16 nBitCount, const BitmapPalette& rPal );
 	static HANDLE		ImplCopyDIBOrDDB( HANDLE hHdl, bool bDIB );
-	static sal_uInt16		ImplGetDIBColorCount( HGLOBAL hDIB );
+	static sal_uInt16	ImplGetDIBColorCount( HGLOBAL hDIB );
 	static void 		ImplDecodeRLEBuffer( const BYTE* pSrcBuf, BYTE* pDstBuf,
 											 const Size& rSizePixel, bool bRLE4 );
 

Modified: openoffice/branches/ia2/main/vcl/inc/win/salgdi.h
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/win/salgdi.h?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/win/salgdi.h (original)
+++ openoffice/branches/ia2/main/vcl/inc/win/salgdi.h Fri Feb  1 08:46:00 2013
@@ -128,8 +128,14 @@ public:
 
 class WinSalGraphics : public SalGraphics
 {
+private:
+	HDC 					mhLocalDC;				// HDC
+
+public:
+    HDC getHDC() { return mhLocalDC; }
+    void setHDC(HDC aNew) { mhLocalDC = aNew; }
+
 public:
-	HDC 					mhDC;				// HDC
 	HWND					mhWnd;				// Window-Handle, when Window-Graphics
 	HFONT					mhFonts[ MAX_FALLBACK ];        // Font + Fallbacks
     const ImplWinFontData*  mpWinFontData[ MAX_FALLBACK ];  // pointer to the most recent font face
@@ -155,15 +161,17 @@ public:
 	KERNINGPAIR*			mpFontKernPairs;	// Kerning Pairs of the current Font
 	sal_uIntPtr					mnFontKernPairCount;// Number of Kerning Pairs of the current Font
 	int 					mnPenWidth; 		// Linienbreite
-	sal_Bool					mbStockPen; 		// is Pen a stockpen
-	sal_Bool					mbStockBrush;		// is Brush a stcokbrush
-	sal_Bool					mbPen;				// is Pen (FALSE == NULL_PEN)
-	sal_Bool					mbBrush;			// is Brush (FALSE == NULL_BRUSH)
-	sal_Bool					mbPrinter;			// is Printer
-	sal_Bool					mbVirDev;			// is VirDev
-	sal_Bool					mbWindow;			// is Window
-	sal_Bool					mbScreen;			// is Screen compatible
-	bool					mbXORMode;			// _every_ output with RasterOp XOR
+
+    /// bitfield
+    bool                    mbStockPen : 1; 		// is Pen a stockpen
+	bool                    mbStockBrush : 1;		// is Brush a stcokbrush
+	bool                    mbPen : 1;				// is Pen (FALSE == NULL_PEN)
+	bool                    mbBrush : 1;			// is Brush (FALSE == NULL_BRUSH)
+	bool                    mbPrinter : 1;			// is Printer
+	bool                    mbVirDev : 1;			// is VirDev
+	bool                    mbWindow : 1;			// is Window
+	bool                    mbScreen : 1;			// is Screen compatible
+	bool					mbXORMode : 1;			// _every_ output with RasterOp XOR
 
     // remember RGB values for SetLineColor/SetFillColor
     SalColor                maLineColor;
@@ -202,15 +210,15 @@ protected:
 
     // CopyBits and DrawBitmap --> RasterOp and ClipRegion
     // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics
-    virtual void		copyBits( const SalTwoRect* pPosAry, SalGraphics* pSrcGraphics );
-    virtual void		drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap );
-    virtual void		drawBitmap( const SalTwoRect* pPosAry,
+    virtual void		copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics );
+    virtual void		drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap );
+    virtual void		drawBitmap( const SalTwoRect& rPosAry,
                                     const SalBitmap& rSalBitmap,
                                     SalColor nTransparentColor );
-    virtual void		drawBitmap( const SalTwoRect* pPosAry,
+    virtual void		drawBitmap( const SalTwoRect& rPosAry,
                                     const SalBitmap& rSalBitmap,
                                     const SalBitmap& rTransparentBitmap );
-    virtual void		drawMask( const SalTwoRect* pPosAry,
+    virtual void		drawMask( const SalTwoRect& rPosAry,
                                   const SalBitmap& rSalBitmap,
                                   SalColor nMaskColor );
 
@@ -239,8 +247,18 @@ protected:
     virtual bool		drawAlphaBitmap( const SalTwoRect&,
                                          const SalBitmap& rSourceBitmap,
                                          const SalBitmap& rAlphaBitmap );
+    virtual bool drawTransformedBitmap(
+        const basegfx::B2DPoint& rNull,
+        const basegfx::B2DPoint& rX,
+        const basegfx::B2DPoint& rY,
+        const SalBitmap& rSourceBitmap,
+        const SalBitmap* pAlphaBitmap);
     virtual bool		drawAlphaRect( long nX, long nY, long nWidth, long nHeight, sal_uInt8 nTransparency );
 
+private:
+    // local helpers
+    bool tryDrawBitmapGdiPlus(const SalTwoRect& rTR, const SalBitmap& rSrcBitmap);
+
 public:
     // public SalGraphics methods, the interface to teh independent vcl part
 

Modified: openoffice/branches/ia2/main/vcl/inc/win/salvd.h
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/inc/win/salvd.h?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/inc/win/salvd.h (original)
+++ openoffice/branches/ia2/main/vcl/inc/win/salvd.h Fri Feb  1 08:46:00 2013
@@ -34,8 +34,14 @@ class WinSalGraphics;
 
 class WinSalVirtualDevice : public SalVirtualDevice
 {
+private:
+	HDC 					mhLocalDC;				// HDC or 0 for Cache Device
+
+public:
+    HDC getHDC() { return mhLocalDC; }
+    void setHDC(HDC aNew) { mhLocalDC = aNew; }
+
 public:
-	HDC 					mhDC;					// HDC or 0 for Cache Device
 	HBITMAP 				mhBmp;					// Memory Bitmap
 	HBITMAP 				mhDefBmp;				// Default Bitmap
 	WinSalGraphics*			mpGraphics; 			// current VirDev graphics

Modified: openoffice/branches/ia2/main/vcl/os2/source/gdi/salgdi2.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/os2/source/gdi/salgdi2.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/os2/source/gdi/salgdi2.cxx (original)
+++ openoffice/branches/ia2/main/vcl/os2/source/gdi/salgdi2.cxx Fri Feb  1 08:46:00 2013
@@ -51,7 +51,7 @@ bool Os2SalGraphics::supportsOperation( 
 }
 
 
-void Os2SalGraphics::copyBits( const SalTwoRect* pPosAry, SalGraphics* pSrcGraphics )
+void Os2SalGraphics::copyBits( const SalTwoRect& rPosAry, SalGraphics* pSrcGraphics )
 {
 	HPS 	hSrcPS;
 	POINTL	thePoints[4];
@@ -71,22 +71,22 @@ void Os2SalGraphics::copyBits( const Sal
 	}
 
 	// lower-left corner of target
-	thePoints[0].x = pPosAry->mnDestX;
-	thePoints[0].y = TY( pPosAry->mnDestY + pPosAry->mnDestHeight - 1 );
+	thePoints[0].x = rPosAry.mnDestX;
+	thePoints[0].y = TY( rPosAry.mnDestY + rPosAry.mnDestHeight - 1 );
 
 	// upper-right corner of target
-	thePoints[1].x = pPosAry->mnDestX + pPosAry->mnDestWidth;
-	thePoints[1].y = TY( pPosAry->mnDestY - 1 );
+	thePoints[1].x = rPosAry.mnDestX + rPosAry.mnDestWidth;
+	thePoints[1].y = TY( rPosAry.mnDestY - 1 );
 
 	// lower-left corner of source
-	thePoints[2].x = pPosAry->mnSrcX;
-	thePoints[2].y = nSrcHeight - ( pPosAry->mnSrcY + pPosAry->mnSrcHeight );
+	thePoints[2].x = rPosAry.mnSrcX;
+	thePoints[2].y = nSrcHeight - ( rPosAry.mnSrcY + rPosAry.mnSrcHeight );
 
-	if ( ( pPosAry->mnDestWidth != pPosAry->mnSrcWidth ) || ( pPosAry->mnDestHeight != pPosAry->mnSrcHeight ) )
+	if ( ( rPosAry.mnDestWidth != rPosAry.mnSrcWidth ) || ( rPosAry.mnDestHeight != rPosAry.mnSrcHeight ) )
 	{
 		// upper-right corner of Source
-		thePoints[3].x = pPosAry->mnSrcX + pPosAry->mnSrcWidth;
-		thePoints[3].y = nSrcHeight - pPosAry->mnSrcY + pPosAry->mnSrcHeight;
+		thePoints[3].x = rPosAry.mnSrcX + rPosAry.mnSrcWidth;
+		thePoints[3].y = nSrcHeight - rPosAry.mnSrcY + rPosAry.mnSrcHeight;
 
 		GpiBitBlt( mhPS, hSrcPS, 4, thePoints,
 				   mbXORMode ? ROP_SRCINVERT : ROP_SRCCOPY, BBO_IGNORE );
@@ -275,7 +275,7 @@ void Os2SalGraphics::copyArea( long nDes
 // -----------------------------------------------------------------------
 
 void ImplDrawBitmap( HPS hPS, long nScreenHeight,
-					 const SalTwoRect* pPosAry, const Os2SalBitmap& rSalBitmap,
+					 const SalTwoRect& rPosAry, const Os2SalBitmap& rSalBitmap,
 					 PM_BOOL bPrinter, int nDrawMode )
 {
 	if( hPS )
@@ -305,15 +305,15 @@ void ImplDrawBitmap( HPS hPS, long nScre
 			long				nInfoSize = *(ULONG*) pBI + rSalBitmap.ImplGetDIBColorCount( hDrawDIB ) * sizeof( RGB2 );
 			PM_BYTE*				pBits = (PM_BYTE*) pBI + nInfoSize;
 
-			pts[0].x = pPosAry->mnDestX;
-			pts[0].y = nScreenHeight - pPosAry->mnDestY - pPosAry->mnDestHeight;
-			pts[1].x = pPosAry->mnDestX + pPosAry->mnDestWidth - 1;
-			pts[1].y = nScreenHeight - pPosAry->mnDestY - 1;
-
-			pts[2].x = pPosAry->mnSrcX;
-			pts[2].y = nHeight - ( pPosAry->mnSrcY + pPosAry->mnSrcHeight );
-			pts[3].x = pPosAry->mnSrcX + pPosAry->mnSrcWidth;
-			pts[3].y = nHeight - pPosAry->mnSrcY;
+			pts[0].x = rPosAry.mnDestX;
+			pts[0].y = nScreenHeight - rPosAry.mnDestY - rPosAry.mnDestHeight;
+			pts[1].x = rPosAry.mnDestX + rPosAry.mnDestWidth - 1;
+			pts[1].y = nScreenHeight - rPosAry.mnDestY - 1;
+
+			pts[2].x = rPosAry.mnSrcX;
+			pts[2].y = nHeight - ( rPosAry.mnSrcY + rPosAry.mnSrcHeight );
+			pts[3].x = rPosAry.mnSrcX + rPosAry.mnSrcWidth;
+			pts[3].y = nHeight - rPosAry.mnSrcY;
 
 			// if we've got a 1Bit DIB, we create a 4Bit substitute
 			if( ( pBIH->cBitCount == 1 ) && !hSubst )
@@ -400,15 +400,15 @@ void ImplDrawBitmap( HPS hPS, long nScre
 		{
 			POINTL pts[ 4 ];
 
-			pts[0].x = pPosAry->mnDestX;
-			pts[0].y = nScreenHeight - pPosAry->mnDestY - pPosAry->mnDestHeight;
-			pts[1].x = pPosAry->mnDestX + pPosAry->mnDestWidth - 1;
-			pts[1].y = nScreenHeight - pPosAry->mnDestY - 1;
-
-			pts[2].x = pPosAry->mnSrcX;
-			pts[2].y = rSalBitmap.GetSize().Height() - ( pPosAry->mnSrcY + pPosAry->mnSrcHeight );
-			pts[3].x = pPosAry->mnSrcX + pPosAry->mnSrcWidth;
-			pts[3].y = rSalBitmap.GetSize().Height() - pPosAry->mnSrcY;
+			pts[0].x = rPosAry.mnDestX;
+			pts[0].y = nScreenHeight - rPosAry.mnDestY - rPosAry.mnDestHeight;
+			pts[1].x = rPosAry.mnDestX + rPosAry.mnDestWidth - 1;
+			pts[1].y = nScreenHeight - rPosAry.mnDestY - 1;
+
+			pts[2].x = rPosAry.mnSrcX;
+			pts[2].y = rSalBitmap.GetSize().Height() - ( rPosAry.mnSrcY + rPosAry.mnSrcHeight );
+			pts[3].x = rPosAry.mnSrcX + rPosAry.mnSrcWidth;
+			pts[3].y = rSalBitmap.GetSize().Height() - rPosAry.mnSrcY;
 
 			GpiWCBitBlt( hPS, hDrawDDB, 4L, pts, nDrawMode, BBO_IGNORE );
 /*
@@ -425,30 +425,29 @@ void ImplDrawBitmap( HPS hPS, long nScre
 
 // -----------------------------------------------------------------------
 
-void Os2SalGraphics::drawBitmap( const SalTwoRect* pPosAry,
-							  const SalBitmap& rSalBitmap )
+void Os2SalGraphics::drawBitmap( const SalTwoRect& rPosAry, const SalBitmap& rSalBitmap )
 {
 	ImplDrawBitmap( mhPS, mnHeight,
-					pPosAry, static_cast<const Os2SalBitmap&>(rSalBitmap),
+					rPosAry, static_cast<const Os2SalBitmap&>(rSalBitmap),
 					mbPrinter,
 					mbXORMode ? ROP_SRCINVERT : ROP_SRCCOPY );
 }
 
 // -----------------------------------------------------------------------
 
-void Os2SalGraphics::drawBitmap( const SalTwoRect* pPosAry,
+void Os2SalGraphics::drawBitmap( const SalTwoRect& rPosAry,
 							  const SalBitmap& rSalBitmap,
 							  SalColor nTransparentColor )
 {
 	DBG_ASSERT( !mbPrinter, "No transparency print possible!" );
     //const Os2SalBitmap& rSalBitmap = static_cast<const Os2SalBitmap&>(rSSalBitmap);
 	// an FM: kann erst einmal unberuecksichtigt bleiben
-	drawBitmap( pPosAry, rSalBitmap );
+	drawBitmap( rPosAry, rSalBitmap );
 }
 
 // -----------------------------------------------------------------------
 
-void Os2SalGraphics::drawBitmap( const SalTwoRect* pPosAry,
+void Os2SalGraphics::drawBitmap( const SalTwoRect& rPosAry,
 							  const SalBitmap& rSSalBitmap,
 							  const SalBitmap& rSTransparentBitmap )
 {
@@ -459,12 +458,12 @@ void Os2SalGraphics::drawBitmap( const S
 	
 	if( bFastTransparent )
 	{
-		ImplDrawBitmap( mhPS, mnHeight, pPosAry, rTransparentBitmap, FALSE, ROP_SRCAND );
-		ImplDrawBitmap( mhPS, mnHeight, pPosAry, rSalBitmap, FALSE, ROP_SRCPAINT );
+		ImplDrawBitmap( mhPS, mnHeight, rPosAry, rTransparentBitmap, FALSE, ROP_SRCAND );
+		ImplDrawBitmap( mhPS, mnHeight, rPosAry, rSalBitmap, FALSE, ROP_SRCPAINT );
 	}
 	else
 	{
-		SalTwoRect		aPosAry = *pPosAry;
+		SalTwoRect		aPosAry = rPosAry;
 		int 			nDstX = (int) aPosAry.mnDestX;
 		int 			nDstY = (int) aPosAry.mnDestY;
 		int 			nDstWidth = (int) aPosAry.mnDestWidth;
@@ -497,13 +496,13 @@ void Os2SalGraphics::drawBitmap( const S
 		aPtL[ 2 ].y = TY( nDstY + nDstHeight - 1 );
 
 		GpiBitBlt( hMemPS, hPS, 3, aPtL, ROP_SRCCOPY, BBO_IGNORE );
-		ImplDrawBitmap( hMaskPS, nDstHeight, &aPosAry, rTransparentBitmap, FALSE, ROP_SRCCOPY );
+		ImplDrawBitmap( hMaskPS, nDstHeight, aPosAry, rTransparentBitmap, FALSE, ROP_SRCCOPY );
 
 		aPtL[ 2 ].x = 0;
 		aPtL[ 2 ].y = 0;
 
 		GpiBitBlt( hMemPS, hMaskPS, 3, aPtL, ROP_SRCAND, BBO_IGNORE );
-		ImplDrawBitmap( hMaskPS, nDstHeight, &aPosAry, rSalBitmap, FALSE, ROP_SRCERASE );
+		ImplDrawBitmap( hMaskPS, nDstHeight, aPosAry, rSalBitmap, FALSE, ROP_SRCERASE );
 		GpiBitBlt( hMemPS, hMaskPS, 3, aPtL, ROP_SRCPAINT, BBO_IGNORE );
 
 		aPtL[ 0 ].x = nDstX;
@@ -542,6 +541,20 @@ bool Os2SalGraphics::drawAlphaBitmap( co
 
 // -----------------------------------------------------------------------
 
+bool Os2SalGraphics::drawTransformedBitmap(
+    const basegfx::B2DPoint& rNull,
+    const basegfx::B2DPoint& rX,
+    const basegfx::B2DPoint& rY,
+    const SalBitmap& rSourceBitmap,
+    const SalBitmap* pAlphaBitmap)
+{
+    // here direct support for transformed bitmaps can be impemented
+    (void)rNull; (void)rX; (void)rY; (void)rSourceBitmap; (void)pAlphaBitmap;
+    return false;
+}
+
+// -----------------------------------------------------------------------
+
 bool Os2SalGraphics::drawAlphaRect( long nX, long nY, long nWidth, 
                                     long nHeight, sal_uInt8 nTransparency )
 {
@@ -551,7 +564,7 @@ bool Os2SalGraphics::drawAlphaRect( long
 
 // -----------------------------------------------------------------------
 
-void Os2SalGraphics::drawMask( const SalTwoRect* pPosAry,
+void Os2SalGraphics::drawMask( const SalTwoRect& rPosAry,
 							const SalBitmap& rSSalBitmap,
 							SalColor nMaskColor )
 {
@@ -559,7 +572,7 @@ void Os2SalGraphics::drawMask( const Sal
 	
     const Os2SalBitmap& rSalBitmap = static_cast<const Os2SalBitmap&>(rSSalBitmap);
 
-	SalTwoRect	aPosAry = *pPosAry;
+	SalTwoRect	aPosAry = rPosAry;
 	HPS 		hPS = mhPS;
 	IMAGEBUNDLE aBundle, aOldBundle;
 	AREABUNDLE	aAreaBundle, aOldAreaBundle;
@@ -582,7 +595,7 @@ void Os2SalGraphics::drawMask( const Sal
 	Ft2SetAttrs( hPS, PRIM_AREA, ABB_COLOR | ABB_BACK_COLOR | ABB_SYMBOL |
 				 ABB_MIX_MODE | ABB_BACK_MIX_MODE, 0, &aAreaBundle );
 
-	ImplDrawBitmap( hPS, mnHeight, &aPosAry, rSalBitmap, FALSE, 0x00B8L );
+	ImplDrawBitmap( hPS, mnHeight, aPosAry, rSalBitmap, FALSE, 0x00B8L );
 
 	Ft2SetAttrs( hPS, PRIM_IMAGE, IBB_COLOR | IBB_BACK_COLOR, 0, &aOldBundle );
 	Ft2SetAttrs( hPS, PRIM_AREA, ABB_COLOR | ABB_BACK_COLOR | ABB_SYMBOL |

Modified: openoffice/branches/ia2/main/vcl/source/app/settings.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/app/settings.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/app/settings.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/app/settings.cxx Fri Feb  1 08:46:00 2013
@@ -1167,7 +1167,7 @@ sal_Bool MiscSettings::GetEnableATToolSu
         HKEY hkey;
 
         if( ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,
-            "Software\\OpenOffice.org\\Accessibility\\AtToolSupport",
+            "Software\\Aapche OpenOffice\\Accessibility\\AtToolSupport",
             &hkey) )
         {
             DWORD dwType;
@@ -1245,7 +1245,7 @@ void MiscSettings::SetEnableATToolSuppor
 
         // If the accessibility key in the Windows registry exists, change it synchronously
 		if( ERROR_SUCCESS == RegOpenKey(HKEY_CURRENT_USER,
-			"Software\\OpenOffice.org\\Accessibility\\AtToolSupport",
+			"Software\\Apache OpenOffice\\Accessibility\\AtToolSupport",
 			&hkey) )
 		{
 			DWORD dwType;

Modified: openoffice/branches/ia2/main/vcl/source/app/svapp.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/app/svapp.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/app/svapp.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/app/svapp.cxx Fri Feb  1 08:46:00 2013
@@ -77,6 +77,10 @@
 
 #include <utility>
 
+#ifdef WNT
+#include <tchar.h>
+#endif
+
 using namespace ::com::sun::star::uno;
 
 // keycodes handled internally by VCL
@@ -2065,7 +2069,7 @@ sal_Bool InitAccessBridge( sal_Bool bSho
 #else
 
 	// Checking TestBridgeRegistered() && HasAtHook() was introduced with IBM's IA2 CWS.
-	if(TestBridgeRegistered() /* && HasAtHook() */ )
+	if(TestBridgeRegistered() && HasAtHook() )
 	{
 	    bRet = ImplInitAccessBridge( bShowCancel, rCancelled );
 	    
@@ -2180,5 +2184,242 @@ bool IsBridgeRegistered()
 	return ImplGetSVData()->maAppData.m_mbIsBridgeRegistered;;
 }
 
+namespace uacc
+{
+
+//#define BASIS_LINK _T("\\basis-link")
+
+TCHAR * filename(TCHAR * path) {
+    TCHAR * f = path;
+    for (TCHAR * p = path;;) {
+        switch (*p++) {
+        case L'\0':
+            return f;
+        case L'\\':
+            f = p;
+            break;
+        }
+    }
+}
+
+TCHAR * buildPath(
+    TCHAR * path, TCHAR const * frontBegin, TCHAR const * frontEnd,
+    TCHAR const * backBegin, std::size_t backLength)
+{
+    // Remove leading ".." segments in the second path together with matching
+    // segments in the first path that are neither empty nor "." nor ".." nor
+    // end in ":" (which is not foolprove, as it can erroneously erase the start
+    // of a UNC path, but only if the input is bad data):
+    while (backLength >= 2 && backBegin[0] == L'.' && backBegin[1] == L'.' &&
+           (backLength == 2 || backBegin[2] == L'\\'))
+    {
+        if (frontEnd - frontBegin < 2 || frontEnd[-1] != L'\\' ||
+            frontEnd[-2] == L'\\' || frontEnd[-2] == L':' ||
+            (frontEnd[-2] == L'.' &&
+             (frontEnd - frontBegin < 3 || frontEnd[-3] == L'\\' ||
+              (frontEnd[-3] == L'.' &&
+               (frontEnd - frontBegin < 4 || frontEnd[-4] == L'\\')))))
+        {
+            break;
+        }
+        TCHAR const * p = frontEnd - 1;
+        while (p != frontBegin && p[-1] != L'\\') {
+            --p;
+        }
+        if (p == frontBegin) {
+            break;
+        }
+        frontEnd = p;
+        if (backLength == 2) {
+            backBegin += 2;
+            backLength -= 2;
+        } else {
+            backBegin += 3;
+            backLength -= 3;
+        }
+    }
+    if (backLength <
+        static_cast< std::size_t >(MAX_PATH - (frontEnd - frontBegin)))
+        // hopefully std::size_t is large enough
+    {
+        TCHAR * p;
+        if (frontBegin == path) {
+            p = const_cast< TCHAR * >(frontEnd);
+        } else {
+            p = path;
+            while (frontBegin != frontEnd) {
+                *p++ = *frontBegin++;
+            }
+        }
+        for (; backLength > 0; --backLength) {
+            *p++ = *backBegin++;
+        }
+        *p = L'\0';
+        return p;
+    } else {
+        SetLastError(ERROR_FILENAME_EXCED_RANGE);
+        return NULL;
+    }
+}
+
+TCHAR * resolveLink(TCHAR * path) {
+    HANDLE h = CreateFile(
+        path, FILE_READ_DATA, FILE_SHARE_READ, NULL, OPEN_EXISTING, 0, NULL);
+    if (h == INVALID_HANDLE_VALUE) {
+        return NULL;
+    }
+    char p1[MAX_PATH];
+    DWORD n;
+    BOOL ok = ReadFile(h, p1, MAX_PATH, &n, NULL);
+    CloseHandle(h);
+    if (!ok) {
+        return NULL;
+    }
+    TCHAR p2[MAX_PATH];
+    std::size_t n2 = 0;
+    bool colon = false;
+    for (DWORD i = 0; i < n;) {
+        unsigned char c = static_cast< unsigned char >(p1[i++]);
+        switch (c) {
+        case '\0':
+            SetLastError(ERROR_BAD_PATHNAME);
+            return NULL;
+        case '\x0A':
+        case '\x0D':
+            if (n2 == MAX_PATH) {
+                SetLastError(ERROR_FILENAME_EXCED_RANGE);
+                return NULL;
+            }
+            p2[n2] = L'\0';
+            break;
+        case ':':
+            colon = true;
+            // fall through
+        default:
+            // Convert from UTF-8 to UTF-16:
+            if (c <= 0x7F) {
+                p2[n2++] = c;
+            } else if (c >= 0xC2 && c <= 0xDF && i < n &&
+                       static_cast< unsigned char >(p1[i]) >= 0x80 &&
+                       static_cast< unsigned char >(p1[i]) <= 0xBF)
+            {
+                p2[n2++] = ((c & 0x1F) << 6) |
+                    (static_cast< unsigned char >(p1[i++]) & 0x3F);
+            } else if (n - i > 1 &&
+                       ((c == 0xE0 &&
+                         static_cast< unsigned char >(p1[i]) >= 0xA0 &&
+                         static_cast< unsigned char >(p1[i]) <= 0xBF) ||
+                        ((c >= 0xE1 && c <= 0xEC || c >= 0xEE && c <= 0xEF) &&
+                         static_cast< unsigned char >(p1[i]) >= 0x80 &&
+                         static_cast< unsigned char >(p1[i]) <= 0xBF) ||
+                        (c == 0xED &&
+                         static_cast< unsigned char >(p1[i]) >= 0x80 &&
+                         static_cast< unsigned char >(p1[i]) <= 0x9F)) &&
+                       static_cast< unsigned char >(p1[i + 1]) >= 0x80 &&
+                       static_cast< unsigned char >(p1[i + 1]) <= 0xBF)
+            {
+                p2[n2++] = ((c & 0x0F) << 12) |
+                    ((static_cast< unsigned char >(p1[i]) & 0x3F) << 6) |
+                    (static_cast< unsigned char >(p1[i + 1]) & 0x3F);
+                i += 2;
+            } else if (n - 2 > 1 &&
+                       ((c == 0xF0 &&
+                         static_cast< unsigned char >(p1[i]) >= 0x90 &&
+                         static_cast< unsigned char >(p1[i]) <= 0xBF) ||
+                        (c >= 0xF1 && c <= 0xF3 &&
+                         static_cast< unsigned char >(p1[i]) >= 0x80 &&
+                         static_cast< unsigned char >(p1[i]) <= 0xBF) ||
+                        (c == 0xF4 &&
+                         static_cast< unsigned char >(p1[i]) >= 0x80 &&
+                         static_cast< unsigned char >(p1[i]) <= 0x8F)) &&
+                       static_cast< unsigned char >(p1[i + 1]) >= 0x80 &&
+                       static_cast< unsigned char >(p1[i + 1]) <= 0xBF &&
+                       static_cast< unsigned char >(p1[i + 2]) >= 0x80 &&
+                       static_cast< unsigned char >(p1[i + 2]) <= 0xBF)
+            {
+                sal_Int32 u = ((c & 0x07) << 18) |
+                    ((static_cast< unsigned char >(p1[i]) & 0x3F) << 12) |
+                    ((static_cast< unsigned char >(p1[i + 1]) & 0x3F) << 6) |
+                    (static_cast< unsigned char >(p1[i + 2]) & 0x3F);
+                i += 3;
+                p2[n2++] = static_cast< TCHAR >(((u - 0x10000) >> 10) | 0xD800);
+                p2[n2++] = static_cast< TCHAR >(
+                    ((u - 0x10000) & 0x3FF) | 0xDC00);
+            } else {
+                SetLastError(ERROR_BAD_PATHNAME);
+                return NULL;
+            }
+            break;
+        }
+    }
+    TCHAR * end;
+    if (colon || p2[0] == L'\\') {
+        // Interpret p2 as an absolute path:
+        end = path;
+    } else {
+        // Interpret p2 as a relative path:
+        end = filename(path);
+    }
+    return buildPath(path, path, end, p2, n2);
+}
+
+/* If the path does not end with '\' the las segment will be removed.
+    path: C:\a\b
+    ->    C:\a
+    @param io_path
+        in/out parameter. The string is not reallocated. Simply a '\0'
+        will be inserted to shorten the string.
+*/
+void oneDirUp(LPTSTR io_path)
+{
+    TCHAR * pEnd = io_path + lstrlen(io_path) - 1;
+    while (pEnd > io_path //prevent crashing if provided string does not contain a backslash
+        && *pEnd != L'\\')
+        pEnd --;
+    *pEnd = L'\0';
+}
+
+}
+
+bool RegAccBridge()
+{
+	bool bResult = false;
+
+	TCHAR szbasisPath[1024];
+	::GetCurrentDirectory(1024,szbasisPath);
+	uacc::oneDirUp(szbasisPath);	
+	//lstrcat(szbasisPath, BASIS_LINK);
+	/*if (!uacc::resolveLink(szbasisPath))
+		return bResult;*/
+	LPTSTR pszDllPath = szbasisPath;
+	lstrcat(pszDllPath, _T("\\program\\UAccCOM.dll"));
+	HMODULE hMod=::LoadLibraryEx(pszDllPath, NULL, LOAD_WITH_ALTERED_SEARCH_PATH);
+	if(hMod==NULL)
+		return bResult;
+
+	// Initialize OLE.
+	HRESULT hResult = ::OleInitialize(NULL);
+	if(hResult != S_OK && hResult != S_FALSE)
+	{
+		::OleUninitialize();
+		::FreeLibrary(hMod);
+		return bResult;
+	}
+
+	typedef HRESULT (STDAPICALLTYPE *DLLREGISTERSERVER)(void);
+	BOOL bRet=FALSE;
+	DLLREGISTERSERVER DllRegisterSrverFunc=(DLLREGISTERSERVER)::GetProcAddress(hMod,"DllRegisterServer");
+	if(DllRegisterSrverFunc == NULL)
+	{
+		::OleUninitialize();
+		FreeLibrary(hMod);
+		return bResult;
+	}
+	bResult=(S_OK == DllRegisterSrverFunc());
+	::OleUninitialize();
+	FreeLibrary(hMod);
+	return bResult;
+}
+
 #endif
 //-----IAccessibility2 Implementation 2009

Modified: openoffice/branches/ia2/main/vcl/source/app/svdata.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/app/svdata.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/app/svdata.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/app/svdata.cxx Fri Feb  1 08:46:00 2013
@@ -689,7 +689,7 @@ bool ImplInitAccessBridge(sal_Bool bAllo
 
 // -----------------------------------------------------------------------
 
-Window* ImplFindWindow( const SalFrame* pFrame, Point& rSalFramePos )
+Window* ImplFindWindow( const SalFrame* pFrame, ::Point& rSalFramePos )
 {
     ImplSVData* pSVData = ImplGetSVData();
     Window*     pFrameWindow = pSVData->maWinData.mpFirstFrame;

Modified: openoffice/branches/ia2/main/vcl/source/control/imgctrl.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/control/imgctrl.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/control/imgctrl.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/control/imgctrl.cxx Fri Feb  1 08:46:00 2013
@@ -36,7 +36,7 @@ namespace ImageScaleMode = ::com::sun::s
 
 ImageControl::ImageControl( Window* pParent, WinBits nStyle )
     :FixedImage( pParent, nStyle )
-    ,mnScaleMode( ImageScaleMode::Anisotropic )
+    ,mnScaleMode( ImageScaleMode::ANISOTROPIC )
 {
 }
 
@@ -44,7 +44,7 @@ ImageControl::ImageControl( Window* pPar
 
 ImageControl::ImageControl( Window* pParent, const ResId& rResId )
     :FixedImage( pParent, rResId )
-    ,mnScaleMode( ImageScaleMode::Anisotropic )
+    ,mnScaleMode( ImageScaleMode::ANISOTROPIC )
 {
 }
 
@@ -128,13 +128,13 @@ void ImageControl::ImplDraw( OutputDevic
 
     switch ( mnScaleMode )
     {
-    case ImageScaleMode::None:
+    case ImageScaleMode::NONE:
     {
 	    rDev.DrawImage( lcl_centerWithin( aDrawRect, rBitmapSize ), *pImage, nStyle );
     }
     break;
 
-    case ImageScaleMode::Isotropic:
+    case ImageScaleMode::ISOTROPIC:
     {
         const Size aPaintSize = lcl_calcPaintSize( aDrawRect, rBitmapSize );
 	    rDev.DrawImage(
@@ -144,7 +144,7 @@ void ImageControl::ImplDraw( OutputDevic
     }
     break;
 
-    case ImageScaleMode::Anisotropic:
+    case ImageScaleMode::ANISOTROPIC:
     {
 	    rDev.DrawImage(
             aDrawRect.TopLeft(),

Modified: openoffice/branches/ia2/main/vcl/source/control/throbber.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/control/throbber.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/control/throbber.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/control/throbber.cxx Fri Feb  1 08:46:00 2013
@@ -59,7 +59,7 @@ Throbber::Throbber( Window* i_parentWind
     maWaitTimer.SetTimeout( mnStepTime );
     maWaitTimer.SetTimeoutHdl( LINK( this, Throbber, TimeOutHdl ) );
 
-    SetScaleMode( ImageScaleMode::None );
+    SetScaleMode( ImageScaleMode::NONE );
     initImages();
 }
 
@@ -75,7 +75,7 @@ Throbber::Throbber( Window* i_parentWind
     maWaitTimer.SetTimeout( mnStepTime );
     maWaitTimer.SetTimeoutHdl( LINK( this, Throbber, TimeOutHdl ) );
 
-    SetScaleMode( ImageScaleMode::None );
+    SetScaleMode( ImageScaleMode::NONE );
     initImages();
 }
 

Modified: openoffice/branches/ia2/main/vcl/source/gdi/animate.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/gdi/animate.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/gdi/animate.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/gdi/animate.cxx Fri Feb  1 08:46:00 2013
@@ -32,6 +32,8 @@
 #include <vcl/virdev.hxx>
 #include <vcl/window.hxx>
 #include <impanmvw.hxx>
+#include <vcl/dibtools.hxx>
+
 DBG_NAME( Animation )
 
 // -----------
@@ -830,9 +832,9 @@ SvStream& operator<<( SvStream& rOStm, c
 		// Falls keine BitmapEx gesetzt wurde, schreiben wir
 		// einfach die erste Bitmap der Animation
 		if( !rAnimation.GetBitmapEx().GetBitmap() )
-			rOStm << rAnimation.Get( 0 ).aBmpEx;
+			WriteDIBBitmapEx(rAnimation.Get( 0 ).aBmpEx, rOStm);
 		else
-			rOStm << rAnimation.GetBitmapEx();
+			WriteDIBBitmapEx(rAnimation.GetBitmapEx(), rOStm);
 
 		// Kennung schreiben ( SDANIMA1 )
 		rOStm << (sal_uInt32) 0x5344414e << (sal_uInt32) 0x494d4931;
@@ -843,7 +845,7 @@ SvStream& operator<<( SvStream& rOStm, c
 			const sal_uInt16			nRest = nCount - i - 1;
 
 			// AnimationBitmap schreiben
-			rOStm << rAnimBmp.aBmpEx;
+			WriteDIBBitmapEx(rAnimBmp.aBmpEx, rOStm);
 			rOStm << rAnimBmp.aPosPix;
 			rOStm << rAnimBmp.aSizePix;
 			rOStm << rAnimation.maGlobalSize;
@@ -886,7 +888,7 @@ SvStream& operator>>( SvStream& rIStm, A
 	else
 	{
 		rIStm.Seek( nStmPos );
-		rIStm >> rAnimation.maBitmapEx;
+        ReadDIBBitmapEx(rAnimation.maBitmapEx, rIStm);
 		nStmPos = rIStm.Tell();
 		rIStm >> nAnimMagic1 >> nAnimMagic2;
 
@@ -908,7 +910,7 @@ SvStream& operator>>( SvStream& rIStm, A
 
 		do
 		{
-			rIStm >> aAnimBmp.aBmpEx;
+            ReadDIBBitmapEx(aAnimBmp.aBmpEx, rIStm);
 			rIStm >> aAnimBmp.aPosPix;
 			rIStm >> aAnimBmp.aSizePix;
 			rIStm >> rAnimation.maGlobalSize;

Modified: openoffice/branches/ia2/main/vcl/source/gdi/bitmapex.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/gdi/bitmapex.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/gdi/bitmapex.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/gdi/bitmapex.cxx Fri Feb  1 08:46:00 2013
@@ -19,19 +19,14 @@
  * 
  *************************************************************/
 
-
-
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_vcl.hxx"
 
 #include <ctype.h>
-
 #include <rtl/crc.h>
-
 #include <tools/stream.hxx>
 #include <tools/debug.hxx>
 #include <tools/rc.h>
-
 #include <vcl/salbtype.hxx>
 #include <vcl/outdev.hxx>
 #include <vcl/alpha.hxx>
@@ -39,9 +34,10 @@
 #include <vcl/pngread.hxx>
 #include <vcl/svapp.hxx>
 #include <vcl/bmpacc.hxx>
-
+#include <vcl/dibtools.hxx>
 #include <image.h>
 #include <impimagetree.hxx>
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
 
 // ------------
 // - BitmapEx -
@@ -839,84 +835,370 @@ sal_uInt8 BitmapEx::GetTransparency(sal_
 
 // ------------------------------------------------------------------
 
-SvStream& operator<<( SvStream& rOStm, const BitmapEx& rBitmapEx )
+namespace
 {
-	rBitmapEx.aBitmap.Write( rOStm );
+	void impSmoothPoint(BitmapColor& rValue, const basegfx::B2DPoint& rSource, sal_Int32 nIntX, sal_Int32 nIntY, BitmapReadAccess& rRead)
+	{
+		double fDeltaX(rSource.getX() - nIntX);
+		double fDeltaY(rSource.getY() - nIntY);
+		sal_Int32 nIndX(0L);
+		sal_Int32 nIndY(0L);
 
-	rOStm << (sal_uInt32) 0x25091962;
-	rOStm << (sal_uInt32) 0xACB20201;
-	rOStm << (sal_uInt8) rBitmapEx.eTransparent;
+		if(fDeltaX > 0.0 && nIntX + 1L < rRead.Width())
+		{
+			nIndX++;
+		}
+		else if(fDeltaX < 0.0 && nIntX >= 1L)
+		{
+			fDeltaX = -fDeltaX;
+			nIndX--;
+		}
+			
+		if(fDeltaY > 0.0 && nIntY + 1L < rRead.Height())
+		{
+			nIndY++;
+		}
+		else if(fDeltaY < 0.0 && nIntY >= 1L)
+		{
+			fDeltaY = -fDeltaY;
+			nIndY--;
+		}
 
-	if( rBitmapEx.eTransparent == TRANSPARENT_BITMAP )
-		rBitmapEx.aMask.Write( rOStm );
-	else if( rBitmapEx.eTransparent == TRANSPARENT_COLOR )
-		rOStm << rBitmapEx.aTransparentColor;
+		if(nIndX || nIndY)
+		{
+			const double fColorToReal(1.0 / 255.0);
+			double fR(rValue.GetRed() * fColorToReal);
+			double fG(rValue.GetGreen() * fColorToReal);
+			double fB(rValue.GetBlue() * fColorToReal);
+			double fRBottom(0.0), fGBottom(0.0), fBBottom(0.0);
+
+			if(nIndX)
+			{
+				const double fMulA(fDeltaX * fColorToReal);
+				double fMulB(1.0 - fDeltaX);
+				const BitmapColor aTopPartner(rRead.GetColor(nIntY, nIntX + nIndX));
+
+				fR = (fR * fMulB) + (aTopPartner.GetRed() * fMulA);
+				fG = (fG * fMulB) + (aTopPartner.GetGreen() * fMulA);
+				fB = (fB * fMulB) + (aTopPartner.GetBlue() * fMulA);
+
+				if(nIndY)
+				{
+					fMulB *= fColorToReal;
+					const BitmapColor aBottom(rRead.GetColor(nIntY + nIndY, nIntX));
+					const BitmapColor aBottomPartner(rRead.GetColor(nIntY + nIndY, nIntX + nIndX));
+
+					fRBottom = (aBottom.GetRed() * fMulB) + (aBottomPartner.GetRed() * fMulA);
+					fGBottom = (aBottom.GetGreen() * fMulB) + (aBottomPartner.GetGreen() * fMulA);
+					fBBottom = (aBottom.GetBlue() * fMulB) + (aBottomPartner.GetBlue() * fMulA);
+				}
+			}
+
+			if(nIndY)
+			{
+				if(!nIndX)
+				{
+					const BitmapColor aBottom(rRead.GetColor(nIntY + nIndY, nIntX));
+						
+					fRBottom = aBottom.GetRed() * fColorToReal;
+					fGBottom = aBottom.GetGreen() * fColorToReal;
+					fBBottom = aBottom.GetBlue() * fColorToReal;
+				}
+
+				const double fMulB(1.0 - fDeltaY);
+					
+				fR = (fR * fMulB) + (fRBottom * fDeltaY);
+				fG = (fG * fMulB) + (fGBottom * fDeltaY);
+				fB = (fB * fMulB) + (fBBottom * fDeltaY);
+			}
+
+			rValue.SetRed((sal_uInt8)(fR * 255.0));
+			rValue.SetGreen((sal_uInt8)(fG * 255.0));
+			rValue.SetBlue((sal_uInt8)(fB * 255.0));
+		}
+	}
 
-	return rOStm;
+	Bitmap impTransformBitmap(
+        const Bitmap& rSource, 
+        const Size aDestinationSize, 
+        const basegfx::B2DHomMatrix& rTransform, 
+        bool bSmooth)
+	{
+        Bitmap aDestination(aDestinationSize, 24);
+        BitmapWriteAccess* pWrite = aDestination.AcquireWriteAccess();
+
+		if(pWrite)
+		{
+			const Size aContentSizePixel(rSource.GetSizePixel());
+			BitmapReadAccess* pRead = (const_cast< Bitmap& >(rSource)).AcquireReadAccess();
+
+			if(pRead)
+			{
+				const Size aDestinationSizePixel(aDestination.GetSizePixel());
+				bool bWorkWithIndex(rSource.GetBitCount() <= 8);
+				BitmapColor aOutside(BitmapColor(0xff, 0xff, 0xff));
+
+				for(sal_Int32 y(0L); y < aDestinationSizePixel.getHeight(); y++)
+				{
+					for(sal_Int32 x(0L); x < aDestinationSizePixel.getWidth(); x++)
+					{
+						const basegfx::B2DPoint aSourceCoor(rTransform * basegfx::B2DPoint(x, y));
+						const sal_Int32 nIntX(basegfx::fround(aSourceCoor.getX()));
+
+						if(nIntX >= 0L && nIntX < aContentSizePixel.getWidth())
+						{
+							const sal_Int32 nIntY(basegfx::fround(aSourceCoor.getY()));
+
+							if(nIntY >= 0L && nIntY < aContentSizePixel.getHeight())
+							{
+                                // inside pixel
+                                BitmapColor aValue;
+
+                                if(bWorkWithIndex)
+                                {
+                                    aValue = pRead->GetPaletteColor(pRead->GetPixelIndex(nIntY, nIntX));
+                                }
+                                else
+                                {
+                                    aValue = pRead->GetPixel(nIntY, nIntX);
+                                }
+
+                                if(bSmooth)
+                                {
+                                    impSmoothPoint(aValue, aSourceCoor, nIntX, nIntY, *pRead);
+                                }
+
+                                pWrite->SetPixel(y, x, aValue);
+                                continue;
+							}
+						}
+
+						// here are outside pixels. Complete mask
+						if(bWorkWithIndex)
+						{
+							pWrite->SetPixel(y, x, aOutside);
+						}
+					}
+				}
+
+				delete pRead;
+			}
+
+			delete pWrite;
+		}
+
+        rSource.AdaptBitCount(aDestination);
+
+        return aDestination;
+	}
+} // end of anonymous namespace
+BitmapEx BitmapEx::TransformBitmapEx(
+    double fWidth,
+    double fHeight,
+    const basegfx::B2DHomMatrix& rTransformation) const
+{
+    if(fWidth <= 1 || fHeight <= 1)
+        return BitmapEx();
+
+    // force destination to 24 bit, we want to smooth output
+    const Size aDestinationSize(basegfx::fround(fWidth), basegfx::fround(fHeight));
+    static bool bDoSmoothAtAll(true);
+    const Bitmap aDestination(impTransformBitmap(GetBitmap(), aDestinationSize, rTransformation, bDoSmoothAtAll));
+
+    // create mask
+    if(IsTransparent())
+    {
+        if(IsAlpha())
+        {
+            const Bitmap aAlpha(impTransformBitmap(GetAlpha().GetBitmap(), aDestinationSize, rTransformation, bDoSmoothAtAll));
+            return BitmapEx(aDestination, AlphaMask(aAlpha));
+        }
+        else
+        {
+            const Bitmap aMask(impTransformBitmap(GetMask(), aDestinationSize, rTransformation, false));
+            return BitmapEx(aDestination, aMask);
+        }
+    }
+    
+    return BitmapEx(aDestination);
 }
 
 // ------------------------------------------------------------------
 
-SvStream& operator>>( SvStream& rIStm, BitmapEx& rBitmapEx )
+BitmapEx BitmapEx::getTransformed(
+    const basegfx::B2DHomMatrix& rTransformation, 
+    double fMaximumArea) const
 {
-	Bitmap aBmp;
+    BitmapEx aRetval;
 
-	rIStm >> aBmp;
+    if(IsEmpty())
+        return aRetval;
 
-	if( !rIStm.GetError() )
-	{
-		const sal_uLong nStmPos = rIStm.Tell();
-		sal_uInt32		nMagic1 = 0;
-		sal_uInt32		nMagic2 = 0;
+    const sal_uInt32 nSourceWidth(GetSizePixel().Width());
+    const sal_uInt32 nSourceHeight(GetSizePixel().Height());
 
-		rIStm >> nMagic1 >> nMagic2;
+    if(!nSourceWidth || !nSourceHeight)
+        return aRetval;
 
-		if( ( nMagic1 != 0x25091962 ) || ( nMagic2 != 0xACB20201 ) || rIStm.GetError() )
-		{
-			rIStm.ResetError();
-			rIStm.Seek( nStmPos );
-			rBitmapEx = aBmp;
-		}
-		else
-		{
-			sal_uInt8 bTransparent = false;
+    // Get dest range
+    basegfx::B2DRange aOutlineRange(0.0, 0.0, 1.0, 1.0);
+    aOutlineRange.transform(rTransformation);
 
-			rIStm >> bTransparent;
+    // get target size
+    double fWidth(aOutlineRange.getWidth());
+    double fHeight(aOutlineRange.getHeight());
 
-			if( bTransparent == (sal_uInt8) TRANSPARENT_BITMAP )
-			{
-				Bitmap aMask;
+    if(fWidth < 1.0 || fHeight < 1.0)
+        return aRetval;
+
+    // test if discrete size (pixel) maybe too big and limit it
+    const double fArea(fWidth * fHeight);
+    const bool bNeedToReduce(fArea > fMaximumArea);
+    double fReduceFactor(1.0);
+
+    if(bNeedToReduce)
+    {
+        fReduceFactor = sqrt(fMaximumArea / fArea);
+        fWidth *= fReduceFactor;
+        fHeight *= fReduceFactor;
+    }
 
-				rIStm >> aMask;
+    // Build complete transform from source pixels to target pixels. 
+    // Start by scaling from source pixel size to unit coordinates
+    basegfx::B2DHomMatrix aTransform(
+        basegfx::tools::createScaleB2DHomMatrix(
+            1.0 / nSourceWidth, 
+            1.0 / nSourceHeight));
+
+    // multiply with given transform which leads from unit coordinates inside
+    // aOutlineRange
+    aTransform = rTransformation * aTransform;
+    
+    // substract top-left of aOutlineRange
+    aTransform.translate(-aOutlineRange.getMinX(), -aOutlineRange.getMinY());
 
-				if( !!aMask)
+    // scale to target pixels (if needed)
+    if(bNeedToReduce)
+    {
+        aTransform.scale(fReduceFactor, fReduceFactor);
+    }
+
+    // invert to get transformation from target pixel coordiates to source pixels
+    aTransform.invert();
+
+    // create bitmap using source, destination and linear back-transformation
+    aRetval = TransformBitmapEx(fWidth, fHeight, aTransform);
+
+    return aRetval;
+}
+
+// ------------------------------------------------------------------
+
+BitmapEx BitmapEx::ModifyBitmapEx(const basegfx::BColorModifierStack& rBColorModifierStack) const
+{
+	Bitmap aChangedBitmap(GetBitmap());
+	bool bDone(false);
+
+	for(sal_uInt32 a(rBColorModifierStack.count()); a && !bDone; )
+	{
+		const basegfx::BColorModifier& rModifier = rBColorModifierStack.getBColorModifier(--a);
+			
+		switch(rModifier.getMode())
+		{
+			case basegfx::BCOLORMODIFYMODE_REPLACE :
+			{
+				// complete replace
+				if(IsTransparent())
 				{
-					// do we have an alpha mask?
-					if( ( 8 == aMask.GetBitCount() ) && aMask.HasGreyPalette() )
-					{
-						AlphaMask aAlpha;
+					// clear bitmap with dest color
+				    if(aChangedBitmap.GetBitCount() <= 8)
+				    {
+                        // do NOT use erase; for e.g. 8bit Bitmaps, the nearest color to the given
+                        // erase color is determined and used -> this may be different from what is
+                        // wanted here. Better create a new bitmap with the needed color explicitely
+                		BitmapReadAccess* pReadAccess = aChangedBitmap.AcquireReadAccess();
+                        OSL_ENSURE(pReadAccess, "Got no Bitmap ReadAccess ?!?");
 
-						// create alpha mask quickly (without greyscale conversion)
-						aAlpha.ImplSetBitmap( aMask );
-						rBitmapEx = BitmapEx( aBmp, aAlpha );
-					}
-					else
-						rBitmapEx = BitmapEx( aBmp, aMask );
+                        if(pReadAccess)
+                        {
+    					    BitmapPalette aNewPalette(pReadAccess->GetPalette());
+                            aNewPalette[0] = BitmapColor(Color(rModifier.getBColor()));
+	    				    aChangedBitmap = Bitmap(
+                                aChangedBitmap.GetSizePixel(), 
+                                aChangedBitmap.GetBitCount(), 
+                                &aNewPalette);
+                            delete pReadAccess;
+                        }
+				    }
+				    else
+				    {
+						aChangedBitmap.Erase(Color(rModifier.getBColor()));
+                    }
 				}
 				else
-					rBitmapEx = aBmp;
+				{
+					// erase bitmap, caller will know to paint direct
+					aChangedBitmap.SetEmpty();
+				}
+					
+				bDone = true;
+				break;
 			}
-			else if( bTransparent == (sal_uInt8) TRANSPARENT_COLOR )
+
+			default : // BCOLORMODIFYMODE_INTERPOLATE, BCOLORMODIFYMODE_GRAY, BCOLORMODIFYMODE_BLACKANDWHITE
 			{
-				Color aTransparentColor;
+				BitmapWriteAccess* pContent = aChangedBitmap.AcquireWriteAccess();
+
+				if(pContent)
+				{
+					const double fConvertColor(1.0 / 255.0);
 
-				rIStm >> aTransparentColor;
-				rBitmapEx = BitmapEx( aBmp, aTransparentColor );
+					for(sal_uInt32 y(0L); y < (sal_uInt32)pContent->Height(); y++)
+					{
+						for(sal_uInt32 x(0L); x < (sal_uInt32)pContent->Width(); x++)
+						{
+							const BitmapColor aBMCol(pContent->GetColor(y, x));
+							const basegfx::BColor aBSource(
+								(double)aBMCol.GetRed() * fConvertColor, 
+								(double)aBMCol.GetGreen() * fConvertColor, 
+								(double)aBMCol.GetBlue() * fConvertColor);
+							const basegfx::BColor aBDest(rModifier.getModifiedColor(aBSource));
+								
+							pContent->SetPixel(y, x, BitmapColor(Color(aBDest)));
+						}
+					}
+
+					delete pContent;
+				}
+					
+				break;
 			}
-			else
-				rBitmapEx = aBmp;
 		}
 	}
 
-	return rIStm;
+	if(aChangedBitmap.IsEmpty())
+	{
+		return BitmapEx();
+	}
+	else
+	{
+		if(IsTransparent())
+		{
+			if(IsAlpha())
+			{
+				return BitmapEx(aChangedBitmap, GetAlpha());
+			}
+			else
+			{
+				return BitmapEx(aChangedBitmap, GetMask());
+			}
+		}
+		else
+		{
+			return BitmapEx(aChangedBitmap);
+		}
+	}
 }
+
+// ------------------------------------------------------------------
+// eof

Modified: openoffice/branches/ia2/main/vcl/source/gdi/bmpacc2.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/gdi/bmpacc2.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/gdi/bmpacc2.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/gdi/bmpacc2.cxx Fri Feb  1 08:46:00 2013
@@ -315,7 +315,7 @@ IMPL_FORMAT_SETPIXEL_NOMASK( _32BIT_TC_R
 IMPL_FORMAT_GETPIXEL( _32BIT_TC_MASK )
 {
 	BitmapColor aColor;
-	rMask.GetColorFor32Bit( aColor, pScanline + ( nX << 2UL ) );
+    rMask.GetColorFor32Bit( aColor, pScanline + ( nX << 2UL ) );
 	return aColor;
 }
 

Modified: openoffice/branches/ia2/main/vcl/source/gdi/bmpconv.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/gdi/bmpconv.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/gdi/bmpconv.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/gdi/bmpconv.cxx Fri Feb  1 08:46:00 2013
@@ -19,8 +19,6 @@
  * 
  *************************************************************/
 
-
-
 // MARKER(update_precomp.py): autogen include statement, do not remove
 #include "precompiled_vcl.hxx"
 
@@ -32,7 +30,7 @@
 #include "com/sun/star/script/XInvocation.hpp"
 #include "com/sun/star/awt/XBitmap.hpp"
 #include "cppuhelper/compbase1.hxx"
-
+#include <vcl/dibtools.hxx>
 
 using namespace com::sun::star::uno;
 using namespace com::sun::star::script;
@@ -149,7 +147,9 @@ Any SAL_CALL BmpConverter::invoke(
 
         SvMemoryStream aStream( aDIB.getArray(), aDIB.getLength(), STREAM_READ | STREAM_WRITE );
         Bitmap aBM;
-        aBM.Read( aStream, sal_True );
+        
+        ReadDIB(aBM, aStream, true);
+        
         if( nTargetDepth < 4 )
             nTargetDepth = 1;
         else if( nTargetDepth < 8 )
@@ -183,8 +183,11 @@ BmpTransporter::BmpTransporter( const Bi
 {
     m_aSize.Width = rBM.GetSizePixel().Width();
     m_aSize.Height = rBM.GetSizePixel().Height();
+    
     SvMemoryStream aStream;
-    rBM.Write( aStream, sal_False, sal_True );
+
+    WriteDIB(rBM, aStream, false, true);
+
     m_aBM = Sequence<sal_Int8>(static_cast<const sal_Int8*>(aStream.GetData()),
                 aStream.GetEndOfData());
 }

Modified: openoffice/branches/ia2/main/vcl/source/gdi/cvtsvm.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/ia2/main/vcl/source/gdi/cvtsvm.cxx?rev=1441343&r1=1441342&r2=1441343&view=diff
==============================================================================
--- openoffice/branches/ia2/main/vcl/source/gdi/cvtsvm.cxx (original)
+++ openoffice/branches/ia2/main/vcl/source/gdi/cvtsvm.cxx Fri Feb  1 08:46:00 2013
@@ -36,6 +36,7 @@
 #include <vcl/lineinfo.hxx>
 #include <vcl/salbtype.hxx>
 #include <vcl/cvtsvm.hxx>
+#include <vcl/dibtools.hxx>
 
 // -----------
 // - Defines -
@@ -983,7 +984,8 @@ void SVMConverter::ImplConvertFromSVM1( 
 				{
 					Bitmap aBmp;
 
-					rIStm >> aPt >> aBmp;
+					rIStm >> aPt;
+                    ReadDIB(aBmp, rIStm, true);
 					rMtf.AddAction( new MetaBmpAction( aPt, aBmp ) );
 				}
 				break;
@@ -992,7 +994,8 @@ void SVMConverter::ImplConvertFromSVM1( 
 				{
 					Bitmap aBmp;
 
-					rIStm >> aPt >> aSz >> aBmp;
+					rIStm >> aPt >> aSz;
+                    ReadDIB(aBmp, rIStm, true);
 					rMtf.AddAction( new MetaBmpScaleAction( aPt, aSz, aBmp ) );
 				}
 				break;
@@ -1002,7 +1005,8 @@ void SVMConverter::ImplConvertFromSVM1( 
 					Bitmap	aBmp;
 					Size	aSz2;
 
-					rIStm >> aPt >> aSz >> aPt1 >> aSz2 >> aBmp;
+					rIStm >> aPt >> aSz >> aPt1 >> aSz2;
+                    ReadDIB(aBmp, rIStm, true);
 					rMtf.AddAction( new MetaBmpScalePartAction( aPt, aSz, aPt1, aSz2, aBmp ) );
 				}
 				break;
@@ -1827,7 +1831,7 @@ sal_uLong SVMConverter::ImplWriteActions
 				rOStm << (sal_Int16) GDI_BITMAP_ACTION;
 				rOStm << (sal_Int32) 12;
 				rOStm << pAct->GetPoint();
-				rOStm << pAct->GetBitmap();
+                WriteDIB(pAct->GetBitmap(), rOStm, false, true);
 				nCount++;
 			}
 			break;
@@ -1840,7 +1844,7 @@ sal_uLong SVMConverter::ImplWriteActions
 				rOStm << (sal_Int32) 20;
 				rOStm << pAct->GetPoint();
 				rOStm << pAct->GetSize();
-				rOStm << pAct->GetBitmap();
+                WriteDIB(pAct->GetBitmap(), rOStm, false, true);
 				nCount++;
 			}
 			break;
@@ -1855,7 +1859,7 @@ sal_uLong SVMConverter::ImplWriteActions
 				rOStm << pAct->GetDestSize();
 				rOStm << pAct->GetSrcPoint();
 				rOStm << pAct->GetSrcSize();
-				rOStm << pAct->GetBitmap();
+                WriteDIB(pAct->GetBitmap(), rOStm, false, true);
 				nCount++;
 			}
 			break;
@@ -1868,7 +1872,7 @@ sal_uLong SVMConverter::ImplWriteActions
 				rOStm << (sal_Int16) GDI_BITMAP_ACTION;
 				rOStm << (sal_Int32) 12;
 				rOStm << pAct->GetPoint();
-				rOStm << aBmp;
+                WriteDIB(aBmp, rOStm, false, true);
 				nCount++;
 			}
 			break;
@@ -1882,7 +1886,7 @@ sal_uLong SVMConverter::ImplWriteActions
 				rOStm << (sal_Int32) 20;
 				rOStm << pAct->GetPoint();
 				rOStm << pAct->GetSize();
-				rOStm << aBmp;
+                WriteDIB(aBmp, rOStm, false, true);
 				nCount++;
 			}
 			break;
@@ -1898,7 +1902,7 @@ sal_uLong SVMConverter::ImplWriteActions
 				rOStm << pAct->GetDestSize();
 				rOStm << pAct->GetSrcPoint();
 				rOStm << pAct->GetSrcSize();
-				rOStm << aBmp;
+                WriteDIB(aBmp, rOStm, false, true);
 				nCount++;
 			}
 			break;