Class StyledMapRenderer
- java.lang.Object
-
- org.openstreetmap.josm.data.osm.visitor.paint.AbstractMapRenderer
-
- org.openstreetmap.josm.data.osm.visitor.paint.StyledMapRenderer
-
- All Implemented Interfaces:
Rendering
- Direct Known Subclasses:
StyledTiledMapRenderer
public class StyledMapRenderer extends AbstractMapRenderer
A map renderer which renders a map according to style rules in a set of style sheets.- Since:
- 486
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static class
StyledMapRenderer.StyleRecord
This stores a style and a primitive that should be painted with that style.
-
Field Summary
Fields Modifier and Type Field Description private java.lang.Object
antialiasing
private java.util.function.Supplier<RenderBenchmarkCollector>
benchmarkFactory
private double
circum
private static double
cosPHI
(package private) static int
FLAG_DISABLED
A primitive withAbstractPrimitive.isDisabled()
(package private) static int
FLAG_MEMBER_OF_SELECTED
A primitive withOsmPrimitive.isMemberOfSelected()
(package private) static int
FLAG_NORMAL
Flags used to store the primitive state along with the style.(package private) static int
FLAG_OUTERMEMBER_OF_SELECTED
A primitive withOsmPrimitive.isOuterMemberOfSelected()
(package private) static int
FLAG_SELECTED
A primitive withOsmPrimitive.isSelected()
private static AbstractProperty<java.lang.Integer>
HIGHLIGHT_LINE_WIDTH
The line with to use for highlightingprivate static AbstractProperty<java.lang.Integer>
HIGHLIGHT_POINT_RADIUS
private static AbstractProperty<java.lang.Integer>
HIGHLIGHT_STEP
private java.awt.Color
highlightColorTransparent
private java.util.Collection<WaySegment>
highlightWaySegments
private static java.util.Map<java.awt.Font,java.lang.Boolean>
IS_GLYPH_VECTOR_DOUBLE_TRANSLATION_BUG
private boolean
isOutlineOnly
private boolean
leftHandTraffic
private MapPaintSettings
paintSettings
private static double
PHI
static AbstractProperty<java.lang.Boolean>
PREFERENCE_ANTIALIASING_USE
Indicates that the renderer should enable anti-aliasingprivate static AbstractProperty<java.lang.Boolean>
PREFERENCE_LEFT_HAND_TRAFFIC
If we should use left hand traffic.static AbstractProperty<java.lang.String>
PREFERENCE_TEXT_ANTIALIASING
The mode that is used for anti-aliasingprivate double
scale
private boolean
showIcons
private boolean
showNames
private static double
sinPHI
private ElemStyles
styles
private static java.util.concurrent.ForkJoinPool
THREAD_POOL
private boolean
useStrokes
private boolean
useWiderHighlight
private static AbstractProperty<java.lang.Integer>
WIDER_HIGHLIGHT
-
Fields inherited from class org.openstreetmap.josm.data.osm.visitor.paint.AbstractMapRenderer
backgroundColor, doSlowOperations, g, highlightColor, inactiveColor, isInactiveMode, mapState, nc, nodeColor, relationSelectedColor, segmentNumberSpace, selectedColor, virtualNodeSize, virtualNodeSpace
-
-
Constructor Summary
Constructors Constructor Description StyledMapRenderer(java.awt.Graphics2D g, NavigatableComponent nc, boolean isInactiveMode)
Constructs a newStyledMapRenderer
.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description private static void
appendOnewayPath(boolean onewayReversed, MapViewState.MapViewPoint p1, double nx, double ny, double dist, double onewaySize, java.awt.geom.Path2D onewayPath)
private static void
buildPFClip(java.awt.geom.Path2D.Double clip, java.util.List<? extends INode> nodes, double extent)
Fix the clipping area of unclosed polygons for partial fill.private void
computeFill(java.awt.Shape shape, java.lang.Float extent, MapViewPath pfClip, float mitterLimit)
Fill the given shape.static int
computeFlags(IPrimitive primitive, boolean checkOuterMember)
Computes the flags for a given OSM primitive.private static double
computeStartOffset(double phase, double repeat)
private void
displaySegments(MapViewPath path, java.awt.geom.Path2D orientationArrows, java.awt.geom.Path2D onewayArrows, java.awt.geom.Path2D onewayArrowsCasing, java.awt.Color color, java.awt.BasicStroke line, java.awt.BasicStroke dashes, java.awt.Color dashedColor)
private void
displayText(java.lang.Runnable fill, java.util.function.Supplier<java.awt.Shape> outline, boolean disabled, TextLabel text)
Displays text at specified position including its halo, if applicable.private void
displayText(IPrimitive osm, TextLabel text, java.lang.String name, java.awt.geom.AffineTransform at)
private void
displayText(IPrimitive osm, TextLabel text, java.lang.String name, java.awt.geom.Rectangle2D nb, MapViewPositionAndRotation center)
void
drawArea(IWay<?> w, java.awt.Color color, MapImage fillImage, java.lang.Float extent, java.lang.Float extentThreshold, boolean disabled)
Draws an area defined by a way.void
drawArea(Relation r, java.awt.Color color, MapImage fillImage, java.lang.Float extent, java.lang.Float extentThreshold, boolean disabled)
Draws a multipolygon area.protected void
drawArea(MapViewPath area, java.awt.Color color, MapImage fillImage, java.lang.Float extent, MapViewPath pfClip, boolean disabled)
Worker function for drawing areas.void
drawAreaIcon(IPrimitive osm, MapImage img, boolean disabled, boolean selected, boolean member, double theta, PositionForAreaStrategy iconPosition)
Draw the icon for a given area.void
drawBoxText(INode n, BoxTextElement bs)
Draw a text onto a nodeprivate void
drawIcon(double x, double y, MapImage img, boolean disabled, boolean selected, boolean member, double theta, java.util.function.BiConsumer<java.awt.Graphics2D,java.awt.geom.Rectangle2D> selectionDrawer)
void
drawNode(INode n, java.awt.Color color, int size, boolean fill)
Draw the node as small square with the given color.void
drawNodeIcon(INode n, MapImage img, boolean disabled, boolean selected, boolean member, double theta)
Draw the icon for a given node.void
drawNodeSymbol(INode n, Symbol s, java.awt.Color fillColor, java.awt.Color strokeColor)
Draw the symbol and possibly a highlight marking on a given node.void
drawOrderNumber(INode n1, INode n2, int orderNumber, java.awt.Color clr)
Draw a number of the order of the two consecutive nodes within the parents wayprivate void
drawPathHighlight(MapViewPath path, java.awt.BasicStroke line)
highlights a given GeneralPath using the settings from BasicStroke to match the line's style.private void
drawPointHighlight(java.awt.geom.Point2D p, int size)
highlights a given point by drawing a rounded rectangle around it.void
drawRepeatImage(IWay<?> way, MapImage pattern, boolean disabled, double offset, double spacing, double phase, float opacity, RepeatImageElement.LineImageAlignment align)
Draw an image along a way repeatedly.void
drawRestriction(IRelation<?> r, MapImage icon, boolean disabled)
Draw a turn restrictionvoid
drawText(IPrimitive osm, TextLabel text, PositionForAreaStrategy labelPositionStrategy)
Draws a text for the given primitivevoid
drawWay(IWay<?> way, java.awt.Color color, java.awt.BasicStroke line, java.awt.BasicStroke dashes, java.awt.Color dashedColor, float offset, boolean showOrientation, boolean showHeadArrowOnly, boolean showOneway, boolean onewayReversed)
draw way.private void
forEachPolygon(IPrimitive osm, java.util.function.Consumer<MapViewPath> consumer)
Calls a consumer for each path of the area shape-double
getCircum()
Gets the "circum".void
getColors()
Reads the color definitions from preferences.private MapViewPath
getPath(IWay<?> w)
private static java.awt.geom.Path2D.Double
getPFClip(IWay<?> w, double extent)
private static java.awt.geom.Path2D.Double
getPFClip(Multipolygon.PolyData pd, double extent)
private static EastNorth
getPFDisplacedEndPoint(EastNorth p1, EastNorth p2, EastNorth p3, double extent)
Get the point to add to the clipping area for partial fill of unclosed polygons.private java.awt.Color
getSelectionHintColor(boolean disabled, boolean selected)
void
getSettings(boolean virtual)
Reads all the settings from preferences.private boolean
isAreaVisible(java.awt.geom.Path2D.Double area)
Test if the area is visiblestatic boolean
isGlyphVectorDoubleTranslationBug(java.awt.Font font)
Check, if this System has the GlyphVector double translation bug.boolean
isInactiveMode()
Determines if the paint visitor shall render OSM objects such that they look inactive.boolean
isShowIcons()
Check if icons should be renderedboolean
isShowNames()
Test if names should be renderedprivate static java.util.concurrent.ForkJoinPool
newForkJoinPool()
private void
paintRecord(StyledMapRenderer.StyleRecord styleRecord)
private void
paintWithLock(OsmData<?,?,?,?> data, boolean renderVirtualNodes, RenderBenchmarkCollector benchmark, BBox bbox)
void
render(OsmData<?,?,?,?> data, boolean renderVirtualNodes, Bounds bounds)
Renders the OSM data indata
void
setBenchmarkFactory(java.util.function.Supplier<RenderBenchmarkCollector> benchmarkFactory)
Sets the factory that creates the benchmark data receivers.void
setStyles(ElemStyles styles)
Set theElemStyles
instance to use for this renderer.private MapViewPath
shapeEastNorthToMapView(java.awt.geom.Path2D.Double shape)
Convert shape in EastNorth coordinates to MapViewPath and remove invisible parts.private boolean
usePartialFill(Geometry.AreaAndPerimeter ap, float extent, java.lang.Float threshold)
Determine, if partial fill should be turned off for this object, because only a small unfilled gap in the center of the area would be left.-
Methods inherited from class org.openstreetmap.josm.data.osm.visitor.paint.AbstractMapRenderer
drawOrderNumber, drawVirtualNodes, enableSlowOperations, isLargeSegment, isSegmentVisible, isSegmentVisible, visitVirtual
-
-
-
-
Field Detail
-
THREAD_POOL
private static final java.util.concurrent.ForkJoinPool THREAD_POOL
-
IS_GLYPH_VECTOR_DOUBLE_TRANSLATION_BUG
private static final java.util.Map<java.awt.Font,java.lang.Boolean> IS_GLYPH_VECTOR_DOUBLE_TRANSLATION_BUG
-
circum
private double circum
-
scale
private double scale
-
paintSettings
private MapPaintSettings paintSettings
-
styles
private ElemStyles styles
-
highlightColorTransparent
private java.awt.Color highlightColorTransparent
-
FLAG_NORMAL
static final int FLAG_NORMAL
Flags used to store the primitive state along with the style. This is the normal style.Not used in any public interfaces.
- See Also:
- Constant Field Values
-
FLAG_DISABLED
static final int FLAG_DISABLED
A primitive withAbstractPrimitive.isDisabled()
- See Also:
- Constant Field Values
-
FLAG_MEMBER_OF_SELECTED
static final int FLAG_MEMBER_OF_SELECTED
A primitive withOsmPrimitive.isMemberOfSelected()
- See Also:
- Constant Field Values
-
FLAG_SELECTED
static final int FLAG_SELECTED
A primitive withOsmPrimitive.isSelected()
- See Also:
- Constant Field Values
-
FLAG_OUTERMEMBER_OF_SELECTED
static final int FLAG_OUTERMEMBER_OF_SELECTED
A primitive withOsmPrimitive.isOuterMemberOfSelected()
- See Also:
- Constant Field Values
-
PHI
private static final double PHI
-
cosPHI
private static final double cosPHI
-
sinPHI
private static final double sinPHI
-
PREFERENCE_LEFT_HAND_TRAFFIC
private static final AbstractProperty<java.lang.Boolean> PREFERENCE_LEFT_HAND_TRAFFIC
If we should use left hand traffic.
-
PREFERENCE_ANTIALIASING_USE
public static final AbstractProperty<java.lang.Boolean> PREFERENCE_ANTIALIASING_USE
Indicates that the renderer should enable anti-aliasing- Since:
- 11758
-
PREFERENCE_TEXT_ANTIALIASING
public static final AbstractProperty<java.lang.String> PREFERENCE_TEXT_ANTIALIASING
The mode that is used for anti-aliasing- Since:
- 11758
-
HIGHLIGHT_LINE_WIDTH
private static final AbstractProperty<java.lang.Integer> HIGHLIGHT_LINE_WIDTH
The line with to use for highlighting
-
HIGHLIGHT_POINT_RADIUS
private static final AbstractProperty<java.lang.Integer> HIGHLIGHT_POINT_RADIUS
-
WIDER_HIGHLIGHT
private static final AbstractProperty<java.lang.Integer> WIDER_HIGHLIGHT
-
HIGHLIGHT_STEP
private static final AbstractProperty<java.lang.Integer> HIGHLIGHT_STEP
-
highlightWaySegments
private java.util.Collection<WaySegment> highlightWaySegments
-
useWiderHighlight
private final boolean useWiderHighlight
-
useStrokes
private boolean useStrokes
-
showNames
private boolean showNames
-
showIcons
private boolean showIcons
-
isOutlineOnly
private boolean isOutlineOnly
-
leftHandTraffic
private boolean leftHandTraffic
-
antialiasing
private java.lang.Object antialiasing
-
benchmarkFactory
private java.util.function.Supplier<RenderBenchmarkCollector> benchmarkFactory
-
-
Constructor Detail
-
StyledMapRenderer
public StyledMapRenderer(java.awt.Graphics2D g, NavigatableComponent nc, boolean isInactiveMode)
Constructs a newStyledMapRenderer
.- Parameters:
g
- the graphics context. Must not be null.nc
- the map viewport. Must not be null.isInactiveMode
- if true, the paint visitor shall render OSM objects such that they look inactive. Example: rendering of data in an inactive layer using light gray as color only.- Throws:
java.lang.IllegalArgumentException
- ifg
is nulljava.lang.IllegalArgumentException
- ifnc
is null
-
-
Method Detail
-
newForkJoinPool
private static java.util.concurrent.ForkJoinPool newForkJoinPool()
-
isGlyphVectorDoubleTranslationBug
public static boolean isGlyphVectorDoubleTranslationBug(java.awt.Font font)
Check, if this System has the GlyphVector double translation bug.With this bug,
gv.setGlyphTransform(i, trfm)
has a different effect than on most other systems, namely the translation components ("m02" & "m12",AffineTransform
) appear to be twice as large, as they actually are. The rotation is unaffected (scale & shear not tested so far).This bug has only been observed on Mac OS X, see #7841.
After switch to Java 7, this test is a false positive on Mac OS X (see #10446), i.e. it returns true, but the real rendering code does not require any special handling. It hasn't been further investigated why the test reports a wrong result in this case, but the method has been changed to simply return false by default. (This can be changed with a setting in the advanced preferences.)
- Parameters:
font
- The font to check.- Returns:
- false by default, but depends on the value of the advanced preference glyph-bug=false|true|auto, where auto is the automatic detection method which apparently no longer gives a useful result for Java 7.
-
setStyles
public void setStyles(ElemStyles styles)
Set theElemStyles
instance to use for this renderer.- Parameters:
styles
- theElemStyles
instance to use
-
displaySegments
private void displaySegments(MapViewPath path, java.awt.geom.Path2D orientationArrows, java.awt.geom.Path2D onewayArrows, java.awt.geom.Path2D onewayArrowsCasing, java.awt.Color color, java.awt.BasicStroke line, java.awt.BasicStroke dashes, java.awt.Color dashedColor)
-
drawArea
protected void drawArea(MapViewPath area, java.awt.Color color, MapImage fillImage, java.lang.Float extent, MapViewPath pfClip, boolean disabled)
Worker function for drawing areas.- Parameters:
area
- the path object for the area that should be drawn; in case of multipolygons, this can path can be a complex shape with one outer polygon and one or more inner polygonscolor
- The color to fill the area with.fillImage
- The image to fill the area with. Overrides color.extent
- if not null, area will be filled partially; specifies, how far to fill from the boundary towards the center of the area; if null, area will be filled completelypfClip
- clipping area for partial fill (only needed for unclosed polygons)disabled
- If this should be drawn with a special disabled style.
-
computeFill
private void computeFill(java.awt.Shape shape, java.lang.Float extent, MapViewPath pfClip, float mitterLimit)
Fill the given shape. If partial fill is used, computes the clipping.- Parameters:
shape
- the given shapeextent
- if not null, area will be filled partially; specifies, how far to fill from the boundary towards the center of the area; if null, area will be filled completelypfClip
- clipping area for partial fill (only needed for unclosed polygons)mitterLimit
- parameter for BasicStroke
-
drawArea
public void drawArea(Relation r, java.awt.Color color, MapImage fillImage, java.lang.Float extent, java.lang.Float extentThreshold, boolean disabled)
Draws a multipolygon area.- Parameters:
r
- The multipolygon relationcolor
- The color to fill the area with.fillImage
- The image to fill the area with. Overrides color.extent
- if not null, area will be filled partially; specifies, how far to fill from the boundary towards the center of the area; if null, area will be filled completelyextentThreshold
- if not null, determines if the partial filled should be replaced by plain fill, when it covers a certain fraction of the total areadisabled
- If this should be drawn with a special disabled style.- Since:
- 12285
-
shapeEastNorthToMapView
private MapViewPath shapeEastNorthToMapView(java.awt.geom.Path2D.Double shape)
Convert shape in EastNorth coordinates to MapViewPath and remove invisible parts. For complex shapes this improves performance drastically because the methods in Graphics2D.clip() and Graphics2D.draw() are rather slow.- Parameters:
shape
- the shape to convert- Returns:
- the converted shape
-
drawArea
public void drawArea(IWay<?> w, java.awt.Color color, MapImage fillImage, java.lang.Float extent, java.lang.Float extentThreshold, boolean disabled)
Draws an area defined by a way. They way does not need to be closed, but it should.- Parameters:
w
- The way.color
- The color to fill the area with.fillImage
- The image to fill the area with. Overrides color.extent
- if not null, area will be filled partially; specifies, how far to fill from the boundary towards the center of the area; if null, area will be filled completelyextentThreshold
- if not null, determines if the partial filled should be replaced by plain fill, when it covers a certain fraction of the total areadisabled
- If this should be drawn with a special disabled style.- Since:
- 12285
-
usePartialFill
private boolean usePartialFill(Geometry.AreaAndPerimeter ap, float extent, java.lang.Float threshold)
Determine, if partial fill should be turned off for this object, because only a small unfilled gap in the center of the area would be left.This is used to get a cleaner look for urban regions with many small areas like buildings, etc.
- Parameters:
ap
- the area and the perimeter of the objectextent
- the "width" of partial fillthreshold
- when the partial fill covers that much of the total area, the partial fill is turned off; can be greater than 100% as the covered area is estimated asperimeter * extent
- Returns:
- true, if the partial fill should be used, false otherwise
-
drawBoxText
public void drawBoxText(INode n, BoxTextElement bs)
Draw a text onto a node- Parameters:
n
- The node to draw the text onbs
- The text and it's alignment.
-
drawRepeatImage
public void drawRepeatImage(IWay<?> way, MapImage pattern, boolean disabled, double offset, double spacing, double phase, float opacity, RepeatImageElement.LineImageAlignment align)
Draw an image along a way repeatedly.- Parameters:
way
- the waypattern
- the imagedisabled
- If this should be drawn with a special disabled style.offset
- offset from the wayspacing
- spacing between two imagesphase
- initial spacingopacity
- the opacityalign
- alignment of the image. The top, center or bottom edge can be aligned with the way.
-
computeStartOffset
private static double computeStartOffset(double phase, double repeat)
-
drawNode
public void drawNode(INode n, java.awt.Color color, int size, boolean fill)
Description copied from class:AbstractMapRenderer
Draw the node as small square with the given color.- Specified by:
drawNode
in classAbstractMapRenderer
- Parameters:
n
- The node to draw.color
- The color of the node.size
- size in pixelsfill
- determines if the square must be filled
-
drawNodeIcon
public void drawNodeIcon(INode n, MapImage img, boolean disabled, boolean selected, boolean member, double theta)
Draw the icon for a given node.- Parameters:
n
- The nodeimg
- The icon to draw at the node positiondisabled
- true to render disabled version,false
for the standard versionselected
- true to render it as selected,false
otherwisemember
- true to render it as a relation member,false
otherwisetheta
- the angle of rotation in radians
-
drawAreaIcon
public void drawAreaIcon(IPrimitive osm, MapImage img, boolean disabled, boolean selected, boolean member, double theta, PositionForAreaStrategy iconPosition)
Draw the icon for a given area. Normally, the icon is drawn around the center of the area.- Parameters:
osm
- The primitive to draw the icon forimg
- The icon to drawdisabled
- true to render disabled version,false
for the standard versionselected
- true to render it as selected,false
otherwisemember
- true to render it as a relation member,false
otherwisetheta
- the angle of rotation in radiansiconPosition
- Where to place the icon.- Since:
- 11670
-
drawIcon
private void drawIcon(double x, double y, MapImage img, boolean disabled, boolean selected, boolean member, double theta, java.util.function.BiConsumer<java.awt.Graphics2D,java.awt.geom.Rectangle2D> selectionDrawer)
-
getSelectionHintColor
private java.awt.Color getSelectionHintColor(boolean disabled, boolean selected)
-
drawNodeSymbol
public void drawNodeSymbol(INode n, Symbol s, java.awt.Color fillColor, java.awt.Color strokeColor)
Draw the symbol and possibly a highlight marking on a given node.- Parameters:
n
- The position to draw the symbol ons
- The symbol to drawfillColor
- The color to fill the symbol withstrokeColor
- The color to use for the outer corner of the symbol
-
drawOrderNumber
public void drawOrderNumber(INode n1, INode n2, int orderNumber, java.awt.Color clr)
Draw a number of the order of the two consecutive nodes within the parents way- Parameters:
n1
- First node of the way segment.n2
- Second node of the way segment.orderNumber
- The number of the segment in the way.clr
- The color to use for drawing the text.
-
drawPathHighlight
private void drawPathHighlight(MapViewPath path, java.awt.BasicStroke line)
highlights a given GeneralPath using the settings from BasicStroke to match the line's style. Width of the highlight can be changed by user preferences- Parameters:
path
- path to drawline
- line style
-
drawPointHighlight
private void drawPointHighlight(java.awt.geom.Point2D p, int size)
highlights a given point by drawing a rounded rectangle around it. Give the size of the object you want to be highlighted, width is added automatically.- Parameters:
p
- pointsize
- highlight size
-
drawRestriction
public void drawRestriction(IRelation<?> r, MapImage icon, boolean disabled)
Draw a turn restriction- Parameters:
r
- The turn restriction relationicon
- The icon to draw at the turn pointdisabled
- draw using disabled style
-
drawText
public void drawText(IPrimitive osm, TextLabel text, PositionForAreaStrategy labelPositionStrategy)
Draws a text for the given primitive- Parameters:
osm
- The primitive to draw the text fortext
- The text definition (font/position/.../text content) to drawlabelPositionStrategy
- The position of the text- Since:
- 11722
-
displayText
private void displayText(IPrimitive osm, TextLabel text, java.lang.String name, java.awt.geom.Rectangle2D nb, MapViewPositionAndRotation center)
-
displayText
private void displayText(IPrimitive osm, TextLabel text, java.lang.String name, java.awt.geom.AffineTransform at)
-
displayText
private void displayText(java.lang.Runnable fill, java.util.function.Supplier<java.awt.Shape> outline, boolean disabled, TextLabel text)
Displays text at specified position including its halo, if applicable.- Parameters:
fill
- The function that fills the textoutline
- The function to draw the outlinedisabled
-true
if element is disabled (filtered out)text
- text style to use
-
forEachPolygon
private void forEachPolygon(IPrimitive osm, java.util.function.Consumer<MapViewPath> consumer)
Calls a consumer for each path of the area shape-- Parameters:
osm
- A way or a multipolygonconsumer
- The consumer to call.
-
drawWay
public void drawWay(IWay<?> way, java.awt.Color color, java.awt.BasicStroke line, java.awt.BasicStroke dashes, java.awt.Color dashedColor, float offset, boolean showOrientation, boolean showHeadArrowOnly, boolean showOneway, boolean onewayReversed)
draw way. This method allows for two draw styles (line using color, dashes using dashedColor) to be passed.- Parameters:
way
- The way to drawcolor
- The base color to draw the way inline
- The line style to use. This is drawn using color.dashes
- The dash style to use. This is drawn using dashedColor.null
if unused.dashedColor
- The color of the dashes.offset
- The offsetshowOrientation
- show arrows that indicate the technical orientation of the way (defined by order of nodes)showHeadArrowOnly
- True if only the arrow at the end of the line but not those on the segments should be displayed.showOneway
- show symbols that indicate the direction of the feature, e.g. oneway street or waterwayonewayReversed
- for oneway=-1 and similar
-
appendOnewayPath
private static void appendOnewayPath(boolean onewayReversed, MapViewState.MapViewPoint p1, double nx, double ny, double dist, double onewaySize, java.awt.geom.Path2D onewayPath)
-
getCircum
public double getCircum()
Gets the "circum". This is the distance on the map in meters that 100 screen pixels represent.- Returns:
- The "circum"
-
getColors
public void getColors()
Description copied from class:AbstractMapRenderer
Reads the color definitions from preferences. This function ispublic
, so that color names in preferences can be displayed even without calling the wireframe display before.- Overrides:
getColors
in classAbstractMapRenderer
-
getSettings
public void getSettings(boolean virtual)
Description copied from class:AbstractMapRenderer
Reads all the settings from preferences. Calls theAbstractMapRenderer.getColors()
function.- Overrides:
getSettings
in classAbstractMapRenderer
- Parameters:
virtual
-true
if virtual nodes are used
-
getPath
private MapViewPath getPath(IWay<?> w)
-
getPFClip
private static java.awt.geom.Path2D.Double getPFClip(Multipolygon.PolyData pd, double extent)
-
buildPFClip
private static void buildPFClip(java.awt.geom.Path2D.Double clip, java.util.List<? extends INode> nodes, double extent)
Fix the clipping area of unclosed polygons for partial fill.The current algorithm for partial fill simply strokes the polygon with a large stroke width after masking the outside with a clipping area. This works, but for unclosed polygons, the mask can crop the corners at both ends (see #12104).
This method fixes the clipping area by sort of adding the corners to the clip outline.
- Parameters:
clip
- the clipping area to modify (initially empty)nodes
- nodes of the polygonextent
- the extent
-
getPFDisplacedEndPoint
private static EastNorth getPFDisplacedEndPoint(EastNorth p1, EastNorth p2, EastNorth p3, double extent)
Get the point to add to the clipping area for partial fill of unclosed polygons.(p1,p2)
is the first or last way segment andp3
the opposite endpoint.- Parameters:
p1
- 1st pointp2
- 2nd pointp3
- 3rd pointextent
- the extent- Returns:
- a point q, such that p1,p2,q form a right angle
and the distance of q to p2 is
extent
. The point q lies on the same side of the line p1,p2 as the point p3. Returns null if p1,p2,p3 forms an angle greater 90 degrees. (In this case the corner of the partial fill would not be cut off by the mask, so an additional point is not necessary.)
-
isAreaVisible
private boolean isAreaVisible(java.awt.geom.Path2D.Double area)
Test if the area is visible- Parameters:
area
- The area, interpreted in east/north space.- Returns:
- true if it is visible.
-
isInactiveMode
public boolean isInactiveMode()
Determines if the paint visitor shall render OSM objects such that they look inactive.- Returns:
true
if the paint visitor shall render OSM objects such that they look inactive
-
isShowIcons
public boolean isShowIcons()
Check if icons should be rendered- Returns:
true
to display icons
-
isShowNames
public boolean isShowNames()
Test if names should be rendered- Returns:
true
to display names
-
computeFlags
public static int computeFlags(IPrimitive primitive, boolean checkOuterMember)
Computes the flags for a given OSM primitive.- Parameters:
primitive
- The primititve to compute the flags for.checkOuterMember
-true
if we should also addFLAG_OUTERMEMBER_OF_SELECTED
- Returns:
- The flag.
- Since:
- 13676 (signature)
-
setBenchmarkFactory
public void setBenchmarkFactory(java.util.function.Supplier<RenderBenchmarkCollector> benchmarkFactory)
Sets the factory that creates the benchmark data receivers.- Parameters:
benchmarkFactory
- The factory.- Since:
- 10697
-
render
public void render(OsmData<?,?,?,?> data, boolean renderVirtualNodes, Bounds bounds)
Description copied from interface:Rendering
Renders the OSM data in
data
- Parameters:
data
- the data set to be renderedrenderVirtualNodes
- if true, renders virtual nodes. Otherwise, ignores them.bounds
- the bounding box for the data to be rendered. Only objects within or intersecting withbbox
are rendered
-
paintWithLock
private void paintWithLock(OsmData<?,?,?,?> data, boolean renderVirtualNodes, RenderBenchmarkCollector benchmark, BBox bbox)
-
paintRecord
private void paintRecord(StyledMapRenderer.StyleRecord styleRecord)
-
-