/* */ package NET.worlds.console; /* */ /* */ import NET.worlds.core.IniFile; /* */ import java.awt.Dimension; /* */ import java.awt.Point; /* */ import java.awt.Toolkit; /* */ import java.util.StringTokenizer; /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ /* */ public class GammaFrameState /* */ implements MainCallback /* */ { /* */ private static final int defaultWidth = 568; /* */ private static final int defaultHeight = 424; /* */ private static final int minimumWidth = 142; /* */ private static final int minimumHeight = 106; /* 36 */ private static int[] frameState = new int[5]; /* */ private static GammaFrame frame; /* */ private static int handle; /* */ private static String borderKey; /* */ private static final String layoutKey = "ShaperLayout"; /* */ private static final String modeKey = "ChangeVideoMode"; /* */ private static final float scale = 100.0F; /* */ private boolean initMaximized; /* */ private int[] videoMode; /* */ /* */ GammaFrameState(GammaFrame f) /* */ { /* 48 */ frame = f; /* 49 */ if (borderKey == null) /* 50 */ borderKey = Gamma.shaperEnabled() ? "ShaperWindow" : "Window"; /* 51 */ restoreBorder(); /* */ /* 53 */ int[] mode = new int[2]; /* 54 */ if (strToInts(IniFile.gamma().getIniString("ChangeVideoMode", ""), mode) == 2) /* 55 */ this.videoMode = mode; /* 56 */ Main.register(this); /* */ } /* */ /* */ public static void saveBorder() { /* */ int state; /* 61 */ if ((handle != 0) && (!isIconic(state = getFrameState()))) /* */ { /* 63 */ Point loc = frame.getLocation(); /* */ /* */ /* */ /* 67 */ Dimension size = new Dimension(Window.getWindowWidth(handle), /* 68 */ Window.getWindowHeight(handle)); /* 69 */ int[] newState = new int[frameState.length]; /* */ /* */ /* 72 */ if (!isMaximized(newState[4] = state)) { /* 73 */ newState[0] = loc.x; /* 74 */ newState[1] = loc.y; /* 75 */ newState[2] = size.width; /* 76 */ newState[3] = size.height; /* */ } else { /* 78 */ for (int i = 0; i < 4; i++) /* 79 */ newState[i] = frameState[i]; /* */ } /* 81 */ for (int i = 0; i < frameState.length; i++) /* 82 */ if (newState[i] != frameState[i]) { /* 83 */ IniFile.gamma().setIniString(makeKey(borderKey), /* 84 */ intsToStr(frameState = newState)); /* 85 */ break; /* */ } /* */ } /* */ } /* */ /* */ private void restoreBorder() { /* 91 */ if (strToInts(IniFile.gamma().getIniString(makeKey(borderKey), ""), /* 92 */ frameState) == 5) { /* 93 */ if ((frameState[0] < 0) || (frameState[2] < 142) || /* 94 */ (frameState[1] < 0) || (frameState[3] < 106)) { /* 95 */ makeDefaultBorder(); /* */ } else { /* 97 */ if (isMaximized(frameState[4])) { /* 98 */ this.initMaximized = true; /* */ } else { /* 100 */ frameState[4] = 0; /* 101 */ this.initMaximized = false; /* */ } /* */ /* 104 */ frame.setBounds(frameState[0], frameState[1], frameState[2], /* 105 */ frameState[3]); /* */ } /* */ } else { /* 108 */ makeDefaultBorder(); /* */ } /* */ } /* */ /* */ private void makeDefaultBorder() { /* 113 */ Dimension size = getScreenSize(); /* */ /* 115 */ int dx = size.width - 568; /* 116 */ int dy = size.height - 424; /* */ /* 118 */ if (dx <= 0) { /* 119 */ dx = 0; /* */ } else { /* 121 */ dx /= 2; /* */ } /* 123 */ if (dy <= 0) { /* 124 */ dy = 0; /* */ } else { /* 126 */ dy /= 2; /* */ } /* 128 */ frameState[0] = dx; /* 129 */ frameState[1] = dy; /* 130 */ frameState[2] = 568; /* 131 */ frameState[3] = 424; /* 132 */ frameState[4] = 0; /* */ /* 134 */ this.initMaximized = false; /* */ /* 136 */ frame.setBounds(dx, dy, 568, 424); /* */ } /* */ /* */ public static void saveLayout(int[] layout, float[] divider, boolean oneTile) { /* 140 */ IniFile.gamma().setIniString( /* 141 */ makeKey("ShaperLayout"), /* 142 */ intsToStr(layout) + " " + floatsToStr(divider) + " " + ( /* 143 */ oneTile ? "0" : "1")); /* */ } /* */ /* */ /* */ /* */ /* */ /* */ public static boolean restoreLayout(int[] argLayout, float[] argDivider) /* */ { /* 152 */ int[] layout = new int[argLayout.length]; /* 153 */ float[] divider = new float[argDivider.length]; /* 154 */ int[] tmp = new int[layout.length + divider.length + 1]; /* */ /* */ /* 157 */ tmp[(layout.length + divider.length)] = 0; /* */ /* */ /* 160 */ if (strToInts(IniFile.gamma().getIniString(makeKey("ShaperLayout"), ""), tmp) >= layout.length + divider.length) { /* 161 */ int[] used = new int[layout.length]; /* 162 */ for (int i = 0; i < layout.length; i++) { /* */ try { /* 164 */ used[(layout[i] = tmp[i])] += 1; /* */ } catch (ArrayIndexOutOfBoundsException e) { /* 166 */ return true; /* */ } /* */ } /* 169 */ for (int i = 0; i < layout.length; i++) /* 170 */ if (used[i] != 1) /* 171 */ return true; /* 172 */ for (int i = 0; i < divider.length; i++) { /* 173 */ float f = tmp[(i + layout.length)] / 100.0F; /* 174 */ if ((f < 0.0F) || (f > 1.0F)) /* 175 */ return true; /* 176 */ divider[i] = f; /* */ } /* 178 */ System.arraycopy(layout, 0, argLayout, 0, argLayout.length); /* 179 */ System.arraycopy(divider, 0, argDivider, 0, argDivider.length); /* */ /* 181 */ return tmp[(layout.length + divider.length)] == 0; /* */ } /* */ /* 184 */ return true; /* */ } /* */ /* */ private static int getFrameState() { /* 188 */ return Window.getWindowState(handle); /* */ } /* */ /* */ public static boolean isIconic() { /* 192 */ if (handle != 0) /* 193 */ return isIconic(getFrameState()); /* 194 */ return false; /* */ } /* */ /* */ private static boolean isIconic(int state) { /* 198 */ return state == 1; /* */ } /* */ /* */ private static boolean isMaximized(int state) { /* 202 */ return state == 2; /* */ } /* */ /* */ private static Dimension getScreenSize() { /* 206 */ return Toolkit.getDefaultToolkit().getScreenSize(); /* */ } /* */ /* */ private static String makeKey(String prefix) { /* 210 */ Dimension screenSize = getScreenSize(); /* 211 */ return prefix + screenSize.width + "X" + screenSize.height; /* */ } /* */ /* */ private static String intsToStr(int[] arr) { /* 215 */ String s = arr[0]; /* 216 */ for (int i = 1; i < arr.length; i++) /* 217 */ s = s + " " + arr[i]; /* 218 */ return s; /* */ } /* */ /* */ private static String floatsToStr(float[] arr) { /* 222 */ int[] iarr = new int[arr.length]; /* 223 */ for (int i = 0; i < arr.length; i++) /* 224 */ iarr[i] = ((int)(arr[i] * 100.0F)); /* 225 */ return intsToStr(iarr); /* */ } /* */ /* */ /* */ /* */ /* */ private static int strToInts(String s, int[] arr) /* */ { /* 233 */ if (s == null) { /* 234 */ return 0; /* */ } /* 236 */ StringTokenizer tok = new StringTokenizer(s, " "); /* */ /* 238 */ for (int i = 0; i < arr.length; i++) { /* 239 */ if (!tok.hasMoreTokens()) /* */ break; /* */ try { /* 242 */ arr[i] = Integer.parseInt(tok.nextToken()); /* */ } catch (NumberFormatException e) { /* */ break; /* */ } /* */ } /* 247 */ return i; /* */ } /* */ /* */ public void mainCallback() { /* 251 */ handle = Window.findWindow(frame.getTitle()); /* 252 */ if (handle != 0) { /* 253 */ if (this.videoMode != null) { /* 254 */ Window.setVideoMode(handle, this.videoMode[0], this.videoMode[1]); /* 255 */ } else if (this.initMaximized) /* 256 */ Window.setWindowState(handle, /* 257 */ 2); /* 258 */ Main.unregister(this); /* */ } /* */ } /* */ } /* Location: C:\Program Files (x86)\Worlds Inc\WorldsPlayer - Win7\lib\worlds.jar!\NET\worlds\console\GammaFrameState.class * Java compiler version: 6 (50.0) * JD-Core Version: 0.7.1 */