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

commit 9c1918b9549d4d1238058bf6ea03221cf1839f23
Author: Martin Desruisseaux <martin.desruisse...@geomatys.com>
AuthorDate: Sat Nov 27 16:16:45 2021 +0100

    Give a little bit of tickness to the lines drawn for representing missing 
tiles.
---
 .../sis/internal/coverage/j2d/TilePlaceholder.java | 51 +++++++++++++---------
 1 file changed, 31 insertions(+), 20 deletions(-)

diff --git 
a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TilePlaceholder.java
 
b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TilePlaceholder.java
index e5ad537..d32cc1d 100644
--- 
a/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TilePlaceholder.java
+++ 
b/core/sis-feature/src/main/java/org/apache/sis/internal/coverage/j2d/TilePlaceholder.java
@@ -323,36 +323,47 @@ public class TilePlaceholder {
             final int ymin   = tile.getMinY();
             final int xmax   = width  + xmin - 1;
             final int ymax   = height + ymin - 1;
-            int x = xmin;
-            while (x < xmax) {
-                tile.setPixel(x++, ymin, samples);
-                tile.setPixel(x++, ymax, samples);
+            if (height >= 4) {
+                for (int x = xmin; x <= xmax; x++) {
+                    tile.setPixel(x, ymax-1, samples);
+                    tile.setPixel(x, ymin,   samples); if (++x > xmax) break;
+                    tile.setPixel(x, ymin+1, samples);
+                    tile.setPixel(x, ymax,   samples);
+                }
             }
-            int y = ymin;
-            while (y < ymax) {
-                tile.setPixel(xmin, y++, samples);
-                tile.setPixel(xmax, y++, samples);
+            if (width >= 4) {
+                for (int y = ymin; y <= ymax; y++) {
+                    tile.setPixel(xmax-1, y, samples);
+                    tile.setPixel(xmin,   y, samples); if (++y > ymax) break;
+                    tile.setPixel(xmin+1, y, samples);
+                    tile.setPixel(xmax,   y, samples);
+                }
             }
-            if (x == xmax) tile.setPixel(xmax, ymin, samples);
-            if (y == ymax) tile.setPixel(xmin, ymax, samples);
             /*
              * Add a cross (X) inside the tile.
              */
+            final int t = 1;        // Thickness to add on each side of the 
line.
             if (width >= height) {
                 final double step = height / (double) width;
-                for (int i=0; i<width; i++) {
-                    x = xmin + i;
-                    y = (int) (i*step);
-                    tile.setPixel(x, ymin + y, samples);
-                    tile.setPixel(x, ymax - y, samples);
+                final int m = ymax + ymin;
+                for (int x = xmin; x <= xmax; x++) {
+                    final int y = ymin + (int) ((x-xmin)*step);
+                    final int s = Math.min(x+t, xmax);
+                    for  (int i = Math.max(x-t, xmin); i <= s; i++) {
+                        tile.setPixel(i,   y, samples);
+                        tile.setPixel(i, m-y, samples);
+                    }
                 }
             } else {
                 final double step = width / (double) height;
-                for (int i=0; i<height; i++) {
-                    y = ymin + i;
-                    x = (int) (i*step);
-                    tile.setPixel(xmin + x, y, samples);
-                    tile.setPixel(xmax - x, y, samples);
+                final int m = xmax + xmin;
+                for (int y = ymin; y <= ymax; y++) {
+                    final int x = xmin + (int) ((y-ymin)*step);
+                    final int s = Math.min(y+t, ymax);
+                    for  (int i = Math.max(y-t, ymin); i <= s; i++) {
+                        tile.setPixel(  x, i, samples);
+                        tile.setPixel(m-x, i, samples);
+                    }
                 }
             }
         }

Reply via email to