1 /****************************************************************************** 2 * Spline2D.java - Move a checker along a spline path 3 * $Id$ 4 * 5 * BuckoFIBS - Backgammon by BuckoSoft 6 * Copyright© 2011 - Dick Balaska - BuckoSoft, Corp. 7 * 8 * $Log$ 9 * Revision 1.1 2013/09/10 00:22:54 dick 10 * Spline2D and Flasher move MoveSpline2D and MoveFlasher 11 * 12 * Revision 1.1 2011/05/22 22:56:09 dick 13 * c.b.f.B.g.boardTab.board becomes c.b.f.B.g.boardTab.boardPane . 14 * 15 * Revision 1.6 2011/05/18 05:54:00 dick 16 * No really fix the move to home animation. 17 * 18 * Revision 1.5 2011/05/17 23:15:41 dick 19 * Again fix the Home move. 20 * 21 * Revision 1.4 2011/05/17 22:48:04 dick 22 * Fix the bear-off anchor points. 23 * 24 * Revision 1.3 2011/05/16 21:26:06 dick 25 * Handle Home and Bar during Move. 26 * 27 * Revision 1.2 2011/05/16 14:16:14 dick 28 * Javadoc. 29 * 30 * Revision 1.1 2011/05/15 02:14:12 dick 31 * gui.board.animator becomes gui.boardTab.board.animateType. 32 * 33 * Revision 1.1 2011/05/13 14:26:35 dick 34 * Spline2D moves to the animator package. 35 * 36 */ 37 38 /* 39 * This program is free software: you can redistribute it and/or modify 40 * it under the terms of the GNU General Public License as published by 41 * the Free Software Foundation, either version 3 of the License, or 42 * (at your option) any later version. 43 * 44 * This program is distributed in the hope that it will be useful, 45 * but WITHOUT ANY WARRANTY; without even the implied warranty of 46 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 47 * GNU General Public License for more details. 48 * 49 * You should have received a copy of the GNU General Public License 50 * along with this program. If not, see <http://www.gnu.org/licenses/>. 51 * 52 * The Original Code is BuckoFIBS, <http://www.buckosoft.com/BuckoFIBS/>. 53 * The Initial Developer of the Original Code is Dick Balaska and BuckoSoft, Corp. 54 * 55 */ 56 package com.buckosoft.fibs.BuckoFIBS.gui.boardTab.boardPane.animateType; 57 58 import java.awt.Color; 59 60 import com.buckosoft.fibs.BuckoFIBS.gui.boardTab.boardPane.AnimateEventMove; 61 import com.buckosoft.fibs.domain.Board; 62 63 /** Move a point along a spline. 64 * Jave Spline algorithm from <a href="http://www.java2s.com/Code/Java/2D-Graphics-GUI/Spline2D.htm">Spline2D.htm</a> 65 * @author Dick Balaska 66 * @since 2011/05/12 67 * @version $Revision$ <br> $Date$ 68 * @see <a href="http://cvs.buckosoft.com/Projects/BuckoFIBS/BuckoFIBS/src/main/java/com/buckosoft/fibs/BuckoFIBS/gui/boardTab/boardPane/animateType/MoveSpline2D.java">cvs MoveSpline2D.java</a> 69 * @see <a href="http://www.java2s.com/Code/Java/2D-Graphics-GUI/Spline2D.htm">Spline2D.htm</a> 70 */ 71 public class MoveSpline2D extends AnimateEventMove { 72 private _Spline2D spline; 73 74 private static Color startColor = new Color(255,20,20,190); 75 private static Color endColor = new Color(20,255,20,150); 76 //private Color workColor; 77 78 79 public int[] getXY(double offset) { 80 return(spline.getPoint(offset)); 81 } 82 83 @Override 84 public Color getColor(double offset) { 85 return( new Color( 86 (int)(((endColor.getRed()-startColor.getRed())*offset)+startColor.getRed()), 87 (int)(((endColor.getGreen()-startColor.getGreen())*offset)+startColor.getGreen()), 88 (int)(((endColor.getBlue()-startColor.getBlue())*offset)+startColor.getBlue()), 89 (int)(((endColor.getAlpha()-startColor.getAlpha())*offset)+startColor.getAlpha())) 90 ); 91 } 92 93 public void calculate() { 94 95 x[0] = getPointX(pointNumberStart)+bs.c2; 96 y[0] = getNthCheckerY(pointNumberStart, checkerNumberStart)+bs.c2; 97 if (pointNumberStart == Board.Bar) 98 y[0] = getCheckerYOnBar(this.who, checkerNumberStart)+bs.c2; 99 x[1] = x[0]; 100 y[1] = getNthCheckerY(pointNumberStart, 4)+bs.c2; 101 if (pointNumberStart == Board.Bar) 102 y[1] = getCheckerYOnBar(this.who, checkerNumberStart)+bs.c2; 103 x[2] = x[0];//-bs.checkerSize; 104 y[2] = bs.h/2; 105 106 x[5] = getPointX(pointNumberEnd)+bs.c2; 107 y[5] = getNthCheckerY(pointNumberEnd, checkerNumberEnd)+bs.c2; 108 if (pointNumberEnd == Board.Home) 109 y[5] = this.getCheckerYInHome(this.who, checkerNumberEnd)+bs.checkerHeight/2; 110 x[4] = x[5]; 111 y[4] = getNthCheckerY(pointNumberEnd, 4)-bs.c2; 112 if (pointNumberEnd == Board.Home) 113 y[4] = (y[5]+y[2])/2; 114 115 x[3] = x[5]; 116 y[3] = y[2]; 117 118 /* 119 x[0] = boardPane.getPointX(pointNumberStart)+bs.c2; 120 y[0] = boardPane.getNthCheckerY(pointNumberStart, checkerNumberStart)+bs.c2; 121 x[3] = boardPane.getPointX(pointNumberEnd)+bs.c2; 122 y[3] = boardPane.getNthCheckerY(pointNumberEnd, checkerNumberEnd)+bs.c2; 123 x[1] = x[0];//+bs.checkerSize; 124 y[1] = bs.h/2; 125 x[2] = x[3];//-bs.checkerSize; 126 y[2] = y[1]; 127 */ 128 /* 129 x[0] = boardPane.getPointX(pointNumberStart); 130 y[0] = boardPane.getNthCheckerY(pointNumberStart, checkerNumberStart); 131 x[5] = boardPane.getPointX(pointNumberEnd); 132 y[5] = boardPane.getNthCheckerY(pointNumberEnd, checkerNumberEnd); 133 x[1] = x[0]; 134 y[1] = y[0]; 135 x[2] = x[0]; 136 y[2] = boardPane.bs.h/2; 137 x[3] = x[3]; 138 y[3] = y[1]; 139 x[4] = x[5]; 140 y[4] = y[4]; 141 */ 142 spline = new _Spline2D(x, y); 143 } 144 145 }