blueprintengineparser.java

来自「java jdk 1.4的源码」· Java 代码 · 共 1,111 行 · 第 1/3 页

JAVA
1,111
字号
                info.orientation = GTKConstants.HORIZONTAL;                break;            case SYM_VERTICAL:                info.orientation = GTKConstants.VERTICAL;                break;            default:                return SYM_HORIZONTAL;        }                return GTKScanner.TOKEN_NONE;    }    private int parseFile(String[] retVal) throws IOException {        int token;        token = scanner.getToken();                token = scanner.getToken();        if (token != GTKScanner.TOKEN_EQUAL_SIGN) {            return GTKScanner.TOKEN_EQUAL_SIGN;        }                token = scanner.getToken();        if (token != GTKScanner.TOKEN_STRING) {            return GTKScanner.TOKEN_STRING;        }        retVal[0] = parser.resolvePixmapPath(scanner.currValue.stringVal);        return GTKScanner.TOKEN_NONE;    }    private int parseStretch(boolean[] retVal) throws IOException {        int token;                token = scanner.getToken();                token = scanner.getToken();        if (token != GTKScanner.TOKEN_EQUAL_SIGN) {            return GTKScanner.TOKEN_EQUAL_SIGN;        }                token = scanner.getToken();        switch(token) {            case SYM_TRUE:                retVal[0] = true;                break;            case SYM_FALSE:                retVal[0] = false;                break;            default:                return SYM_TRUE;        }                return GTKScanner.TOKEN_NONE;    }    private int parseBorder(Insets[] retVal) throws IOException {        int left = 0;        int right = 0;        int top = 0;        int bottom = 0;                scanner.getToken();                if (scanner.getToken() != GTKScanner.TOKEN_EQUAL_SIGN) {            return GTKScanner.TOKEN_EQUAL_SIGN;        }                if (scanner.getToken() != GTKScanner.TOKEN_LEFT_CURLY) {            return GTKScanner.TOKEN_LEFT_CURLY;        }                if (scanner.getToken() != GTKScanner.TOKEN_INT) {            return GTKScanner.TOKEN_INT;        }                left = (int)scanner.currValue.longVal;                if (scanner.getToken() != GTKScanner.TOKEN_COMMA) {            return GTKScanner.TOKEN_COMMA;        }                if (scanner.getToken() != GTKScanner.TOKEN_INT) {            return GTKScanner.TOKEN_INT;        }                right = (int)scanner.currValue.longVal;                if (scanner.getToken() != GTKScanner.TOKEN_COMMA) {            return GTKScanner.TOKEN_COMMA;        }                if (scanner.getToken() != GTKScanner.TOKEN_INT) {            return GTKScanner.TOKEN_INT;        }                top = (int)scanner.currValue.longVal;                if (scanner.getToken() != GTKScanner.TOKEN_COMMA) {            return GTKScanner.TOKEN_COMMA;        }                if (scanner.getToken() != GTKScanner.TOKEN_INT) {            return GTKScanner.TOKEN_INT;        }                bottom = (int)scanner.currValue.longVal;                if (scanner.getToken() != GTKScanner.TOKEN_RIGHT_CURLY) {            return GTKScanner.TOKEN_RIGHT_CURLY;        }        retVal[0] = new Insets(top, left, bottom, right);        return GTKScanner.TOKEN_NONE;    }    private int parseColorizeColor(Color[] retVal) throws IOException {        int token;        scanner.getToken();                token = scanner.getToken();        if (token != GTKScanner.TOKEN_EQUAL_SIGN) {            return GTKScanner.TOKEN_EQUAL_SIGN;        }                token = scanner.getToken();        switch(token) {            case GTKScanner.TOKEN_LEFT_CURLY:                int red;                int green;                int blue;                int alpha = 255;                token = scanner.getToken();                if (token == GTKScanner.TOKEN_INT) {                    red = intColorVal(scanner.currValue.longVal);                } else if (token == GTKScanner.TOKEN_FLOAT) {                    red = intColorVal(scanner.currValue.doubleVal);                } else {                    return GTKScanner.TOKEN_FLOAT;                }                                token = scanner.getToken();                if (token != GTKScanner.TOKEN_COMMA) {                    return GTKScanner.TOKEN_COMMA;                }                token = scanner.getToken();                if (token == GTKScanner.TOKEN_INT) {                    green = intColorVal(scanner.currValue.longVal);                } else if (token == GTKScanner.TOKEN_FLOAT) {                    green = intColorVal(scanner.currValue.doubleVal);                } else {                    return GTKScanner.TOKEN_FLOAT;                }                token = scanner.getToken();                if (token != GTKScanner.TOKEN_COMMA) {                    return GTKScanner.TOKEN_COMMA;                }                token = scanner.getToken();                if (token == GTKScanner.TOKEN_INT) {                    blue = intColorVal(scanner.currValue.longVal);                } else if (token == GTKScanner.TOKEN_FLOAT) {                    blue = intColorVal(scanner.currValue.doubleVal);                } else {                    return GTKScanner.TOKEN_FLOAT;                }                token = scanner.getToken();                if (token == GTKScanner.TOKEN_COMMA) {                    token = scanner.getToken();                    if (token == GTKScanner.TOKEN_INT) {                        alpha = intColorVal(scanner.currValue.longVal);                    } else if (token == GTKScanner.TOKEN_FLOAT) {                        alpha = intColorVal(scanner.currValue.doubleVal);                    } else {                        return GTKScanner.TOKEN_FLOAT;                    }                                        token = scanner.getToken();                }                if (token != GTKScanner.TOKEN_RIGHT_CURLY) {                    return GTKScanner.TOKEN_RIGHT_CURLY;                }                retVal[0] = new Color(red, green, blue, alpha);                break;            case GTKScanner.TOKEN_STRING:                Color color = parseColorString(scanner.currValue.stringVal);                if (color == null) {                    scanner.printMessage("Invalid color constant '" +                                              scanner.currValue.stringVal                                              + "'", false);                    return GTKScanner.TOKEN_STRING;                }                retVal[0] = color;                break;            default:                return GTKScanner.TOKEN_STRING;        }                return GTKScanner.TOKEN_NONE;    }    private static Color parseColorString(String str) {        if (str.charAt(0) == '#') {            str = str.substring(1);            int i = str.length();            if (i < 3 || i > 12 || (i % 3) != 0) {                return null;            }            i /= 3;            int r;            int g;            int b;            try {                r = Integer.parseInt(str.substring(0, i), 16);                g = Integer.parseInt(str.substring(i, i * 2), 16);                b = Integer.parseInt(str.substring(i * 2, i * 3), 16);            } catch (NumberFormatException nfe) {                return null;            }            if (i == 4) {                return new Color(r / 65535.0f, g / 65535.0f, b / 65535.0f);            } else if (i == 1) {                return new Color(r / 15.0f, g / 15.0f, b / 15.0f);            } else if (i == 2) {                return new Color(r, g, b);            } else {                return new Color(r / 4095.0f, g / 4095.0f, b / 4095.0f);            }        } else {            return XColors.lookupColor(str);        }    }    private static int intColorVal(long col) {        int color = (int)Math.max(Math.min(col, 255), 0);        return color;    }    private static int intColorVal(double col) {        float color = (float)Math.max(Math.min(col, 1.0f), 0.0f);        return (int)(color * 255);    }    private int parseIconColorize(BlueprintEngineInfo engineInfo) throws IOException {        int token;        token = scanner.getToken();        if (token != SYM_ICON_COLORIZE) {            return SYM_ICON_COLORIZE;        }        token = scanner.getToken();        if (token != GTKScanner.TOKEN_EQUAL_SIGN) {            return GTKScanner.TOKEN_EQUAL_SIGN;        }        token = scanner.getToken();        if (token == SYM_TRUE) {            engineInfo.iconColorize = true;        } else if (token == SYM_FALSE) {            engineInfo.iconColorize = false;        } else {            return SYM_TRUE;        }        return GTKScanner.TOKEN_NONE;    }    /**     * Helper method for parsing string list assignments such as the following:     * = {"FOO", "BAR", "SJH"}     * The scanner is expected to start returning tokens at the equal sign when     * this method is invoked. It will parse the strings in the list into the     * given <code>ArrayList</code> parameter.     *     * NOTE: The <code>Strings</code> that are added to the     *       <code>ArrayList</code> will have been <code>intern()</code>ed     *       first.     *     * @return  <code>GTKScanner.TOKEN_NONE</code> if the parse was successful,     *          otherwise the token that was expected but not received.     */    private int parseStringList(ArrayList list) throws IOException {        int token;        token = scanner.getToken();        if (token != GTKScanner.TOKEN_EQUAL_SIGN) {            return GTKScanner.TOKEN_EQUAL_SIGN;        }        token = scanner.getToken();        if (token != GTKScanner.TOKEN_LEFT_CURLY) {            return GTKScanner.TOKEN_LEFT_CURLY;        }                token = scanner.getToken();        while (token == GTKScanner.TOKEN_STRING) {            list.add(scanner.currValue.stringVal.intern());                        token = scanner.getToken();                        if (token == GTKScanner.TOKEN_RIGHT_CURLY) {                continue;            }                        if (token != GTKScanner.TOKEN_COMMA) {                return GTKScanner.TOKEN_COMMA;            }                        token = scanner.getToken();        }                if (token != GTKScanner.TOKEN_RIGHT_CURLY) {            return GTKScanner.TOKEN_RIGHT_CURLY;        }                return GTKScanner.TOKEN_NONE;    }    private int parseUseAsBkgMask(BlueprintStyle.Info info) throws IOException {        int token;        token = scanner.getToken();        if (token != SYM_USE_AS_BKG_MASK) {            return SYM_USE_AS_BKG_MASK;        }        token = scanner.getToken();        if (token != GTKScanner.TOKEN_EQUAL_SIGN) {            return GTKScanner.TOKEN_EQUAL_SIGN;        }        token = scanner.getToken();        switch(token) {            case SYM_TRUE:                info.useAsBkgMask = true;                break;            case SYM_FALSE:                info.useAsBkgMask = false;                break;            default:                return SYM_TRUE;        }                return GTKScanner.TOKEN_NONE;    }}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?