2 * Copyright (C) 2000 Lars Knoll (knoll@kde.org)
3 * (C) 2000 Antti Koivisto (koivisto@kde.org)
4 * (C) 2000 Dirk Mueller (mueller@kde.org)
5 * Copyright (C) 2003, 2006, 2007 Apple Computer, Inc.
7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version.
12 * This library is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15 * Library General Public License for more details.
17 * You should have received a copy of the GNU Library General Public License
18 * along with this library; see the file COPYING.LIB. If not, write to
19 * the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
20 * Boston, MA 02110-1301, USA.
27 #include "PlatformString.h"
36 TextRun(const UChar
* c
, int len
, bool allowTabs
= false, int xpos
= 0, int padding
= 0, bool rtl
= false, bool directionalOverride
= false,
37 bool applyRunRounding
= true, bool applyWordRounding
= true)
42 , m_allowTabs(allowTabs
)
44 , m_directionalOverride(directionalOverride
)
45 , m_applyRunRounding(applyRunRounding
)
46 , m_applyWordRounding(applyWordRounding
)
47 , m_disableSpacing(false)
49 , m_referencingRenderObject(0)
50 , m_activePaintServer(0)
55 TextRun(const String
& s
, bool allowTabs
= false, int xpos
= 0, int padding
= 0, bool rtl
= false, bool directionalOverride
= false,
56 bool applyRunRounding
= true, bool applyWordRounding
= true)
57 : m_characters(s
.characters())
61 , m_allowTabs(allowTabs
)
63 , m_directionalOverride(directionalOverride
)
64 , m_applyRunRounding(applyRunRounding
)
65 , m_applyWordRounding(applyWordRounding
)
66 , m_disableSpacing(false)
68 , m_referencingRenderObject(0)
69 , m_activePaintServer(0)
74 UChar
operator[](int i
) const { return m_characters
[i
]; }
75 const UChar
* data(int i
) const { return &m_characters
[i
]; }
77 const UChar
* characters() const { return m_characters
; }
78 int length() const { return m_len
; }
80 void setText(const UChar
* c
, int len
) { m_characters
= c
; m_len
= len
; }
82 bool allowTabs() const { return m_allowTabs
; }
83 int xPos() const { return m_xpos
; }
84 int padding() const { return m_padding
; }
85 bool rtl() const { return m_rtl
; }
86 bool ltr() const { return !m_rtl
; }
87 bool directionalOverride() const { return m_directionalOverride
; }
88 bool applyRunRounding() const { return m_applyRunRounding
; }
89 bool applyWordRounding() const { return m_applyWordRounding
; }
90 bool spacingDisabled() const { return m_disableSpacing
; }
92 void disableSpacing() { m_disableSpacing
= true; }
93 void disableRoundingHacks() { m_applyRunRounding
= m_applyWordRounding
= false; }
94 void setRTL(bool b
) { m_rtl
= b
; }
95 void setDirectionalOverride(bool override
) { m_directionalOverride
= override
; }
98 RenderObject
* referencingRenderObject() const { return m_referencingRenderObject
; }
99 void setReferencingRenderObject(RenderObject
* object
) { m_referencingRenderObject
= object
; }
101 SVGPaintServer
* activePaintServer() const { return m_activePaintServer
; }
102 void setActivePaintServer(SVGPaintServer
* object
) { m_activePaintServer
= object
; }
106 const UChar
* m_characters
;
113 bool m_directionalOverride
;
114 bool m_applyRunRounding
;
115 bool m_applyWordRounding
;
116 bool m_disableSpacing
;
118 #if ENABLE(SVG_FONTS)
119 RenderObject
* m_referencingRenderObject
;
120 SVGPaintServer
* m_activePaintServer
;