Commits

Dmytro Kovalchuk  committed 4127e7f

Applied patches

  • Participants
  • Parent commits 0d0c2af

Comments (0)

Files changed (4)

File colorPicker

-# HG changeset patch
-# Parent b0aa911d781664af2ffeb71252552eb35b7fc8cb
-Color picker tool added. Refs issue 17
-
-diff --git a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ColorPicker.java b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ColorPicker.java
-new file mode 100644
---- /dev/null
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ColorPicker.java
-@@ -0,0 +1,78 @@
-+/*
-+ * Copyright 2012 dmytro.
-+ *
-+ * Licensed under the Apache License, Version 2.0 (the "License");
-+ * you may not use this file except in compliance with the License.
-+ * You may obtain a copy of the License at
-+ *
-+ *      http://www.apache.org/licenses/LICENSE-2.0
-+ *
-+ * Unless required by applicable law or agreed to in writing, software
-+ * distributed under the License is distributed on an "AS IS" BASIS,
-+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-+ * See the License for the specific language governing permissions and
-+ * limitations under the License.
-+ */
-+package net.anatolich.cstitch.swing.tools.impl;
-+
-+import java.awt.event.KeyEvent;
-+import java.awt.event.MouseEvent;
-+import javax.imageio.ImageIO;
-+import javax.swing.ImageIcon;
-+import javax.swing.KeyStroke;
-+import net.anatolich.cstitch.palette.api.PaletteColor;
-+import net.anatolich.cstitch.ui.editor.tools.AbstractSwingTool;
-+
-+/**
-+ * Changes selected color to selected one.
-+ *
-+ * @author dmytro
-+ */
-+public class ColorPicker extends AbstractSwingTool {
-+
-+    @Override
-+    public void mousePressed(MouseEvent e) {
-+        if (e.getButton() != MouseEvent.BUTTON1) {
-+            return;
-+        }
-+
-+        int schemaX = getEditor().convertComponentXToSchema(e.getX());
-+        int schemaY = getEditor().convertComponentYToSchema(e.getY());
-+        PaletteColor cellColor = getEditor().getSchema().getColorAt(schemaX, schemaY);
-+        getEditor().getSchema().getUsedColors().setSelectedColor(cellColor);
-+    }
-+
-+    @Override
-+    public String getName() {
-+        return "Color Picker";
-+    }
-+
-+    @Override
-+    public String getDescription() {
-+        return "Changes selected color to picked one";
-+    }
-+
-+    @Override
-+    protected ImageIcon getSmallIcon() {
-+        return new ImageIcon(
-+                getClass().getResource(
-+                "/net/anatolich/cstitch/swing/tools/impl/color-picker_16.png"));
-+    }
-+
-+    @Override
-+    protected ImageIcon getIcon() {
-+        return new ImageIcon(
-+                getClass().getResource(
-+                "/net/anatolich/cstitch/swing/tools/impl/color-picker.png"));
-+    }
-+
-+    @Override
-+    protected KeyStroke getAcceleratorKey() {
-+        return KeyStroke.getKeyStroke('c');
-+    }
-+
-+    @Override
-+    protected int getMnemonicKey() {
-+        return KeyEvent.VK_C;
-+    }
-+}
-diff --git a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ToolsInjector.java b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ToolsInjector.java
---- a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ToolsInjector.java
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ToolsInjector.java
-@@ -31,5 +31,6 @@
-         service.registerTool(new Pencil());
-         service.registerTool(new Eraser());
-         service.registerTool(new Zoom());
-+        service.registerTool(new ColorPicker());
-     }
- }
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/color-picker.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/color-picker.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..7e26dfe06e7dc63df589372422630086e8ca3677
-GIT binary patch
-literal 1606
-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
-Eg2l4~3jhEB
-
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/color-picker_16.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/color-picker_16.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..59fef3f7155f725e84b1720d4540a927a710d5c1
-GIT binary patch
-literal 581
-zc$@)60=oT)P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006ENkl<ZIE|H(
-zU1(Bq7{;G-_U~+dYz|vf*o=Y|=v6^U1Y3iy`?&3@t`<QQgfePS(1;=$MHtf6u&5}6
-zVeO(3(S^bW&2!B3&|EsywaGl1PIJf8!G9O!3UZr!;Jtf)&-=+>o4WaO=*XTv%lQ^&
-zM`|Vzx=pqNkBpx?WZB#EzRO_JE|=2K_q3rY1FO}_p1f=y?6w#^lu@<uoQQnk2a2m}
-zUCdVS@k@h82aX+n(MqYgBxgBeuMTBdft0Ic7C-0u*{uxP7;@uVGQYdbR5_U{SXwAR
-z%9P(O^3uVHJ5ygb9l`Gp9N@H^&Gq`8nn_Z^?V?aiN+c<)oS7Q;7XV<x4yLDP223XN
-z2eyUuUOeSsbxf<8PJTzVR&&>30F9S8JIkNe>)W4|<g#|B(TG$cwW?9{PB|+pAD^e6
-z{G0pV5`#fuNT<_1Qffbmp`!zHVr(fK{&d3OxWYFowmyQ*W&_U)*EAaK;~GneLEnyO
-zI2scKzJDWlU3R;j4TZw@Mez%rPsC|Fu|R#kH^I@-Tjou{x_CZxJrWUVGL@!tv3ctC
-zPP}tEhdY~L$=KL~PD03qYPAZs%pw{UUrkQ>&U!o^xhaEv`}?jIi$${}NwG?0&Es~v
-z?gjz@wW-ztkbExxG`o@&T&{;+K@ge->tgWx7rFr$0dV+xnHm7~Psjk22BH1}Bwy>L
-TQxfjP00000NkvXXu0mjf_%#s%
-

File schemaCoordinates

-# HG changeset patch
-# Parent 5c49c71d105a93845f442b702b70fb6ea0c52155
-Schema coordinate retrieving method pulled up to abstract swing tool
-
-diff -r 5c49c71d105a swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ColorPicker.java
---- a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ColorPicker.java	Fri Apr 13 02:30:14 2012 +0300
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/ColorPicker.java	Fri Apr 13 02:33:11 2012 +0300
-@@ -35,10 +35,7 @@
-         if (e.getButton() != MouseEvent.BUTTON1) {
-             return;
-         }
--
--        int schemaX = getEditor().convertComponentXToSchema(e.getX());
--        int schemaY = getEditor().convertComponentYToSchema(e.getY());
--        PaletteColor cellColor = getEditor().getSchema().getColorAt(schemaX, schemaY);
-+        PaletteColor cellColor = getEditor().getSchema().getColorAt(getSchemaX(e), getSchemaY(e));
-         getEditor().getSchema().getUsedColors().setSelectedColor(cellColor);
-     }
- 
-diff -r 5c49c71d105a swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Eraser.java
---- a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Eraser.java	Fri Apr 13 02:30:14 2012 +0300
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Eraser.java	Fri Apr 13 02:33:11 2012 +0300
-@@ -34,8 +34,8 @@
-             return;
-         }
- 
--        int schemaX = getEditor().convertComponentXToSchema(e.getX());
--        int schemaY = getEditor().convertComponentYToSchema(e.getY());
-+        int schemaX = getSchemaX(e);
-+        int schemaY = getSchemaY(e);
-         
-         final Canvas schema = getEditor().getSchema();
-         
-@@ -50,8 +50,8 @@
-             return;
-         }
-         
--        int schemaX = getEditor().convertComponentXToSchema(e.getX());
--        int schemaY = getEditor().convertComponentYToSchema(e.getY());
-+        int schemaX = getSchemaX(e);
-+        int schemaY = getSchemaY(e);
-         
-         final Canvas schema = getEditor().getSchema();
-         
-diff -r 5c49c71d105a swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Pencil.java
---- a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Pencil.java	Fri Apr 13 02:30:14 2012 +0300
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Pencil.java	Fri Apr 13 02:33:11 2012 +0300
-@@ -47,8 +47,8 @@
-             return;
-         }
- 
--        int schemaX = getEditor().convertComponentXToSchema(e.getX());
--        int schemaY = getEditor().convertComponentYToSchema(e.getY());
-+        int schemaX = getSchemaX(e);
-+        int schemaY = getSchemaY(e);
-         final Canvas schema = getEditor().getSchema();
-         final Legend legend = schema.getUsedColors();
-         PaletteColor color = legend.getSelectedColor();
-@@ -63,8 +63,8 @@
-     @Override
-     public void mouseDragged(MouseEvent e) {
-         if (e.getModifiersEx() == (e.getModifiersEx() | MouseEvent.BUTTON1_DOWN_MASK)) {
--            int schemaX = getEditor().convertComponentXToSchema(e.getX());
--            int schemaY = getEditor().convertComponentYToSchema(e.getY());
-+            int schemaX = getSchemaX(e);
-+            int schemaY = getSchemaY(e);
-             final Canvas schema = getEditor().getSchema();
-             final Legend legend = schema.getUsedColors();
-             PaletteColor color = legend.getSelectedColor();
-diff -r 5c49c71d105a swing-api/src/main/java/net/anatolich/cstitch/ui/editor/tools/AbstractSwingTool.java
---- a/swing-api/src/main/java/net/anatolich/cstitch/ui/editor/tools/AbstractSwingTool.java	Fri Apr 13 02:30:14 2012 +0300
-+++ b/swing-api/src/main/java/net/anatolich/cstitch/ui/editor/tools/AbstractSwingTool.java	Fri Apr 13 02:33:11 2012 +0300
-@@ -149,6 +149,14 @@
-         this.editor = editor;
-     }
- 
-+    protected final int getSchemaX(MouseEvent e) {
-+        return getEditor().convertComponentXToSchema(e.getX());
-+    }
-+
-+    protected final int getSchemaY(MouseEvent e) {
-+        return getEditor().convertComponentYToSchema(e.getY());
-+    }
-+
-     private final class SetToolAction extends AbstractAction {
- 
-         private final JSchemaEditor editor;
-colorPicker
-schemaCoordinates
-toolIcons
 # Placed by Bitbucket

File toolIcons

-# HG changeset patch
-# Parent 26a73782577c267b32d2d338d3cc9f30c0639be9
-Updated tool icons
-
-diff --git a/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/eraser.png b/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/eraser.png
-deleted file mode 100644
-Binary file cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/eraser.png has changed
-diff --git a/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/eraser_16.png b/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/eraser_16.png
-deleted file mode 100644
-Binary file cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/eraser_16.png has changed
-diff --git a/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/pencil.png b/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/pencil.png
-deleted file mode 100644
-Binary file cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/pencil.png has changed
-diff --git a/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/pencil_16.png b/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/pencil_16.png
-deleted file mode 100644
-Binary file cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/pencil_16.png has changed
-diff --git a/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/zoom.png b/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/zoom.png
-deleted file mode 100644
-Binary file cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/zoom.png has changed
-diff --git a/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/zoom_16.png b/cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/zoom_16.png
-deleted file mode 100644
-Binary file cross-stitch-api/src/main/resources/net/anatolich/cstitch/ui/editor/tools/zoom_16.png has changed
-diff --git a/cross-stitch-app/src/main/java/net/anatolich/cstitch/MainWindow.java b/cross-stitch-app/src/main/java/net/anatolich/cstitch/MainWindow.java
---- a/cross-stitch-app/src/main/java/net/anatolich/cstitch/MainWindow.java
-+++ b/cross-stitch-app/src/main/java/net/anatolich/cstitch/MainWindow.java
-@@ -45,7 +45,7 @@
- public class MainWindow extends JFrame {
- 
-     private static final String APPLICATION_NAME = "Cross-Stitch assistant";
--    private static final Dimension TOOLBAR_BUTTON_SIZE = new Dimension(36, 36);
-+    private static final Dimension TOOLBAR_BUTTON_SIZE = new Dimension(42, 42);
-     private SaveSchemaAsAction saveSchemaAsAction;
-     private JSchemaEditor schemaEditor;
-     private JLegendPanel legendPanel;
-diff --git a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Eraser.java b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Eraser.java
---- a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Eraser.java
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Eraser.java
-@@ -72,12 +72,12 @@
- 
-     @Override
-     protected ImageIcon getSmallIcon() {
--        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/ui/editor/tools/eraser_16.png"));
-+        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/swing/tools/impl/eraser_16.png"));
-     }
- 
-     @Override
-     protected ImageIcon getIcon() {
--        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/ui/editor/tools/eraser.png"));
-+        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/swing/tools/impl/eraser.png"));
-     }
- 
-     @Override
-diff --git a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Pencil.java b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Pencil.java
---- a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Pencil.java
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Pencil.java
-@@ -89,12 +89,12 @@
- 
-     @Override
-     protected ImageIcon getIcon() {
--        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/ui/editor/tools/pencil.png"));
-+        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/swing/tools/impl/pencil.png"));
-     }
- 
-     @Override
-     protected ImageIcon getSmallIcon() {
--        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/ui/editor/tools/pencil_16.png"));
-+        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/swing/tools/impl/pencil_16.png"));
-     }
- 
-     @Override
-diff --git a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Zoom.java b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Zoom.java
---- a/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Zoom.java
-+++ b/swing-api-impl/src/main/java/net/anatolich/cstitch/swing/tools/impl/Zoom.java
-@@ -15,12 +15,9 @@
-  */
- package net.anatolich.cstitch.swing.tools.impl;
- 
--import java.awt.event.InputEvent;
- import java.awt.event.KeyEvent;
- import java.awt.event.MouseEvent;
- import java.awt.event.MouseWheelEvent;
--import javax.swing.AbstractAction;
--import static javax.swing.Action.*;
- import javax.swing.ImageIcon;
- import javax.swing.KeyStroke;
- import net.anatolich.cstitch.ui.editor.tools.AbstractSwingTool;
-@@ -83,12 +80,12 @@
- 
-     @Override
-     protected ImageIcon getIcon() {
--        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/ui/editor/tools/zoom.png"));
-+        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/swing/tools/impl/zoom.png"));
-     }
- 
-     @Override
-     protected ImageIcon getSmallIcon() {
--        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/ui/editor/tools/zoom_16.png"));
-+        return new ImageIcon(getClass().getResource("/net/anatolich/cstitch/swing/tools/impl/zoom_16.png"));
-     }
- 
-     @Override
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/eraser.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/eraser.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..f91719c763038cc2232dbf22aa52be9bad461b87
-GIT binary patch
-literal 1690
-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
-
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/eraser_16.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/eraser_16.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..414d278fdef2efc7bf302ca36ba8a69cca2c5ab1
-GIT binary patch
-literal 606
-zc$@)V0-^nhP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006dNkl<ZIE}@T
-zL1<EO9LK-D=bri|<^-ctSd1MSY-)$L6|uGO5LTCn5}U0q?NEmWA+rcZl;=To5-Zp8
-z*iD8;P=`s_Wvk1&C^&U)=6ufgUhn_j`*+Ai3^&%PKYZbT_<cUVAHN^)zaM*$qV)&&
-zC*1yv^QU}1OD2<9`X@o@Rwzifn=f6>MvpS+Id^hs$dFE_KORVszkW5K%RgUhq6j{C
-zQ#m#^*43<(&y0+Y(o`z-2>_VA;MGh1fFcM9d8-b3!7u*MG+uk3mOamA8Luo}-l;Qm
-zg1?TB2dGLCR3WfUO^Gdw#cJDF-&Uhf%wUb6RKIaNUrKfq<c5a>AmkM#gt6bdD-!2n
-zYj>q2NRcqFOCnUhJ2X(OFLa#X^Wfk$N=QN{zdP$LmyP?rD#){sd5sWAFoaGk+QQ$=
-zAHh;z-xaDTZ*@h%q3LN+aXM}0a!F`CddTaPLI5-AQ`Pz16EgsiOeW8=(P+FyRP@Zu
-zh_t`o*0r`K)FTmI(kaR?c7y={u~=-NSS&WH)hb=iebJUzR_MyyT;l`Fk_^j|H%3!%
-zk3#_f*jlaD@Or%?4u_-HV(m6;ZEWhr$w?za2#O4MdqR~H`w0L5Znv9XTwF{S3I&?a
-z=jprWFQlg&e+PgafE56@A8!V5g5x-UJRbj+%jKkSIDEdtuFP$j9e}O<H||`42XMq>
-sG9C4JJiXa$wgNzDM+G46irkL+3)VsT6qgc@`2YX_07*qoM6N<$f<gKfMF0Q*
-
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/pencil.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/pencil.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..b5e7e7becba281a1a19767cc7d5a804b88b0b6b8
-GIT binary patch
-literal 1085
-zc$@(}1j74?P)<h;3K|Lk000e1NJLTq001BW001Be1^@s6b9#F8000C8Nkl<ZScSco
-zU1%It6vzLw^SQe-lg!*~ve;tMHQ9%<4@G^*gOnmtCHNqrhWOGFL9|4zC>27V1BO1e
-zA}y^3Y6=A*Z#561c~HR*!~|XJLW71SU;DwjI~!(aX7AkfAt|hN6SK+g9yr{4;okH6
-zbLM|wcyu^4O?xX6iQG#h5?#?~G}%%3=;-KK(=`7ggj7t^EUBvcA>S$Z`1ttP$jHcN
-zLqkJ78yg#PsZ^?1mUW^d0tg`kxm@m+EX&6xCMLvSFz78TEM#i6+DB~{KnOV{isGCs
-z%R{THt71Bxt_%+k3*m71{iUU)J3^b`x-82dheDx~02J4C3-j~ybZu?zRwNR+3jkaj
-z;RA}I+|YIXG^JFsZQIIZGN6=R0q`jR3IKsN!39N8W(>m^rj!blQYV|uf>L@H!0aP<
-zTLch7Oi>hXM5ECW##qR8UAn%$POH`GO#o8>y!!hs7r^uUR4f*IrCO~@uImOenT+Fk
-z-q!$T0N9V;Z<z@RAu53P;_>*~zV8d=a+z&yZ53VDy$|3r0ISivR!+hBcsxEyDHRHZ
-zf{@K-w;ad$6FY6s@Ac@&Q$Prj0F1?AvD=hVp;RidTrQWlZ96H7;>BGNdqyif@KS$&
-z|FrA6D3{AZp-{*>j$<o|a!C}$ec`|nI$)Y+faAC`(P(tOR;x*_>q^_(+xhP9?)>KF
-z<^{{LemzK?LwkVZxMvN+xJD@r_`a_&#tMuvskgWH9nbTYEvupD{#&P6Fd+m05{jaH
-zDM^yf^Sti5uGQDqXE}~DnM@|{H&gF09T)^~jpI0#=XsSe=2R*bLDRIUU@-Vqv&EX~
-z03qZ!fO$!h231ux8DqAt>jlFwt}ZSvUT+o-G%*E)kSKr|Q556ha9F35I*OuDS(azh
-z>GbSj;J^VpKnUpua7Pe?GrF$plu|ns3Ke|c|00!2eQ;PfaDWaFLeyHVHpTP&^Wktf
-z<omwe)zxLYuDg&<r>Bns2M%DuzTTcsa{0nJP17XCm?z7!<$2!sD=RA(0kESA*!P$0
-zjn`j$Vf@_7SJyW(La|h?=5o18wOaj&<G4%3VzGEs_`Wgu=7lG}S(y7F_48b9?)v#!
-zBHmNxfbRgPt>o<KfyBuZW2VNQE@pl~R9nY$&-5&Z!qOyw?N$nC=z;N9M+Todu1tHy
-zWodO~IlJ`W@6T`EOI>aycuxU_rm6OJ@ro|zrQegut<=N(g&%(_f7=dt!-)18?`o=2
-z9X@sJ_KT+np6D2OH-re$9`yC7(}oe&I|1adV?+sn%JYG<YDlJ~a^(-~e4cuf2Cy^t
-zjgtP)zJ7hQ2LSdj0lOL6JqPL%bt|h|ABQ!{eFgjjW{<aGU#;+T00000NkvXXu0mjf
-DU?~o$
-
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/pencil_16.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/pencil_16.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..4c98456cea5e82e4c56f01869504dd44492474b5
-GIT binary patch
-literal 393
-zc$@)=0e1e0P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0003{Nkl<ZIE`aw
-zAOi#i1qr=={d%8}kdQPJshWj_g*gNT1vlsB=9;~F^~#x%M9nN*TwE(zSy{cz&CTy|
-zaBw)2qM1QaQE|4as_J(xF0Shg3=A?PIbBUnty4!w=O+&j&wU041~rm2tE#G&nV6XT
-z=Hugg%)r24LXu_`6_pe{J-weoLPF13Sy>%O(kv$@7o?$~@l{4f=DoVQdJsvPg@uJ(
-z<mKhx%gM=oH8V3yAyu=Pw6yd~RaMpRW@cs;Bxx2B64H{ClzghDruJ1`UA>)<dS+x!
-zN@9eN06*W+S8v`4GBGhNxqbU~0ZF#++%RM6{?)nv^)!T6GcYg^mCWIad_1g77=K(%
-zx^Vtv;iVgILm3zt{*huildvGqMsoux1CpG~z`(%Bz`(%9$jGR~!otM&`}f~JP**WA
-nFfjZ<!oL_87=A!$Wc&vJ)udIKo7dBr00000NkvXXu0mjfz>}?9
-
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/zoom.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/zoom.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..928481d53779bfcae72bdbf26e12673d9e1c2d41
-GIT binary patch
-literal 1811
-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
-BYZ?Fm
-
-diff --git a/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/zoom_16.png b/swing-api-impl/src/main/resources/net/anatolich/cstitch/swing/tools/impl/zoom_16.png
-new file mode 100644
-index 0000000000000000000000000000000000000000..e7b017701132b56ea0a62822951d368b2ea512fa
-GIT binary patch
-literal 642
-zc$@)(0)737P)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0006>Nkl<ZIE|H%
-z-D^@|0LGv9_;vPyTFer+b95qY;WDsYD1#Dau8%P?i(uZgE}}nR4Hw<6Xg5L7#e(Q!
-z7u`fl3W|XZ8MbI_(JnUIMTpw5cCxvzGWEP~7qN(;t$z2<kLP&^{$OGv8qgaI#{fpx
-z*EXhu!M;iC0s(+qqobC#w)O{tAUcdjV}VjyEEEcQN&1*wUVcAtb#U-gErA*UXEN;@
-zcXqg7wTfu~JY#HAu-aA(d-kf=*Ve`X^Z=mM1gc16ICR+Ed9wXrM`|>h@{|;o{qVU+
-z@4iSMIo>HQ{`kHn+N`1+kH?p)HqdId-Ga>_ZIu-2w(FCJ#Ksf=FfhKXFwP>{C7q7%
-z2JpD5fHDfA(lnMTtfEyBzEpwnmw@nPg&B!T!&6GRnjfsLt|sJM_EfXoz)dgZ4^$M^
-zNEztUIl0BL-?sR5C1=j(^Y?2B2mpR;?B3MT6X%<VMpvQ?6bw*tgo9F4zkM~S4)^yv
-z6-6mlJrO{qzM+0vU#IFZnM_u#u1>=d=*pX44Da5=a}5pkO_v4+F8X}Fxo9++t=3>0
-ze)!t;bCza{mobK%B+cBsG4jao_h0Gi>bl+A+xsn@PG1OxLeFZ=sfyF-L@*c}i9{l7
-zety0ji^VSQobXp<Sw=FMeA(LCx{=9bdfaYzUpO3A&(6+H$+En=V4H=7g&CL2m6asv
-zv>*t+Kp@Zp;5pefxr3php|fVQ`JpI^T8`tM{BwhC5{bl;*Xw;v2sx8VrSAN1{x=?v
-c#|!{J0dnx=GnYkn;Q#;t07*qoM6N<$f@^Cvf&c&j
-