Class PlanarCanvas
- All Implemented Interfaces:
Localized
- Direct Known Subclasses:
MapCanvas
Multi-threading
PlanarCanvas is not thread-safe. Synchronization, if desired, must be done by the caller.
Another common strategy is to interact with PlanarCanvas from a single thread,
for example the Swing or JavaFX event queue.- Since:
- 1.1
Defined in the sis-portrayal module
-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final intThe 2 constant for identifying code specific to bi-dimensional case.protected final AffineTransformThe conversion from objective CRS to the display coordinate system as a Java2D affine transform.Fields inherited from class Canvas
DISPLAY_BOUNDS_PROPERTY, OBJECTIVE_CRS_PROPERTY, OBJECTIVE_TO_DISPLAY_PROPERTY, POINT_OF_INTEREST_PROPERTY -
Constructor Summary
ConstructorsModifierConstructorDescriptionprotectedPlanarCanvas(Locale locale) Creates a new two-dimensional canvas. -
Method Summary
Modifier and TypeMethodDescriptionfinal voidaddPropertyChangeListener(String propertyName, PropertyChangeListener listener) Registers a listener for the property of the given name.protected voidNotifies all registered listeners that a property changed its value.protected voidfirePropertyChange(String propertyName, Object oldValue, Object newValue) Notifies all registered listeners that a property of the given name changed its value.Returns the size and location of the display device.protected final booleanhasPropertyChangeListener(String propertyName) Returnstrueif the given property has at least one listener.final voidremovePropertyChangeListener(String propertyName, PropertyChangeListener listener) Unregisters a property listener.voidUpdates the objective to display transform as if the given transform was applied after the current transform.voidUpdates the objective to display transform as if the given transform was applied before the current transform.Methods inherited from class Canvas
getDisplayCRS, getGeographicArea, getGridGeometry, getLocale, getObjectiveCRS, getObjectiveToDisplay, getPointOfInterest, getSpatialResolution, setDisplayBounds, setGridGeometry, setObjectiveCRS, setObjectiveToDisplay, setPointOfInterest
-
Field Details
-
BIDIMENSIONAL
protected static final int BIDIMENSIONALThe 2 constant for identifying code specific to bi-dimensional case.- See Also:
-
objectiveToDisplay
The conversion from objective CRS to the display coordinate system as a Java2D affine transform. This transform will be modified in-place when user applies zoom, translation or rotation on the view area. Subclasses should generally not modify this affine transform directly; invoke one of thetransformFooCoordinates(AffineTransform)methods instead.
-
-
Constructor Details
-
PlanarCanvas
Creates a new two-dimensional canvas.- Parameters:
locale- the locale to use for labels and some messages, ornullfor default.
-
-
Method Details
-
getDisplayBounds
Returns the size and location of the display device. The unit of measurement isUnits.PIXELand coordinate values are usually (but not necessarily) integers.This value may be
nullon newly createdCanvas, before data are added and canvas is configured. It should not benullanymore once aCanvasis ready for displaying. The returned envelope is a copy; display changes happening after this method invocation will not be reflected in the returned envelope.- Overrides:
getDisplayBoundsin classCanvas- Returns:
- size and location of the display device in pixel coordinates.
- See Also:
-
transformObjectiveCoordinates
Updates the objective to display transform as if the given transform was applied before the current transform. For example if the givenbeforetransform is a translation, then the translation vector is in units of the objective CRS (typically metres on the map).This method does nothing if the given transform is identity. Otherwise an "objectiveToDisplay" property change event will be sent with the
TransformChangeEvent.Reason.OBJECTIVE_NAVIGATIONreason after the change became effective. Depending on the implementation, the change may not take effect immediately. For example, subclasses may do the rendering in a background thread.- Parameters:
before- coordinate conversion to apply before the current objective to display transform.- See Also:
-
transformDisplayCoordinates
Updates the objective to display transform as if the given transform was applied after the current transform. For example if the givenaftertransform is a translation, then the translation vector is in pixel units.This method does nothing if the given transform is identity. Otherwise an "objectiveToDisplay" property change event will be sent with the
TransformChangeEvent.Reason.DISPLAY_NAVIGATIONreason after the change became effective. Depending on the implementation, the change may not take effect immediately. For example, subclasses may do the rendering in a background thread.- Parameters:
after- coordinate conversion to apply after the current objective to display transform.- See Also:
-
addPropertyChangeListener
Registers a listener for the property of the given name. The listener will be notified every time that the property of the given name got a new value. If the same listener is registered twice for the same property, then it will be notified twice (this method does not perform duplication checks).- Parameters:
propertyName- name of the property to listen (should be one of the*_PROPERTYconstants).listener- property listener to register.
-
removePropertyChangeListener
public final void removePropertyChangeListener(String propertyName, PropertyChangeListener listener) Unregisters a property listener. The givenpropertyNameshould be the name used during listener registration. If the specified listener is not registered for the named property, then nothing happen. If the listener has been registered twice, then only one registration is removed (one registration will remain).- Parameters:
propertyName- name of the listened property.listener- property listener to unregister.
-
hasPropertyChangeListener
Returnstrueif the given property has at least one listener.- Parameters:
propertyName- name of the property to test.- Returns:
trueif the given property has at least one listener.- Since:
- 1.3
-
firePropertyChange
Notifies all registered listeners that a property of the given name changed its value. The change event source will bethis. It is caller responsibility to verify that the old and new values are different (this method does not check for equality).- Parameters:
propertyName- name of the property that changed its value.oldValue- the old property value (may benull).newValue- the new property value (may benull).- See Also:
-
firePropertyChange
Notifies all registered listeners that a property changed its value. It is caller responsibility to verify that the event source and property name are valid.- Parameters:
event- the event to forward. Cannot be null.- See Also:
-