xref: /aoo4110/main/sw/source/core/text/txtpaint.hxx (revision b1cdbd2c)
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