/** * This file is part of Owlet. * * Owlet is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * Owlet 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 Owlet. If not, see <http://www.gnu.org/licenses/>. */ package com.sibext.owlet.helper; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.graphics.Path; import android.graphics.RectF; public class TaskImageHelper { private static Paint buildPaint() { Paint paint = new Paint(); paint.setAntiAlias(true); return paint; } private static void colorPaint(Paint paint, boolean colorFlag, int color){ if(colorFlag){ paint.setColor(color); } else { paint.setColor(Color.WHITE); } } /** * Класс для отрисовки треуголников, направленных в разные стороны, с * закрашенной нижней или верней частью * (drawTriangle[направоение]Fill[часть, которая закрашена]). * * @author Mike Osipov <mike.osipov@netcook.org> * */ public static class Triangles { private static Paint paintUp = buildPaint(); private static Paint paintDn = buildPaint(); private static void fillUpPartOfTriangle(Paint paintUp, Paint paintDn) { paintUp.setStyle(Style.FILL_AND_STROKE); paintDn.setStyle(Style.STROKE); } private static void fillDownPartOfTriangle(Paint paintUp, Paint paintDn) { paintUp.setStyle(Style.STROKE); paintDn.setStyle(Style.FILL_AND_STROKE); } private static void drawTrianglePath(Canvas canvas, int w, int h, Paint paintUp, Paint paintDn) { float[] ptsUp = { w / 2, h / 6, w / 3, h / 2, 2 * w / 3, h / 2, w / 2, h / 6, }; float[] ptsDn = { w / 3, h / 2, 2 * w / 3, h / 2, 5 * w / 6, 5 * h / 6, w / 6, 5 * h / 6, w / 3, h / 2 }; Path pathUp = new Path(); Path pathDn = new Path(); pathUp.moveTo(ptsUp[0], ptsUp[1]); for (int i = 2; i < ptsUp.length; i += 2) { pathUp.lineTo(ptsUp[i], ptsUp[i + 1]); } canvas.drawPath(pathUp, paintUp); // pathDn.moveTo(ptsDn[0], ptsDn[1]); for (int i = 2; i < ptsDn.length; i += 2) { pathDn.lineTo(ptsDn[i], ptsDn[i + 1]); } canvas.drawPath(pathDn, paintDn); } public static void drawTriangleUpFillUp(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillUpPartOfTriangle(paintUp, paintDn); drawTrianglePath(canvas, w, h, paintUp, paintDn); } public static void drawTriangleLeftFillUp(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillUpPartOfTriangle(paintUp, paintDn); canvas.rotate(90, (float) (w / 2), (float) (h / 2)); drawTrianglePath(canvas, w, h, paintUp, paintDn); } public static void drawTriangleDownFillUp(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillUpPartOfTriangle(paintUp, paintDn); canvas.rotate(180, (float) (w / 2), (float) (h / 2)); drawTrianglePath(canvas, w, h, paintUp, paintDn); } public static void drawTriangleRightFillUp(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillUpPartOfTriangle(paintUp, paintDn); canvas.rotate(270, (float) (w / 2), (float) (h / 2)); drawTrianglePath(canvas, w, h, paintUp, paintDn); } public static void drawTriangleUpFillDown(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillDownPartOfTriangle(paintUp, paintDn); drawTrianglePath(canvas, w, h, paintUp, paintDn); } public static void drawTriangleLeftFillDown(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillDownPartOfTriangle(paintUp, paintDn); canvas.rotate(90, (float) (w / 2), (float) (h / 2)); drawTrianglePath(canvas, w, h, paintUp, paintDn); } public static void drawTriangleDownFillDown(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillDownPartOfTriangle(paintUp, paintDn); canvas.rotate(180, (float) (w / 2), (float) (h / 2)); drawTrianglePath(canvas, w, h, paintUp, paintDn); } public static void drawTriangleRightFillDown(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paintUp, colorFlag, color); colorPaint(paintDn, colorFlag, color); fillDownPartOfTriangle(paintUp, paintDn); canvas.rotate(270, (float) (w / 2), (float) (h / 2)); drawTrianglePath(canvas, w, h, paintUp, paintDn); } } /** * Класс для отрисовки много раз повторяющейся стрелки в Умозаключении * * @author Mike Osipov <osipov@sibext.com> * */ public static class Arrow { public static void drawArrow (Canvas canvas, int w, int h, Paint paint) { paint.setColor(Color.WHITE); paint.setStyle(Style.STROKE); paint.setStrokeWidth(3); Path path = new Path(); path.moveTo(w/5, h/2); path.lineTo(4*w/5, h/2); paint.setStrokeWidth(2); path.lineTo(4*w/5-10, h/2+7); path.moveTo(4*w/5, h/2); path.lineTo(4*w/5-10, h/2-7); canvas.drawPath(path, paint); } } /** * Класс для отрисовки стрелок в разные стороны с заливкой(fill) или без. * * @author Mike Osipov <osipov@sibext.com> * */ public static class Arrows { private static Paint paint = buildPaint(); private static void setPaint(Paint paint) { paint.setStrokeWidth(3); paint.setStyle(Style.STROKE); } private static void setPaintFill(Paint paint) { paint.setStrokeWidth(0); paint.setStyle(Style.FILL_AND_STROKE); } private static void drawArrowPath(Canvas canvas, int w, int h, Paint paint) { float[] pts = { w / 6, 3 * h / 8, w / 6, 5 * h / 8, 2 * w / 3, 5 * h / 8, 2 * w / 3, 3 * h / 4, 5 * w / 6, h / 2, 2 * w / 3, h / 4, 2 * w / 3, 3 * h / 8, w / 6, 3 * h / 8 }; Path path = new Path(); path.moveTo(pts[0], pts[1]); for (int i = 2; i < pts.length; i += 2) { path.lineTo(pts[i], pts[i + 1]); } canvas.drawPath(path, paint); } public static void drawArrowLeft(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaint(paint); drawArrowPath(canvas, w, h, paint); } public static void drawArrowDown(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaint(paint); canvas.rotate(90, (float) (w / 2), (float) (h / 2)); drawArrowPath(canvas, w, h, paint); } public static void drawArrowRight(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaint(paint); canvas.rotate(180, (float) (w / 2), (float) (h / 2)); drawArrowPath(canvas, w, h, paint); } public static void drawArrowUp(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaint(paint); canvas.rotate(270, (float) (w / 2), (float) (h / 2)); drawArrowPath(canvas, w, h, paint); } public static void drawArrowLeftFill(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaintFill(paint); drawArrowPath(canvas, w, h, paint); } public static void drawArrowDownFill(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaintFill(paint); canvas.rotate(90, (float) (w / 2), (float) (h / 2)); drawArrowPath(canvas, w, h, paint); } public static void drawArrowRightFill(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaintFill(paint); canvas.rotate(180, (float) (w / 2), (float) (h / 2)); drawArrowPath(canvas, w, h, paint); } public static void drawArrowUpFill(Canvas canvas, boolean colorFlag,int color, int w, int h) { colorPaint(paint, colorFlag, color); setPaintFill(paint); canvas.rotate(270, (float) (w / 2), (float) (h / 2)); drawArrowPath(canvas, w, h, paint); } } /** * Класс отрисовывает веселый, нейтральный и грустный смайлики, если * fillFlag - true, то глаза будут закрашены. * * @author Mike Osipov <mike.osipov@netcook.org> * */ public static class Smiles { private static RectF oval = new RectF(); private static Paint paint = buildPaint(); private static void drawFace(Canvas canvas, int w, int h, Paint paint, boolean fillFlag) { paint.setStrokeWidth(2); paint.setStyle(Style.STROKE); canvas.drawCircle((int) (w / 2), (int) (h / 2), (int) (4*h / 5) - 2, paint); if (fillFlag) { paint.setStyle(Style.FILL); } canvas.drawCircle(w / 3, h / 3, (int) (h / 2) / 5, paint); canvas.drawCircle(2 * w / 3, h / 3, (int) (h / 2) / 5, paint); paint.setStyle(Style.STROKE); } public static void drawSmile(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag) { colorPaint(paint, colorFlag, color); drawFace(canvas, w, h, paint, fillFlag); oval.set((int) (w / 2) - (int) (h / 2) / 2, (int) (h / 2) - (int) (h / 2) / 2, (int) (w / 2) + (int) (h / 2) / 2, (int) (h / 2) + (int) (h / 2) / 2); canvas.drawArc(oval, 20, 140, false, paint); } public static void drawSmileNeutral(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag) { colorPaint(paint, colorFlag, color); drawFace(canvas, w, h, paint, fillFlag); canvas.drawLine(w / 4, 2 * h / 3, 3 * w / 4, 2 * h / 3, paint); } public static void drawSmileSad(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag) { colorPaint(paint, colorFlag, color); drawFace(canvas, w, h, paint, fillFlag); oval.set((int) (w / 2) - (int) (h / 2) / 2, (int) (h / 2), (int) (w / 2) + (int) (h / 2) / 2, (int) (h / 2) + (int) (h / 2)); canvas.drawArc(oval, 200, 140, false, paint); } } /** * Класс отрисовывает человечков, если fillFlag - true, то голова закрашена. * * @author Mike Osipov <mike.osipov@netcook.org> * */ public static class Peoples { private static Paint paint = buildPaint(); static{ paint.setStrokeWidth(1.5f); } private static void drawHeadAndBody(Canvas canvas, int w, int h, Paint paint, boolean fillFlag) { if (fillFlag) { paint.setStyle(Style.FILL); } else { paint.setStyle(Style.STROKE); } canvas.drawCircle(w / 2, h / 4, (int) (h / 8), paint); canvas.drawLine(w / 2, h / 4 + (int) (h / 8), w / 2, 2 * h / 3, paint); canvas.drawLine(w / 2, 2 * h / 3, w / 3, 5 * h / 6, paint); canvas.drawLine(w / 2, 2 * h / 3, 2 * w / 3, 5 * h / 6, paint); } public static void drawPeopleHandsUp(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag) { colorPaint(paint, colorFlag, color); drawHeadAndBody(canvas, w, h, paint, fillFlag); canvas.drawLine(w / 2, h / 2, 2 * w / 3, h / 3, paint); canvas.drawLine(w / 2, h / 2, w / 3, h / 3, paint); } public static void drawPeopleHandsRight(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag) { colorPaint(paint, colorFlag, color); drawHeadAndBody(canvas, w, h, paint, fillFlag); canvas.drawLine(w / 3.5f, h / 2 - h / 17, 2.5f * w / 3.5f, h / 2 - h / 17, paint); } public static void drawPeopleHandsDown(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag) { colorPaint(paint, colorFlag, color); drawHeadAndBody(canvas, w, h, paint, fillFlag); canvas.drawLine(w / 2, h / 2 - h / 8, 2 * w / 3, 2 * h / 3 - h / 8, paint); canvas.drawLine(w / 2, h / 2 - h / 8, w / 3, 2 * h / 3 - h / 8, paint); } } /** * Класс отрисовывает углы, если fillFlag - true, то угол будет закрашен. * * @author Mike Osipov <mike.osipov@netcook.org> * */ public static class Corners{ private static Paint paint = buildPaint(); static{ paint.setStrokeWidth(3); } private static float[] getPts(int w,int h){ return new float[] { w / 6, h / 2, w / 6, h / 6, w / 2, h / 6, 5 * w / 6, h / 6, 5 * w / 6, h / 2, 5 * w / 6, 5 * h / 6, w / 2, 5 * h / 6, w / 6, 5 * h / 6, w / 6, h / 2}; } private static void drawCornerPath(Canvas canvas, float[] pts, Paint paint, boolean fillFlag){ if(fillFlag){ paint.setStyle(Style.FILL); } else { paint.setStyle(Style.STROKE); } Path path = new Path(); path.moveTo(pts[0], pts[1]); for (int i = 2; i < pts.length; i += 2) { path.lineTo(pts[i], pts[i + 1]); } canvas.drawPath(path, paint); } public static void drawUpLeftCorner(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag){ colorPaint(paint, colorFlag, color); float[] pts = getPts(w, h); pts[2] = (int) (w / 2); pts[3] = (int) (h / 2); drawCornerPath(canvas, pts, paint, fillFlag); } public static void drawUpRightCorner(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag){ colorPaint(paint, colorFlag, color); float[] pts = getPts(w, h); pts[6] = (int) (w / 2); pts[7] = (int) (h / 2); drawCornerPath(canvas, pts, paint, fillFlag); } public static void drawDownRightCorner(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag){ colorPaint(paint, colorFlag, color); float[] pts = getPts(w, h); pts[10] = (int) (w / 2); pts[11] = (int) (h / 2); drawCornerPath(canvas, pts, paint, fillFlag); } public static void drawDownLeftCorner(Canvas canvas, boolean colorFlag,int color, int w, int h, boolean fillFlag){ colorPaint(paint, colorFlag, color); float[] pts = getPts(w, h); pts[14] = (int) (w / 2); pts[15] = (int) (h / 2); drawCornerPath(canvas, pts, paint, fillFlag); } } /** * Класс отрисовывает различные геометрические объекты * * @author Mike Osipov <mike.osipov@netcook.org> * */ public static class Geometry{ private static Paint paint = buildPaint(); static { paint.setStrokeWidth(3); paint.setStyle(Style.STROKE); } public static void drawCircle(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/3), paint); } public static void drawCircleFill(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); paint.setStyle(Style.FILL); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/3), paint); paint.setStyle(Style.STROKE); } public static void drawCrossedTwoLinesCircle(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle(w/2, h/2, h/3, paint); canvas.drawLine(w/6, h/6, 5*w/6, 5*h/6, paint); canvas.drawLine(w/6, 5*h/6, 5*w/6, h/6, paint); } public static void drawCrossedOneLinesCircle(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/3), paint); canvas.drawLine(w/6, 5*h/6, 5*w/6, h/6, paint); } public static void drawTriangle(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawLine(w/2, h/6, w/6, 5*h/6, paint); canvas.drawLine(w/6, 5*h/6, 5*w/6, 5*h/6, paint); canvas.drawLine(5*w/6, 5*h/6, w/2, h/6, paint); } public static void drawTriangleFill(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path = new Path(); paint.setStyle(Style.FILL); path.moveTo(w/2, h/6); path.lineTo(w/6, 5*h/6); path.lineTo(5*w/6,5*h/6); path.lineTo(w/2, h/6); canvas.drawPath(path, paint); paint.setStyle(Style.STROKE); } public static void drawSquare(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/6, h/6, 5*w/6, 5*h/6, paint); } public static void drawSquareFill(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); paint.setStyle(Style.FILL_AND_STROKE); canvas.drawRect(w/6, h/6, 5*w/6, 5*h/6, paint); paint.setStyle(Style.STROKE); } /** * Крест */ public static void drawCross(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawLine(w/6, h/6, 5*w/6, 5*h/6, paint); canvas.drawLine(w/6, 5*h/6, 5*w/6, h/6, paint); } /** * Три параллельные линии */ public static void drawParallelLines(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawLine(w/6, h/6, 5*w/6, h/6, paint); canvas.drawLine(w/6, h/2, 5*w/6, h/2, paint); canvas.drawLine(w/6, 5*h/6, 5*w/6, 5*h/6, paint); } /** * Квадрат с крестиком внутри */ public static void drawCrossedSquare(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/6, h/6, 5*w/6, 5*h/6, paint); canvas.drawLine(w/6, h/6, 5*w/6, 5*h/6, paint); canvas.drawLine(w/6, 5*h/6, 5*w/6, h/6, paint); } /** * */ public static void drawHalfFillOval(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); paint.setStyle(Style.FILL_AND_STROKE); RectF oval1 = new RectF(w/6, h/6, 5*w/6, 5*h/6); canvas.drawArc(oval1, 90, 180, false, paint); paint.setStyle(Style.STROKE); canvas.drawArc(oval1, 180, 270, false, paint); } public static void drawHalfEmptyOval(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF oval2 = new RectF(w/6, h/6, 5*w/6, 5*h/6); canvas.drawArc(oval2, 90, 180, false, paint); paint.setStyle(Style.FILL_AND_STROKE); canvas.drawArc(oval2, -90, 180, false, paint); paint.setStyle(Style.STROKE); } public static void drawHalfFillSquare(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF rec1 = new RectF(w/6, h/6, w/2, 5*h/6); canvas.drawRect(rec1, paint); paint.setStyle(Style.FILL_AND_STROKE); RectF rec2 = new RectF(w/2, h/6, 5*w/6, 5*h/6); canvas.drawRect(rec2, paint); paint.setStyle(Style.STROKE); } public static void drawHalfEmptySquareAns(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); paint.setStyle(Style.FILL_AND_STROKE); RectF rec3 = new RectF(w/6, h/6, w/2, 5*h/6); canvas.drawRect(rec3, paint); paint.setStyle(Style.STROKE); RectF rec4 = new RectF(w/2, h/6, 5*w/6, 5*h/6); canvas.drawRect(rec4, paint); } /** * */ public static void drawTwoPerpendLines(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path = new Path(); path.moveTo(w/5, h/2); path.lineTo(4*w/5, h/2); path.moveTo(w/2, h/5); path.lineTo(w/2, 4*h/5); canvas.drawPath(path, paint); } public static void drawTwoWavePerpendLines(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p = new Path(); p.moveTo(w/5, h/2); for (int i = 1; i < 11; i++) { if (i%2==0) p.lineTo(w/5+(i)*(3*w/5/9), h/2); else p.lineTo(w/5+(i)*(3*w/5/9), h/2-h/12); } canvas.drawPath(p, paint); Path p1 = new Path(); p1.moveTo(w/2+w/24, h/5); for (int i = 1; i < 11; i++) { if (i%2==0) p1.lineTo(w/2+w/24, h/5+(i)*(3*h/5/9)); else p1.lineTo(w/2-w/24, h/5+(i)*(3*h/5/9)); } canvas.drawPath(p1, paint); } public static void drawFourPerpendLines(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path = new Path(); path.moveTo(w/5, 2*h/5); path.lineTo(4*w/5,2* h/5); path.moveTo(w/5, 3*h/5); path.lineTo(4*w/5, 3*h/5); path.moveTo(2*w/5, h/5); path.lineTo(2*w/5, 4*h/5); path.moveTo(3*w/5, h/5); path.lineTo(3*w/5, 4*h/5); canvas.drawPath(path, paint); } public static void drawFourWavePerpendLinesAns(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p2 = new Path(); p2.moveTo(w/5, 2*h/5); for (int i = 1; i < 5; i++) { if (i%2==0) p2.lineTo(i*w/5, 2*h/5+h/12); else p2.lineTo(i*w/5, 2*h/5); } canvas.drawPath(p2, paint); Path p3 = new Path(); p3.moveTo(w/5, 3*h/5); for (int i = 1; i < 5; i++) { if (i%2==0) p3.lineTo(i*w/5, 3*h/5+h/12); else p3.lineTo(i*w/5, 3*h/5); } canvas.drawPath(p3, paint); Path p4 = new Path(); p4.moveTo(2*w/5, h/5); for (int i = 1; i < 5; i++) { if (i%2==0) p4.lineTo(2*w/5+w/12, i*h/5); else p4.lineTo(2*w/5, i*h/5); } canvas.drawPath(p4, paint); Path p5 = new Path(); p5.moveTo(3*w/5, h/5); for (int i = 1; i < 5; i++) { if (i%2==0) p5.lineTo(3*w/5+w/12, i*h/5); else p5.lineTo(3*w/5, i*h/5); } canvas.drawPath(p5, paint); } public static void drawFourWavePerpendLines(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p12 = new Path(); p12.moveTo(w/5, 2*h/5); for (int i = 1; i < 11; i++) { if (i%2==0) p12.lineTo(w/5+(i)*(3*w/5/9), 2*h/5); else p12.lineTo(w/5+(i)*(3*w/5/9), 2*h/5+h/12); } canvas.drawPath(p12, paint); Path p13 = new Path(); p13.moveTo(w/5, 3*h/5); for (int i = 1; i < 11; i++) { if (i%2==0) p13.lineTo(w/5+(i)*(3*w/5/9), 3*h/5); else p13.lineTo(w/5+(i)*(3*w/5/9), 3*h/5+h/12); } canvas.drawPath(p13, paint); Path p14 = new Path(); p14.moveTo(2*w/5+w/24, h/5); for (int i = 1; i < 11; i++) { if (i%2==0) p14.lineTo(2*w/5+w/24, h/5+(i)*(3*h/5/9)); else p14.lineTo(2*w/5-w/24, h/5+(i)*(3*h/5/9)); } canvas.drawPath(p14, paint); Path p15 = new Path(); p15.moveTo(3*w/5, h/5); for (int i = 1; i < 11; i++) { if (i%2==0) p15.lineTo(3*w/5+w/24, h/5+(i)*(3*h/5/9)); else p15.lineTo(3*w/5-w/24, h/5+(i)*(3*h/5/9)); } canvas.drawPath(p15, paint); } public static void drawTwoWaveTwoDirectLines( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p11 = new Path(); p11.moveTo(2*w/5+w/24, h/5); for (int i = 1; i < 11; i++) { if (i%2==0) p11.lineTo(2*w/5+w/24, h/5+(i)*(3*h/5/9)); else p11.lineTo(2*w/5-w/24, h/5+(i)*(3*h/5/9)); } canvas.drawPath(p11, paint); Path p16 = new Path(); p16.moveTo(3*w/5+w/24, h/5); for (int i = 1; i < 11; i++) { if (i%2==0){ p16.lineTo(3*w/5+w/24, h/5+(i)*(3*h/5/9)); } else { p16.lineTo(3*w/5-w/24, h/5+(i)*(3*h/5/9)); } } canvas.drawPath(p16, paint); Path path9 = new Path(); path9.moveTo(w/5, 2*h/5); path9.lineTo(4*w/5,2* h/5); path9.moveTo(w/5, 3*h/5); path9.lineTo(4*w/5, 3*h/5); canvas.drawPath(path9, paint); } public static void drawOneWaveOneDirectLines( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p02 = new Path(); p02.moveTo(w/5+w/24, h/2); for (int i = 1; i < 11; i++) { if (i%2==0){ p02.lineTo(w/5+(i)*(3*w/5/9), h/2); } else { p02.lineTo(w/5+(i)*(3*w/5/9), h/2+h/12); } } canvas.drawPath(p02, paint); Path path5 = new Path(); path5.moveTo(w/2, h/5); path5.lineTo(w/2, 4*h/5); canvas.drawPath(path5, paint); } public static void drawOneDirectOneWaveLines( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p03 = new Path(); p03.moveTo(w/2+w/24, h/5); for (int i = 1; i < 11; i++) { if (i%2==0) p03.lineTo(w/2+w/24, h/5+(i)*(3*h/5/9)); else p03.lineTo(w/2-w/24, h/5+(i)*(3*h/5/9)); } canvas.drawPath(p03, paint); Path path6 = new Path(); path6.moveTo(w/5, h/2); path6.lineTo(4*w/5, h/2); canvas.drawPath(path6, paint); } /** * */ public static void drawFillTriangleInEmptySquare( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF rec = new RectF(w/6, h/6, 5*w/6, 5*h/6); canvas.drawRect(rec, paint); paint.setStyle(Style.FILL); Path path = new Path(); path.moveTo(w/2, h/2+h/7); path.lineTo(w/2+w/6, h/2-h/7); path.lineTo(w/2-w/6, h/2-h/7); path.lineTo(w/2, h/2+h/7); canvas.drawPath(path, paint); paint.setStyle(Style.STROKE); } public static void drawFillSquareInEmptyTriangle( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); paint.setStyle(Style.FILL); Path path4 = new Path(); path4.moveTo(w/2-w/3, h/2-h/3); path4.lineTo(w/2+w/3, h/2-h/3); path4.lineTo(w/2+w/10, h/2-h/10-10); path4.lineTo(w/2-w/10, h/2-h/10-10); path4.lineTo(w/2-w/3, h/2-h/3); path4.lineTo(w/2, h/2+h/3); path4.lineTo(w/2-w/10, h/2+h/10-10); path4.lineTo(w/2-w/10, h/2-h/10-10); path4.moveTo(w/2, h/2+h/3); path4.lineTo(w/2-w/10, h/2+h/10-10); path4.lineTo(w/2+w/10, h/2+h/10-10); path4.moveTo(w/2, h/2+h/3); path4.lineTo(w/2+w/10, h/2+h/10-10); path4.lineTo(w/2+w/10, h/2-h/10-10); path4.lineTo(w/2+w/3, h/2-h/3); path4.lineTo(w/2, h/2+h/3); canvas.drawPath(path4, paint); paint.setStyle(Style.STROKE); } public static void drawOvalInRomb( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF rec6 = new RectF(w/2+w/8, h/2+h/8, w/2-w/8, h/2-h/8); canvas.drawOval(rec6, paint); Path path0 = new Path(); path0.moveTo(w/2, h/2+h/3); path0.lineTo(w/2+w/3, h/2); path0.lineTo(w/2, h/2-h/3); path0.lineTo(w/2, h/2-h/3); path0.lineTo(w/2-w/3, h/2); path0.lineTo(w/2, h/2+h/3); canvas.drawPath(path0, paint); } public static void drawRombInOval( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path5 = new Path(); path5.moveTo(w/2, h/2+h/7); path5.lineTo(w/2+w/7, h/2); path5.lineTo(w/2, h/2-h/7); path5.lineTo(w/2, h/2-h/7); path5.lineTo(w/2-w/7, h/2); path5.lineTo(w/2, h/2+h/7); canvas.drawPath(path5, paint); RectF rec3 = new RectF(w/6, h/6, 5*w/6, 5*h/6); canvas.drawOval(rec3, paint); } public static void drawFillOvalInEmptyRomb( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF rec8 = new RectF(w/6, h/6, 5*w/6, 5*h/6); canvas.drawOval(rec8, paint); paint.setStyle(Style.FILL); Path path6 = new Path(); path6.moveTo(w/2, h/2+h/7); path6.lineTo(w/2+w/7, h/2); path6.lineTo(w/2, h/2-h/7); path6.lineTo(w/2, h/2-h/7); path6.lineTo(w/2-w/7, h/2); path6.lineTo(w/2, h/2+h/7); canvas.drawPath(path6, paint); paint.setStyle(Style.STROKE); } public static void drawFillRombInOval( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF rec7 = new RectF(w/6, h/6, 5*w/6, 5*h/6); canvas.drawRect(rec7, paint); Path path8 = new Path(); paint.setStyle(Style.FILL); path8.moveTo(w/2, h/2+h/7); path8.lineTo(w/2+w/6, h/2-h/7); path8.lineTo(w/2-w/6, h/2-h/7); path8.lineTo(w/2, h/2+h/7); canvas.drawPath(path8, paint); paint.setStyle(Style.STROKE); } public static void drawTriangleInSuare( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path9 = new Path(); path9.moveTo(w/2, h/2+h/3); path9.lineTo(w/2+w/3, h/2); path9.lineTo(w/2, h/2-h/3); path9.lineTo(w/2, h/2-h/3); path9.lineTo(w/2-w/3, h/2); path9.lineTo(w/2, h/2+h/3); canvas.drawPath(path9, paint); paint.setStyle(Style.FILL); RectF rec9 = new RectF(w/2+w/8, h/2+h/8, w/2-w/8, h/2-h/8); canvas.drawOval(rec9, paint); paint.setStyle(Style.STROKE); } public static void drawTwoWaveLines( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p = new Path(); p.moveTo(w/5, h/2); for (int i = 1; i < 5; i++) { if (i%2==0) p.lineTo(i*w/5, h/2+h/10); else p.lineTo(i*w/5, h/2); } canvas.drawPath(p, paint); Path p1 = new Path(); p1.moveTo(w/5, h/3); for (int i = 1; i < 5; i++) { if (i%2==0) p1.lineTo(i*w/5, h/3+h/10); else p1.lineTo(i*w/5, h/3); } canvas.drawPath(p1, paint); } public static void drawTwoDirectLines( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path2 = new Path(); path2.moveTo(w/5, h/2+h/10); path2.lineTo(4*w/5, h/2+h/10); path2.moveTo(w/5, h/3+h/10); path2.lineTo(4*w/5, h/3+h/10); canvas.drawPath(path2, paint); } public static void drawWaveRectangle( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path p2 = new Path(); p2.moveTo(w/5, 2*h/5); for (int i = 1; i < 5; i++) { if (i%2==0) p2.lineTo(i*w/5, 2*h/5+h/10); else p2.lineTo(i*w/5, 2*h/5); } canvas.drawPath(p2, paint); Path p3 = new Path(); p3.moveTo(w/5, 3*h/5); for (int i = 1; i < 5; i++) { if (i%2==0) p3.lineTo(i*w/5, 3*h/5+h/10); else p3.lineTo(i*w/5, 3*h/5); } canvas.drawPath(p3, paint); Path p4 = new Path(); p4.moveTo(w/5, 2*h/5); p4.lineTo(w/5, 3*h/5); canvas.drawPath(p4, paint); Path p5 = new Path(); p5.moveTo(4*w/5, 2*h/5+h/10); p5.lineTo(4*w/5, 3*h/5+h/10); canvas.drawPath(p5, paint); } public static void drawRectangle( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/5, 2*h/5, 4*w/5, 3*h/5, paint); } public static void drawFillRectangle( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); paint.setStyle(Style.FILL_AND_STROKE); canvas.drawRect(w/5, 2*h/5, 4*w/5, 3*h/5, paint); paint.setStyle(Style.STROKE); } /** * */ public static void drawZ( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path = new Path(); path.moveTo(w/5, h/5); path.lineTo(4*w/5, h/5); path.lineTo(w/5, 4*h/5); path.lineTo(4*w/5, 4*h/5); canvas.drawPath(path, paint); } public static void drawTraingleDividedByLine( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path1 = new Path(); path1.moveTo(w/2, h/6); path1.lineTo(w/6, 5*h/6); path1.lineTo(5*w/6, 5*h/6); path1.lineTo(w/2, h/6); path1.lineTo(w/2, 5*h/6); canvas.drawPath(path1, paint); } public static void drawLabirint( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path2 = new Path(); path2.moveTo(w/6, h/6); path2.lineTo(w/6, 5*h/6); path2.lineTo(5*w/6, 5*h/6); path2.lineTo(5*w/6, h/6); path2.lineTo(2*w/6, h/6); path2.lineTo(2*w/6, 4*h/6); path2.lineTo(4*w/6, 4*h/6); path2.lineTo(4*w/6, 2*h/6); path2.lineTo(3*w/6, 2*h/6); path2.lineTo(3*w/6, 3*h/6); canvas.drawPath(path2, paint); } /** * */ public static void drawOvalInHexagon( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF oval = new RectF(); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/6)-1, paint); canvas.drawArc(oval, 20, 140, false, paint); Path path = new Path(); path.moveTo(2*w/6, h/6); path.lineTo(4*w/6, h/6); path.lineTo(5*w/6, h/2); path.lineTo(4*w/6, 5*h/6); path.lineTo(2*w/6, 5*h/6); path.lineTo(w/6, h/2); path.lineTo(2*w/6, h/6); canvas.drawPath(path, paint); } public static void drawTriangleInTrapezoid( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path1 = new Path(); path1.moveTo(w/6, h/6); path1.lineTo(5*w/6, h/6); path1.lineTo(4*w/6, 5*h/6); path1.lineTo(2*w/6, 5*h/6); path1.lineTo(w/6, h/6); path1.moveTo(2*w/6, 2*h/6); path1.lineTo(4*w/6, 2*h/6); path1.lineTo(3*w/6, 4*h/6); path1.lineTo(2*w/6, 2*h/6); canvas.drawPath(path1, paint); } public static void drawSquareInPentagon( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path2 = new Path(); path2.moveTo(w/2, h/6); path2.lineTo(5*w/6, h/2); path2.lineTo(4*w/6, 5*h/6); path2.lineTo(2*w/6, 5*h/6); path2.lineTo(w/6, h/2); path2.lineTo(w/2, h/6); path2.moveTo(2*w/5, (int) (2.5*h/5)); path2.lineTo(3*w/5, (int) (2.5*h/5)); path2.lineTo(3*w/5, (int) (3.5*h/5)); path2.lineTo(2*w/5, (int) (3.5*h/5)); path2.lineTo(2*w/5, (int) (2.5*h/5)); canvas.drawPath(path2, paint); } /** * */ public static void drawSun( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF oval = new RectF(); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/4)-1, paint); canvas.drawArc(oval, 20, 140, false, paint); Path path = new Path(); // path.moveTo(w/6, (int)(h/2)-(int)(h/4)+2); path.lineTo((int)(w/2)-2*(int)(h/4)/3-4, (int)(h/2)-(int)(h/4)/2-1); path.moveTo(2*w/6, h/6); path.lineTo((int)(w/2)-(int)(h/4)/2, (int)(h/2)-(int)(h/4)+2); path.moveTo(w/2, h/6-4); path.lineTo((int)(w/2), (int)(h/2)-(int)(h/4)+1); path.moveTo(4*w/6, h/6); path.lineTo((int)(w/2)+(int)(h/4)/2, (int)(h/2)-(int)(h/4)+2); // path.moveTo(5*w/6, (int)(h/2)-(int)(h/4)+2); path.lineTo((int)(w/2)+2*(int)(h/4)/3+4, (int)(h/2)-(int)(h/4)/2-1); path.moveTo(5*w/6+5, h/2); path.lineTo((int)(w/2)+(int)(h/4)-1, (int)(h/2)); // path.moveTo(5*w/6, (int)(h/2)+(int)(h/4)-2); path.lineTo((int)(w/2)+2*(int)(h/4)/3+4, (int)(h/2)+(int)(h/4)/2+1); path.moveTo(4*w/6, 5*h/6); path.lineTo((int)(w/2)+(int)(h/4)/2, (int)(h/2)+(int)(h/4)-2); path.moveTo(w/2, 5*h/6+4); path.lineTo((int)(w/2), (int)(h/2)+(int)(h/4)-1); path.moveTo(2*w/6, 5*h/6); path.lineTo((int)(w/2)-(int)(h/4)/2, (int)(h/2)+(int)(h/4)-2); // path.moveTo(w/6, (int)(h/2)+(int)(h/4)-2); path.lineTo((int)(w/2)-2*(int)(h/4)/3-4, (int)(h/2)+(int)(h/4)/2+1); path.moveTo(w/6-5, h/2); path.lineTo((int)(w/2)-(int)(h/4)+1, (int)(h/2)); canvas.drawPath(path, paint); } public static void drawMoon( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); RectF oval1 = new RectF(w/3, h/4, 2*(int)(w/2), 3*h/4); canvas.drawArc(oval1, 90, 180, false, paint); RectF oval2 = new RectF((int)(w/2), h/4, 2*(int)(w/2), 3*h/4); canvas.drawArc(oval2, 100, 160, false, paint); } public static void drawStar( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path2 = new Path(); path2.moveTo(w/2, h/6); path2.lineTo(4*w/6+5, 5*h/6); path2.lineTo(w/6, (int) (h/2.4)); path2.lineTo(5*w/6, (int) (h/2.4)); path2.lineTo(2*w/6-5, 5*h/6); path2.lineTo(w/2, h/6); canvas.drawPath(path2, paint); } /** * */ public static void drawBigRectangle( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/6, h/3, 5*w/6, 2*h/3, paint); } public static void drawEnvelope( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/6, h/3, 5*w/6, 2*h/3, paint); Path path1 = new Path(); path1.moveTo(w/6, h/3); path1.lineTo(w/2, 2*h/3); path1.lineTo(5*w/6, h/3); canvas.drawPath(path1, paint); } public static void drawCrossedRectangle( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/6, h/3, 5*w/6, 2*h/3, paint); Path path = new Path(); path.moveTo(w/6, h/3); path.lineTo(5*w/6, 2*h/3); path.moveTo(w/6, 2*h/3); path.lineTo(5*w/6, h/3); canvas.drawPath(path, paint); } } /** * Класс отрисовывает различные варианты Т-образной фигуры * * @author Mike Osipov <mike.osipov@netcook.org> * */ public static class TLikeFigure{ private static Paint paint = buildPaint(); static { paint.setStrokeWidth(3); paint.setStyle(Style.STROKE); } public static void drawInvertedT( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path = new Path(); path.moveTo(w/2, h/5); path.lineTo(w/2, 4*h/5); path.moveTo(w/5, 4*h/5); path.lineTo(4*w/5, 4*h/5); canvas.drawPath(path, paint); } public static void drawThickInvertedT( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path12 = new Path(); path12.moveTo(w/5, 4*h/5+h/10); path12.lineTo(4*w/5, 4*h/5+h/10); path12.lineTo(4*w/5, 4*h/5-h/10); path12.lineTo(w/2+w/10, 4*h/5-h/10); path12.lineTo(w/2+w/10, h/5); path12.lineTo(w/2-w/10, h/5); path12.lineTo(w/2-w/10, 4*h/5-h/10); path12.lineTo(w/5, 4*h/5-h/10); path12.lineTo(w/5, 4*h/5+h/10); canvas.drawPath(path12, paint); } public static void drawT( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path0 = new Path(); path0.moveTo(w/2, h/5); path0.lineTo(w/2, 4*h/5); path0.moveTo(w/5, h/5); path0.lineTo(4*w/5, h/5); canvas.drawPath(path0, paint); } public static void drawThickTAns( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); paint.setStyle(Style.FILL_AND_STROKE); RectF rec3 = new RectF(w/6, h/6, w/2, 5*h/6); canvas.drawRect(rec3, paint); paint.setStyle(Style.STROKE); RectF rec4 = new RectF(w/2, h/6, 5*w/6, 5*h/6); canvas.drawRect(rec4, paint); } public static void drawThickT( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path112 = new Path(); path112.moveTo(w/5, h/5-h/10); path112.lineTo(4*w/5, h/5-h/10); path112.lineTo(4*w/5, h/5+h/10); path112.lineTo(w/2+w/10, h/5+h/10); path112.lineTo(w/2+w/10, 4*h/5); path112.lineTo(w/2-w/10, 4*h/5); path112.lineTo(w/2-w/10, h/5+h/10); path112.lineTo(w/5, h/5+h/10); path112.lineTo(w/5, h/5-h/10); canvas.drawPath(path112, paint); } public static void drawTwithThickHat( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/5, h/5+h/10, 4*w/5, h/5-h/10, paint); Path path11 = new Path(); path11.moveTo(w/2, 2*h/5-h/10); path11.lineTo(w/2, 4*h/5); canvas.drawPath(path11, paint); } public static void drawTwithThickLeg( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawRect(w/2-w/10, h/5, w/2+w/10, 4*h/5, paint); Path p = new Path(); p.moveTo(w/5, h/5); p.lineTo(4*w/5, h/5); canvas.drawPath(p, paint); } public static void drawTwoT( Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); Path path9 = new Path(); path9.moveTo(w/2-w/10, h/5+h/10); path9.lineTo(w/2-w/10, 4*h/5+h/10); path9.moveTo(w/5-w/10, 4*h/5+h/10); path9.lineTo(4*w/5-w/10, 4*h/5+h/10); canvas.drawPath(path9, paint); Path path8 = new Path(); path8.moveTo(w/2+w/10, h/5-h/10); path8.lineTo(w/2+w/10, 4*h/5-h/10); path8.moveTo(w/5+w/10, h/5-h/10); path8.lineTo(4*w/5+h/10, h/5-h/10); canvas.drawPath(path8, paint); } } /** * Класс отрисовывает грани игральных костей * * @author Mike Osipov <mike.osipov@netcook.org> * */ public static class Dices{ private static Paint paint = buildPaint(); static { paint.setStrokeWidth(0); paint.setStyle(Style.FILL_AND_STROKE); } public static void drawOne(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/8), paint); } public static void drawTwo(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle(5*w/6, h/6, (int)(h/8), paint); canvas.drawCircle(w/6, 5*h/6, (int)(h/8), paint); } public static void drawThree(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle(5*w/6, h/6, (int)(h/8), paint); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/8), paint); canvas.drawCircle(w/6, 5*h/6, (int)(h/8), paint); } public static void drawFour(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle(5*w/6, h/6, (int)(h/8), paint); canvas.drawCircle(w/6, 5*h/6, (int)(h/8), paint); canvas.drawCircle(w/6, h/6, (int)(h/8), paint); canvas.drawCircle(5*w/6,5*h/6, (int)(h/8), paint); } public static void drawFive(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle(5*w/6, h/6, (int)(h/8), paint); canvas.drawCircle(w/6, 5*h/6, (int)(h/8), paint); canvas.drawCircle((int)(w/2), (int)(h/2), (int)(h/8), paint); canvas.drawCircle(h/6, w/6, (int)(h/8), paint); canvas.drawCircle(5*h/6,5*w/6, (int)(h/8), paint); } public static void drawSix(Canvas canvas, boolean colorFlag,int color, int w, int h){ colorPaint(paint, colorFlag, color); canvas.drawCircle(5*w/6, h/6, (int)(h/8), paint); canvas.drawCircle(5*w/6, (int)(h/2), (int)(h/8), paint); canvas.drawCircle(5*w/6,5*h/6, (int)(h/8), paint); canvas.drawCircle(w/6, 5*h/6, (int)(h/8), paint); canvas.drawCircle(w/6, (int)(h/2), (int)(h/8), paint); canvas.drawCircle(w/6, h/6, (int)(h/8), paint); } } }