xref: /AOO41X/main/sw/source/core/inc/drawdev.hxx (revision 1d2dbeb0b7301723c6d13094e87a8714ef81a328)
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