summaryrefslogtreecommitdiff
path: root/NET/worlds/console/GammaFrameState.java
diff options
context:
space:
mode:
authorFuwn <[email protected]>2021-05-03 16:38:41 -0700
committerFuwn <[email protected]>2021-05-03 16:38:41 -0700
commite1e781bb2135ef78592226f1a3eaba4925702f1f (patch)
tree8a5b590463ed413e1c6eabb719130e701b95ca63 /NET/worlds/console/GammaFrameState.java
downloadworlds.jar-e1e781bb2135ef78592226f1a3eaba4925702f1f.tar.xz
worlds.jar-e1e781bb2135ef78592226f1a3eaba4925702f1f.zip
:star:HEADmain
Diffstat (limited to 'NET/worlds/console/GammaFrameState.java')
-rw-r--r--NET/worlds/console/GammaFrameState.java267
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