You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@sis.apache.org by de...@apache.org on 2020/02/06 21:48:17 UTC

[sis] branch geoapi-4.0 updated: Rename Canvas2D as PlanarCanvas because the constraint is not only to be two-dimensional, but also to use a Cartesian coordinate system (as opposed to the coordinate system of planetarium dome for example).

This is an automated email from the ASF dual-hosted git repository.

desruisseaux pushed a commit to branch geoapi-4.0
in repository https://gitbox.apache.org/repos/asf/sis.git


The following commit(s) were added to refs/heads/geoapi-4.0 by this push:
     new 32546a8  Rename Canvas2D as PlanarCanvas because the constraint is not only to be two-dimensional, but also to use a Cartesian coordinate system (as opposed to the coordinate system of planetarium dome for example).
32546a8 is described below

commit 32546a87153ec700fc9bc0db3e041224181c2e52
Author: Martin Desruisseaux <ma...@geomatys.com>
AuthorDate: Thu Feb 6 22:46:49 2020 +0100

    Rename Canvas2D as PlanarCanvas because the constraint is not only to be two-dimensional, but also to use a Cartesian coordinate system (as opposed to the coordinate system of planetarium dome for example).
---
 .../org/apache/sis/internal/map/GridCanvas.java    |  2 +-
 .../map/{Canvas2D.java => PlanarCanvas.java}       | 35 ++++++++++++++++++----
 2 files changed, 30 insertions(+), 7 deletions(-)

diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/GridCanvas.java b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/GridCanvas.java
index ace0fe3..66c1e4a 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/GridCanvas.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/GridCanvas.java
@@ -55,7 +55,7 @@ import org.opengis.util.FactoryException;
  * @since   1.1
  * @module
  */
-public abstract class GridCanvas extends Canvas2D {
+public abstract class GridCanvas extends PlanarCanvas {
     /**
      * @deprecated
      * This is a temporary constant, as we will probably need to replace the creation
diff --git a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/Canvas2D.java b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/PlanarCanvas.java
similarity index 60%
rename from core/sis-portrayal/src/main/java/org/apache/sis/internal/map/Canvas2D.java
rename to core/sis-portrayal/src/main/java/org/apache/sis/internal/map/PlanarCanvas.java
index 54aa379..54a3b83 100644
--- a/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/Canvas2D.java
+++ b/core/sis-portrayal/src/main/java/org/apache/sis/internal/map/PlanarCanvas.java
@@ -16,14 +16,24 @@
  */
 package org.apache.sis.internal.map;
 
+import java.util.Map;
 import java.awt.geom.AffineTransform;
-import org.apache.sis.internal.referencing.j2d.AffineTransform2D;
+import org.opengis.referencing.cs.AxisDirection;
+import org.apache.sis.measure.Units;
+import org.apache.sis.referencing.cs.DefaultCartesianCS;
+import org.apache.sis.referencing.cs.DefaultCoordinateSystemAxis;
+import org.apache.sis.referencing.datum.DefaultEngineeringDatum;
+import org.apache.sis.referencing.crs.DefaultEngineeringCRS;
 import org.apache.sis.referencing.operation.transform.LinearTransform;
+import org.apache.sis.internal.referencing.j2d.AffineTransform2D;
+
+import static java.util.Collections.singletonMap;
+import static org.opengis.referencing.IdentifiedObject.NAME_KEY;
 
 
 /**
- * A canvas in which data are reduced to a two-dimensional slice before to be displayed.
- * This canvas assumes that the display device uses a Cartesian coordinate system
+ * A canvas for two-dimensional display device using a Cartesian coordinate system.
+ * Data are reduced to a two-dimensional slice before to be displayed.
  *
  * @author  Johann Sorel (Geomatys)
  * @author  Martin Desruisseaux (Geomatys)
@@ -31,7 +41,20 @@ import org.apache.sis.referencing.operation.transform.LinearTransform;
  * @since   1.1
  * @module
  */
-public abstract class Canvas2D extends Canvas {
+public abstract class PlanarCanvas extends Canvas {
+    /**
+     * The display Coordinate Reference System used by all {@code PlanarCanvas} instances.
+     */
+    private static final DefaultEngineeringCRS DISPLAY_CRS;
+    static {
+        Map<String,?> property = singletonMap(NAME_KEY, "Display on two-dimensional Cartesian coordinate system");
+        DefaultCartesianCS cs = new DefaultCartesianCS(property,
+                new DefaultCoordinateSystemAxis(singletonMap(NAME_KEY, "Column"), "x", AxisDirection.DISPLAY_RIGHT, Units.PIXEL),
+                new DefaultCoordinateSystemAxis(singletonMap(NAME_KEY, "Row"),    "y", AxisDirection.DISPLAY_DOWN,  Units.PIXEL));
+        property = singletonMap(NAME_KEY, cs.getName());        // Reuse the same Identifier instance.
+        DISPLAY_CRS = new DefaultEngineeringCRS(property, new DefaultEngineeringDatum(property), cs);
+    }
+
     /**
      * The conversion from {@linkplain #getObjectiveCRS() objective CRS} to the display coordinate system.
      * This transform will be modified in-place when user applies zoom, translation or rotation on the view area.
@@ -49,8 +72,8 @@ public abstract class Canvas2D extends Canvas {
     /**
      * Creates a new two-dimensional canvas.
      */
-    protected Canvas2D() {
-        super(null);    // TODO
+    protected PlanarCanvas() {
+        super(DISPLAY_CRS);
         objectiveToDisplay = new AffineTransform();
     }