| /************************************************************** |
| * |
| * Licensed to the Apache Software Foundation (ASF) under one |
| * or more contributor license agreements. See the NOTICE file |
| * distributed with this work for additional information |
| * regarding copyright ownership. The ASF licenses this file |
| * to you under the Apache License, Version 2.0 (the |
| * "License"); you may not use this file except in compliance |
| * with the License. You may obtain a copy of the License at |
| * |
| * http://www.apache.org/licenses/LICENSE-2.0 |
| * |
| * Unless required by applicable law or agreed to in writing, |
| * software distributed under the License is distributed on an |
| * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY |
| * KIND, either express or implied. See the License for the |
| * specific language governing permissions and limitations |
| * under the 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(); |
| } |
| |
| #ifdef DBG_UTIL |
| |
| /************************************************************************* |
| * 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 |