Class ComplexStrokeLineStyle.Builder
- All Implemented Interfaces:
AutoCloseable
- Enclosing class:
ComplexStrokeLineStyle
ComplexStrokeLineStyle
objects.- Since:
- 2023.1
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionaddDecoration
(ComplexStrokePattern pattern, double relativePosition) Add a decoration to be painted along the line.addDecoration
(ComplexStrokePattern pattern, double relativePosition, HorizontalAlignment alignment) Add a decoration to be painted along the line.build()
Build theComplexStrokeLineStyle
as configured.void
close()
fallback
(ComplexStrokePattern pattern) The pattern that is painted if no decoration or regular pattern can be painted.protected void
finalize()
orientation
(ComplexStrokeOrientation orientation) The orientation of the area that is used to render the complex stroke on for 3D lines.regular
(ComplexStrokePattern pattern) The pattern that is repeated along the line.sharpAngleThreshold
(double sharpAngleThreshold) The threshold that is used to determine if angles are sharp or not.
-
Constructor Details
-
Builder
-
-
Method Details
-
finalize
protected void finalize() -
close
public void close()- Specified by:
close
in interfaceAutoCloseable
-
build
Build theComplexStrokeLineStyle
as configured.At least one of
fallback
,regular
oraddDecoration
must be called. If none of these are called, a logic exception is thrown.- Returns:
- the
ComplexStrokeLineStyle
. - Throws:
IllegalStateException
- when neither a regular or a fallback pattern has been set and no decorations have been added.
-
fallback
The pattern that is painted if no decoration or regular pattern can be painted.This can happen if a line is too curved, or if there is not enough space to paint the regular pattern.
Some patterns influence whether the fallback pattern is painted or not, and where it is painted. For more information, see the
combineWithFallback
andcombineWithRegular
patterns.Note that the fallback pattern can be cut off, e.g. when reaching the end of the line, instead of being omitted. This means that a base pattern can be partially drawn.
- Returns:
- this builder.
-
regular
The pattern that is repeated along the line.A regular pattern is painted where no decoration is painted, because decorations have priority over the regular pattern.
If there is not enough space to place the regular pattern, the fallback pattern is painted.
Some patterns influence whether the regular pattern is painted or not, and where it is painted. For more information, see the
combineWithRegular
pattern wrapper.Note that, unlike the fallback stroke, (patterns part of) the regular pattern will not be cut off. That is, each base pattern will always be fully painted or not at all. This is different from the
atomic pattern
which is about a composite pattern being painted together or not at all.- Returns:
- this builder.
-
addDecoration
@NotNull public ComplexStrokeLineStyle.Builder addDecoration(@NotNull ComplexStrokePattern pattern, double relativePosition, @NotNull HorizontalAlignment alignment) throws IllegalArgumentException Add a decoration to be painted along the line.A decoration is a
pattern
.This method can be called multiple times to add multiple decorations. If this method isn't called, no decorations are added.
- Parameters:
pattern
- the decoration to be added.relativePosition
- the relative position of the decoration on the line, where0.0
is the start and1.0
is the end of the entire line.alignment
- determines how the pattern is aligned to its location. If you useHorizontalAlignment#Center
, the middle of the pattern will coincide with the specified location. If you useHorizontalAlignment#Right
, the right of the pattern will coincide with the specified location. This means that it will appear at the left of the location.- Returns:
- this builder.
- Throws:
IllegalArgumentException
- relativePosition must be in range[0,1]
.
-
addDecoration
@NotNull public ComplexStrokeLineStyle.Builder addDecoration(@NotNull ComplexStrokePattern pattern, double relativePosition) throws IllegalArgumentException Add a decoration to be painted along the line.A decoration is a
pattern
.This method can be called multiple times to add multiple decorations. If this method isn't called, no decorations are added.
The alignment is automatically determined based on relativePosition.
Left
if the position is0.0
,Right
if the location is1.0
, andCenter
if otherwise.- Parameters:
pattern
- the decoration to be added.relativePosition
- the relative position of the decoration on the line, where0.0
is the start and1.0
is the end of the entire line.- Returns:
- this builder.
- Throws:
IllegalArgumentException
- relativePosition must be in range[0,1]
.
-
sharpAngleThreshold
@NotNull public ComplexStrokeLineStyle.Builder sharpAngleThreshold(double sharpAngleThreshold) throws IllegalArgumentException The threshold that is used to determine if angles are sharp or not.It is interpreted as an angle in degrees between two line segments. In the context of complex stroking, sharp corners are handled differently than non-sharp corners.
In general, a non-sharp corner is handled as if there were no corner at all. This means that any stroke can just be painted along the corner. As a side-effect, strokes may be deformed. This deformation is small for corners that are close to 180 degrees wide, meaning for line segments that are almost parallel. The deformation can become quite large for sharper corners though, so take care when you adjust this value.
On the other hand, when a corner is considered sharp, strokes will not be deformed, but they may be dropped instead.
This setting is useful when complex strokes use a uniform shape and color, for example. When you are painting an airspace border using a rectangular stroke along the length of the line, you can set the threshold to 0, for instance.
The value should always be in the
[0, 180]
degrees range. The default value is155
degrees.- Parameters:
sharpAngleThreshold
- the sharpAngleThreshold.- Returns:
- this builder.
- Throws:
IllegalArgumentException
- sharpAngleThreshold must be in range[0,180]
.
-
orientation
@NotNull public ComplexStrokeLineStyle.Builder orientation(@NotNull ComplexStrokeOrientation orientation) The orientation of the area that is used to render the complex stroke on for 3D lines.See
ComplexStrokeLineStyle
for more information.The default, the complex stroke
faces the camera
for 3D lines.- Parameters:
orientation
- the orientation- Returns:
- this builder
-