1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski *
3*b1cdbd2cSJim Jagielski * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski * or more contributor license agreements. See the NOTICE file
5*b1cdbd2cSJim Jagielski * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski * regarding copyright ownership. The ASF licenses this file
7*b1cdbd2cSJim Jagielski * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski * with the License. You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski *
11*b1cdbd2cSJim Jagielski * http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski *
13*b1cdbd2cSJim Jagielski * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski * KIND, either express or implied. See the License for the
17*b1cdbd2cSJim Jagielski * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski * under the License.
19*b1cdbd2cSJim Jagielski *
20*b1cdbd2cSJim Jagielski *************************************************************/
21*b1cdbd2cSJim Jagielski
22*b1cdbd2cSJim Jagielski
23*b1cdbd2cSJim Jagielski #ifndef _TXTPAINT_HXX
24*b1cdbd2cSJim Jagielski #define _TXTPAINT_HXX
25*b1cdbd2cSJim Jagielski #include <vcl/outdev.hxx>
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski class SwRect; // SwSaveClip
28*b1cdbd2cSJim Jagielski #include <txtfrm.hxx>
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski /*************************************************************************
31*b1cdbd2cSJim Jagielski * class SwSaveClip
32*b1cdbd2cSJim Jagielski *************************************************************************/
33*b1cdbd2cSJim Jagielski
34*b1cdbd2cSJim Jagielski class SwSaveClip
35*b1cdbd2cSJim Jagielski {
36*b1cdbd2cSJim Jagielski Region aClip;
37*b1cdbd2cSJim Jagielski const sal_Bool bOn;
38*b1cdbd2cSJim Jagielski sal_Bool bChg;
39*b1cdbd2cSJim Jagielski protected:
40*b1cdbd2cSJim Jagielski OutputDevice* pOut;
41*b1cdbd2cSJim Jagielski void _ChgClip( const SwRect &rRect, const SwTxtFrm* pFrm,
42*b1cdbd2cSJim Jagielski sal_Bool bEnlargeRect );
43*b1cdbd2cSJim Jagielski public:
44*b1cdbd2cSJim Jagielski inline SwSaveClip( OutputDevice* pOut );
45*b1cdbd2cSJim Jagielski inline ~SwSaveClip();
ChgClip(const SwRect & rRect,const SwTxtFrm * pFrm=0,sal_Bool bEnlargeRect=sal_False)46*b1cdbd2cSJim Jagielski inline void ChgClip( const SwRect &rRect, const SwTxtFrm* pFrm = 0,
47*b1cdbd2cSJim Jagielski sal_Bool bEnlargeRect = sal_False)
48*b1cdbd2cSJim Jagielski { if( pOut ) _ChgClip( rRect, pFrm, bEnlargeRect ); }
49*b1cdbd2cSJim Jagielski void Reset();
IsOn() const50*b1cdbd2cSJim Jagielski inline sal_Bool IsOn() const { return bOn; }
IsChg() const51*b1cdbd2cSJim Jagielski inline sal_Bool IsChg() const { return bChg; }
IsOut() const52*b1cdbd2cSJim Jagielski inline sal_Bool IsOut() const { return 0 != pOut; }
GetOut()53*b1cdbd2cSJim Jagielski inline OutputDevice *GetOut() { return pOut; }
54*b1cdbd2cSJim Jagielski };
55*b1cdbd2cSJim Jagielski
SwSaveClip(OutputDevice * pOutDev)56*b1cdbd2cSJim Jagielski inline SwSaveClip::SwSaveClip( OutputDevice* pOutDev ) :
57*b1cdbd2cSJim Jagielski bOn( pOutDev && pOutDev->IsClipRegion() ),
58*b1cdbd2cSJim Jagielski bChg( sal_False ),
59*b1cdbd2cSJim Jagielski pOut(pOutDev)
60*b1cdbd2cSJim Jagielski {}
61*b1cdbd2cSJim Jagielski
~SwSaveClip()62*b1cdbd2cSJim Jagielski inline SwSaveClip::~SwSaveClip()
63*b1cdbd2cSJim Jagielski {
64*b1cdbd2cSJim Jagielski Reset();
65*b1cdbd2cSJim Jagielski }
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski #ifdef DBG_UTIL
68*b1cdbd2cSJim Jagielski
69*b1cdbd2cSJim Jagielski /*************************************************************************
70*b1cdbd2cSJim Jagielski * class SwDbgOut
71*b1cdbd2cSJim Jagielski *************************************************************************/
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski class SwDbgOut
74*b1cdbd2cSJim Jagielski {
75*b1cdbd2cSJim Jagielski protected:
76*b1cdbd2cSJim Jagielski OutputDevice* pOut;
77*b1cdbd2cSJim Jagielski public:
78*b1cdbd2cSJim Jagielski inline SwDbgOut( OutputDevice* pOutDev, const sal_Bool bOn = sal_True );
79*b1cdbd2cSJim Jagielski };
80*b1cdbd2cSJim Jagielski
81*b1cdbd2cSJim Jagielski /*************************************************************************
82*b1cdbd2cSJim Jagielski * class DbgColor
83*b1cdbd2cSJim Jagielski *************************************************************************/
84*b1cdbd2cSJim Jagielski
85*b1cdbd2cSJim Jagielski class DbgColor
86*b1cdbd2cSJim Jagielski {
87*b1cdbd2cSJim Jagielski Font *pFnt;
88*b1cdbd2cSJim Jagielski Color aColor;
89*b1cdbd2cSJim Jagielski public:
90*b1cdbd2cSJim Jagielski inline DbgColor( Font *pFont, const sal_Bool bOn = sal_True,
91*b1cdbd2cSJim Jagielski const ColorData eColor = COL_BLUE );
92*b1cdbd2cSJim Jagielski inline ~DbgColor();
93*b1cdbd2cSJim Jagielski };
94*b1cdbd2cSJim Jagielski
95*b1cdbd2cSJim Jagielski /*************************************************************************
96*b1cdbd2cSJim Jagielski * class DbgBrush
97*b1cdbd2cSJim Jagielski *************************************************************************/
98*b1cdbd2cSJim Jagielski
99*b1cdbd2cSJim Jagielski class DbgBackColor : public SwDbgOut
100*b1cdbd2cSJim Jagielski {
101*b1cdbd2cSJim Jagielski Color aOldFillColor;
102*b1cdbd2cSJim Jagielski public:
103*b1cdbd2cSJim Jagielski DbgBackColor( OutputDevice* pOut, const sal_Bool bOn = sal_True,
104*b1cdbd2cSJim Jagielski ColorData nColor = COL_YELLOW );
105*b1cdbd2cSJim Jagielski ~DbgBackColor();
106*b1cdbd2cSJim Jagielski };
107*b1cdbd2cSJim Jagielski
108*b1cdbd2cSJim Jagielski /*************************************************************************
109*b1cdbd2cSJim Jagielski * class DbgRect
110*b1cdbd2cSJim Jagielski *************************************************************************/
111*b1cdbd2cSJim Jagielski
112*b1cdbd2cSJim Jagielski class DbgRect : public SwDbgOut
113*b1cdbd2cSJim Jagielski {
114*b1cdbd2cSJim Jagielski public:
115*b1cdbd2cSJim Jagielski DbgRect( OutputDevice* pOut, const Rectangle &rRect,
116*b1cdbd2cSJim Jagielski const sal_Bool bOn = sal_True,
117*b1cdbd2cSJim Jagielski ColorData eColor = COL_LIGHTBLUE );
118*b1cdbd2cSJim Jagielski };
119*b1cdbd2cSJim Jagielski
120*b1cdbd2cSJim Jagielski /*************************************************************************
121*b1cdbd2cSJim Jagielski * Inline-Implementierung
122*b1cdbd2cSJim Jagielski *************************************************************************/
123*b1cdbd2cSJim Jagielski
SwDbgOut(OutputDevice * pOutDev,const sal_Bool bOn)124*b1cdbd2cSJim Jagielski inline SwDbgOut::SwDbgOut( OutputDevice* pOutDev, const sal_Bool bOn )
125*b1cdbd2cSJim Jagielski :pOut( bOn ? pOutDev : 0 )
126*b1cdbd2cSJim Jagielski { }
127*b1cdbd2cSJim Jagielski
128*b1cdbd2cSJim Jagielski
DbgColor(Font * pFont,const sal_Bool bOn,const ColorData eColor)129*b1cdbd2cSJim Jagielski inline DbgColor::DbgColor( Font *pFont, const sal_Bool bOn,
130*b1cdbd2cSJim Jagielski const ColorData eColor )
131*b1cdbd2cSJim Jagielski :pFnt( bOn ? pFont : 0 )
132*b1cdbd2cSJim Jagielski {
133*b1cdbd2cSJim Jagielski if( pFnt )
134*b1cdbd2cSJim Jagielski {
135*b1cdbd2cSJim Jagielski aColor = pFnt->GetColor();
136*b1cdbd2cSJim Jagielski pFnt->SetColor( Color( eColor ) );
137*b1cdbd2cSJim Jagielski }
138*b1cdbd2cSJim Jagielski }
139*b1cdbd2cSJim Jagielski
~DbgColor()140*b1cdbd2cSJim Jagielski inline DbgColor::~DbgColor()
141*b1cdbd2cSJim Jagielski {
142*b1cdbd2cSJim Jagielski if( pFnt )
143*b1cdbd2cSJim Jagielski pFnt->SetColor( aColor );
144*b1cdbd2cSJim Jagielski }
145*b1cdbd2cSJim Jagielski
DbgBackColor(OutputDevice * pOutDev,const sal_Bool bOn,ColorData eColor)146*b1cdbd2cSJim Jagielski inline DbgBackColor::DbgBackColor( OutputDevice* pOutDev, const sal_Bool bOn,
147*b1cdbd2cSJim Jagielski ColorData eColor )
148*b1cdbd2cSJim Jagielski :SwDbgOut( pOutDev, bOn )
149*b1cdbd2cSJim Jagielski {
150*b1cdbd2cSJim Jagielski if( pOut )
151*b1cdbd2cSJim Jagielski {
152*b1cdbd2cSJim Jagielski aOldFillColor = pOut->GetFillColor();
153*b1cdbd2cSJim Jagielski pOut->SetFillColor( Color(eColor) );
154*b1cdbd2cSJim Jagielski }
155*b1cdbd2cSJim Jagielski }
156*b1cdbd2cSJim Jagielski
~DbgBackColor()157*b1cdbd2cSJim Jagielski inline DbgBackColor::~DbgBackColor()
158*b1cdbd2cSJim Jagielski {
159*b1cdbd2cSJim Jagielski if( pOut )
160*b1cdbd2cSJim Jagielski {
161*b1cdbd2cSJim Jagielski pOut->SetFillColor( aOldFillColor );
162*b1cdbd2cSJim Jagielski }
163*b1cdbd2cSJim Jagielski }
164*b1cdbd2cSJim Jagielski
DbgRect(OutputDevice * pOutDev,const Rectangle & rRect,const sal_Bool bOn,ColorData eColor)165*b1cdbd2cSJim Jagielski inline DbgRect::DbgRect( OutputDevice* pOutDev, const Rectangle &rRect,
166*b1cdbd2cSJim Jagielski const sal_Bool bOn,
167*b1cdbd2cSJim Jagielski ColorData eColor )
168*b1cdbd2cSJim Jagielski : SwDbgOut( pOutDev, bOn )
169*b1cdbd2cSJim Jagielski {
170*b1cdbd2cSJim Jagielski if( pOut )
171*b1cdbd2cSJim Jagielski {
172*b1cdbd2cSJim Jagielski const Color aColor( eColor );
173*b1cdbd2cSJim Jagielski Color aLineColor = pOut->GetLineColor();
174*b1cdbd2cSJim Jagielski pOut->SetLineColor( aColor );
175*b1cdbd2cSJim Jagielski Color aFillColor = pOut->GetFillColor();
176*b1cdbd2cSJim Jagielski pOut->SetFillColor( Color(COL_TRANSPARENT) );
177*b1cdbd2cSJim Jagielski pOut->DrawRect( rRect );
178*b1cdbd2cSJim Jagielski pOut->SetLineColor( aLineColor );
179*b1cdbd2cSJim Jagielski pOut->SetFillColor( aFillColor );
180*b1cdbd2cSJim Jagielski }
181*b1cdbd2cSJim Jagielski }
182*b1cdbd2cSJim Jagielski
183*b1cdbd2cSJim Jagielski #endif
184*b1cdbd2cSJim Jagielski
185*b1cdbd2cSJim Jagielski
186*b1cdbd2cSJim Jagielski
187*b1cdbd2cSJim Jagielski #endif
188