From 585c8d51957a69840836ea61c8789e0281d0cd7b Mon Sep 17 00:00:00 2001 From: Thxios Date: Sun, 29 Mar 2020 13:41:05 +0900 Subject: [PATCH] . Signed-off-by: Thxios --- newDa/brushImg.png | Bin 0 -> 148 bytes newDa/brushes/1.png | Bin 0 -> 128 bytes newDa/brushes/2.png | Bin 0 -> 132 bytes newDa/brushes/3.png | Bin 0 -> 143 bytes newDa/brushes/4.png | Bin 0 -> 145 bytes newDa/brushes/5.png | Bin 0 -> 153 bytes newDa/brushsection.png | Bin 0 -> 3350 bytes src/Brush.py | 123 ++++++++++++++++------------------ src/Section/_BrushSection.py | 24 +++++-- src/Section/_CanvasSection.py | 11 ++- src/Section/_LayerSection.py | 36 ++++++++-- src/Sprite.py | 8 ++- src/Window.py | 20 ++++-- src/data/brushes/1.png | Bin 0 -> 128 bytes src/data/brushes/2.png | Bin 0 -> 132 bytes src/data/brushes/3.png | Bin 0 -> 143 bytes src/data/brushes/4.png | Bin 0 -> 145 bytes src/data/brushes/5.png | Bin 0 -> 153 bytes src/data/brushes/brushBG.png | Bin 0 -> 148 bytes src/data/invisibleIcon.png | Bin 212 -> 173 bytes src/data/visibleIcon.png | Bin 173 -> 212 bytes 21 files changed, 132 insertions(+), 90 deletions(-) create mode 100644 newDa/brushImg.png create mode 100644 newDa/brushes/1.png create mode 100644 newDa/brushes/2.png create mode 100644 newDa/brushes/3.png create mode 100644 newDa/brushes/4.png create mode 100644 newDa/brushes/5.png create mode 100644 newDa/brushsection.png create mode 100644 src/data/brushes/1.png create mode 100644 src/data/brushes/2.png create mode 100644 src/data/brushes/3.png create mode 100644 src/data/brushes/4.png create mode 100644 src/data/brushes/5.png create mode 100644 src/data/brushes/brushBG.png diff --git a/newDa/brushImg.png b/newDa/brushImg.png new file mode 100644 index 0000000000000000000000000000000000000000..356000690a72127fb2dd29b6e859aee72bae0a2b GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^{2jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK}}B=#}JL+WSfEq2mby2Eh{VAsW|iL)2AOj n7EfH9mOKfBm&|zkf`cJ`rvDE06F*{rnixD?{an^LB{Ts5jNfks3){sdchDY99HTR lFzZ#rg3a!Xe;JsW88*hUGDQ43y&I^5!PC{xWt~$(698QZCma9( literal 0 HcmV?d00001 diff --git a/newDa/brushes/5.png b/newDa/brushes/5.png new file mode 100644 index 0000000000000000000000000000000000000000..bdada9079493e556afef28a55875f45ea276af86 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^{2YY6y tmB`?%D?CMwJ7CF7CHsD+Nes-)3|r4Kb2y|Z9RliP@O1TaS?83{1OP6FCNcm3 literal 0 HcmV?d00001 diff --git a/newDa/brushsection.png b/newDa/brushsection.png new file mode 100644 index 0000000000000000000000000000000000000000..41be98366f46ea928043ede8a5b6cce88a620072 GIT binary patch literal 3350 zcmeHKeOOXg7$+??lZ=)tZD3`O)!a%;r6eQ!@Z-sRR<>NNfTn5c)ERzt705KJJt{M6 z5oozA&1|x)WvJMPE^$eIEt!fMS}4gtB?g%vI~2})Yin!Iv;X?zayjR|=e)oBzQ5o5 zo_p*Q9}l#tl_?5^LVI~`*b44Ly351>{2HeVL%?kkb*slZRMGtpWMD8k$ZfM53U!4! zZFtWVFrNCA=ME|gHN8@IO{$K#7=S{V6?$!O+ZIRqO}yoJo4{g9!;a(_3HpG;nFp)x zv>mq#x1Dv+Gp0oT#K23e`iYL}d|t!E9d>7oTr5qMl4duG`_{4JcMFufvCEK6Ab-^( zh25tSRX1{ZBF+lMjkC{*mq=Ml@S0Ks-*83rlsvJx&(xd86RoiS(Q8*}caoHpfAwm? zE`DUIxNn#H@2Z}giz3^veC{FS-{0t;=Q5SxI>XzjJ6%dDY+z;k-0?A=oOxTfd5B|R zK3OG7&$Wqx=CRD~Vuk$exekO8t4-z}9`dJa?JZLY?D+59{bPnKXZF}py1LQK)v> zDL0;(vb1rPHt-#p8BWWRYKTd76#z~!@VLgkzTC`K$R|xrYmvF0uMMRXn`7zU@kCAM z90>d)Ck~*!+3|dw)zv1O1=1<@JoJdNKUBy+^FA=gEKwP-95v9V0P5TYQVc7>%0>IN z@u3=uxIrB11lFLJs7!S0ox%T)qZlT(WHT%RJ3zq)C~%Cl$XT@mZoLota3;1%kseg; zgMGC=oOnJStn_alHZZh3n=%~{i7%|3VvEm-@h+#pIw=8dRoV#-okO_So^2xH8V*GLV*I8SPYj7uke1rktgv zbn89D)U_XF1S`}~s=PP6;--9kb-Tt@?=xK?eZGmx_1hc3DU*y2E{+dtRUaMHxMZCn{WCjK;L74a-$-z5RN8ZQm5{Cf*_dJj{%+ zqpTcj3HD|`Yy4eOPW(1BsbgRo^T6B11pjh-7Xs(!2XpfQsS*n|cQsHG&PZZ_OtSb_St4cmoLEQA&a}Jor}sRwl!KP5 z_bMhP1yB2qa$cXrY#sFz(>uCpa3U_JC7;k7QxcT}YhYTQbDEx-GxlCWhw1_nfO$qV zl{;G}Ta=s1_N*o$_y`_e0@kc;F0bivCAUg8!-b1CVaIBnQtE1-nQtezOR$J%0(LAA z*=isa>>;TvxBi)Yc1#>x5wht^RDidf90vk=LEz}(C^GFJAk0MJG1{>rLZRLc^ptdY ztfc;S3A~gTMdCHkdPn!X0AX^S7V4!WO+?hjw=3{Y5Fpfh;CVBa!PepsQP>HAXX`UgnYH8V4)Uh&5 zr3Rv66OPx0a=i?&409i4h#<~o1VuLg@QUtORbmmI>7Ttpw%{3HuxjT z6I9o^M|QiaT7x8(YgO1^%{tR7U$bncy*7urdF?X|`pnQ13<4Prb1k~_VF4F+1(CUo z-3);r6UkV?IpU*2WD|fk)R*7t`Md(E@`I-ihjCoi|Lj{XZomT07?1a9Nn@UmufFOG z21R$T_rWu#OdBf zh`{SxAw0O?#l0p-BNRw2l%+stHTU!OtM38;6K$>N)(H+wc4{;4u$iY6TF?n(@-IL1 zi^y`;wK;WNd!OmP+HHUD1C-LJnFv^K&I=6QyQSlYp42Z%14W?h;IU7iSVX`^WH_nSFmet5nM!V`6^M!Monk?^2;ZME);~eG5T>Z-U{I;=+y;-KiEI zB#so&`cGaep)_+ksa(ik$X|M%CprwyJgL^i(P>|2-CK#>QfUXiWl&xleKr)Wqa6AJ D?pU$C literal 0 HcmV?d00001 diff --git a/src/Brush.py b/src/Brush.py index f45723c..b993a00 100644 --- a/src/Brush.py +++ b/src/Brush.py @@ -1,5 +1,6 @@ from src.lib import * from src.Layer import Layer +from src.Interaction import Interaction _pencil = 0 @@ -30,47 +31,49 @@ def SetCurrentColor(self, color): class _PencilBrush(_Brush): + def __init__(self, brush): + self.brush = brush - # ----- for test ----- - brush = [ - np.array([ - [1], - ], dtype=np.uint32).T, - np.array([ - [1, 1], - [1, 1], - ], dtype=np.uint32).T, - np.array([ - [0, 1, 0], - [1, 1, 1], - [0, 1, 0], - ], dtype=np.uint32).T, - np.array([ - [0, 1, 1, 0], - [1, 1, 1, 1], - [1, 1, 1, 1], - [0, 1, 1, 0], - ], dtype=np.uint32).T, - np.array([ - [0, 1, 1, 1, 0], - [1, 1, 1, 1, 1], - [1, 1, 1, 1, 1], - [1, 1, 1, 1, 1], - [0, 1, 1, 1, 0], - ], dtype=np.uint32).T, - ] - - brushSize = 4 + def SetBrush(self, brush): + self.brush = brush def OnMouseDown(self, clickedPixel, layer: Layer): # layer.SetPixel(*clickedPixel, self.currentColor) - layer.BrushDown(*clickedPixel, self.brush[self.brushSize], self.currentColor) + layer.BrushDown(*clickedPixel, self.brush, self.currentColor) class _EraserBrush(_Brush): + def __init__(self, brush): + self.brush = brush - # ----- for test ----- - brush = [ + def SetBrush(self, brush): + self.brush = brush + + def OnMouseDown(self, clickedPixel, layer: Layer): + layer.BrushDown(*clickedPixel, self.brush, self.currentColor) + + +class _FloodBrush(_Brush): + def OnMouseDown(self, clickedPixel, layer: Layer): + pass + + +class _PickerBrush(_Brush): + def OnMouseDown(self, clickedPixel, layer: Layer) -> (int, int, int, int): + self.currentColor = layer.GetPixel(*clickedPixel) + return self.currentColor + + +class Brush: + _layer: Layer + + _currentBrush: _Brush + currentBrushIdx: int + + _maxThickness = 5 + _brushThickness = 5 + brushArray = [ + None, np.array([ [1], ], dtype=np.uint32).T, @@ -98,38 +101,11 @@ class _EraserBrush(_Brush): ], dtype=np.uint32).T, ] - brushSize = 4 - - - def OnMouseDown(self, clickedPixel, layer: Layer): - layer.BrushDown(*clickedPixel, self.brush[self.brushSize], self.currentColor) - - def OnMouseDrag(self, clickedPixel, layer: Layer): - layer.SetPixel(*clickedPixel, self.currentColor) - - -class _FloodBrush(_Brush): - def OnMouseDown(self, clickedPixel, layer: Layer): - pass - - -class _PickerBrush(_Brush): - def OnMouseDown(self, clickedPixel, layer: Layer) -> (int, int, int, int): - self.currentColor = layer.GetPixel(*clickedPixel) - return self.currentColor - - -class Brush: - _layer: Layer - - pencil = _PencilBrush() - eraser = _EraserBrush() + pencil = _PencilBrush(brushArray[_brushThickness]) + eraser = _EraserBrush(brushArray[_brushThickness]) flood = _FloodBrush() picker = _PickerBrush() - _currentBrush: _Brush - currentBrushIdx: int - def __init__(self): self.SetBrush('Pencil') @@ -141,10 +117,11 @@ def OnMouseDrag(self, clickedPixel, previousPixel=None): _pixelX, _pixelY = clickedPixel _prePixelX, _prePixelY = previousPixel if self.currentBrushIdx == 0 or self.currentBrushIdx == 1: - if abs(_prePixelX - _pixelX) > 1 or abs(_prePixelY - _pixelY) > 1: - self._DrawLine(*clickedPixel, *previousPixel) - else: - self._currentBrush.OnMouseDown(clickedPixel, self._layer) + if self._layer.visible: + if abs(_prePixelX - _pixelX) > 1 or abs(_prePixelY - _pixelY) > 1: + self._DrawLine(*clickedPixel, *previousPixel) + else: + self._currentBrush.OnMouseDown(clickedPixel, self._layer) else: self._currentBrush.OnMouseDrag(clickedPixel, self._layer) @@ -178,9 +155,21 @@ def SetCurrentColor(self, color): self.pencil.SetCurrentColor((_r, _g, _b, _a)) self.flood.SetCurrentColor((_r, _g, _b, _a)) - def GetCurrentBrushIndex(self): + def GetCurrentBrushIndex(self) -> int: return self.currentBrushIdx + def GetBrushThickness(self) -> int: + return self._brushThickness + + def BrushMagnify(self, value): + if 0 < self._brushThickness + value <= self._maxThickness: + self._brushThickness += value + self.pencil.SetBrush(self.brushArray[self._brushThickness]) + self.eraser.SetBrush(self.brushArray[self._brushThickness]) + + # ----- for test ----- + Interaction.brushSection.Changed() + # ----- for test ----- def _DrawLine(self, x0, y0, x1, y1): dx = x1 - x0 diff --git a/src/Section/_BrushSection.py b/src/Section/_BrushSection.py index ce77f24..df563e5 100644 --- a/src/Section/_BrushSection.py +++ b/src/Section/_BrushSection.py @@ -17,21 +17,37 @@ class BrushSection(Section): currentBrush = Brush.GetCurrentBrushIndex() + brushThicknessBG = pg.transform.scale(pg.image.load('data/brushes/brushBG.png'), (60, 60)) + brushThicknessImage = [None] + [ + pg.transform.scale(pg.image.load('data/brushes/' + str(i) + '.png'), (60, 60)) for i in range(1, 6) + ] + def Setup(self, x, y, w, h): super().Setup(x, y, w, h) for _brush in range(self.brushCount): self.buttonRect.append( - pg.Rect(6, 6 + (self.buttonSize + self.buttonTerm) * _brush, self.buttonSize, self.buttonSize) + pg.Rect(self.w - 36, + 6 + (self.buttonSize + self.buttonTerm) * _brush, + self.buttonSize, + self.buttonSize) ) + # print('brushSection', self.x, self.y, self.w, self.h) def Update(self): self.surface.fill(self.bgColor) for _brush in range(self.brushCount): if _brush == self.currentBrush: - self.surface.blit(self.buttonSelectedImage, (6, 6 + (self.buttonSize + self.buttonTerm) * _brush)) + # self.surface.blit(self.buttonSelectedImage, (6, 6 + (self.buttonSize + self.buttonTerm) * _brush)) + self.surface.blit(self.buttonSelectedImage, + (self.w - 36, 6 + (self.buttonSize + self.buttonTerm) * _brush)) else: - self.surface.blit(self.buttonImage, (6, 6 + (self.buttonSize + self.buttonTerm) * _brush)) - self.surface.blit(self.buttonIconImage, (0, 0)) + # self.surface.blit(self.buttonImage, (6, 6 + (self.buttonSize + self.buttonTerm) * _brush)) + self.surface.blit(self.buttonImage, + (self.w - 36, 6 + (self.buttonSize + self.buttonTerm) * _brush)) + self.surface.blit(self.buttonIconImage, (self.w - 42, 0)) + + self.surface.blit(self.brushThicknessBG, (20, 160)) + self.surface.blit(self.brushThicknessImage[Brush.GetBrushThickness()], (20, 160)) def OnMouseDown(self, button, x, y): x, y = self.LocalPosition((x, y)) diff --git a/src/Section/_CanvasSection.py b/src/Section/_CanvasSection.py index 9f0b9f9..0f6e6b9 100644 --- a/src/Section/_CanvasSection.py +++ b/src/Section/_CanvasSection.py @@ -31,7 +31,6 @@ class CanvasSection(Section): # ----- for test ----- limit = 20 cursorColor = (60, 63, 65) - brushSize = 5 def Setup(self, x, y, w, h): super().Setup(x, y, w, h) @@ -42,7 +41,7 @@ def Draw(self, screen): self.Update() self._hasChange = False _surface = self.surface.copy() - self.DrawCursor(_surface, ) + self.DrawCursor(_surface) screen.blit(_surface, (self.x, self.y)) pg.display.update(pg.draw.rect(screen, self._outlineColor, self.rect, 3)) @@ -104,8 +103,8 @@ def Magnify(self, mag, pivot): def DrawCursor(self, surface): _mouseX, _mouseY = pg.mouse.get_pos() if self.IsClicked((_mouseX, _mouseY)): - pg.draw.circle(surface, self.cursorColor, - self.LocalPosition((_mouseX, _mouseY)), self.magnification * self.brushSize // 2, 1) + pg.draw.circle(surface, self.cursorColor, self.LocalPosition((_mouseX, _mouseY)), + self.magnification * Brush.GetBrushThickness() // 2, 1) def DisplayArea(self): _xs, _xe = max(0, self.canvas.x), min(self.w, self.canvas.x + self.canvas.w) @@ -164,12 +163,12 @@ def OnMouseDown(self, button, x, y): # self.Changed() elif button == 4: if Command.GetKey(pg.K_LCTRL): - pass + Brush.BrushMagnify(1) else: self.Magnify(1, (x, y)) elif button == 5: if Command.GetKey(pg.K_LCTRL): - pass + Brush.BrushMagnify(-1) else: self.Magnify(-1, (x, y)) diff --git a/src/Section/_LayerSection.py b/src/Section/_LayerSection.py index b06f85a..587257d 100644 --- a/src/Section/_LayerSection.py +++ b/src/Section/_LayerSection.py @@ -1,6 +1,7 @@ from src.lib import * from src.Section._Section import Section from src.Sprite import Sprite +from src.Interaction import Interaction from src.Text import Text @@ -14,6 +15,7 @@ class LayerSection(Section): leftTerm: int = 20 layerRectHeight: int = 30 layerRect: List[pg.Rect] = [] + visibleButtonRect: List[pg.Rect] = [] layerName: List[str] = Sprite.CurrentFrame().GetLayerName() layerColor: (int, int, int) = (60, 63, 65) @@ -38,15 +40,30 @@ def Update(self): pg.draw.rect(self.surface, self.selectedColor, rect.inflate(-2 * self.verticalTerm, -2 * self.verticalTerm)) - pg.draw.rect(self.surface, self.buttonColor, (rect.right - 4 - 22, rect.top + 4, 22, 22), 2) + pg.draw.rect(self.surface, self.buttonColor, self.visibleButtonRect[i], 1) + # pg.draw.rect(self.surface, self.buttonColor, (rect.right - 4 - 22, rect.top + 4, 22, 22), 1) + # pg.draw.rect(self.surface, self.buttonColor, (rect.right - 5 - 22, rect.top + 3, 24, 24), 1) + if Sprite.LayerVisible(i): + self.surface.blit(self.visibleIconImage, self.visibleButtonRect[i].topleft) + else: + self.surface.blit(self.invisibleIconImage, self.visibleButtonRect[i].topleft) Text.LeftAligned(self.layerName[i], self.surface, rect, term=10) def MakeRect(self): for i in range(self.layerCount): - self.layerRect.append(pg.Rect(self.rectTerm, - self.rectTerm + (self.layerRectHeight + self.verticalTerm) * i, - self.w - self.rectTerm * 2 - self.leftTerm, - self.layerRectHeight)) + _rect = pg.Rect( + self.rectTerm, + self.rectTerm + (self.layerRectHeight + self.verticalTerm) * i, + self.w - self.rectTerm * 2 - self.leftTerm, + self.layerRectHeight + ) + self.layerRect.append(_rect) + self.visibleButtonRect.append(pg.Rect( + _rect.right - 4 - 22, + _rect.top + 4, + 22, + 22 + )) def SetLayer(self, idx): if idx < self.layerCount: @@ -60,6 +77,11 @@ def OnMouseDown(self, button, x, y): if button == 1: for i, rect in enumerate(self.layerRect): if rect.collidepoint(x, y): - Sprite.SetCurrentLayer(i) - self.selectedLayer = i + if self.visibleButtonRect[i].collidepoint(x, y): + Sprite.GetLayer(i).visible = not Sprite.GetLayer(i).visible + Sprite.CurrentLayer().Changed() + Interaction.canvasSection.Changed() + else: + Sprite.SetCurrentLayer(i) + self.selectedLayer = i self.Changed() diff --git a/src/Sprite.py b/src/Sprite.py index c432921..902a6d5 100644 --- a/src/Sprite.py +++ b/src/Sprite.py @@ -90,6 +90,9 @@ def SetCurrentLayer(self, idx): self._currentLayer = idx Brush.SetCurrentLayer(self.CurrentFrame().GetLayer(idx)) + def GetLayer(self, idx) -> Layer: + return self._frame[self._currentFrame].GetLayer(idx) + def CurrentFrame(self) -> Frame: return self._frame[self._currentFrame] @@ -100,7 +103,10 @@ def FrameCount(self) -> int: return self._frameCount def LayerCount(self) -> int: - return self.CurrentFrame().LayerCount() + return self._frame[self._currentFrame].LayerCount() + + def LayerVisible(self, idx) -> bool: + return self._frame[self._currentFrame].GetLayer(idx).visible def SetFrame(self, idx): if idx < 0 or idx > self._frameCount: diff --git a/src/Window.py b/src/Window.py index 7bb86b5..22957ee 100644 --- a/src/Window.py +++ b/src/Window.py @@ -21,27 +21,37 @@ class MainWindow: _topTerm = 30 _left = 250 - _middle = 52 _l1 = 250 _l2 = 400 - _topTerm _l3 = 250 _r1 = 800 _r2 = 100 - _topTerm _bs = 52 + _middle = 130 - # CanvasSection.Setup(_left, _topTerm, w - _left, _r1) - CanvasSection.Setup(_left + _middle, _topTerm, w - _left - _middle, _r1) + # ORIGINAL # PaletteSection.Setup(0, _topTerm, _left - _bs, _l1) - PaletteSection.Setup(0, _topTerm, _left, _l1) + # CanvasSection.Setup(_left, _topTerm, w - _left, _r1) # BrushSection.Setup(_left - _bs, _topTerm, _bs, _l1) - BrushSection.Setup(_left, _topTerm, _middle, _l1 + _l2 + _l3) # FrameSection.Setup(_left, _r1 + _topTerm, w - _left, _r2) + + # CanvasSection.Setup(_left + _middle, _topTerm, w - _left - _middle, _r1) + # PaletteSection.Setup(0, _topTerm, _left, _l1) + # BrushSection.Setup(_left, _topTerm, _middle, _l1 + _l2 + _l3) + # FrameSection.Setup(_left + _middle, _r1 + _topTerm, w - _left - _middle, _r2) + + PaletteSection.Setup(_left, _topTerm, _middle, _l1 + _l2 + _l3) + CanvasSection.Setup(_left + _middle, _topTerm, w - _left - _middle, _r1) + BrushSection.Setup(0, _topTerm, _left, _l1) FrameSection.Setup(_left + _middle, _r1 + _topTerm, w - _left - _middle, _r2) + ColorSection.Setup(0, _l1 + _topTerm, _left, _l2) LayerSection.Setup(0, _l1 + _l2 + _topTerm, _left, _l3) # ----- for test ----- Interaction.Initialize( + brush=BrushSection, + canvas=CanvasSection, palette=PaletteSection, color=ColorSection ) diff --git a/src/data/brushes/1.png b/src/data/brushes/1.png new file mode 100644 index 0000000000000000000000000000000000000000..37885a99edc622bb86a3fe30509d7e3620867fd1 GIT binary patch literal 128 zcmeAS@N?(olHy`uVBq!ia0vp^{2Nfks3){sdchDY99HTR lFzZ#rg3a!Xe;JsW88*hUGDQ43y&I^5!PC{xWt~$(698QZCma9( literal 0 HcmV?d00001 diff --git a/src/data/brushes/5.png b/src/data/brushes/5.png new file mode 100644 index 0000000000000000000000000000000000000000..bdada9079493e556afef28a55875f45ea276af86 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^{2YY6y tmB`?%D?CMwJ7CF7CHsD+Nes-)3|r4Kb2y|Z9RliP@O1TaS?83{1OP6FCNcm3 literal 0 HcmV?d00001 diff --git a/src/data/brushes/brushBG.png b/src/data/brushes/brushBG.png new file mode 100644 index 0000000000000000000000000000000000000000..356000690a72127fb2dd29b6e859aee72bae0a2b GIT binary patch literal 148 zcmeAS@N?(olHy`uVBq!ia0vp^{2jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucK}}B=#}JL+WSfEq2mby2Eh{VAsW|iL)2AOj n7EfH9mOKfBm&|zkf`cJ`rvDE06F*{rnixD?{an^LB{Ts5jAhDdkWscHDiGn6toPIsP~80u~; xZtRq~hGBYkLW3a30v{fS`v!8X&Wr{I3=Ausm0!g899zHu1fH&bF6*2UngCUY98~}S delta 133 zcmV;00DAwe0n`DIR(@$oL_t(YOYPE83cw%?1JJtr-+42Tj!{#;W-RQ2q!EP133oU00000NkvXXu0mjfJlj3~ diff --git a/src/data/visibleIcon.png b/src/data/visibleIcon.png index fd8ddc2e23fca8a7b2995f1f318a92ed67cf17d1..d1983f10f477ea685af318311c119b7edcaeea4d 100644 GIT binary patch delta 133 zcmV;00DAwe0n`DIR(@$oL_t(YOYPE83cw%?1JJtr-+42Tj!{#;W-RQ2q!EP133oU00000NkvXXu0mjfJlj3~ delta 94 zcmcb@xR!B3Sh$m?i(`m~cd`WQ;sg<%=nwK-3t|>AhDdkWscHDiGn6toPIsP~80u~; xZtRq~hGBYkLW3a30v{fS`v!8X&Wr{I3=Ausm0!g899zHu1fH&bF6*2UngCUY98~}S