// Path: src/com/sproutlife/model/seed/BitPattern.java
// public class BitPattern {
//     
//     protected int[][] bitPattern;
//     
//     protected Point onBit = null;
//     
//     public BitPattern() {
//         
//     }
//     
//     public BitPattern(int[][] bitPattern) {
//         this.bitPattern = bitPattern;
//     }
//     
//     public BitPattern(int[][] bitPattern, boolean xySwitch) {
//         
//         if (xySwitch) {
//             this.bitPattern = xySwitch(bitPattern);
//         }
//         else {
//             this.bitPattern = bitPattern;
//         }
//                
//     }
//     
//     public int getWidth() {
//         return bitPattern.length;
//     }
//     
//     public int getWidth(Rotation r) {
//         if (r.getAngle()==0 || r.getAngle()==2) {
//             return getWidth();
//         }
//         return getHeight();
//     }
//     
//     public int getHeight() {
//         return bitPattern[0].length;
//     }
//     
//     public int getHeight(Rotation r) {
//         if (r.getAngle()==0 || r.getAngle()==2) {
//             return getHeight();
//         }
//         return getWidth();
//     }
//     
//     boolean getBit(int x, int y) {
//         return bitPattern[x][y]==1;
//     }
//     
//     boolean getBit(int x, int y, Rotation r) {
//         Point rp = Rotations.fromBoard(new Point(x,y), this, r);
//         return getBit(rp.x, rp.y);       
//     }
//         
//     public Point getCenter() {        
//         return new Point((getWidth()-1)/2,(getHeight()-1)/2);
//     }
//     
//     public Point getCenter(Rotation r) {
//         return Rotations.toBoard(getCenter(), this, r);
//     }
//     
//     public Point getOnBit() {
//         
//         if (this.onBit!=null) {
//             return this.onBit;
//         }
//         else {
//             for (int x=0;x<getWidth();x++) {
//                 for (int y=0;y<getHeight();y++) {
//                     if  (getBit(x,y)) {
//                         this.onBit = new Point(x,y);
//                         return onBit;
//                     }
//                 }
//             }    
//         }
//         return null;        
//     }
//     
//     public Point getOnBit(Rotation r) {
//         return Rotations.toBoard(getOnBit(), this, r);
//     }
//     
//     public static int[][] xySwitch(int[][] shape) {
//         if (shape.length==0) {
//             return new int[0][0];
//         }
//         int[][] newShape = new int[shape[0].length][shape.length];
//                 
//         for (int i=0;i<shape.length;i++) {
//             for (int j=0;j<shape[0].length;j++) {
//                 newShape[j][i] = shape[i][j];  
//             }
//         }        
//         
//         return newShape;  
//         
//     }
// }
// 
// Path: src/com/sproutlife/model/seed/SeedSproutPattern.java
// public class SeedSproutPattern {       
//     
//     protected BitPattern seedPattern;
//     
//     protected BitPattern sproutPattern;
//     
//     protected Point sproutOffset;   
//     
//     public BitPattern getSeedPattern() {
//         return seedPattern;
//     }
//     
//     public BitPattern getSproutPattern() {
//         return sproutPattern;
//     }
//     
//     public Point getSproutOffset() {
//         return sproutOffset;
//     }   
// }


import java.awt.Point;
import com.sproutlife.model.seed.BitPattern;
import com.sproutlife.model.seed.SeedSproutPattern;
/*******************************************************************************
 * Copyright (c) 2016 Alex Shapiro - github.com/shpralex
 * This program and the accompanying materials
 * are made available under the terms of the The MIT License (MIT)
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *******************************************************************************/
package com.sproutlife.model.seed.patterns;



public class Square2RpPattern extends SeedSproutPattern {

    public Square2RpPattern() {
        
        this.seedPattern = new BitPattern(new int[][]                                             
                {{1,1},
                 {1,1}},
                 true);
            
        this.sproutPattern = new BitPattern(new int[][]  
                {{0,1,1},
                 {1,1,0},
// Path: src/com/sproutlife/model/seed/BitPattern.java
// public class BitPattern {
//     
//     protected int[][] bitPattern;
//     
//     protected Point onBit = null;
//     
//     public BitPattern() {
//         
//     }
//     
//     public BitPattern(int[][] bitPattern) {
//         this.bitPattern = bitPattern;
//     }
//     
//     public BitPattern(int[][] bitPattern, boolean xySwitch) {
//         
//         if (xySwitch) {
//             this.bitPattern = xySwitch(bitPattern);
//         }
//         else {
//             this.bitPattern = bitPattern;
//         }
//                
//     }
//     
//     public int getWidth() {
//         return bitPattern.length;
//     }
//     
//     public int getWidth(Rotation r) {
//         if (r.getAngle()==0 || r.getAngle()==2) {
//             return getWidth();
//         }
//         return getHeight();
//     }
//     
//     public int getHeight() {
//         return bitPattern[0].length;
//     }
//     
//     public int getHeight(Rotation r) {
//         if (r.getAngle()==0 || r.getAngle()==2) {
//             return getHeight();
//         }
//         return getWidth();
//     }
//     
//     boolean getBit(int x, int y) {
//         return bitPattern[x][y]==1;
//     }
//     
//     boolean getBit(int x, int y, Rotation r) {
//         Point rp = Rotations.fromBoard(new Point(x,y), this, r);
//         return getBit(rp.x, rp.y);       
//     }
//         
//     public Point getCenter() {        
//         return new Point((getWidth()-1)/2,(getHeight()-1)/2);
//     }
//     
//     public Point getCenter(Rotation r) {
//         return Rotations.toBoard(getCenter(), this, r);
//     }
//     
//     public Point getOnBit() {
//         
//         if (this.onBit!=null) {
//             return this.onBit;
//         }
//         else {
//             for (int x=0;x<getWidth();x++) {
//                 for (int y=0;y<getHeight();y++) {
//                     if  (getBit(x,y)) {
//                         this.onBit = new Point(x,y);
//                         return onBit;
//                     }
//                 }
//             }    
//         }
//         return null;        
//     }
//     
//     public Point getOnBit(Rotation r) {
//         return Rotations.toBoard(getOnBit(), this, r);
//     }
//     
//     public static int[][] xySwitch(int[][] shape) {
//         if (shape.length==0) {
//             return new int[0][0];
//         }
//         int[][] newShape = new int[shape[0].length][shape.length];
//                 
//         for (int i=0;i<shape.length;i++) {
//             for (int j=0;j<shape[0].length;j++) {
//                 newShape[j][i] = shape[i][j];  
//             }
//         }        
//         
//         return newShape;  
//         
//     }
// }
// 
// Path: src/com/sproutlife/model/seed/SeedSproutPattern.java
// public class SeedSproutPattern {       
//     
//     protected BitPattern seedPattern;
//     
//     protected BitPattern sproutPattern;
//     
//     protected Point sproutOffset;   
//     
//     public BitPattern getSeedPattern() {
//         return seedPattern;
//     }
//     
//     public BitPattern getSproutPattern() {
//         return sproutPattern;
//     }
//     
//     public Point getSproutOffset() {
//         return sproutOffset;
//     }   
// }


// Path: src/com/sproutlife/model/seed/patterns/Square2RpPattern.java
import java.awt.Point;
import com.sproutlife.model.seed.BitPattern;
import com.sproutlife.model.seed.SeedSproutPattern;

/*******************************************************************************
 * Copyright (c) 2016 Alex Shapiro - github.com/shpralex
 * This program and the accompanying materials
 * are made available under the terms of the The MIT License (MIT)
 * The above copyright notice and this permission notice shall be included in all
 * copies or substantial portions of the Software.
 *******************************************************************************/
package com.sproutlife.model.seed.patterns;



public class Square2RpPattern extends SeedSproutPattern {

    public Square2RpPattern() {
        
        this.seedPattern = new BitPattern(new int[][]                                             
                {{1,1},
                 {1,1}},
                 true);
            
        this.sproutPattern = new BitPattern(new int[][]  
                {{0,1,1},
                 {1,1,0},
                 {0,1,0}},