/*
* 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;
/**
* Bat shape based on http://en.wikipedia.org/wiki/File:Bat_shadow_black.svg
*/
public class Bat extends GeneralShape {
public Bat(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.48396146f * width;
epY = y + 0.8711912f * height;
path.moveTo(epX, epY);
epX = x + 0.48396146f * width;
epY = y + 0.8711912f * height;
path.lineTo(epX, epY);
cp1X = x + 0.46530184f * width;
cp1Y = y + 0.8309665f * height;
cp2X = x + 0.38263357f * width;
cp2Y = y + 0.8160471f * height;
epX = x + 0.3731808f * width;
epY = y + 0.84056836f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.35756963f * width;
cp1Y = y + 0.88106513f * height;
cp2X = x + 0.34080854f * width;
cp2Y = y + 0.9193152f * height;
epX = x + 0.36195248f * width;
epY = y + 0.83724654f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.3386589f * width;
cp1Y = y + 0.8935222f * height;
cp2X = x + 0.3420269f * width;
cp2Y = y + 0.8584848f * height;
epX = x + 0.36583346f * width;
epY = y + 0.79526377f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.36583346f * width;
cp1Y = y + 0.79526377f * height;
cp2X = x + 0.39358535f * width;
cp2Y = y + 0.7799532f * height;
epX = x + 0.38822776f * width;
epY = y + 0.7415569f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.38251382f * width;
cp1Y = y + 0.7006066f * height;
cp2X = x + 0.30032519f * width;
cp2Y = y + 0.59342885f * height;
epX = x + 0.23370443f * width;
epY = y + 0.61983544f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.15583336f * width;
cp1Y = y + 0.6507012f * height;
cp2X = x + 0.18591423f * width;
cp2Y = y + 0.6526183f * height;
epX = x + 0.16175953f * width;
epY = y + 0.58064216f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.1528414f * width;
cp1Y = y + 0.55406797f * height;
cp2X = x + 0.14705019f * width;
cp2Y = y + 0.5273279f * height;
epX = x + 0.07419801f * width;
epY = y + 0.54101586f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.06698244f * width;
cp1Y = y + 0.44892874f * height;
cp2X = x + 0.058711186f * width;
cp2Y = y + 0.38432577f * height;
epX = x + 0.0079061575f * width;
epY = y + 0.35636365f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.15172054f * width;
cp1Y = y + 0.14081612f * height;
cp2X = x + 0.2041543f * width;
cp2Y = y + 0.14397591f * height;
epX = x + 0.20349151f * width;
epY = y + 0.13025562f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.20031318f * width;
cp1Y = y + 0.0644616f * height;
cp2X = x + 0.19046022f * width;
cp2Y = y + -0.01011441f * height;
epX = x + 0.21284555f * width;
epY = y + 0.12160087f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.21233447f * width;
cp1Y = y + 0.007110184f * height;
cp2X = x + 0.20867635f * width;
cp2Y = y + 0.04029033f * height;
epX = x + 0.22205064f * width;
epY = y + 0.12669845f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.22513902f * width;
cp1Y = y + 0.1466518f * height;
cp2X = x + 0.28788444f * width;
cp2Y = y + 0.21163544f * height;
epX = x + 0.33955792f * width;
epY = y + 0.23622294f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.41069368f * width;
cp1Y = y + 0.27007103f * height;
cp2X = x + 0.43251768f * width;
cp2Y = y + 0.30622476f * height;
epX = x + 0.43251768f * width;
epY = y + 0.28272754f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.43251768f * width;
cp1Y = y + 0.2655886f * height;
cp2X = x + 0.42556417f * width;
cp2Y = y + 0.2189889f * height;
epX = x + 0.41960958f * width;
epY = y + 0.21069744f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.40620282f * width;
cp1Y = y + 0.19202933f * height;
cp2X = x + 0.39478126f * width;
cp2Y = y + 0.056988757f * height;
epX = x + 0.41154054f * width;
epY = y + 0.028444579f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.41581085f * width;
cp1Y = y + 0.018658942f * height;
cp2X = x + 0.50143397f * width;
cp2Y = y + 0.16836204f * height;
epX = x + 0.50143397f * width;
epY = y + 0.16836204f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.50143397f * width;
cp1Y = y + 0.16836204f * height;
cp2X = x + 0.5785536f * width;
cp2Y = y + 0.0273761f * height;
epX = x + 0.5868916f * width;
epY = y + 0.019599283f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.5989375f * width;
cp1Y = y + 0.04062414f * height;
cp2X = x + 0.60303134f * width;
cp2Y = y + 0.12733895f * height;
epX = x + 0.5784455f * width;
epY = y + 0.20690775f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.5733677f * width;
cp1Y = y + 0.22334124f * height;
cp2X = x + 0.5701417f * width;
cp2Y = y + 0.25919494f * height;
epX = x + 0.5701417f * width;
epY = y + 0.27444258f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.5701417f * width;
cp1Y = y + 0.3071336f * height;
cp2X = x + 0.6937292f * width;
cp2Y = y + 0.24839245f * height;
epX = x + 0.7691606f * width;
epY = y + 0.14076737f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.7923608f * width;
cp1Y = y + 0.107665494f * height;
cp2X = x + 0.77971613f * width;
cp2Y = y + -0.0058511556f * height;
epX = x + 0.7865298f * width;
epY = y + 0.114005655f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.8027102f * width;
cp1Y = y + 0.0111046815f * height;
cp2X = x + 0.79922926f * width;
cp2Y = y + 0.052270394f * height;
epX = x + 0.7920877f * width;
epY = y + 0.12626775f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.79057056f * width;
cp1Y = y + 0.14198744f * height;
cp2X = x + 0.899306f * width;
cp2Y = y + 0.17557377f * height;
epX = x + 0.9920938f * width;
epY = y + 0.3866074f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.9691352f * width;
cp1Y = y + 0.3866074f * height;
cp2X = x + 0.9349961f * width;
cp2Y = y + 0.3966509f * height;
epX = x + 0.9280588f * width;
epY = y + 0.5432177f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.8615748f * width;
cp1Y = y + 0.5425939f * height;
cp2X = x + 0.8545972f * width;
cp2Y = y + 0.5403216f * height;
epX = x + 0.82650656f * width;
epY = y + 0.63398916f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.7509983f * width;
cp1Y = y + 0.6200947f * height;
cp2X = x + 0.67899865f * width;
cp2Y = y + 0.61476916f * height;
epX = x + 0.64566225f * width;
epY = y + 0.6818779f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
epX = x + 0.609466f * width;
epY = y + 0.7547435f * height;
path.lineTo(epX, epY);
epX = x + 0.6363375f * width;
epY = y + 0.80627334f * height;
path.lineTo(epX, epY);
cp1X = x + 0.6519878f * width;
cp1Y = y + 0.8362852f * height;
cp2X = x + 0.6647533f * width;
cp2Y = y + 0.88090324f * height;
epX = x + 0.63656145f * width;
epY = y + 0.83025086f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.6401184f * width;
cp1Y = y + 0.9251861f * height;
cp2X = x + 0.64008677f * width;
cp2Y = y + 0.87504876f * height;
epX = x + 0.62064874f * width;
epY = y + 0.8233091f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.59059566f * width;
cp1Y = y + 0.823376f * height;
cp2X = x + 0.5248581f * width;
cp2Y = y + 0.834002f * height;
epX = x + 0.5188337f * width;
epY = y + 0.874816f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
cp1X = x + 0.49758786f * width;
cp1Y = y + 1.0187525f * height;
cp2X = x + 0.49775344f * width;
cp2Y = y + 1.0135795f * height;
epX = x + 0.48396146f * width;
epY = y + 0.8711912f * height;
path.curveTo(cp1X, cp1Y, cp2X, cp2Y, epX, epY);
}
}