1 /**************************************************************
2 *
3 * Licensed to the Apache Software Foundation (ASF) under one
4 * or more contributor license agreements. See the NOTICE file
5 * distributed with this work for additional information
6 * regarding copyright ownership. The ASF licenses this file
7 * to you under the Apache License, Version 2.0 (the
8 * "License"); you may not use this file except in compliance
9 * with the License. You may obtain a copy of the License at
10 *
11 * http://www.apache.org/licenses/LICENSE-2.0
12 *
13 * Unless required by applicable law or agreed to in writing,
14 * software distributed under the License is distributed on an
15 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16 * KIND, either express or implied. See the License for the
17 * specific language governing permissions and limitations
18 * under the License.
19 *
20 *************************************************************/
21
22
23
24 #ifndef _DRAWDEV_HXX
25 #define _DRAWDEV_HXX
26
27 #include "swrect.hxx"
28
29 #ifndef _OUTDEV_HXX //autogen
30 #include <vcl/outdev.hxx>
31 #endif
32
33 /*************************************************************************
34 * class SwDrawDev
35 *
36 * Alle Draw-Methoden werden um den Offset *pPos verschoben.
37 *************************************************************************/
38
39 class SwDrawDev
40 {
41 OutputDevice *pOut;
42 const Point *pPos;
43
44 public:
SwDrawDev(OutputDevice * pOutDev,const Point * pPosition)45 inline SwDrawDev( OutputDevice *pOutDev, const Point *pPosition )
46 :pOut(pOutDev), pPos(pPosition) { }
47
GetOut()48 inline OutputDevice *GetOut() { return pOut; }
49
50 // Ausgabemethoden
51 inline void DrawText( const Point& rStart, const String& rTxt,
52 const sal_uInt16 nIdx = 0,
53 const sal_uInt16 nLen = STRING_LEN );
54 inline void DrawStretchText( const Point& rStart, sal_uInt16 nWidth,
55 const String& rTxt,
56 const sal_uInt16 nIdx = 0,
57 const sal_uInt16 nLen = STRING_LEN );
58 inline void DrawTextArray( const Point& rStart,
59 const String& rTxt,
60 long *pKernArray = 0,
61 const sal_uInt16 nIdx = 0,
62 const sal_uInt16 nLen = STRING_LEN);
63 inline void DrawLine( const Point& rStart, const Point& rEnd );
64 inline void DrawRect( const SwRect& rRect,
65 const sal_uInt16 nHorzRount = 0,
66 const sal_uInt16 nVertRound = 0 );
67
GetOrigin() const68 inline const Point *GetOrigin() const {return pPos; }
69 };
70
71 /*************************************************************************
72 * SwDrawDev::DrawText
73 *************************************************************************/
74
DrawText(const Point & rStart,const String & rTxt,const sal_uInt16 nIdx,const sal_uInt16 nLen)75 inline void SwDrawDev::DrawText( const Point& rStart, const String& rTxt,
76 const sal_uInt16 nIdx, const sal_uInt16 nLen )
77 {
78 if( !pPos )
79 pOut->DrawText( rStart, rTxt, nIdx, nLen );
80 else
81 pOut->DrawText( rStart - *pPos, rTxt, nIdx, nLen );
82 }
83
84 /*************************************************************************
85 * SwDrawDev::DrawStretchText
86 *************************************************************************/
87
DrawStretchText(const Point & rStart,sal_uInt16 nWidth,const String & rTxt,const sal_uInt16 nIdx,const sal_uInt16 nLen)88 inline void SwDrawDev::DrawStretchText( const Point& rStart, sal_uInt16 nWidth,
89 const String& rTxt, const sal_uInt16 nIdx, const sal_uInt16 nLen )
90 {
91 if( !pPos )
92 pOut->DrawStretchText( rStart, nWidth, rTxt, nIdx, nLen );
93 else
94 pOut->DrawStretchText( rStart - *pPos, nWidth, rTxt, nIdx, nLen );
95 }
96
97 /*************************************************************************
98 * SwDrawDev::DrawTextArray
99 *************************************************************************/
100
DrawTextArray(const Point & rStart,const String & rTxt,long * pKernArray,const sal_uInt16 nIdx,const sal_uInt16 nLen)101 inline void SwDrawDev::DrawTextArray( const Point& rStart, const String& rTxt,
102 long *pKernArray, const sal_uInt16 nIdx, const sal_uInt16 nLen )
103 {
104 if( !pPos )
105 pOut->DrawTextArray( rStart, rTxt, pKernArray, nIdx, nLen );
106 else
107 pOut->DrawTextArray( rStart - *pPos, rTxt, pKernArray, nIdx, nLen );
108 }
109
110 /*************************************************************************
111 * SwDrawDev::DrawLine
112 *************************************************************************/
113
DrawLine(const Point & rStart,const Point & rEnd)114 inline void SwDrawDev::DrawLine( const Point& rStart, const Point& rEnd )
115 {
116 if( !pPos )
117 pOut->DrawLine( rStart, rEnd );
118 else
119 pOut->DrawLine( rStart - *pPos, rEnd - *pPos );
120 }
121
122 /*************************************************************************
123 * SwDrawDev::DrawRect
124 *************************************************************************/
125
DrawRect(const SwRect & rRect,const sal_uInt16 nHorzRound,const sal_uInt16 nVertRound)126 inline void SwDrawDev::DrawRect( const SwRect& rRect,
127 const sal_uInt16 nHorzRound, const sal_uInt16 nVertRound )
128 {
129 SwRect aRect( rRect );
130 if( pPos )
131 aRect.Pos() -= *pPos;
132 pOut->DrawRect( aRect.SVRect(), nHorzRound, nVertRound );
133 }
134
135
136 #endif
137