1 package ca.spaz.gui; 2 3 import java.awt.Rectangle; 4 5 /*** 6 */ 7 8 public class SpazPosition { 9 public int leftA, rightA, topA, bottomA; 10 public double leftR, rightR, topR, bottomR; 11 12 public SpazPosition(){} 13 14 public SpazPosition(SpazPosition copy) { 15 this.leftA = copy.leftA; 16 this.leftR = copy.leftR; 17 this.rightA = copy.rightA; 18 this.rightR = copy.rightR; 19 this.topA = copy.topA; 20 this.topR = copy.topR; 21 this.bottomA = copy.bottomA; 22 this.bottomR = copy.bottomR; 23 } 24 25 public void setHPos(double lR, int lA, double rR, int rA) { 26 this.leftR = lR; 27 this.leftA = lA; 28 this.rightR = rR; 29 this.rightA = rA; 30 } 31 32 public void setVPos(double tR, int tA, double bR, int bA) { 33 this.topR = tR; 34 this.topA = tA; 35 this.bottomR = bR; 36 this.bottomA = bA; 37 } 38 39 public Rectangle getRectangle(int width, int height) { 40 int top = (int)(topR*height) + topA; 41 int bottom = (int)(bottomR*height) + bottomA; 42 int left = (int)(leftR*width) + leftA; 43 int right = (int)(rightR*width) + rightA; 44 return ( new Rectangle(left, top, (right - left), (bottom - top)) ); 45 } 46 47 public Rectangle getMinRectangle() { 48 return ( new Rectangle(leftA, topA, (rightA - leftA), (bottomA - topA)) ); 49 } 50 51 public String toString() { 52 return (leftA + ", " + rightA + ", " + topA + ", " + bottomA); 53 } 54 55 public void adjustLeft(int val, int width) { 56 int cur = (int)(width * leftR); 57 this.leftA = (val - cur); 58 } 59 60 public void adjustRight(int val, int width) { 61 int cur = (int)(width * rightR); 62 this.rightA = (val - cur); 63 } 64 65 public void adjustTop(int val, int height) { 66 int cur = (int)(height * topR); 67 this.topA = (val - cur); 68 } 69 70 public void adjustBottom(int val, int height) { 71 int cur = (int)(height * bottomR); 72 this.bottomA = (val - cur); 73 } 74 75 public boolean valid() { 76 if ((topA + (topR*500)) > (bottomA + (bottomR*500))) return false; 77 if ((leftA + (leftR*500)) > (rightA + (rightR*500))) return false; 78 if (leftR < 0 || leftR > 1) return false; 79 if (rightR < 0 || rightR > 1) return false; 80 if (topR < 0 || topR > 1) return false; 81 if (bottomR < 0 || bottomR > 1) return false; 82 return true; 83 } 84 85 86 public String toXMLString() { 87 StringBuffer sb = new StringBuffer(); 88 sb.append("<position "); 89 sb.append(" left_rel=\""+ leftR + '"'); 90 sb.append(" left_abs=\""+ leftA + '"'); 91 sb.append(" right_rel=\""+ rightR + '"'); 92 sb.append(" right_abs=\""+ rightA + '"'); 93 sb.append(" top_rel=\""+ topR + '"'); 94 sb.append(" top_abs=\""+ topA + '"'); 95 sb.append(" bottom_rel=\""+ bottomR + '"'); 96 sb.append(" bottom_abs=\""+ bottomA + '"'); 97 sb.append("/>\n"); 98 return sb.toString(); 99 } 100 101 102 }