/* Project #2 Section class for applet imbedded in Java script table Lisa M. Snyder Janaury 25, 1999 Creates the graphics for the windows in the three wall sections. */ import java.awt.*; import java.awt.event.*; public class section{ private int type, remains; private double width; private double height; private int starting_x, starting_y, single_window,xfactor,yfactor; private Rectangle r; private arc Arch; // ---------------------- Default Constructor ---------------------------- public section() { type = 0; remains = 0; width = 40; height = 50; starting_x = 0; starting_y = 0; } // ---------------------- Constructor ------------------------------------ public section(int x, int y, int w, double h, int s_x, int s_y) { type = x; remains = y; width = w; height = h; starting_x = s_x; starting_y = s_y; int inc, newx, newy; if (type == 0) { inc = (int)(width/6); newx = starting_x + inc; newy = (int)((starting_y - height) + ((inc * 3) + (remains * .02))); r = new Rectangle (newx, newy, (int)(inc*4), starting_y-newy); Arch = new arc (newx,(int)(newy-((inc*2)+(remains * .02))),(int)(width -(inc*2)),(int)((inc * 4)+(remains * .04)),0,180); } if (type == 1) { if (remains <= 150) { r = new Rectangle (0, 0, 0, 0); Arch = new arc (0, 0, 0, 0, 0, 180); } if ((remains >= 151) && (remains <= 325)) { single_window = (int)(((width-(width/3))/5)*2); newx = (int) (starting_x + (width/6)); newy = (int) (starting_y - (height - (single_window + (width/6) + (remains * .0005)))); r = new Rectangle (newx, newy, single_window, starting_y-newy); Arch = new arc (newx, (int)(newy - (single_window - (remains * .0005))), single_window, (int)((single_window*2) + (remains * .001)),0,180); } if ((remains >= 326) && (remains <= 500)) { single_window = (int)(((width-(width/3))/11)*2); newx = (int) (starting_x + (width/6)); newy = (int) (starting_y - (height - (single_window + (width/6) + (remains * .0005)))); r = new Rectangle (newx, newy, single_window, starting_y-newy); Arch = new arc (newx, (int)(newy - (single_window - (remains * .0005))), single_window, (int)((single_window*2) + (remains * .001)),0,180); } } if (type == 2) { inc = (int)(width/6); xfactor = (int)((width * .375)-(remains * .00832)); yfactor = (int)(remains * .04); newx = starting_x + xfactor; newy = (int) ((starting_y - height) + ((inc*3) + yfactor)); //System.out.println ("starting_y = " + starting_y); //System.out.println ("newy = " + newy); r = new Rectangle (newx, newy, (int)(width - (xfactor*2)), starting_y-newy); Arch = new arc (newx, (int)(newy-((width - (xfactor*2))/2)), (int)(width - (xfactor*2)),(int)((inc*2) + yfactor),0,180); } } // -----------------------Paint for Class -------------------------------- public void paint(Graphics g, Color c) { //drawing basic rectangle g.setColor (Color.black); g.fillRect (r.x, r.y, r.width, r.height); //drawing arches //System.out.println ("Calling arch.paint"); //g.fillArc(30,200,90,45,0,180); Arch.paint(g,c); //if statements for triforium copying if ((type == 1) && (remains >= 151) && (remains <= 325)) { g.copyArea((int)((starting_x+(width/6))),(int)((starting_y-height)),single_window,(int)(height),(int)(single_window+single_window/2),0); } if ((type == 1) && (remains >= 326) && (remains <= 500)) { double inc = Math.ceil(single_window + (single_window/2)); int move_in_x = (int)(inc); for (int i = 0; i < 3; i++) { g.copyArea((int)(starting_x + (width/6)),(int)((starting_y-height)),single_window,(int)(height),move_in_x,0); move_in_x = (int)(move_in_x + inc); } } } // ---------------------- Change ------------------------------------ public void change (int x, int y, int w, double h, int s_x, int s_y) { type = x; remains = y; width = w; height = h; starting_x = s_x; starting_y = s_y; int inc, newx, newy; if (type == 0) { inc = (int)(width/6); newx = starting_x + inc; newy = (int)((starting_y - height) + ((inc * 3) + (remains * .02))); r.x = newx; r.y = newy; r.width = (int)(width - (inc*2)); r.height = starting_y-newy; Arch.changeArc(newx,(int)(newy+2-((inc*2)+(remains * .02))),(int)(width -(inc*2)),(int)((inc * 4)+(remains * .04)),0,180); } if (type == 1) { if (remains <= 150) { r.x = 0; r.y = 0; r.width = 0; r.height = 0; Arch.changeArc (0, 0, 0, 0, 0, 180); } if ((remains >= 151) && (remains <= 325)) { single_window = (int)(((width-(width/3))/5)*2); newx = (int) (starting_x + (width/6)); newy = (int) (starting_y - (height - (single_window + (width/6) + (remains * .0005)))); r.x = newx; r.y = newy; r.width = single_window; r.height = starting_y-newy; Arch.changeArc(newx, (int)(newy - (single_window - (remains * .0005))), single_window, (int)((single_window*2) + (remains * .001)),0,180); } if ((remains >= 326) && (remains <= 500)) { single_window = (int)(((width-(width/3))/11)*2); newx = (int) (starting_x + (width/6)); newy = (int) (starting_y - (height - (single_window + (width/6) + (remains * .0005)))); r.x = newx; r.y = newy; r.width = single_window; r.height = starting_y-newy; Arch.changeArc (newx, (int)(newy - (single_window - (remains * .0005))), single_window, (int)((single_window*2) + (remains * .001)),0,180); } } if (type == 2) { inc = (int)(width/6); xfactor = (int)((width * .375)-(remains * .00832)); yfactor = (int)(remains * .04); newx = starting_x + xfactor; newy = (int) (starting_y - height + ((inc*3) + yfactor)); r.x = newx; r.y = newy; r.width = (int)(width - (xfactor *2)); r.height = starting_y-newy; Arch.changeArc (newx, (int)(newy-((width - (xfactor*2))/2)), (int)(width - (xfactor*2)),(int)((inc*2) + yfactor),0,180); } } // -----------------------End of Class ----------------------------------- }