Line data Source code
1 : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 : /*
3 : * This file is part of the LibreOffice project.
4 : *
5 : * This Source Code Form is subject to the terms of the Mozilla Public
6 : * License, v. 2.0. If a copy of the MPL was not distributed with this
7 : * file, You can obtain one at http://mozilla.org/MPL/2.0/.
8 : *
9 : * This file incorporates work covered by the following license notice:
10 : *
11 : * Licensed to the Apache Software Foundation (ASF) under one or more
12 : * contributor license agreements. See the NOTICE file distributed
13 : * with this work for additional information regarding copyright
14 : * ownership. The ASF licenses this file to you under the Apache
15 : * License, Version 2.0 (the "License"); you may not use this file
16 : * except in compliance with the License. You may obtain a copy of
17 : * the License at http://www.apache.org/licenses/LICENSE-2.0 .
18 : */
19 :
20 : #ifndef INCLUDED_CPPCANVAS_SOURCE_INC_OUTDEVSTATE_HXX
21 : #define INCLUDED_CPPCANVAS_SOURCE_INC_OUTDEVSTATE_HXX
22 :
23 : #include <com/sun/star/uno/Reference.hxx>
24 : #include <com/sun/star/uno/Sequence.hxx>
25 :
26 : #include <com/sun/star/rendering/StringContext.hpp>
27 : #include <com/sun/star/rendering/RenderState.hpp>
28 : #include <com/sun/star/rendering/XPolyPolygon2D.hpp>
29 : #include <com/sun/star/rendering/XCanvasFont.hpp>
30 : #include <com/sun/star/rendering/TextDirection.hpp>
31 : #include <basegfx/matrix/b2dhommatrix.hxx>
32 : #include <basegfx/polygon/b2dpolypolygon.hxx>
33 : #include <vcl/fntstyle.hxx>
34 : #include <vcl/vclenum.hxx>
35 : #include <vcl/outdev.hxx>
36 :
37 :
38 : namespace cppcanvas
39 : {
40 : namespace internal
41 : {
42 50 : struct OutDevState
43 : {
44 2 : OutDevState() :
45 : clip(),
46 : clipRect(),
47 : xClipPoly(),
48 :
49 : lineColor(),
50 : fillColor(),
51 : textColor(),
52 : textFillColor(),
53 : textLineColor(),
54 :
55 : xFont(),
56 : transform(),
57 : mapModeTransform(),
58 : fontRotation(0.0),
59 :
60 : textEmphasisMarkStyle(EMPHASISMARK_NONE),
61 : pushFlags(PushFlags::ALL),
62 : textDirection(::com::sun::star::rendering::TextDirection::WEAK_LEFT_TO_RIGHT),
63 : textAlignment(0), // TODO(Q2): Synchronize with implrenderer
64 : // and possibly new rendering::TextAlignment
65 : textReliefStyle(RELIEF_NONE),
66 : textOverlineStyle(UNDERLINE_NONE),
67 : textUnderlineStyle(UNDERLINE_NONE),
68 : textStrikeoutStyle(STRIKEOUT_NONE),
69 : textReferencePoint(ALIGN_BASELINE),
70 :
71 : isTextOutlineModeSet( false ),
72 : isTextEffectShadowSet( false ),
73 : isTextWordUnderlineSet( false ),
74 :
75 : isLineColorSet( false ),
76 : isFillColorSet( false ),
77 : isTextFillColorSet( false ),
78 2 : isTextLineColorSet( false )
79 : {
80 2 : }
81 :
82 : ::basegfx::B2DPolyPolygon clip;
83 : ::Rectangle clipRect;
84 : ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XPolyPolygon2D > xClipPoly;
85 :
86 : ::com::sun::star::uno::Sequence< double > lineColor;
87 : ::com::sun::star::uno::Sequence< double > fillColor;
88 : ::com::sun::star::uno::Sequence< double > textColor;
89 : ::com::sun::star::uno::Sequence< double > textFillColor;
90 : ::com::sun::star::uno::Sequence< double > textLineColor;
91 :
92 : /** Current font.
93 :
94 : @attention Beware, this member can be NULL, and
95 : nevertheless text output is generated.
96 : */
97 : ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XCanvasFont > xFont;
98 : ::basegfx::B2DHomMatrix transform;
99 : ::basegfx::B2DHomMatrix mapModeTransform;
100 : double fontRotation;
101 :
102 : sal_uInt16 textEmphasisMarkStyle;
103 : PushFlags pushFlags;
104 : sal_Int8 textDirection;
105 : sal_Int8 textAlignment;
106 : sal_Int8 textReliefStyle;
107 : sal_Int8 textOverlineStyle;
108 : sal_Int8 textUnderlineStyle;
109 : sal_Int8 textStrikeoutStyle;
110 : TextAlign textReferencePoint;
111 :
112 : bool isTextOutlineModeSet;
113 : bool isTextEffectShadowSet;
114 : bool isTextWordUnderlineSet;
115 :
116 : bool isLineColorSet;
117 : bool isFillColorSet;
118 : bool isTextFillColorSet;
119 : bool isTextLineColorSet;
120 : };
121 : }
122 : }
123 :
124 : #endif // INCLUDED_CPPCANVAS_SOURCE_INC_OUTDEVSTATE_HXX
125 :
126 : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|