diff options
Diffstat (limited to 'NET/worlds/console/GammaFrameState.java')
| -rw-r--r-- | NET/worlds/console/GammaFrameState.java | 267 |
1 files changed, 267 insertions, 0 deletions
diff --git a/NET/worlds/console/GammaFrameState.java b/NET/worlds/console/GammaFrameState.java new file mode 100644 index 0000000..d0bcca9 --- /dev/null +++ b/NET/worlds/console/GammaFrameState.java @@ -0,0 +1,267 @@ +/* */ 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 + */
\ No newline at end of file |