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
24*b1cdbd2cSJim Jagielski // MARKER(update_precomp.py): autogen include statement, do not remove
25*b1cdbd2cSJim Jagielski #include "precompiled_svx.hxx"
26*b1cdbd2cSJim Jagielski
27*b1cdbd2cSJim Jagielski // include ---------------------------------------------------------------
28*b1cdbd2cSJim Jagielski
29*b1cdbd2cSJim Jagielski
30*b1cdbd2cSJim Jagielski #include <vcl/bitmap.hxx>
31*b1cdbd2cSJim Jagielski #include <editeng/frmdiritem.hxx>
32*b1cdbd2cSJim Jagielski #include <svx/pageitem.hxx>
33*b1cdbd2cSJim Jagielski #include <svx/pagectrl.hxx>
34*b1cdbd2cSJim Jagielski #include <editeng/boxitem.hxx>
35*b1cdbd2cSJim Jagielski
36*b1cdbd2cSJim Jagielski #include <algorithm>
37*b1cdbd2cSJim Jagielski
38*b1cdbd2cSJim Jagielski // struct PageWindow_Impl ------------------------------------------------
39*b1cdbd2cSJim Jagielski
40*b1cdbd2cSJim Jagielski struct PageWindow_Impl
41*b1cdbd2cSJim Jagielski {
42*b1cdbd2cSJim Jagielski SvxBoxItem* pBorder;
43*b1cdbd2cSJim Jagielski Bitmap aBitmap;
44*b1cdbd2cSJim Jagielski FASTBOOL bBitmap;
45*b1cdbd2cSJim Jagielski sal_Bool bResetBackground;
46*b1cdbd2cSJim Jagielski sal_Bool bFrameDirection;
47*b1cdbd2cSJim Jagielski sal_Int32 nFrameDirection;
48*b1cdbd2cSJim Jagielski
49*b1cdbd2cSJim Jagielski
PageWindow_ImplPageWindow_Impl50*b1cdbd2cSJim Jagielski PageWindow_Impl() :
51*b1cdbd2cSJim Jagielski pBorder(0),
52*b1cdbd2cSJim Jagielski bBitmap(sal_False),
53*b1cdbd2cSJim Jagielski bResetBackground(sal_False),
54*b1cdbd2cSJim Jagielski bFrameDirection(sal_False),
55*b1cdbd2cSJim Jagielski nFrameDirection(0) {}
56*b1cdbd2cSJim Jagielski
EnableFrameDirectionPageWindow_Impl57*b1cdbd2cSJim Jagielski void EnableFrameDirection(sal_Bool bEnable){bFrameDirection = bEnable;}
SetFrameDirectionPageWindow_Impl58*b1cdbd2cSJim Jagielski void SetFrameDirection(sal_Int32 nDirection){nFrameDirection = nDirection;}
59*b1cdbd2cSJim Jagielski
60*b1cdbd2cSJim Jagielski };
61*b1cdbd2cSJim Jagielski
62*b1cdbd2cSJim Jagielski // STATIC DATA -----------------------------------------------------------
63*b1cdbd2cSJim Jagielski
64*b1cdbd2cSJim Jagielski #define CELL_WIDTH 1600L
65*b1cdbd2cSJim Jagielski #define CELL_HEIGHT 800L
66*b1cdbd2cSJim Jagielski
67*b1cdbd2cSJim Jagielski // class SvxPageWindow ---------------------------------------------------
68*b1cdbd2cSJim Jagielski
SvxPageWindow(Window * pParent,const ResId & rId)69*b1cdbd2cSJim Jagielski SvxPageWindow::SvxPageWindow( Window* pParent, const ResId& rId ) :
70*b1cdbd2cSJim Jagielski
71*b1cdbd2cSJim Jagielski Window( pParent, rId ),
72*b1cdbd2cSJim Jagielski
73*b1cdbd2cSJim Jagielski nTop ( 0 ),
74*b1cdbd2cSJim Jagielski nBottom ( 0 ),
75*b1cdbd2cSJim Jagielski nLeft ( 0 ),
76*b1cdbd2cSJim Jagielski nRight ( 0 ),
77*b1cdbd2cSJim Jagielski aColor ( COL_TRANSPARENT ),
78*b1cdbd2cSJim Jagielski nHdLeft ( 0 ),
79*b1cdbd2cSJim Jagielski nHdRight ( 0 ),
80*b1cdbd2cSJim Jagielski nHdDist ( 0 ),
81*b1cdbd2cSJim Jagielski nHdHeight ( 0 ),
82*b1cdbd2cSJim Jagielski aHdColor ( COL_TRANSPARENT ),
83*b1cdbd2cSJim Jagielski pHdBorder ( 0 ),
84*b1cdbd2cSJim Jagielski nFtLeft ( 0 ),
85*b1cdbd2cSJim Jagielski nFtRight ( 0 ),
86*b1cdbd2cSJim Jagielski nFtDist ( 0 ),
87*b1cdbd2cSJim Jagielski nFtHeight ( 0 ),
88*b1cdbd2cSJim Jagielski aFtColor ( COL_TRANSPARENT ),
89*b1cdbd2cSJim Jagielski pFtBorder ( 0 ),
90*b1cdbd2cSJim Jagielski bFooter ( sal_False ),
91*b1cdbd2cSJim Jagielski bHeader ( sal_False ),
92*b1cdbd2cSJim Jagielski bTable ( sal_False ),
93*b1cdbd2cSJim Jagielski bHorz ( sal_False ),
94*b1cdbd2cSJim Jagielski bVert ( sal_False ),
95*b1cdbd2cSJim Jagielski eUsage ( SVX_PAGE_ALL )
96*b1cdbd2cSJim Jagielski
97*b1cdbd2cSJim Jagielski {
98*b1cdbd2cSJim Jagielski pImpl = new PageWindow_Impl;
99*b1cdbd2cSJim Jagielski
100*b1cdbd2cSJim Jagielski // defaultmaessing in Twips rechnen
101*b1cdbd2cSJim Jagielski SetMapMode( MapMode( MAP_TWIP ) );
102*b1cdbd2cSJim Jagielski aWinSize = GetOutputSizePixel();
103*b1cdbd2cSJim Jagielski aWinSize.Height() -= 4;
104*b1cdbd2cSJim Jagielski aWinSize.Width() -= 4;
105*b1cdbd2cSJim Jagielski
106*b1cdbd2cSJim Jagielski aWinSize = PixelToLogic( aWinSize );
107*b1cdbd2cSJim Jagielski SetBackground();
108*b1cdbd2cSJim Jagielski }
109*b1cdbd2cSJim Jagielski
110*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
111*b1cdbd2cSJim Jagielski
~SvxPageWindow()112*b1cdbd2cSJim Jagielski SvxPageWindow::~SvxPageWindow()
113*b1cdbd2cSJim Jagielski {
114*b1cdbd2cSJim Jagielski delete pImpl;
115*b1cdbd2cSJim Jagielski delete pHdBorder;
116*b1cdbd2cSJim Jagielski delete pFtBorder;
117*b1cdbd2cSJim Jagielski }
118*b1cdbd2cSJim Jagielski
119*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
120*b1cdbd2cSJim Jagielski
Paint(const Rectangle &)121*b1cdbd2cSJim Jagielski void __EXPORT SvxPageWindow::Paint( const Rectangle& )
122*b1cdbd2cSJim Jagielski {
123*b1cdbd2cSJim Jagielski Fraction aXScale( aWinSize.Width(), std::max( (long) (aSize.Width() * 2 + aSize.Width() / 8), 1L ) );
124*b1cdbd2cSJim Jagielski Fraction aYScale( aWinSize.Height(), std::max( aSize.Height(), 1L ) );
125*b1cdbd2cSJim Jagielski MapMode aMapMode( GetMapMode() );
126*b1cdbd2cSJim Jagielski
127*b1cdbd2cSJim Jagielski if ( aYScale < aXScale )
128*b1cdbd2cSJim Jagielski {
129*b1cdbd2cSJim Jagielski aMapMode.SetScaleX( aYScale );
130*b1cdbd2cSJim Jagielski aMapMode.SetScaleY( aYScale );
131*b1cdbd2cSJim Jagielski }
132*b1cdbd2cSJim Jagielski else
133*b1cdbd2cSJim Jagielski {
134*b1cdbd2cSJim Jagielski aMapMode.SetScaleX( aXScale );
135*b1cdbd2cSJim Jagielski aMapMode.SetScaleY( aXScale );
136*b1cdbd2cSJim Jagielski }
137*b1cdbd2cSJim Jagielski SetMapMode( aMapMode );
138*b1cdbd2cSJim Jagielski Size aSz( PixelToLogic( GetSizePixel() ) );
139*b1cdbd2cSJim Jagielski long nYPos = ( aSz.Height() - aSize.Height() ) / 2;
140*b1cdbd2cSJim Jagielski
141*b1cdbd2cSJim Jagielski if ( eUsage == SVX_PAGE_ALL )
142*b1cdbd2cSJim Jagielski {
143*b1cdbd2cSJim Jagielski // alle Seiten gleich -> eine Seite malen
144*b1cdbd2cSJim Jagielski if ( aSize.Width() > aSize.Height() )
145*b1cdbd2cSJim Jagielski {
146*b1cdbd2cSJim Jagielski // Querformat in gleicher Gr"osse zeichnen
147*b1cdbd2cSJim Jagielski Fraction aX = aMapMode.GetScaleX();
148*b1cdbd2cSJim Jagielski Fraction aY = aMapMode.GetScaleY();
149*b1cdbd2cSJim Jagielski Fraction a2( 1.5 );
150*b1cdbd2cSJim Jagielski aX *= a2;
151*b1cdbd2cSJim Jagielski aY *= a2;
152*b1cdbd2cSJim Jagielski aMapMode.SetScaleX( aX );
153*b1cdbd2cSJim Jagielski aMapMode.SetScaleY( aY );
154*b1cdbd2cSJim Jagielski SetMapMode( aMapMode );
155*b1cdbd2cSJim Jagielski aSz = PixelToLogic( GetSizePixel() );
156*b1cdbd2cSJim Jagielski nYPos = ( aSz.Height() - aSize.Height() ) / 2;
157*b1cdbd2cSJim Jagielski long nXPos = ( aSz.Width() - aSize.Width() ) / 2;
158*b1cdbd2cSJim Jagielski DrawPage( Point( nXPos, nYPos ), sal_True, sal_True );
159*b1cdbd2cSJim Jagielski }
160*b1cdbd2cSJim Jagielski else
161*b1cdbd2cSJim Jagielski // Hochformat
162*b1cdbd2cSJim Jagielski DrawPage( Point( ( aSz.Width() - aSize.Width() ) / 2, nYPos ), sal_True, sal_True );
163*b1cdbd2cSJim Jagielski }
164*b1cdbd2cSJim Jagielski else
165*b1cdbd2cSJim Jagielski {
166*b1cdbd2cSJim Jagielski // Linke und rechte Seite unterschiedlich -> ggf. zwei Seiten malen
167*b1cdbd2cSJim Jagielski DrawPage( Point( 0, nYPos ), sal_False, (sal_Bool)( eUsage & SVX_PAGE_LEFT ) );
168*b1cdbd2cSJim Jagielski DrawPage( Point( aSize.Width() + aSize.Width() / 8, nYPos ), sal_True,
169*b1cdbd2cSJim Jagielski (sal_Bool)( eUsage & SVX_PAGE_RIGHT ) );
170*b1cdbd2cSJim Jagielski }
171*b1cdbd2cSJim Jagielski }
172*b1cdbd2cSJim Jagielski
173*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
DrawPage(const Point & rOrg,const sal_Bool bSecond,const sal_Bool bEnabled)174*b1cdbd2cSJim Jagielski void SvxPageWindow::DrawPage( const Point& rOrg, const sal_Bool bSecond, const sal_Bool bEnabled )
175*b1cdbd2cSJim Jagielski {
176*b1cdbd2cSJim Jagielski const StyleSettings& rStyleSettings = GetSettings().GetStyleSettings();
177*b1cdbd2cSJim Jagielski const Color& rFieldColor = rStyleSettings.GetFieldColor();
178*b1cdbd2cSJim Jagielski const Color& rFieldTextColor = rStyleSettings.GetFieldTextColor();
179*b1cdbd2cSJim Jagielski const Color& rDisableColor = rStyleSettings.GetDisableColor();
180*b1cdbd2cSJim Jagielski const Color& rDlgColor = rStyleSettings.GetDialogColor();
181*b1cdbd2cSJim Jagielski
182*b1cdbd2cSJim Jagielski // background
183*b1cdbd2cSJim Jagielski if(!bSecond || pImpl->bResetBackground)
184*b1cdbd2cSJim Jagielski {
185*b1cdbd2cSJim Jagielski SetLineColor( Color(COL_TRANSPARENT) );
186*b1cdbd2cSJim Jagielski SetFillColor( rDlgColor );
187*b1cdbd2cSJim Jagielski Size winSize(GetOutputSize());
188*b1cdbd2cSJim Jagielski DrawRect( Rectangle( Point(0,0), winSize ) );
189*b1cdbd2cSJim Jagielski
190*b1cdbd2cSJim Jagielski if ( pImpl->bResetBackground )
191*b1cdbd2cSJim Jagielski pImpl->bResetBackground = sal_False;
192*b1cdbd2cSJim Jagielski }
193*b1cdbd2cSJim Jagielski SetLineColor( rFieldTextColor );
194*b1cdbd2cSJim Jagielski // Schatten
195*b1cdbd2cSJim Jagielski Size aTempSize = aSize;
196*b1cdbd2cSJim Jagielski // Seite
197*b1cdbd2cSJim Jagielski if ( !bEnabled )
198*b1cdbd2cSJim Jagielski {
199*b1cdbd2cSJim Jagielski SetFillColor( rDisableColor );
200*b1cdbd2cSJim Jagielski DrawRect( Rectangle( rOrg, aTempSize ) );
201*b1cdbd2cSJim Jagielski return;
202*b1cdbd2cSJim Jagielski }
203*b1cdbd2cSJim Jagielski SetFillColor( rFieldColor );
204*b1cdbd2cSJim Jagielski DrawRect( Rectangle( rOrg, aTempSize ) );
205*b1cdbd2cSJim Jagielski
206*b1cdbd2cSJim Jagielski // Border Top Bottom Left Right
207*b1cdbd2cSJim Jagielski Point aBegin( rOrg );
208*b1cdbd2cSJim Jagielski Point aEnd( rOrg );
209*b1cdbd2cSJim Jagielski
210*b1cdbd2cSJim Jagielski long nL = nLeft;
211*b1cdbd2cSJim Jagielski long nR = nRight;
212*b1cdbd2cSJim Jagielski
213*b1cdbd2cSJim Jagielski if ( eUsage == SVX_PAGE_MIRROR && !bSecond )
214*b1cdbd2cSJim Jagielski {
215*b1cdbd2cSJim Jagielski // f"ur gespiegelt drehen
216*b1cdbd2cSJim Jagielski nL = nRight;
217*b1cdbd2cSJim Jagielski nR = nLeft;
218*b1cdbd2cSJim Jagielski }
219*b1cdbd2cSJim Jagielski
220*b1cdbd2cSJim Jagielski Rectangle aRect;
221*b1cdbd2cSJim Jagielski
222*b1cdbd2cSJim Jagielski aRect.Left() = rOrg.X() + nL;
223*b1cdbd2cSJim Jagielski aRect.Right() = rOrg.X() + aTempSize.Width() - nR;
224*b1cdbd2cSJim Jagielski aRect.Top() = rOrg.Y() + nTop;
225*b1cdbd2cSJim Jagielski aRect.Bottom()= rOrg.Y() + aTempSize.Height() - nBottom;
226*b1cdbd2cSJim Jagielski
227*b1cdbd2cSJim Jagielski Rectangle aHdRect( aRect );
228*b1cdbd2cSJim Jagielski Rectangle aFtRect( aRect );
229*b1cdbd2cSJim Jagielski
230*b1cdbd2cSJim Jagielski if ( bHeader )
231*b1cdbd2cSJim Jagielski {
232*b1cdbd2cSJim Jagielski // ggf. Header anzeigen
233*b1cdbd2cSJim Jagielski aHdRect.Left() += nHdLeft;
234*b1cdbd2cSJim Jagielski aHdRect.Right() -= nHdRight;
235*b1cdbd2cSJim Jagielski aHdRect.Bottom() = aRect.Top() + nHdHeight;
236*b1cdbd2cSJim Jagielski aRect.Top() += nHdHeight + nHdDist;
237*b1cdbd2cSJim Jagielski SetFillColor( aHdColor );
238*b1cdbd2cSJim Jagielski DrawRect( aHdRect );
239*b1cdbd2cSJim Jagielski }
240*b1cdbd2cSJim Jagielski
241*b1cdbd2cSJim Jagielski if ( bFooter )
242*b1cdbd2cSJim Jagielski {
243*b1cdbd2cSJim Jagielski // ggf. Footer anzeigen
244*b1cdbd2cSJim Jagielski aFtRect.Left() += nFtLeft;
245*b1cdbd2cSJim Jagielski aFtRect.Right() -= nFtRight;
246*b1cdbd2cSJim Jagielski aFtRect.Top() = aRect.Bottom() - nFtHeight;
247*b1cdbd2cSJim Jagielski aRect.Bottom() -= nFtHeight + nFtDist;
248*b1cdbd2cSJim Jagielski SetFillColor( aFtColor );
249*b1cdbd2cSJim Jagielski DrawRect( aFtRect );
250*b1cdbd2cSJim Jagielski }
251*b1cdbd2cSJim Jagielski
252*b1cdbd2cSJim Jagielski // Body malen
253*b1cdbd2cSJim Jagielski SetFillColor( aColor );
254*b1cdbd2cSJim Jagielski if ( pImpl->bBitmap )
255*b1cdbd2cSJim Jagielski {
256*b1cdbd2cSJim Jagielski DrawRect( aRect );
257*b1cdbd2cSJim Jagielski Point aBmpPnt = aRect.TopLeft();
258*b1cdbd2cSJim Jagielski Size aBmpSiz = aRect.GetSize();
259*b1cdbd2cSJim Jagielski long nDeltaX = aBmpSiz.Width() / 15;
260*b1cdbd2cSJim Jagielski long nDeltaY = aBmpSiz.Height() / 15;
261*b1cdbd2cSJim Jagielski aBmpPnt.X() += nDeltaX;
262*b1cdbd2cSJim Jagielski aBmpPnt.Y() += nDeltaY;
263*b1cdbd2cSJim Jagielski aBmpSiz.Width() -= nDeltaX * 2;
264*b1cdbd2cSJim Jagielski aBmpSiz.Height() -= nDeltaY * 2;
265*b1cdbd2cSJim Jagielski DrawBitmap( aBmpPnt, aBmpSiz, pImpl->aBitmap );
266*b1cdbd2cSJim Jagielski }
267*b1cdbd2cSJim Jagielski else
268*b1cdbd2cSJim Jagielski DrawRect( aRect );
269*b1cdbd2cSJim Jagielski
270*b1cdbd2cSJim Jagielski if(pImpl->bFrameDirection && !bTable)
271*b1cdbd2cSJim Jagielski {
272*b1cdbd2cSJim Jagielski //pImpl->nFrameDirection
273*b1cdbd2cSJim Jagielski Point aPos;
274*b1cdbd2cSJim Jagielski Font aFont(GetFont());
275*b1cdbd2cSJim Jagielski const Size aSaveSize = aFont.GetSize();
276*b1cdbd2cSJim Jagielski Size aDrawSize( 0, aRect.GetHeight() / 6);
277*b1cdbd2cSJim Jagielski aFont.SetSize(aDrawSize);
278*b1cdbd2cSJim Jagielski SetFont(aFont);
279*b1cdbd2cSJim Jagielski String sText(String::CreateFromAscii("ABC"));
280*b1cdbd2cSJim Jagielski Point aMove(1, GetTextHeight());
281*b1cdbd2cSJim Jagielski sal_Unicode cArrow = 0x2193;
282*b1cdbd2cSJim Jagielski long nAWidth = GetTextWidth(String(sText.GetChar(0)));
283*b1cdbd2cSJim Jagielski switch(pImpl->nFrameDirection)
284*b1cdbd2cSJim Jagielski {
285*b1cdbd2cSJim Jagielski case FRMDIR_HORI_LEFT_TOP:
286*b1cdbd2cSJim Jagielski aPos = aRect.TopLeft();
287*b1cdbd2cSJim Jagielski aPos.X() += PixelToLogic(Point(1,1)).X();
288*b1cdbd2cSJim Jagielski aMove.Y() = 0;
289*b1cdbd2cSJim Jagielski cArrow = 0x2192;
290*b1cdbd2cSJim Jagielski break;
291*b1cdbd2cSJim Jagielski case FRMDIR_HORI_RIGHT_TOP:
292*b1cdbd2cSJim Jagielski aPos = aRect.TopRight();
293*b1cdbd2cSJim Jagielski aPos.X() -= nAWidth;
294*b1cdbd2cSJim Jagielski aMove.Y() = 0;
295*b1cdbd2cSJim Jagielski aMove.X() *= -1;
296*b1cdbd2cSJim Jagielski cArrow = 0x2190;
297*b1cdbd2cSJim Jagielski break;
298*b1cdbd2cSJim Jagielski case FRMDIR_VERT_TOP_LEFT:
299*b1cdbd2cSJim Jagielski aPos = aRect.TopLeft();
300*b1cdbd2cSJim Jagielski aPos.X() += PixelToLogic(Point(1,1)).X();
301*b1cdbd2cSJim Jagielski aMove.X() = 0;
302*b1cdbd2cSJim Jagielski break;
303*b1cdbd2cSJim Jagielski case FRMDIR_VERT_TOP_RIGHT:
304*b1cdbd2cSJim Jagielski aPos = aRect.TopRight();
305*b1cdbd2cSJim Jagielski aPos.X() -= nAWidth;
306*b1cdbd2cSJim Jagielski aMove.X() = 0;
307*b1cdbd2cSJim Jagielski break;
308*b1cdbd2cSJim Jagielski }
309*b1cdbd2cSJim Jagielski sText.Append(cArrow);
310*b1cdbd2cSJim Jagielski for(sal_uInt16 i = 0; i < sText.Len(); i++)
311*b1cdbd2cSJim Jagielski {
312*b1cdbd2cSJim Jagielski String sDraw(sText.GetChar(i));
313*b1cdbd2cSJim Jagielski long nHDiff = 0;
314*b1cdbd2cSJim Jagielski long nCharWidth = GetTextWidth(sDraw);
315*b1cdbd2cSJim Jagielski sal_Bool bHorizontal = 0 == aMove.Y();
316*b1cdbd2cSJim Jagielski if(!bHorizontal)
317*b1cdbd2cSJim Jagielski {
318*b1cdbd2cSJim Jagielski nHDiff = (nAWidth - nCharWidth)/2;
319*b1cdbd2cSJim Jagielski aPos.X() += nHDiff;
320*b1cdbd2cSJim Jagielski }
321*b1cdbd2cSJim Jagielski DrawText(aPos, sDraw);
322*b1cdbd2cSJim Jagielski if(bHorizontal)
323*b1cdbd2cSJim Jagielski {
324*b1cdbd2cSJim Jagielski aPos.X() += aMove.X() < 0 ? - nCharWidth : nCharWidth;
325*b1cdbd2cSJim Jagielski }
326*b1cdbd2cSJim Jagielski else
327*b1cdbd2cSJim Jagielski {
328*b1cdbd2cSJim Jagielski aPos.X() -= nHDiff;
329*b1cdbd2cSJim Jagielski aPos.Y() += aMove.Y();
330*b1cdbd2cSJim Jagielski }
331*b1cdbd2cSJim Jagielski }
332*b1cdbd2cSJim Jagielski aFont.SetSize(aSaveSize);
333*b1cdbd2cSJim Jagielski SetFont(aFont);
334*b1cdbd2cSJim Jagielski
335*b1cdbd2cSJim Jagielski }
336*b1cdbd2cSJim Jagielski if ( bTable )
337*b1cdbd2cSJim Jagielski {
338*b1cdbd2cSJim Jagielski // Tabelle malen, ggf. zentrieren
339*b1cdbd2cSJim Jagielski SetLineColor( Color(COL_LIGHTGRAY) );
340*b1cdbd2cSJim Jagielski
341*b1cdbd2cSJim Jagielski long nW = aRect.GetWidth(), nH = aRect.GetHeight();
342*b1cdbd2cSJim Jagielski long nTW = CELL_WIDTH * 3, nTH = CELL_HEIGHT * 3;
343*b1cdbd2cSJim Jagielski long _nLeft = bHorz ? aRect.Left() + ((nW - nTW) / 2) : aRect.Left();
344*b1cdbd2cSJim Jagielski long _nTop = bVert ? aRect.Top() + ((nH - nTH) / 2) : aRect.Top();
345*b1cdbd2cSJim Jagielski Rectangle aCellRect( Point( _nLeft, _nTop ), Size( CELL_WIDTH, CELL_HEIGHT ) );
346*b1cdbd2cSJim Jagielski
347*b1cdbd2cSJim Jagielski for ( sal_uInt16 i = 0; i < 3; ++i )
348*b1cdbd2cSJim Jagielski {
349*b1cdbd2cSJim Jagielski aCellRect.Left() = _nLeft;
350*b1cdbd2cSJim Jagielski aCellRect.Right() = _nLeft + CELL_WIDTH;
351*b1cdbd2cSJim Jagielski if ( i > 0 )
352*b1cdbd2cSJim Jagielski aCellRect.Move( 0, CELL_HEIGHT );
353*b1cdbd2cSJim Jagielski
354*b1cdbd2cSJim Jagielski for ( sal_uInt16 j = 0; j < 3; ++j )
355*b1cdbd2cSJim Jagielski {
356*b1cdbd2cSJim Jagielski if ( j > 0 )
357*b1cdbd2cSJim Jagielski aCellRect.Move( CELL_WIDTH, 0 );
358*b1cdbd2cSJim Jagielski DrawRect( aCellRect );
359*b1cdbd2cSJim Jagielski }
360*b1cdbd2cSJim Jagielski }
361*b1cdbd2cSJim Jagielski }
362*b1cdbd2cSJim Jagielski }
363*b1cdbd2cSJim Jagielski
364*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
365*b1cdbd2cSJim Jagielski
SetBorder(const SvxBoxItem & rNew)366*b1cdbd2cSJim Jagielski void SvxPageWindow::SetBorder( const SvxBoxItem& rNew )
367*b1cdbd2cSJim Jagielski {
368*b1cdbd2cSJim Jagielski delete pImpl->pBorder;
369*b1cdbd2cSJim Jagielski pImpl->pBorder = new SvxBoxItem( rNew );
370*b1cdbd2cSJim Jagielski }
371*b1cdbd2cSJim Jagielski
372*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
373*b1cdbd2cSJim Jagielski
SetBitmap(Bitmap * pBmp)374*b1cdbd2cSJim Jagielski void SvxPageWindow::SetBitmap( Bitmap* pBmp )
375*b1cdbd2cSJim Jagielski {
376*b1cdbd2cSJim Jagielski if ( pBmp )
377*b1cdbd2cSJim Jagielski {
378*b1cdbd2cSJim Jagielski pImpl->aBitmap = *pBmp;
379*b1cdbd2cSJim Jagielski pImpl->bBitmap = sal_True;
380*b1cdbd2cSJim Jagielski }
381*b1cdbd2cSJim Jagielski else
382*b1cdbd2cSJim Jagielski pImpl->bBitmap = sal_False;
383*b1cdbd2cSJim Jagielski }
384*b1cdbd2cSJim Jagielski
385*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
386*b1cdbd2cSJim Jagielski
SetHdBorder(const SvxBoxItem & rNew)387*b1cdbd2cSJim Jagielski void SvxPageWindow::SetHdBorder( const SvxBoxItem& rNew )
388*b1cdbd2cSJim Jagielski {
389*b1cdbd2cSJim Jagielski delete pHdBorder;
390*b1cdbd2cSJim Jagielski pHdBorder = new SvxBoxItem( rNew );
391*b1cdbd2cSJim Jagielski }
392*b1cdbd2cSJim Jagielski // -----------------------------------------------------------------------
393*b1cdbd2cSJim Jagielski
SetFtBorder(const SvxBoxItem & rNew)394*b1cdbd2cSJim Jagielski void SvxPageWindow::SetFtBorder( const SvxBoxItem& rNew )
395*b1cdbd2cSJim Jagielski {
396*b1cdbd2cSJim Jagielski delete pFtBorder;
397*b1cdbd2cSJim Jagielski pFtBorder = new SvxBoxItem( rNew );
398*b1cdbd2cSJim Jagielski }
399*b1cdbd2cSJim Jagielski /* -----------------------------13.06.2002 16:16------------------------------
400*b1cdbd2cSJim Jagielski
401*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
EnableFrameDirection(sal_Bool bEnable)402*b1cdbd2cSJim Jagielski void SvxPageWindow::EnableFrameDirection(sal_Bool bEnable)
403*b1cdbd2cSJim Jagielski {
404*b1cdbd2cSJim Jagielski pImpl->EnableFrameDirection(bEnable);
405*b1cdbd2cSJim Jagielski }
406*b1cdbd2cSJim Jagielski /* -----------------------------13.06.2002 16:16------------------------------
407*b1cdbd2cSJim Jagielski
408*b1cdbd2cSJim Jagielski ---------------------------------------------------------------------------*/
SetFrameDirection(sal_Int32 nFrameDirection)409*b1cdbd2cSJim Jagielski void SvxPageWindow::SetFrameDirection(sal_Int32 nFrameDirection)
410*b1cdbd2cSJim Jagielski {
411*b1cdbd2cSJim Jagielski pImpl->SetFrameDirection(nFrameDirection);
412*b1cdbd2cSJim Jagielski }
413*b1cdbd2cSJim Jagielski
ResetBackground()414*b1cdbd2cSJim Jagielski void SvxPageWindow::ResetBackground()
415*b1cdbd2cSJim Jagielski {
416*b1cdbd2cSJim Jagielski pImpl->bResetBackground = sal_True;
417*b1cdbd2cSJim Jagielski }
418