-
Notifications
You must be signed in to change notification settings - Fork 68
/
Text.scala
202 lines (176 loc) · 6.33 KB
/
Text.scala
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
/*
* Copyright (c) 2011-2018, ScalaFX Project
* All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
* * Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* * Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* * Neither the name of the ScalaFX Project nor the
* names of its contributors may be used to endorse or promote products
* derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL THE SCALAFX PROJECT OR ITS CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
* SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package scalafx.scene.text
import javafx.scene.{paint => jfxsp, shape => jfxss, text => jfxst}
import javafx.{geometry => jfxg, scene => jfxs}
import scalafx.Includes._
import scalafx.beans.property._
import scalafx.delegate.{PositionDelegate, SFXDelegate}
import scalafx.geometry.VPos
import scalafx.scene.paint.Paint
import scalafx.scene.shape.Shape
import scalafx.scene.text.Font.sfxFont2jfx
import scala.language.implicitConversions
object Text {
implicit def sfxText2jfx(v: Text): jfxs.text.Text = if (v != null) v.delegate else null
}
class Text(override val delegate: jfxst.Text = new jfxst.Text)
extends Shape(delegate)
with PositionDelegate[jfxst.Text]
with SFXDelegate[jfxst.Text] {
/**
* Creates an instance of Text containing the given string.
*/
def this(t: String) = this(new jfxst.Text(t))
/**
* Creates an instance of Text on the given coordinates containing the given string.
*/
def this(x: Double, y: Double, t: String) = this(new jfxst.Text(x, y, t))
/**
* The 'alphabetic' (or roman) baseline offset from the Text node's layoutBounds.minY location.
*
*/
// NOTE IMPLEMENTATION: Added "Property" suffix to not conflict with Node.baselineOffset() method.
def baselineOffsetProperty: ReadOnlyDoubleProperty = delegate.baselineOffsetProperty
/**
* Determines how the bounds of the text node are calculated.
*/
def boundsType: ObjectProperty[jfxst.TextBoundsType] = delegate.boundsTypeProperty
def boundsType_=(v: TextBoundsType) {
boundsType() = v
}
/**
* Defines the font of text.
*/
def font: ObjectProperty[jfxst.Font] = delegate.fontProperty
def font_=(v: Font) {
font() = v
}
/**
* Specifies a requested font smoothing type : gray or LCD.
*/
def fontSmoothingType: ObjectProperty[jfxst.FontSmoothingType] = delegate.fontSmoothingTypeProperty
def fontSmoothingType_=(v: FontSmoothingType) {
fontSmoothingType() = v
}
/**
* Defines the vertical space in pixel between lines.
*/
def lineSpacing: DoubleProperty = delegate.lineSpacingProperty
def lineSpacing_=(v: Double) {
lineSpacing() = v
}
/**
* Defines if each line of text should have a line through it.
*/
def strikethrough: BooleanProperty = delegate.strikethroughProperty
def strikethrough_=(v: Boolean) {
strikethrough() = v
}
/**
* Defines text string that is to be displayed.
*/
def text: StringProperty = delegate.textProperty
def text_=(v: String) {
text() = v
}
/**
* Defines horizontal text alignment in the bounding box.
*/
def textAlignment: ObjectProperty[jfxst.TextAlignment] = delegate.textAlignmentProperty
def textAlignment_=(v: TextAlignment) {
textAlignment() = v
}
/**
* Defines the origin of text coordinate system in local coordinates.
*/
def textOrigin: ObjectProperty[jfxg.VPos] = delegate.textOriginProperty
def textOrigin_=(v: VPos) {
textOrigin() = v
}
/**
* Defines if each line of text should have a line below it.
*/
def underline: BooleanProperty = delegate.underlineProperty
def underline_=(v: Boolean) {
underline() = v
}
/**
* Defines a width constraint for the text in user space coordinates, e.g. pixels, not glyph or
* character count.
*/
def wrappingWidth: DoubleProperty = delegate.wrappingWidthProperty
def wrappingWidth_=(v: Double) {
wrappingWidth() = v
}
/**
* Caret bias in the content. `true` means a bias towards the leading character edge.
* (true=leading/false=trailing)
*/
def caretBias: BooleanProperty = delegate.caretBiasProperty
def caretBias_=(v: Boolean) {
caretBias() = v
}
/**
* The fill color of selected text.
*/
def selectionFill: ObjectProperty[jfxsp.Paint] = delegate.selectionFillProperty
def selectionFill_=(v: Paint) {
selectionFill() = v
}
/**
* Caret index in the content. Set to `-1` to unset caret.
*/
def caretPosition: IntegerProperty = delegate.caretPositionProperty
def caretPosition_=(v: Int) {
caretPosition() = v
}
/**
* Shape of caret in local coordinates.
*/
def caretShape: ReadOnlyObjectProperty[Array[jfxss.PathElement]] = delegate.caretShapeProperty
/**
* Shape of selection in local coordinates.
*/
def selectionShape: ReadOnlyObjectProperty[Array[jfxss.PathElement]] = delegate.selectionShapeProperty
/**
* Selection start index in the content.
* Set to `-1` to unset selection.
*/
def selectionStart: IntegerProperty = delegate.selectionStartProperty
def selectionStart_=(v: Int) {
selectionStart() = v
}
/**
* Selection end index in the content.
* Set to `-1` to unset selection.
*/
def selectionEnd: IntegerProperty = delegate.selectionEndProperty
def selectionEnd_=(v: Int) {
selectionEnd() = v
}
}