changeset 1452:963d166232d4

Splash screen aligned with current graphic
author Jiri Vanek <jvanek@redhat.com>
date Fri, 16 Jun 2017 21:03:27 +0200
parents 1fae9bbd17f5
children 7f506b1c4564
files ChangeLog netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefs.java plugin/icedteanp/java/sun/applet/PluginAppletViewer.java tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainterTest.java tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefsTest.java
diffstat 6 files changed, 1507 insertions(+), 158 deletions(-) [+]
line wrap: on
line diff
--- a/ChangeLog	Thu Jun 15 17:44:26 2017 +0200
+++ b/ChangeLog	Fri Jun 16 21:03:27 2017 +0200
@@ -1,3 +1,13 @@
+2017-16-15  Jiri Vanek <jvanek@redhat.com>
+
+	Splash screen aligned with current graphic
+	* netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefs.java: leading points of main leaves regenerated
+	from current graphics. Pushed generating algorithm. Cubic splines are no longer used, instead the exact polygon is filled.
+	* netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java: adapted splinesDefs
+	* plugin/icedteanp/java/sun/applet/PluginAppletViewer.java: iffed out NPE in midori
+	* tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainterTest.java: aligned
+	* tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefsTest.java: aligned
+
 2017-06-15  Jiri Vanek <jvanek@redhat.com>
             Tereza Hlavackova <hlavackova.tereza@gmail.com>
 
--- a/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java	Thu Jun 15 17:44:26 2017 +0200
+++ b/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainter.java	Fri Jun 16 21:03:27 2017 +0200
@@ -122,13 +122,13 @@
     protected TextWithWaterLevel oldTwl;
     protected boolean canWave = true;
     private Point aboutOfset = new Point();
-    
+
     private final static float dash1[] = {10.0f};
-    private final static BasicStroke dashed =
-        new BasicStroke(1.0f,
-                        BasicStroke.CAP_BUTT,
-                        BasicStroke.JOIN_MITER,
-                        10.0f, dash1, 0.0f);
+    private final static BasicStroke dashed
+            = new BasicStroke(1.0f,
+                    BasicStroke.CAP_BUTT,
+                    BasicStroke.JOIN_MITER,
+                    10.0f, dash1, 0.0f);
 
     protected void paintNiceTexts(Graphics2D g2d) {
         //the only animated stuff
@@ -270,8 +270,6 @@
             paintPlainTexts(g2d);
         }
 
-
-
     }
 
     public final void adjustForSize(int width, int height) {
@@ -485,17 +483,11 @@
             g2d.drawString(tea, scaleX(42) + g2d.getFontMetrics(icedFont).stringWidth(ICED), scaleY(278));
             g2d.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
             if (showLeaf) {
-                g2d.fillPolygon(SplinesDefs.getMainLeafCurve(getRatioX(), getRatioY()));
-            }
-            if (showLeaf) {
-                g2d.fillPolygon(SplinesDefs.getSecondLeafCurve(getRatioX(), getRatioY()));
+                g2d.fillPolygon(SplinesDefs.getMainLeaf(getRatioX(), getRatioY()));
             }
             g2d.setColor(teaLeafsStalksColor);
             if (showLeaf) {
-                g2d.fillPolygon(SplinesDefs.getMainLeafStalkCurve(getRatioX(), getRatioY()));
-            }
-            if (showLeaf) {
-                g2d.fillPolygon(SplinesDefs.getSecondLeafStalkCurve(getRatioX(), getRatioY()));
+                g2d.fillPolygon(SplinesDefs.getSecondLeaf(getRatioX(), getRatioY()));
             }
             g2d.setFont(pluginFont);
             g2d.setColor(pluginColor);
@@ -542,7 +534,7 @@
             aboutOfset = new Point(y, fm.getHeight());
             Stroke backup = g2d.getStroke();
             g2d.setStroke(dashed);
-            g2d.drawRect(aboutOfset.x-1,1, master.getSplashWidth()-aboutOfset.x-1, aboutOfset.y+1);
+            g2d.drawRect(aboutOfset.x - 1, 1, master.getSplashWidth() - aboutOfset.x - 1, aboutOfset.y + 1);
             g2d.setStroke(backup);
             g2d.drawString(niceVersion, y, fm.getHeight());
         }
--- a/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefs.java	Thu Jun 15 17:44:26 2017 +0200
+++ b/netx/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefs.java	Fri Jun 16 21:03:27 2017 +0200
@@ -36,163 +36,1514 @@
 exception statement from your version. */
 package net.sourceforge.jnlp.splashscreen.impls.defaultsplashscreen2012;
 
+import java.awt.Color;
+import java.awt.Graphics2D;
 import java.awt.Point;
 import java.awt.Polygon;
+import java.awt.image.BufferedImage;
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Collection;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+import java.util.Map.Entry;
+import java.util.Set;
+import javax.imageio.ImageIO;
 
 public class SplinesDefs {
 
-    private final static Point[] mainLeafArray = {
-        new Point(268, 307),
-        new Point(274, 326),
-        new Point(289, 337),
-        new Point(317, 349),
-        new Point(362, 350),
-        new Point(413, 334),
-        new Point(428, 326),
-        new Point(453, 309),
-        new Point(469, 292),
-        new Point(496, 264),
-        new Point(516, 236),
-        new Point(531, 215),
-        new Point(550, 185),
-        new Point(567, 155),
-        new Point(580, 130),
-        new Point(571, 139),
-        new Point(555, 148),
-        new Point(540, 157),
-        new Point(521, 167),
-        new Point(502, 174),
-        new Point(477, 183),
-        new Point(443, 193),
-        new Point(413, 201),
-        new Point(392, 209),
-        new Point(376, 218),
-        new Point(363, 228),
-        new Point(356, 250),
-        new Point(372, 231),
-        new Point(398, 218),
-        new Point(420, 209),
-        new Point(446, 200),
-        new Point(479, 192),
-        new Point(505, 182),
-        new Point(547, 168),
-        new Point(539, 182),
-        new Point(526, 204),
-        new Point(509, 227),
-        new Point(498, 244),
-        new Point(486, 257),
-        new Point(469, 272),
-        new Point(460, 281),
-        new Point(449, 293),
-        new Point(436, 303),
-        new Point(418, 315),
-        new Point(400, 323),
-        new Point(383, 332),
-        new Point(367, 334),
-        new Point(343, 338),
-        new Point(322, 335),
-        new Point(304, 330),
-        new Point(288, 322)
+    private final static Point[] blackLeaf = {
+        new Point(267, 204),
+        new Point(267, 205),
+        new Point(267, 206),
+        new Point(268, 206),
+        new Point(268, 207),
+        new Point(268, 208),
+        new Point(268, 209),
+        new Point(269, 209),
+        new Point(269, 210),
+        new Point(270, 210),
+        new Point(270, 211),
+        new Point(271, 211),
+        new Point(271, 212),
+        new Point(272, 212),
+        new Point(273, 212),
+        new Point(274, 212),
+        new Point(275, 212),
+        new Point(276, 212),
+        new Point(277, 212),
+        new Point(278, 212),
+        new Point(279, 212),
+        new Point(280, 212),
+        new Point(281, 212),
+        new Point(282, 212),
+        new Point(283, 212),
+        new Point(284, 212),
+        new Point(285, 212),
+        new Point(286, 212),
+        new Point(287, 212),
+        new Point(288, 212),
+        new Point(289, 212),
+        new Point(290, 212),
+        new Point(291, 212),
+        new Point(292, 212),
+        new Point(293, 212),
+        new Point(294, 212),
+        new Point(295, 212),
+        new Point(296, 212),
+        new Point(297, 212),
+        new Point(298, 212),
+        new Point(299, 212),
+        new Point(300, 212),
+        new Point(301, 212),
+        new Point(302, 212),
+        new Point(303, 212),
+        new Point(304, 212),
+        new Point(305, 212),
+        new Point(306, 212),
+        new Point(307, 212),
+        new Point(308, 212),
+        new Point(309, 212),
+        new Point(310, 212),
+        new Point(311, 212),
+        new Point(311, 213),
+        new Point(312, 213),
+        new Point(313, 213),
+        new Point(314, 213),
+        new Point(314, 214),
+        new Point(315, 214),
+        new Point(316, 214),
+        new Point(317, 214),
+        new Point(317, 215),
+        new Point(318, 215),
+        new Point(319, 215),
+        new Point(319, 216),
+        new Point(320, 216),
+        new Point(321, 216),
+        new Point(321, 217),
+        new Point(322, 217),
+        new Point(322, 218),
+        new Point(323, 218),
+        new Point(324, 218),
+        new Point(325, 218),
+        new Point(326, 218),
+        new Point(327, 218),
+        new Point(328, 218),
+        new Point(329, 217),
+        new Point(330, 216),
+        new Point(331, 215),
+        new Point(332, 214),
+        new Point(333, 213),
+        new Point(334, 212),
+        new Point(334, 211),
+        new Point(335, 210),
+        new Point(335, 209),
+        new Point(336, 208),
+        new Point(337, 207),
+        new Point(338, 206),
+        new Point(338, 205),
+        new Point(339, 204),
+        new Point(340, 203),
+        new Point(341, 202),
+        new Point(342, 201),
+        new Point(343, 200),
+        new Point(344, 199),
+        new Point(345, 198),
+        new Point(346, 197),
+        new Point(347, 196),
+        new Point(348, 195),
+        new Point(349, 194),
+        new Point(350, 193),
+        new Point(351, 192),
+        new Point(352, 191),
+        new Point(353, 190),
+        new Point(354, 189),
+        new Point(355, 188),
+        new Point(356, 187),
+        new Point(357, 186),
+        new Point(358, 185),
+        new Point(359, 184),
+        new Point(360, 183),
+        new Point(361, 182),
+        new Point(362, 181),
+        new Point(363, 180),
+        new Point(364, 179),
+        new Point(365, 179),
+        new Point(366, 178),
+        new Point(367, 177),
+        new Point(368, 177),
+        new Point(369, 176),
+        new Point(370, 175),
+        new Point(371, 175),
+        new Point(372, 175),
+        new Point(373, 175),
+        new Point(373, 176),
+        new Point(372, 177),
+        new Point(372, 178),
+        new Point(371, 179),
+        new Point(371, 180),
+        new Point(370, 181),
+        new Point(369, 182),
+        new Point(369, 183),
+        new Point(368, 184),
+        new Point(367, 185),
+        new Point(367, 186),
+        new Point(366, 187),
+        new Point(365, 188),
+        new Point(365, 189),
+        new Point(364, 190),
+        new Point(363, 191),
+        new Point(363, 192),
+        new Point(362, 193),
+        new Point(361, 194),
+        new Point(360, 195),
+        new Point(360, 196),
+        new Point(359, 197),
+        new Point(359, 198),
+        new Point(359, 199),
+        new Point(358, 200),
+        new Point(357, 201),
+        new Point(356, 202),
+        new Point(355, 203),
+        new Point(355, 204),
+        new Point(355, 205),
+        new Point(354, 206),
+        new Point(353, 207),
+        new Point(353, 208),
+        new Point(352, 209),
+        new Point(351, 210),
+        new Point(350, 211),
+        new Point(350, 212),
+        new Point(349, 213),
+        new Point(349, 214),
+        new Point(349, 215),
+        new Point(348, 216),
+        new Point(347, 217),
+        new Point(346, 218),
+        new Point(346, 219),
+        new Point(345, 220),
+        new Point(345, 221),
+        new Point(345, 222),
+        new Point(344, 223),
+        new Point(344, 224),
+        new Point(343, 225),
+        new Point(342, 226),
+        new Point(341, 227),
+        new Point(341, 228),
+        new Point(341, 229),
+        new Point(340, 230),
+        new Point(340, 231),
+        new Point(340, 232),
+        new Point(340, 233),
+        new Point(340, 234),
+        new Point(340, 235),
+        new Point(341, 235),
+        new Point(341, 236),
+        new Point(342, 236),
+        new Point(342, 237),
+        new Point(343, 237),
+        new Point(343, 238),
+        new Point(343, 239),
+        new Point(344, 239),
+        new Point(344, 240),
+        new Point(345, 240),
+        new Point(345, 241),
+        new Point(345, 242),
+        new Point(346, 242),
+        new Point(346, 243),
+        new Point(347, 243),
+        new Point(347, 244),
+        new Point(348, 244),
+        new Point(348, 245),
+        new Point(348, 246),
+        new Point(349, 246),
+        new Point(349, 247),
+        new Point(349, 248),
+        new Point(349, 249),
+        new Point(350, 249),
+        new Point(350, 250),
+        new Point(350, 251),
+        new Point(351, 251),
+        new Point(351, 252),
+        new Point(351, 253),
+        new Point(352, 253),
+        new Point(352, 254),
+        new Point(352, 255),
+        new Point(353, 255),
+        new Point(353, 256),
+        new Point(353, 257),
+        new Point(353, 258),
+        new Point(354, 258),
+        new Point(354, 259),
+        new Point(354, 260),
+        new Point(354, 261),
+        new Point(354, 262),
+        new Point(354, 263),
+        new Point(355, 263),
+        new Point(355, 264),
+        new Point(355, 265),
+        new Point(355, 266),
+        new Point(355, 267),
+        new Point(356, 267),
+        new Point(356, 268),
+        new Point(356, 269),
+        new Point(356, 270),
+        new Point(356, 271),
+        new Point(356, 272),
+        new Point(356, 273),
+        new Point(357, 273),
+        new Point(357, 274),
+        new Point(357, 275),
+        new Point(357, 276),
+        new Point(357, 277),
+        new Point(358, 277),
+        new Point(358, 278),
+        new Point(358, 279),
+        new Point(358, 280),
+        new Point(358, 281),
+        new Point(358, 282),
+        new Point(358, 283),
+        new Point(358, 284),
+        new Point(358, 285),
+        new Point(358, 286),
+        new Point(358, 287),
+        new Point(358, 288),
+        new Point(358, 289),
+        new Point(358, 290),
+        new Point(358, 291),
+        new Point(358, 292),
+        new Point(358, 293),
+        new Point(358, 294),
+        new Point(357, 295),
+        new Point(357, 296),
+        new Point(357, 297),
+        new Point(357, 298),
+        new Point(356, 299),
+        new Point(356, 300),
+        new Point(356, 301),
+        new Point(356, 302),
+        new Point(356, 303),
+        new Point(356, 304),
+        new Point(356, 305),
+        new Point(357, 305),
+        new Point(357, 306),
+        new Point(358, 306),
+        new Point(358, 307),
+        new Point(359, 307),
+        new Point(359, 308),
+        new Point(360, 308),
+        new Point(361, 308),
+        new Point(361, 309),
+        new Point(362, 309),
+        new Point(363, 309),
+        new Point(364, 309),
+        new Point(365, 308),
+        new Point(366, 308),
+        new Point(367, 308),
+        new Point(368, 307),
+        new Point(369, 306),
+        new Point(370, 306),
+        new Point(371, 305),
+        new Point(372, 305),
+        new Point(373, 305),
+        new Point(374, 304),
+        new Point(375, 304),
+        new Point(376, 303),
+        new Point(377, 302),
+        new Point(378, 302),
+        new Point(379, 301),
+        new Point(380, 300),
+        new Point(381, 300),
+        new Point(382, 299),
+        new Point(383, 299),
+        new Point(384, 299),
+        new Point(385, 298),
+        new Point(386, 297),
+        new Point(387, 296),
+        new Point(388, 295),
+        new Point(389, 294),
+        new Point(390, 294),
+        new Point(391, 293),
+        new Point(392, 293),
+        new Point(393, 292),
+        new Point(394, 291),
+        new Point(395, 290),
+        new Point(396, 289),
+        new Point(397, 288),
+        new Point(398, 287),
+        new Point(399, 286),
+        new Point(400, 285),
+        new Point(401, 284),
+        new Point(402, 283),
+        new Point(403, 282),
+        new Point(404, 281),
+        new Point(405, 280),
+        new Point(406, 279),
+        new Point(407, 278),
+        new Point(408, 277),
+        new Point(409, 276),
+        new Point(409, 275),
+        new Point(410, 274),
+        new Point(411, 273),
+        new Point(412, 272),
+        new Point(413, 271),
+        new Point(414, 270),
+        new Point(415, 269),
+        new Point(415, 268),
+        new Point(416, 267),
+        new Point(416, 266),
+        new Point(417, 265),
+        new Point(418, 264),
+        new Point(418, 263),
+        new Point(419, 262),
+        new Point(420, 261),
+        new Point(420, 260),
+        new Point(420, 259),
+        new Point(421, 258),
+        new Point(421, 257),
+        new Point(422, 256),
+        new Point(422, 255),
+        new Point(422, 254),
+        new Point(423, 253),
+        new Point(424, 252),
+        new Point(424, 251),
+        new Point(424, 250),
+        new Point(425, 249),
+        new Point(426, 248),
+        new Point(426, 247),
+        new Point(426, 246),
+        new Point(426, 245),
+        new Point(427, 244),
+        new Point(427, 243),
+        new Point(428, 242),
+        new Point(428, 241),
+        new Point(428, 240),
+        new Point(429, 239),
+        new Point(429, 238),
+        new Point(429, 237),
+        new Point(429, 236),
+        new Point(430, 235),
+        new Point(430, 234),
+        new Point(431, 233),
+        new Point(431, 232),
+        new Point(431, 231),
+        new Point(431, 230),
+        new Point(431, 229),
+        new Point(431, 228),
+        new Point(432, 227),
+        new Point(432, 226),
+        new Point(432, 225),
+        new Point(432, 224),
+        new Point(432, 223),
+        new Point(433, 222),
+        new Point(433, 221),
+        new Point(433, 220),
+        new Point(433, 219),
+        new Point(433, 218),
+        new Point(433, 217),
+        new Point(433, 216),
+        new Point(434, 215),
+        new Point(434, 214),
+        new Point(434, 213),
+        new Point(434, 212),
+        new Point(434, 211),
+        new Point(434, 210),
+        new Point(435, 209),
+        new Point(435, 208),
+        new Point(435, 207),
+        new Point(435, 206),
+        new Point(435, 205),
+        new Point(435, 204),
+        new Point(435, 203),
+        new Point(435, 202),
+        new Point(435, 201),
+        new Point(435, 200),
+        new Point(435, 199),
+        new Point(435, 198),
+        new Point(435, 197),
+        new Point(435, 196),
+        new Point(435, 195),
+        new Point(435, 194),
+        new Point(435, 193),
+        new Point(435, 192),
+        new Point(435, 191),
+        new Point(435, 190),
+        new Point(435, 189),
+        new Point(435, 188),
+        new Point(435, 187),
+        new Point(435, 186),
+        new Point(435, 185),
+        new Point(435, 184),
+        new Point(435, 183),
+        new Point(435, 182),
+        new Point(435, 181),
+        new Point(435, 180),
+        new Point(435, 179),
+        new Point(435, 178),
+        new Point(434, 178),
+        new Point(434, 177),
+        new Point(434, 176),
+        new Point(434, 175),
+        new Point(434, 174),
+        new Point(434, 173),
+        new Point(434, 172),
+        new Point(434, 171),
+        new Point(433, 171),
+        new Point(433, 170),
+        new Point(433, 169),
+        new Point(433, 168),
+        new Point(433, 167),
+        new Point(433, 166),
+        new Point(433, 165),
+        new Point(432, 165),
+        new Point(432, 164),
+        new Point(432, 163),
+        new Point(432, 162),
+        new Point(432, 161),
+        new Point(432, 160),
+        new Point(432, 159),
+        new Point(431, 159),
+        new Point(431, 158),
+        new Point(431, 157),
+        new Point(431, 156),
+        new Point(431, 155),
+        new Point(431, 154),
+        new Point(430, 154),
+        new Point(430, 153),
+        new Point(430, 152),
+        new Point(430, 151),
+        new Point(430, 150),
+        new Point(429, 150),
+        new Point(429, 149),
+        new Point(429, 148),
+        new Point(428, 148),
+        new Point(428, 147),
+        new Point(428, 146),
+        new Point(428, 145),
+        new Point(428, 144),
+        new Point(427, 144),
+        new Point(427, 143),
+        new Point(427, 142),
+        new Point(427, 141),
+        new Point(426, 141),
+        new Point(426, 140),
+        new Point(426, 139),
+        new Point(426, 138),
+        new Point(425, 138),
+        new Point(425, 137),
+        new Point(425, 136),
+        new Point(425, 135),
+        new Point(424, 135),
+        new Point(424, 134),
+        new Point(423, 134),
+        new Point(423, 133),
+        new Point(423, 132),
+        new Point(422, 132),
+        new Point(422, 131),
+        new Point(422, 130),
+        new Point(422, 129),
+        new Point(421, 129),
+        new Point(421, 128),
+        new Point(421, 127),
+        new Point(420, 127),
+        new Point(420, 126),
+        new Point(420, 125),
+        new Point(419, 125),
+        new Point(419, 124),
+        new Point(418, 124),
+        new Point(418, 123),
+        new Point(418, 122),
+        new Point(417, 122),
+        new Point(417, 121),
+        new Point(416, 121),
+        new Point(416, 120),
+        new Point(415, 120),
+        new Point(414, 120),
+        new Point(414, 119),
+        new Point(413, 119),
+        new Point(412, 119),
+        new Point(411, 119),
+        new Point(410, 119),
+        new Point(409, 119),
+        new Point(408, 119),
+        new Point(407, 119),
+        new Point(406, 119),
+        new Point(405, 119),
+        new Point(405, 118),
+        new Point(404, 118),
+        new Point(403, 118),
+        new Point(402, 118),
+        new Point(401, 118),
+        new Point(400, 118),
+        new Point(399, 118),
+        new Point(398, 118),
+        new Point(397, 118),
+        new Point(396, 118),
+        new Point(395, 118),
+        new Point(394, 118),
+        new Point(393, 118),
+        new Point(392, 118),
+        new Point(391, 118),
+        new Point(390, 118),
+        new Point(389, 118),
+        new Point(388, 118),
+        new Point(387, 118),
+        new Point(386, 118),
+        new Point(385, 118),
+        new Point(384, 118),
+        new Point(383, 118),
+        new Point(382, 118),
+        new Point(381, 118),
+        new Point(380, 119),
+        new Point(379, 119),
+        new Point(378, 119),
+        new Point(377, 119),
+        new Point(376, 119),
+        new Point(375, 119),
+        new Point(374, 119),
+        new Point(373, 119),
+        new Point(372, 119),
+        new Point(371, 119),
+        new Point(370, 120),
+        new Point(369, 120),
+        new Point(368, 120),
+        new Point(367, 120),
+        new Point(366, 120),
+        new Point(365, 120),
+        new Point(364, 120),
+        new Point(363, 120),
+        new Point(362, 121),
+        new Point(361, 121),
+        new Point(360, 121),
+        new Point(359, 121),
+        new Point(358, 121),
+        new Point(357, 122),
+        new Point(356, 122),
+        new Point(355, 122),
+        new Point(354, 122),
+        new Point(353, 123),
+        new Point(352, 124),
+        new Point(351, 124),
+        new Point(350, 124),
+        new Point(349, 125),
+        new Point(348, 125),
+        new Point(347, 125),
+        new Point(346, 125),
+        new Point(345, 125),
+        new Point(344, 126),
+        new Point(343, 126),
+        new Point(342, 126),
+        new Point(341, 127),
+        new Point(340, 127),
+        new Point(339, 127),
+        new Point(338, 128),
+        new Point(337, 129),
+        new Point(336, 129),
+        new Point(335, 130),
+        new Point(334, 130),
+        new Point(333, 130),
+        new Point(332, 131),
+        new Point(331, 131),
+        new Point(330, 132),
+        new Point(329, 133),
+        new Point(328, 133),
+        new Point(327, 133),
+        new Point(326, 134),
+        new Point(325, 134),
+        new Point(324, 135),
+        new Point(323, 136),
+        new Point(322, 136),
+        new Point(321, 137),
+        new Point(320, 138),
+        new Point(319, 138),
+        new Point(318, 139),
+        new Point(317, 140),
+        new Point(316, 140),
+        new Point(315, 141),
+        new Point(314, 142),
+        new Point(313, 142),
+        new Point(312, 143),
+        new Point(311, 144),
+        new Point(310, 145),
+        new Point(309, 145),
+        new Point(308, 146),
+        new Point(307, 147),
+        new Point(306, 147),
+        new Point(305, 148),
+        new Point(304, 149),
+        new Point(303, 150),
+        new Point(302, 151),
+        new Point(301, 152),
+        new Point(300, 153),
+        new Point(299, 154),
+        new Point(298, 155),
+        new Point(297, 156),
+        new Point(296, 157),
+        new Point(295, 158),
+        new Point(294, 159),
+        new Point(293, 160),
+        new Point(292, 161),
+        new Point(291, 162),
+        new Point(290, 163),
+        new Point(289, 164),
+        new Point(288, 165),
+        new Point(287, 166),
+        new Point(286, 167),
+        new Point(285, 168),
+        new Point(284, 169),
+        new Point(284, 170),
+        new Point(283, 171),
+        new Point(282, 172),
+        new Point(281, 173),
+        new Point(281, 174),
+        new Point(281, 175),
+        new Point(280, 176),
+        new Point(279, 177),
+        new Point(279, 178),
+        new Point(278, 179),
+        new Point(277, 180),
+        new Point(276, 181),
+        new Point(276, 182),
+        new Point(276, 183),
+        new Point(275, 184),
+        new Point(274, 185),
+        new Point(274, 186),
+        new Point(274, 187),
+        new Point(273, 188),
+        new Point(273, 189),
+        new Point(272, 190),
+        new Point(272, 191),
+        new Point(272, 192),
+        new Point(271, 193),
+        new Point(270, 194),
+        new Point(270, 195),
+        new Point(270, 196),
+        new Point(269, 197),
+        new Point(269, 198),
+        new Point(269, 199),
+        new Point(268, 200),
+        new Point(268, 201)
     };
-    private final static Point[] mainLeafStalkArray = {
-        new Point(353, 287),
-        new Point(366, 295),
-        new Point(376, 291),
-        new Point(392, 283),
-        new Point(428, 251),
-        new Point(441, 233),
-        new Point(462, 217),
-        new Point(446, 225),
-        new Point(434, 236),
-        new Point(428, 242),
-        new Point(408, 261),
-        new Point(392, 275),
-        new Point(373, 284),
-        new Point(363, 289)
-    };
-    private final static Point[] smallLeafArray = {
-        new Point(342, 207),
-        new Point(352, 213),
-        new Point(360, 218),
-        new Point(374, 217),
-        new Point(389, 202),
-        new Point(397, 175),
-        new Point(396, 143),
-        new Point(397, 113),
-        new Point(380, 127),
-        new Point(350, 145),
-        new Point(327, 155),
-        new Point(313, 166),
-        new Point(297, 182),
-        new Point(293, 196),
-        new Point(308, 183),
-        new Point(332, 167),
-        new Point(364, 150),
-        new Point(385, 137),
-        new Point(384, 158),
-        new Point(382, 187),
-        new Point(371, 204)
-    };
-    private final static Point[] smallLeafStalkArray = {
-        new Point(320, 203),
-        new Point(331, 191),
-        new Point(345, 185),
-        new Point(356, 183),
-        new Point(365, 177),
-        new Point(368, 171),
-        new Point(368, 165),
-        new Point(360, 173),
-        new Point(354, 176),
-        new Point(341, 180),
-        new Point(334, 184),
-        new Point(321, 194)
+
+    private final static Point[] redLeaf = {
+        new Point(348, 331),
+        new Point(348, 332),
+        new Point(348, 333),
+        new Point(348, 334),
+        new Point(348, 335),
+        new Point(348, 336),
+        new Point(349, 336),
+        new Point(349, 337),
+        new Point(349, 338),
+        new Point(350, 338),
+        new Point(350, 339),
+        new Point(351, 339),
+        new Point(351, 340),
+        new Point(352, 340),
+        new Point(353, 340),
+        new Point(353, 341),
+        new Point(354, 341),
+        new Point(355, 341),
+        new Point(355, 342),
+        new Point(356, 342),
+        new Point(357, 342),
+        new Point(357, 343),
+        new Point(358, 343),
+        new Point(359, 343),
+        new Point(360, 343),
+        new Point(360, 344),
+        new Point(361, 344),
+        new Point(361, 345),
+        new Point(362, 345),
+        new Point(363, 345),
+        new Point(363, 346),
+        new Point(364, 346),
+        new Point(365, 346),
+        new Point(365, 347),
+        new Point(366, 347),
+        new Point(367, 347),
+        new Point(368, 347),
+        new Point(368, 348),
+        new Point(369, 348),
+        new Point(370, 348),
+        new Point(371, 348),
+        new Point(371, 349),
+        new Point(372, 349),
+        new Point(373, 349),
+        new Point(373, 350),
+        new Point(374, 350),
+        new Point(375, 350),
+        new Point(375, 351),
+        new Point(376, 351),
+        new Point(377, 351),
+        new Point(377, 352),
+        new Point(378, 352),
+        new Point(379, 352),
+        new Point(380, 352),
+        new Point(381, 352),
+        new Point(382, 352),
+        new Point(382, 353),
+        new Point(383, 353),
+        new Point(384, 353),
+        new Point(385, 353),
+        new Point(386, 353),
+        new Point(386, 354),
+        new Point(387, 354),
+        new Point(388, 354),
+        new Point(389, 354),
+        new Point(390, 354),
+        new Point(390, 355),
+        new Point(391, 355),
+        new Point(392, 355),
+        new Point(393, 355),
+        new Point(393, 356),
+        new Point(394, 356),
+        new Point(395, 356),
+        new Point(396, 356),
+        new Point(397, 356),
+        new Point(398, 356),
+        new Point(399, 356),
+        new Point(399, 357),
+        new Point(400, 357),
+        new Point(401, 357),
+        new Point(402, 357),
+        new Point(403, 357),
+        new Point(404, 357),
+        new Point(405, 357),
+        new Point(406, 357),
+        new Point(407, 357),
+        new Point(408, 357),
+        new Point(409, 357),
+        new Point(410, 357),
+        new Point(411, 357),
+        new Point(412, 357),
+        new Point(413, 357),
+        new Point(414, 357),
+        new Point(415, 357),
+        new Point(416, 357),
+        new Point(417, 357),
+        new Point(418, 357),
+        new Point(419, 357),
+        new Point(420, 357),
+        new Point(421, 357),
+        new Point(422, 357),
+        new Point(423, 356),
+        new Point(424, 356),
+        new Point(425, 356),
+        new Point(426, 356),
+        new Point(427, 356),
+        new Point(428, 356),
+        new Point(429, 356),
+        new Point(430, 355),
+        new Point(431, 355),
+        new Point(432, 355),
+        new Point(433, 354),
+        new Point(434, 354),
+        new Point(435, 354),
+        new Point(436, 354),
+        new Point(437, 354),
+        new Point(438, 353),
+        new Point(439, 353),
+        new Point(440, 352),
+        new Point(441, 352),
+        new Point(442, 352),
+        new Point(443, 352),
+        new Point(444, 352),
+        new Point(445, 351),
+        new Point(446, 351),
+        new Point(447, 351),
+        new Point(448, 350),
+        new Point(449, 350),
+        new Point(450, 349),
+        new Point(451, 348),
+        new Point(452, 348),
+        new Point(453, 347),
+        new Point(454, 347),
+        new Point(455, 346),
+        new Point(456, 346),
+        new Point(457, 346),
+        new Point(458, 346),
+        new Point(459, 345),
+        new Point(460, 344),
+        new Point(461, 343),
+        new Point(462, 343),
+        new Point(463, 343),
+        new Point(464, 342),
+        new Point(465, 341),
+        new Point(466, 340),
+        new Point(467, 340),
+        new Point(468, 340),
+        new Point(469, 339),
+        new Point(470, 338),
+        new Point(471, 337),
+        new Point(472, 336),
+        new Point(473, 336),
+        new Point(474, 335),
+        new Point(475, 334),
+        new Point(476, 334),
+        new Point(477, 333),
+        new Point(478, 332),
+        new Point(479, 331),
+        new Point(480, 330),
+        new Point(481, 329),
+        new Point(482, 328),
+        new Point(483, 327),
+        new Point(484, 326),
+        new Point(485, 325),
+        new Point(486, 324),
+        new Point(487, 323),
+        new Point(488, 322),
+        new Point(489, 321),
+        new Point(490, 320),
+        new Point(491, 319),
+        new Point(492, 318),
+        new Point(493, 317),
+        new Point(494, 316),
+        new Point(495, 315),
+        new Point(496, 314),
+        new Point(497, 313),
+        new Point(498, 312),
+        new Point(499, 311),
+        new Point(500, 310),
+        new Point(501, 309),
+        new Point(501, 308),
+        new Point(502, 307),
+        new Point(503, 306),
+        new Point(504, 305),
+        new Point(505, 304),
+        new Point(506, 303),
+        new Point(506, 302),
+        new Point(507, 301),
+        new Point(507, 300),
+        new Point(508, 299),
+        new Point(509, 298),
+        new Point(510, 297),
+        new Point(511, 296),
+        new Point(511, 295),
+        new Point(511, 294),
+        new Point(512, 293),
+        new Point(512, 292),
+        new Point(513, 291),
+        new Point(514, 290),
+        new Point(515, 289),
+        new Point(515, 288),
+        new Point(515, 287),
+        new Point(516, 286),
+        new Point(517, 285),
+        new Point(517, 284),
+        new Point(517, 283),
+        new Point(518, 282),
+        new Point(518, 281),
+        new Point(519, 280),
+        new Point(520, 279),
+        new Point(521, 278),
+        new Point(521, 277),
+        new Point(521, 276),
+        new Point(521, 275),
+        new Point(522, 274),
+        new Point(523, 273),
+        new Point(523, 272),
+        new Point(523, 271),
+        new Point(523, 270),
+        new Point(524, 269),
+        new Point(524, 268),
+        new Point(525, 267),
+        new Point(525, 266),
+        new Point(525, 265),
+        new Point(526, 264),
+        new Point(526, 263),
+        new Point(527, 262),
+        new Point(527, 261),
+        new Point(527, 260),
+        new Point(527, 259),
+        new Point(528, 258),
+        new Point(528, 257),
+        new Point(528, 256),
+        new Point(528, 255),
+        new Point(528, 254),
+        new Point(529, 253),
+        new Point(529, 252),
+        new Point(529, 251),
+        new Point(529, 250),
+        new Point(529, 249),
+        new Point(529, 248),
+        new Point(529, 247),
+        new Point(529, 246),
+        new Point(528, 246),
+        new Point(528, 245),
+        new Point(527, 245),
+        new Point(527, 244),
+        new Point(526, 244),
+        new Point(526, 243),
+        new Point(525, 243),
+        new Point(525, 242),
+        new Point(524, 242),
+        new Point(524, 241),
+        new Point(523, 241),
+        new Point(523, 240),
+        new Point(523, 239),
+        new Point(522, 239),
+        new Point(522, 238),
+        new Point(521, 238),
+        new Point(520, 238),
+        new Point(520, 237),
+        new Point(519, 237),
+        new Point(519, 236),
+        new Point(518, 236),
+        new Point(518, 235),
+        new Point(517, 235),
+        new Point(517, 234),
+        new Point(516, 234),
+        new Point(516, 233),
+        new Point(515, 233),
+        new Point(515, 232),
+        new Point(514, 232),
+        new Point(514, 231),
+        new Point(513, 231),
+        new Point(512, 231),
+        new Point(512, 230),
+        new Point(511, 230),
+        new Point(511, 229),
+        new Point(510, 229),
+        new Point(510, 228),
+        new Point(509, 228),
+        new Point(509, 227),
+        new Point(508, 227),
+        new Point(507, 227),
+        new Point(507, 226),
+        new Point(506, 226),
+        new Point(506, 225),
+        new Point(505, 225),
+        new Point(505, 224),
+        new Point(504, 224),
+        new Point(503, 224),
+        new Point(503, 223),
+        new Point(502, 223),
+        new Point(502, 222),
+        new Point(501, 222),
+        new Point(500, 222),
+        new Point(500, 221),
+        new Point(499, 221),
+        new Point(499, 220),
+        new Point(498, 220),
+        new Point(497, 220),
+        new Point(497, 219),
+        new Point(496, 219),
+        new Point(496, 218),
+        new Point(495, 218),
+        new Point(494, 218),
+        new Point(494, 217),
+        new Point(493, 217),
+        new Point(492, 217),
+        new Point(492, 216),
+        new Point(491, 216),
+        new Point(490, 216),
+        new Point(490, 215),
+        new Point(489, 215),
+        new Point(488, 215),
+        new Point(488, 214),
+        new Point(487, 214),
+        new Point(487, 213),
+        new Point(486, 213),
+        new Point(485, 213),
+        new Point(485, 212),
+        new Point(484, 212),
+        new Point(483, 212),
+        new Point(483, 211),
+        new Point(482, 211),
+        new Point(481, 211),
+        new Point(480, 211),
+        new Point(480, 210),
+        new Point(479, 210),
+        new Point(478, 210),
+        new Point(478, 209),
+        new Point(477, 209),
+        new Point(476, 209),
+        new Point(476, 208),
+        new Point(475, 208),
+        new Point(474, 208),
+        new Point(474, 207),
+        new Point(473, 207),
+        new Point(472, 207),
+        new Point(471, 207),
+        new Point(471, 206),
+        new Point(470, 206),
+        new Point(469, 206),
+        new Point(468, 206),
+        new Point(468, 205),
+        new Point(467, 205),
+        new Point(466, 205),
+        new Point(465, 205),
+        new Point(465, 204),
+        new Point(464, 204),
+        new Point(463, 204),
+        new Point(462, 204),
+        new Point(461, 204),
+        new Point(461, 203),
+        new Point(460, 203),
+        new Point(459, 203),
+        new Point(459, 202),
+        new Point(458, 202),
+        new Point(457, 202),
+        new Point(456, 202),
+        new Point(455, 202),
+        new Point(454, 202),
+        new Point(453, 202),
+        new Point(452, 203),
+        new Point(451, 204),
+        new Point(450, 205),
+        new Point(449, 206),
+        new Point(449, 207),
+        new Point(449, 208),
+        new Point(449, 209),
+        new Point(449, 210),
+        new Point(449, 211),
+        new Point(449, 212),
+        new Point(449, 213),
+        new Point(449, 214),
+        new Point(449, 215),
+        new Point(449, 216),
+        new Point(449, 217),
+        new Point(449, 218),
+        new Point(449, 219),
+        new Point(448, 220),
+        new Point(448, 221),
+        new Point(448, 222),
+        new Point(448, 223),
+        new Point(448, 224),
+        new Point(447, 225),
+        new Point(447, 226),
+        new Point(447, 227),
+        new Point(447, 228),
+        new Point(446, 229),
+        new Point(446, 230),
+        new Point(446, 231),
+        new Point(446, 232),
+        new Point(445, 233),
+        new Point(445, 234),
+        new Point(445, 235),
+        new Point(445, 236),
+        new Point(444, 237),
+        new Point(444, 238),
+        new Point(443, 239),
+        new Point(443, 240),
+        new Point(442, 241),
+        new Point(442, 242),
+        new Point(441, 243),
+        new Point(441, 244),
+        new Point(441, 245),
+        new Point(441, 246),
+        new Point(440, 247),
+        new Point(439, 248),
+        new Point(439, 249),
+        new Point(439, 250),
+        new Point(438, 251),
+        new Point(438, 252),
+        new Point(438, 253),
+        new Point(438, 254),
+        new Point(438, 255),
+        new Point(439, 255),
+        new Point(439, 256),
+        new Point(439, 257),
+        new Point(440, 257),
+        new Point(440, 258),
+        new Point(441, 258),
+        new Point(442, 258),
+        new Point(442, 259),
+        new Point(443, 259),
+        new Point(444, 259),
+        new Point(445, 259),
+        new Point(446, 259),
+        new Point(447, 259),
+        new Point(448, 259),
+        new Point(449, 259),
+        new Point(450, 259),
+        new Point(451, 259),
+        new Point(452, 259),
+        new Point(453, 259),
+        new Point(454, 259),
+        new Point(455, 259),
+        new Point(456, 259),
+        new Point(457, 259),
+        new Point(458, 259),
+        new Point(459, 259),
+        new Point(460, 259),
+        new Point(461, 259),
+        new Point(462, 259),
+        new Point(462, 260),
+        new Point(463, 260),
+        new Point(464, 260),
+        new Point(465, 260),
+        new Point(465, 261),
+        new Point(464, 262),
+        new Point(463, 263),
+        new Point(462, 263),
+        new Point(461, 263),
+        new Point(460, 264),
+        new Point(459, 264),
+        new Point(458, 264),
+        new Point(457, 264),
+        new Point(456, 265),
+        new Point(455, 265),
+        new Point(454, 265),
+        new Point(453, 266),
+        new Point(452, 266),
+        new Point(451, 266),
+        new Point(450, 266),
+        new Point(449, 267),
+        new Point(448, 268),
+        new Point(447, 268),
+        new Point(446, 269),
+        new Point(445, 269),
+        new Point(444, 269),
+        new Point(443, 269),
+        new Point(442, 270),
+        new Point(441, 270),
+        new Point(440, 270),
+        new Point(439, 270),
+        new Point(438, 270),
+        new Point(437, 271),
+        new Point(436, 271),
+        new Point(435, 271),
+        new Point(434, 272),
+        new Point(433, 272),
+        new Point(432, 273),
+        new Point(431, 274),
+        new Point(430, 274),
+        new Point(429, 275),
+        new Point(428, 276),
+        new Point(427, 277),
+        new Point(426, 278),
+        new Point(426, 279),
+        new Point(425, 280),
+        new Point(425, 281),
+        new Point(424, 282),
+        new Point(424, 283),
+        new Point(423, 284),
+        new Point(422, 285),
+        new Point(422, 286),
+        new Point(422, 287),
+        new Point(421, 288),
+        new Point(420, 289),
+        new Point(419, 290),
+        new Point(418, 291),
+        new Point(417, 292),
+        new Point(416, 293),
+        new Point(415, 294),
+        new Point(414, 295),
+        new Point(413, 296),
+        new Point(412, 297),
+        new Point(411, 298),
+        new Point(410, 299),
+        new Point(409, 300),
+        new Point(408, 301),
+        new Point(407, 302),
+        new Point(406, 303),
+        new Point(405, 304),
+        new Point(404, 304),
+        new Point(403, 305),
+        new Point(402, 306),
+        new Point(401, 307),
+        new Point(400, 307),
+        new Point(399, 307),
+        new Point(398, 308),
+        new Point(397, 309),
+        new Point(396, 310),
+        new Point(395, 310),
+        new Point(394, 311),
+        new Point(393, 311),
+        new Point(392, 312),
+        new Point(391, 313),
+        new Point(390, 313),
+        new Point(389, 313),
+        new Point(388, 314),
+        new Point(387, 314),
+        new Point(386, 315),
+        new Point(385, 316),
+        new Point(384, 316),
+        new Point(383, 317),
+        new Point(382, 317),
+        new Point(381, 318),
+        new Point(380, 318),
+        new Point(379, 318),
+        new Point(378, 319),
+        new Point(377, 319),
+        new Point(376, 319),
+        new Point(375, 319),
+        new Point(374, 320),
+        new Point(373, 321),
+        new Point(372, 321),
+        new Point(371, 322),
+        new Point(370, 322),
+        new Point(369, 322),
+        new Point(368, 323),
+        new Point(367, 323),
+        new Point(366, 323),
+        new Point(365, 324),
+        new Point(364, 324),
+        new Point(363, 324),
+        new Point(362, 324),
+        new Point(361, 325),
+        new Point(360, 325),
+        new Point(359, 325),
+        new Point(358, 325),
+        new Point(357, 326),
+        new Point(356, 327),
+        new Point(355, 327),
+        new Point(354, 327),
+        new Point(353, 328),
+        new Point(352, 328),
+        new Point(351, 329),
+        new Point(350, 329)
     };
 
     public static Polygon getMainLeaf(Double scalex, double scaley) {
 
-        return polygonizeControlPoints(mainLeafArray, scalex, scaley);
+        return polygonizeControlPoints(blackLeaf, scalex, scaley);
     }
 
     static Polygon polygonizeControlPoints(Point[] pp, double scalex, double scaley) {
         Polygon r = new Polygon();
         for (int i = 0; i < pp.length; i++) {
             Point p = pp[i];
-            r.addPoint( (int) ((double) p.x * scalex), (int) ((double) p.y * scaley));
+            //small movement to right
+            r.addPoint((int) ((double) (p.x - 25) * scalex), (int) ((double) p.y * scaley));
         }
         return r;
     }
 
     public static Polygon getSecondLeaf(double scalex, double scaley) {
-        return polygonizeControlPoints(smallLeafArray, scalex, scaley);
-    }
-
-    public static Polygon getSecondLeafStalk(double scalex, double scaley) {
-        return polygonizeControlPoints(smallLeafStalkArray, scalex, scaley);
-    }
-
-    public static Polygon getMainLeafStalk(double scalex, double scaley) {
-        return polygonizeControlPoints(mainLeafStalkArray, scalex, scaley);
+        return polygonizeControlPoints(redLeaf, scalex, scaley);
     }
 
-    public static Polygon getMainLeafCurve(Double scalex, double scaley) {
-        return getNatCubicClosed(getMainLeaf(scalex, scaley));
-    }
-
-    public static Polygon getMainLeafStalkCurve(Double scalex, double scaley) {
-        return getNatCubicClosed(getMainLeafStalk(scalex, scaley));
-    }
-
-    public static Polygon getSecondLeafCurve(Double scalex, double scaley) {
-        return getNatCubicClosed(getSecondLeaf(scalex, scaley));
-    }
-
-    public static Polygon getSecondLeafStalkCurve(Double scalex, double scaley) {
-        return getNatCubicClosed(getSecondLeafStalk(scalex, scaley));
-    }
-
+//    public static Polygon getMainLeafCurve(Double scalex, double scaley) {
+//        return getNatCubicClosed(getMainLeaf(scalex, scaley));
+//    }
+//
+//  
+//    public static Polygon getSecondLeafCurve(Double scalex, double scaley) {
+//        return getNatCubicClosed(getSecondLeaf(scalex, scaley));
+//    }
     static Polygon getNatCubicClosed(Polygon p) {
         NatCubicClosed c = new NatCubicClosed();
         c.setSourcePolygon(p);
         return c.calcualteResult();
     }
+
+    /**
+     * Small program to vectorize leaves
+     *
+     * @param args
+     * @throws IOException
+     */
+    public static void main(String[] args) throws IOException {
+        //File f = new File("/home/jvanek/hg/icedtea-web/netx/redLeaf.png");
+        File f = new File("/home/jvanek/hg/icedtea-web/netx/blackLeaf.png");
+        File fOut = new File(f.getAbsolutePath().replace(".png", "_result.png"));
+        BufferedImage maze = ImageIO.read(f);
+        //for other sources then my current leaves, there must be empty space between start and end, otherwise shortest path will fail
+        //start for blackLeaf is [267,264] end [268,202]
+        //start for redLeaf is [348,331] end [349,329]
+        Map<Node, Node> allNodes = new HashMap<Node, Node>();
+        Node start = null;
+        //first init data
+        for (int x = 0; x < maze.getWidth(); x++) {
+            for (int y = 0; y < maze.getHeight(); y++) {
+                Color c = new Color(maze.getRGB(x, y), true);
+                if (c.getAlpha() > 0) {
+                    Node n = new Node(x, y);
+                    Node nn = allNodes.get(n);
+                    if (nn == null) {
+                        allNodes.put(n, n);
+                    } else {
+                        n = nn;
+                    }
+                    if (start == null) {
+                        start = n;
+                    }
+                    //check closest neigbourhood
+                    for (int xx = -1; xx <= 1; xx++) {
+                        for (int yy = -1; yy <= 1; yy++) {
+                            if (xx == yy) {
+                                continue;
+                            }
+                            int xxx = x + xx;
+                            int yyy = y + yy;
+                            //all non-trasnaprent nigbours are neigbours with distance of 1
+                            Color ccc = new Color(maze.getRGB(xxx, yyy), true);
+                            if (ccc.getAlpha() > 0) {
+                                Node n2 = new Node(xxx, yyy);
+                                Node nn2 = allNodes.get(n2);
+                                if (nn2 == null) {
+                                    allNodes.put(n2, n2);
+                                } else {
+                                    n2 = nn2;
+                                }
+                                n.addDestination(n2, 1);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+        //calculate path from start to mnsot far away point (thats why the empty space)
+        Collection<Node> nodesCol = allNodes.values();
+        Graph g = new Graph();
+        for (Node node : nodesCol) {
+            g.addNode(node);
+        }
+
+        Graph graph = calculateShortestPathFromSource(g, start);
+        List<Node> result = new ArrayList<>(graph.nodes.size());
+        result.addAll(graph.nodes);
+        Collections.sort(result, new Comparator<Node>() {
+            @Override
+            public int compare(Node o1, Node o2) {
+                return o1.distance - o2.distance;
+            }
+        });
+        Node finalNode = result.get(result.size() - 1);
+        List<Node> path = finalNode.getShortestPath();
+        //view result if needed
+        BufferedImage finish = new BufferedImage(maze.getWidth(), maze.getHeight(), maze.getType());
+        System.out.println("private final static Point[] " + f.getName() + " = {");
+
+        Graphics2D g2d = finish.createGraphics();
+        for (int i = 1; i < path.size(); i++) {
+            Node from = path.get(i - 1);
+            Node to = path.get(i);
+            g2d.drawLine(from.x, from.y, to.x, to.y);
+            System.out.println("                    new Point(" + from.x + ", " + from.y + "),");
+
+        }
+        Node from = path.get(path.size() - 1);
+        Node to = path.get(0);
+        System.out.println("                    new Point(" + from.x + ", " + from.y + ")");
+        g2d.drawLine(from.x, from.y, to.x, to.y);
+        System.out.println("    };");
+        //ImageIO.write(finish, "png", fOut);
+    }
+
+    public static class Graph {
+
+        private Set<Node> nodes = new HashSet<>();
+
+        public void addNode(Node nodeA) {
+            nodes.add(nodeA);
+        }
+
+        // getters and setters 
+    }
+
+    public static class Node {
+
+        private final String name;
+
+        private List<Node> shortestPath = new LinkedList<>();
+
+        private Integer distance = Integer.MAX_VALUE;
+
+        Map<Node, Integer> adjacentNodes = new HashMap<>();
+        private final int x;
+        private final int y;
+
+        public void addDestination(Node destination, int distance) {
+            adjacentNodes.put(destination, distance);
+        }
+
+        public Node(int xOrig, int yOrig) {
+            this.name = xOrig + " x " + yOrig;
+            this.x = xOrig;
+            this.y = yOrig;
+        }
+
+        public Integer getDistance() {
+            return distance;
+        }
+
+        public void setDistance(Integer distance) {
+            this.distance = distance;
+        }
+
+        public Map<Node, Integer> getAdjacentNodes() {
+            return adjacentNodes;
+        }
+
+        public void setShortestPath(List<Node> shortestPath) {
+            this.shortestPath = shortestPath;
+        }
+
+        public List<Node> getShortestPath() {
+            return shortestPath;
+        }
+
+        @Override
+        public boolean equals(Object obj) {
+            if (obj instanceof Node) {
+                return (((Node) obj).name.equals(this.name));
+            } else {
+                return false;
+            }
+        }
+
+        @Override
+        public int hashCode() {
+            return name.hashCode();
+        }
+    }
+
+    public static Graph calculateShortestPathFromSource(Graph graph, Node source) {
+        source.setDistance(0);
+
+        Set<Node> settledNodes = new HashSet<>();
+        Set<Node> unsettledNodes = new HashSet<>();
+
+        unsettledNodes.add(source);
+
+        while (!unsettledNodes.isEmpty()) {
+            Node currentNode = getLowestDistanceNode(unsettledNodes);
+            unsettledNodes.remove(currentNode);
+            for (Entry< Node, Integer> adjacencyPair
+                    : currentNode.getAdjacentNodes().entrySet()) {
+                Node adjacentNode = adjacencyPair.getKey();
+                Integer edgeWeight = adjacencyPair.getValue();
+                if (!settledNodes.contains(adjacentNode)) {
+                    calculateMinimumDistance(adjacentNode, edgeWeight, currentNode);
+                    unsettledNodes.add(adjacentNode);
+                }
+            }
+            settledNodes.add(currentNode);
+        }
+        return graph;
+    }
+
+    private static Node getLowestDistanceNode(Set< Node> unsettledNodes) {
+        Node lowestDistanceNode = null;
+        int lowestDistance = Integer.MAX_VALUE;
+        for (Node node : unsettledNodes) {
+            int nodeDistance = node.getDistance();
+            if (nodeDistance < lowestDistance) {
+                lowestDistance = nodeDistance;
+                lowestDistanceNode = node;
+            }
+        }
+        return lowestDistanceNode;
+    }
+
+    private static void calculateMinimumDistance(Node evaluationNode,
+            Integer edgeWeigh, Node sourceNode) {
+        Integer sourceDistance = sourceNode.getDistance();
+        if (sourceDistance + edgeWeigh < evaluationNode.getDistance()) {
+            evaluationNode.setDistance(sourceDistance + edgeWeigh);
+            LinkedList<Node> shortestPath = new LinkedList<>(sourceNode.getShortestPath());
+            shortestPath.add(sourceNode);
+            evaluationNode.setShortestPath(shortestPath);
+        }
+    }
 }
--- a/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java	Thu Jun 15 17:44:26 2017 +0200
+++ b/plugin/icedteanp/java/sun/applet/PluginAppletViewer.java	Fri Jun 16 21:03:27 2017 +0200
@@ -732,9 +732,10 @@
 
                 panel.setSize(width, height);
                 panel.validate();
-
-                panel.getApplet().resize(width, height);
-                panel.getApplet().validate();
+                if (panel.getApplet() != null) {
+                    panel.getApplet().resize(width, height);
+                    panel.getApplet().validate();
+                }
             }
         });
     }
--- a/tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainterTest.java	Thu Jun 15 17:44:26 2017 +0200
+++ b/tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/BasePainterTest.java	Fri Jun 16 21:03:27 2017 +0200
@@ -36,7 +36,6 @@
 exception statement from your version. */
 package net.sourceforge.jnlp.splashscreen.impls.defaultsplashscreen2012;
 
-import net.sourceforge.jnlp.splashscreen.impls.defaultsplashscreen2012.BasePainter;
 import java.awt.image.BufferedImage;
 import net.sourceforge.jnlp.splashscreen.SplashUtils.SplashReason;
 import net.sourceforge.jnlp.splashscreen.impls.DefaultSplashScreen2012;
--- a/tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefsTest.java	Thu Jun 15 17:44:26 2017 +0200
+++ b/tests/netx/unit/net/sourceforge/jnlp/splashscreen/impls/defaultsplashscreen2012/SplinesDefsTest.java	Fri Jun 16 21:03:27 2017 +0200
@@ -74,13 +74,9 @@
     public void testApi() {
         double x = 1d;
         Polygon[] p = {SplinesDefs.getMainLeaf(x, x),
-            SplinesDefs.getMainLeafCurve(x, x),
-            SplinesDefs.getMainLeafStalk(x, x),
-            SplinesDefs.getMainLeafStalkCurve(x, x),
+            SplinesDefs.getMainLeaf(x, x),
             SplinesDefs.getSecondLeaf(x, x),
-            SplinesDefs.getSecondLeafCurve(x, x),
-            SplinesDefs.getSecondLeafStalk(x, x),
-            SplinesDefs.getSecondLeafStalkCurve(x, x)};
+            };
         for (Polygon polygon : p) {
             Assert.assertNotNull(polygon);
             Assert.assertTrue(polygon.npoints > 5);