diff options
Diffstat (limited to 'sw/source/core/text/txtpaint.hxx')
-rw-r--r-- | sw/source/core/text/txtpaint.hxx | 194 |
1 files changed, 194 insertions, 0 deletions
diff --git a/sw/source/core/text/txtpaint.hxx b/sw/source/core/text/txtpaint.hxx new file mode 100644 index 000000000000..0a7a36beda48 --- /dev/null +++ b/sw/source/core/text/txtpaint.hxx @@ -0,0 +1,194 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ +#ifndef _TXTPAINT_HXX +#define _TXTPAINT_HXX +#include <vcl/outdev.hxx> + +class SwRect; // SwSaveClip +#include <txtfrm.hxx> + +/************************************************************************* + * class SwSaveClip + *************************************************************************/ + +class SwSaveClip +{ + Region aClip; + const sal_Bool bOn; + sal_Bool bChg; +protected: + OutputDevice* pOut; + void _ChgClip( const SwRect &rRect, const SwTxtFrm* pFrm, + sal_Bool bEnlargeRect ); +public: + inline SwSaveClip( OutputDevice* pOut ); + inline ~SwSaveClip(); + inline void ChgClip( const SwRect &rRect, const SwTxtFrm* pFrm = 0, + sal_Bool bEnlargeRect = sal_False) + { if( pOut ) _ChgClip( rRect, pFrm, bEnlargeRect ); } + void Reset(); + inline sal_Bool IsOn() const { return bOn; } + inline sal_Bool IsChg() const { return bChg; } + inline sal_Bool IsOut() const { return 0 != pOut; } + inline OutputDevice *GetOut() { return pOut; } +}; + +inline SwSaveClip::SwSaveClip( OutputDevice* pOutDev ) : + bOn( pOutDev && pOutDev->IsClipRegion() ), + bChg( sal_False ), + pOut(pOutDev) +{} + +inline SwSaveClip::~SwSaveClip() +{ + Reset(); +} + +#if OSL_DEBUG_LEVEL > 1 + +/************************************************************************* + * class SwDbgOut + *************************************************************************/ + +class SwDbgOut +{ +protected: + OutputDevice* pOut; +public: + inline SwDbgOut( OutputDevice* pOutDev, const sal_Bool bOn = sal_True ); +}; + +/************************************************************************* + * class DbgColor + *************************************************************************/ + +class DbgColor +{ + Font *pFnt; + Color aColor; +public: + inline DbgColor( Font *pFont, const sal_Bool bOn = sal_True, + const ColorData eColor = COL_BLUE ); + inline ~DbgColor(); +}; + +/************************************************************************* + * class DbgBrush + *************************************************************************/ + +class DbgBackColor : public SwDbgOut +{ + Color aOldFillColor; +public: + DbgBackColor( OutputDevice* pOut, const sal_Bool bOn = sal_True, + ColorData nColor = COL_YELLOW ); + ~DbgBackColor(); +}; + +/************************************************************************* + * class DbgRect + *************************************************************************/ + +class DbgRect : public SwDbgOut +{ +public: + DbgRect( OutputDevice* pOut, const Rectangle &rRect, + const sal_Bool bOn = sal_True, + ColorData eColor = COL_LIGHTBLUE ); +}; + +/************************************************************************* + * Inline-Implementierung + *************************************************************************/ + +inline SwDbgOut::SwDbgOut( OutputDevice* pOutDev, const sal_Bool bOn ) + :pOut( bOn ? pOutDev : 0 ) +{ } + + +inline DbgColor::DbgColor( Font *pFont, const sal_Bool bOn, + const ColorData eColor ) + :pFnt( bOn ? pFont : 0 ) +{ + if( pFnt ) + { + aColor = pFnt->GetColor(); + pFnt->SetColor( Color( eColor ) ); + } +} + +inline DbgColor::~DbgColor() +{ + if( pFnt ) + pFnt->SetColor( aColor ); +} + +inline DbgBackColor::DbgBackColor( OutputDevice* pOutDev, const sal_Bool bOn, + ColorData eColor ) + :SwDbgOut( pOutDev, bOn ) +{ + if( pOut ) + { + aOldFillColor = pOut->GetFillColor(); + pOut->SetFillColor( Color(eColor) ); + } +} + +inline DbgBackColor::~DbgBackColor() +{ + if( pOut ) + { + pOut->SetFillColor( aOldFillColor ); + } +} + +inline DbgRect::DbgRect( OutputDevice* pOutDev, const Rectangle &rRect, + const sal_Bool bOn, + ColorData eColor ) + : SwDbgOut( pOutDev, bOn ) +{ + if( pOut ) + { + const Color aColor( eColor ); + Color aLineColor = pOut->GetLineColor(); + pOut->SetLineColor( aColor ); + Color aFillColor = pOut->GetFillColor(); + pOut->SetFillColor( Color(COL_TRANSPARENT) ); + pOut->DrawRect( rRect ); + pOut->SetLineColor( aLineColor ); + pOut->SetFillColor( aFillColor ); + } +} + +#endif + + + +#endif + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |