/*
* Copyright 2015 Laszlo Balazs-Csiki
*
* This file is part of Pixelitor. Pixelitor is free software: you
* can redistribute it and/or modify it under the terms of the GNU
* General Public License, version 3 as published by the Free
* Software Foundation.
*
* Pixelitor is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Pixelitor. If not, see <http://www.gnu.org/licenses/>.
*/
package pixelitor.tools.shapes;
/**
* Cat based on http://commons.wikimedia.org/wiki/File:Cat_silhouette.svg
*/
public class Cat extends GeneralShape {
public Cat(double x, double y, double width, double height) {
double cp1X; // x of control point 1
double cp1Y; // y of control point 1
double cp2X; // x of control point 2
double cp2Y; // y of control point 2
double epX; // x of end point
double epY; // y of end point
epX = x + 0.3783726f * width;
epY = y + 0.80843306f * height;
path.moveTo(epX, epY);
epX = x + 0.3783726f * width;
epY = y + 0.80843306f * height;
path.lineTo(epX, epY);
epX = x + 0.6608726f * width;
epY = y + 0.80843306f * height;
path.lineTo(epX, epY);
cp1X = x + 0.6608726f * width;
cp1Y = y + 0.7661604f * height;
cp2X = x + 0.65800524f * width;
cp2Y = y + 0.7577751f * height;
epX = x + 0.5914976f * width;
epY = y + 0.7577751f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.6021226f * width;
cp1Y = y + 0.72422254f * height;
cp2X = x + 0.6453106f * width;
cp2Y = y + 0.6430476f * height;
epX = x + 0.6693101f * width;
epY = y + 0.6430476f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.6905427f * width;
cp1Y = y + 0.6430476f * height;
cp2X = x + 0.7158726f * width;
cp2Y = y + 0.6442787f * height;
epX = x + 0.7158726f * width;
epY = y + 0.6952751f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.7158726f * width;
cp1Y = y + 0.7531699f * height;
cp2X = x + 0.80842924f * width;
cp2Y = y + 0.8465144f * height;
epX = x + 0.8308726f * width;
epY = y + 0.80843306f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.8643192f * width;
cp1Y = y + 0.7516815f * height;
cp2X = x + 0.7733726f * width;
cp2Y = y + 0.76898724f * height;
epX = x + 0.7733726f * width;
epY = y + 0.6321172f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.7733726f * width;
cp1Y = y + 0.44487196f * height;
cp2X = x + 0.87718546f * width;
cp2Y = y + 0.47152817f * height;
epX = x + 0.87718546f * width;
epY = y + 0.36632773f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.87718546f * width;
cp1Y = y + 0.31369618f * height;
cp2X = x + 0.86337256f * width;
cp2Y = y + 0.3065888f * height;
epX = x + 0.86337256f * width;
epY = y + 0.26895934f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.86337256f * width;
cp1Y = y + 0.21922882f * height;
cp2X = x + 0.9049929f * width;
cp2Y = y + 0.22211468f * height;
epX = x + 0.8968952f * width;
epY = y + 0.18088126f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.8913015f * width;
cp1Y = y + 0.1523991f * height;
cp2X = x + 0.886924f * width;
cp2Y = y + 0.12955788f * height;
epX = x + 0.8836629f * width;
epY = y + 0.0951155f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.88134897f * width;
cp1Y = y + 0.07067712f * height;
cp2X = x + 0.88061124f * width;
cp2Y = y + 0.044629995f * height;
epX = x + 0.85649633f * width;
epY = y + 0.04567732f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.8281626f * width;
cp1Y = y + 0.046907872f * height;
cp2X = x + 0.8174137f * width;
cp2Y = y + 0.09940576f * height;
epX = x + 0.7733726f * width;
epY = y + 0.103169866f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.7294213f * width;
cp1Y = y + 0.10692629f * height;
cp2X = x + 0.69194585f * width;
cp2Y = y + 0.06378429f * height;
epX = x + 0.6749351f * width;
epY = y + 0.069946185f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.6580677f * width;
cp1Y = y + 0.076056145f * height;
cp2X = x + 0.6633726f * width;
cp2Y = y + 0.124222495f * height;
epX = x + 0.67337257f * width;
epY = y + 0.15843302f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.6890897f * width;
cp1Y = y + 0.21220203f * height;
cp2X = x + 0.7233726f * width;
cp2Y = y + 0.28211725f * height;
epX = x + 0.6608726f * width;
epY = y + 0.29264355f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.59837264f * width;
cp1Y = y + 0.30316988f * height;
cp2X = x + 0.49087262f * width;
cp2Y = y + 0.31369618f * height;
epX = x + 0.4133726f * width;
epY = y + 0.4215909f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.33587262f * width;
cp1Y = y + 0.52948564f * height;
cp2X = x + 0.33873355f * width;
cp2Y = y + 0.65610844f * height;
epX = x + 0.3083726f * width;
epY = y + 0.6952751f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.20647675f * width;
cp1Y = y + 0.82672447f * height;
cp2X = x + 0.1020598f * width;
cp2Y = y + 0.77275324f * height;
epX = x + 0.1020598f * width;
epY = y + 0.8821173f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.1020598f * width;
cp1Y = y + 0.93107945f * height;
cp2X = x + 0.18087262f * width;
cp2Y = y + 0.9663278f * height;
epX = x + 0.1933726f * width;
epY = y + 0.95053834f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.20587261f * width;
cp1Y = y + 0.9347488f * height;
cp2X = x + 0.08715942f * width;
cp2Y = y + 0.88769966f * height;
epX = x + 0.21998873f * width;
epY = y + 0.83211726f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.33346778f * width;
cp1Y = y + 0.7846319f * height;
cp2X = x + 0.34359783f * width;
cp2Y = y + 0.77493846f * height;
epX = x + 0.3783726f * width;
epY = y + 0.80843306f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
}
}