public class ElemStyles extends java.lang.Object implements Preferences.PreferenceChangedListener
StyleElement
s for a primitive, to
be drawn on the map.
There are several steps to derive the list of elements for display:
generateStyles(OsmPrimitive, double, boolean)
applies the
StyleSource
s one after another to get a key-value map of MapCSS
properties. Then a preliminary set of StyleElements is derived from the
properties map.getImpl(OsmPrimitive, double, NavigatableComponent)
handles the
different forms of multipolygon tagging.getStyleCacheWithRange(OsmPrimitive, double, NavigatableComponent)
adds a default StyleElement for primitives that would be invisible otherwise.
(For example untagged nodes and ways.)setStyleSources(Collection)
to select the StyleSources that are applied.Modifier and Type | Field and Description |
---|---|
private short |
cacheIdx |
private boolean |
defaultLines |
private short |
defaultLinesIdx |
private boolean |
defaultNodes |
private short |
defaultNodesIdx |
private boolean |
drawMultipolygon |
private java.util.Map<java.lang.String,java.lang.String> |
preferenceCache |
private java.util.List<StyleSource> |
styleSources |
Constructor and Description |
---|
ElemStyles()
Constructs a new
ElemStyles . |
Modifier and Type | Method and Description |
---|---|
(package private) void |
add(StyleSource style)
add a style source; only accessed from MapPaintStyles
|
private static <T> void |
addIfNotNull(java.util.List<T> list,
T obj) |
(package private) void |
clear()
remove all style sources; only accessed from MapPaintStyles
|
void |
clearCached()
Clear the style cache for all primitives of all DataSets.
|
private <T> T |
fromCanvas(java.lang.String key,
T def,
java.lang.Class<T> c) |
Pair<StyleElementList,Range> |
generateStyles(OsmPrimitive osm,
double scale,
boolean pretendWayIsClosed)
Create the list of styles and its valid scale range for one primitive.
|
StyleElementList |
get(OsmPrimitive osm,
double scale,
NavigatableComponent nc)
Create the list of styles for one primitive.
|
static AreaElement |
getAreaElemStyle(OsmPrimitive p,
boolean pretendWayIsClosed)
Returns the first AreaElement for a given primitive.
|
private Pair<StyleElementList,Range> |
getImpl(OsmPrimitive osm,
double scale,
NavigatableComponent nc)
Create the list of styles and its valid scale range for one primitive.
|
java.lang.String |
getPreferenceCached(java.lang.String key,
java.lang.String def)
Looks up a preference value and ensures the style cache is invalidated
as soon as this preference value is changed by the user.
|
Pair<StyleElementList,Range> |
getStyleCacheWithRange(OsmPrimitive osm,
double scale,
NavigatableComponent nc)
Create the list of styles and its valid scale range for one primitive.
|
java.util.List<StyleSource> |
getStyleSources() |
static boolean |
hasAreaElemStyle(OsmPrimitive p,
boolean pretendWayIsClosed)
Determines whether primitive has an AreaElement.
|
static boolean |
hasOnlyAreaElemStyle(OsmPrimitive p)
Determines whether primitive has only an AreaElement.
|
private boolean |
isDefaultLines()
Draw a default line for ways that do not have an own line style?
|
private boolean |
isDefaultNodes()
Draw a default node symbol for nodes that have no style?
|
boolean |
isDrawMultipolygon() |
void |
preferenceChanged(Preferences.PreferenceChangeEvent e)
Trigerred when a preference entry value changes.
|
void |
setDrawMultipolygon(boolean drawMultipolygon) |
(package private) void |
setStyleSources(java.util.Collection<StyleSource> sources)
set the style sources; only accessed from MapPaintStyles
|
private final java.util.List<StyleSource> styleSources
private boolean drawMultipolygon
private short cacheIdx
private boolean defaultNodes
private boolean defaultLines
private short defaultNodesIdx
private short defaultLinesIdx
private final java.util.Map<java.lang.String,java.lang.String> preferenceCache
public ElemStyles()
ElemStyles
.public void clearCached()
public java.util.List<StyleSource> getStyleSources()
public StyleElementList get(OsmPrimitive osm, double scale, NavigatableComponent nc)
osm
- the primitivescale
- the scale (in meters per 100 pixel)nc
- display componentpublic Pair<StyleElementList,Range> getStyleCacheWithRange(OsmPrimitive osm, double scale, NavigatableComponent nc)
osm
- OSM primitivescale
- scalenc
- navigatable componentprivate Pair<StyleElementList,Range> getImpl(OsmPrimitive osm, double scale, NavigatableComponent nc)
osm
- OSM primitivescale
- scalenc
- navigatable componentpublic Pair<StyleElementList,Range> generateStyles(OsmPrimitive osm, double scale, boolean pretendWayIsClosed)
osm
- the primitive to create styles forscale
- the scale (in meters per 100 px), must be > 0pretendWayIsClosed
- For styles that require the way to be closed,
we pretend it is. This is useful for generating area styles from the (segmented)
outer ways of a multipolygon.private static <T> void addIfNotNull(java.util.List<T> list, T obj)
private boolean isDefaultNodes()
true
if default node symbol must be drawnprivate boolean isDefaultLines()
true
if default line must be drawnprivate <T> T fromCanvas(java.lang.String key, T def, java.lang.Class<T> c)
public boolean isDrawMultipolygon()
public void setDrawMultipolygon(boolean drawMultipolygon)
void clear()
void add(StyleSource style)
style
- style source to addvoid setStyleSources(java.util.Collection<StyleSource> sources)
sources
- new style sourcespublic static AreaElement getAreaElemStyle(OsmPrimitive p, boolean pretendWayIsClosed)
p
- the OSM primitivepretendWayIsClosed
- For styles that require the way to be closed,
we pretend it is. This is useful for generating area styles from the (segmented)
outer ways of a multipolygon.null
.public static boolean hasAreaElemStyle(OsmPrimitive p, boolean pretendWayIsClosed)
p
- the OSM primitivepretendWayIsClosed
- For styles that require the way to be closed,
we pretend it is. This is useful for generating area styles from the (segmented)
outer ways of a multipolygon.true
if primitive has an AreaElementpublic static boolean hasOnlyAreaElemStyle(OsmPrimitive p)
p
- the OSM primitivetrue
if primitive has only an AreaElementpublic java.lang.String getPreferenceCached(java.lang.String key, java.lang.String def)
Main.pref.get()
) for
each primitive can be slow during rendering.key
- preference keydef
- default valuePreferences.get(String, String)
public void preferenceChanged(Preferences.PreferenceChangeEvent e)
Preferences.PreferenceChangedListener
preferenceChanged
in interface Preferences.PreferenceChangedListener
e
- the preference change event