protected void parseViewAttributes()

in batik-parser/src/main/java/org/apache/batik/parser/FragmentIdentifierParser.java [258:758]


    protected void parseViewAttributes() throws ParseException, IOException {
        boolean first = true;
        loop: for (;;) {
            switch (current) {
            case -1:
            case ')':
                if (first) {
                    reportUnexpectedCharacterError( current );
                    break loop;
                }
                // fallthrough
            default:
                break loop;
            case ';':
                if (first) {
                    reportUnexpectedCharacterError( current );
                    break loop;
                }
                current = reader.read();
                break;
            case 'v':
                first = false;
                current = reader.read();
                if (current != 'i') {
                    reportCharacterExpectedError( 'i', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'e') {
                    reportCharacterExpectedError( 'e', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'w') {
                    reportCharacterExpectedError( 'w', current );
                    break loop;
                }
                current = reader.read();

                switch (current) {
                case 'B':
                    current = reader.read();
                    if (current != 'o') {
                        reportCharacterExpectedError( 'o', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'x') {
                        reportCharacterExpectedError( 'x', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != '(') {
                        reportCharacterExpectedError( '(', current );
                        break loop;
                    }
                    current = reader.read();

                    float x = parseFloat();
                    if (current != ',') {
                        reportCharacterExpectedError( ',', current );
                        break loop;
                    }
                    current = reader.read();

                    float y = parseFloat();
                    if (current != ',') {
                        reportCharacterExpectedError( ',', current );
                        break loop;
                    }
                    current = reader.read();

                    float w = parseFloat();
                    if (current != ',') {
                        reportCharacterExpectedError( ',', current );
                        break loop;
                    }
                    current = reader.read();

                    float h = parseFloat();
                    if (current != ')') {
                        reportCharacterExpectedError( ')', current );
                        break loop;
                    }
                    current = reader.read();
                    fragmentIdentifierHandler.viewBox(x, y, w, h);
                    if (current != ')' && current != ';') {
                        reportCharacterExpectedError( ')', current );
                        break loop;
                    }
                    break;

                case 'T':
                    current = reader.read();
                    if (current != 'a') {
                        reportCharacterExpectedError( 'a', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'r') {
                        reportCharacterExpectedError( 'r', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'g') {
                        reportCharacterExpectedError( 'g', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'e') {
                        reportCharacterExpectedError( 'e', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 't') {
                        reportCharacterExpectedError( 't', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != '(') {
                        reportCharacterExpectedError( '(', current );
                        break loop;
                    }
                    current = reader.read();

                    fragmentIdentifierHandler.startViewTarget();

                    id: for (;;) {
                        bufferSize = 0;
                        if (current == -1 ||
                            !XMLUtilities.isXMLNameFirstCharacter((char)current)) {
                            reportUnexpectedCharacterError( current );
                            break loop;
                        }
                        bufferize();
                        current = reader.read();
                        parseIdentifier();
                        String s = getBufferContent();

                        fragmentIdentifierHandler.viewTarget(s);

                        bufferSize = 0;
                        switch (current) {
                        case ')':
                            current = reader.read();
                            break id;
                        case ',':
                        case ';':
                            current = reader.read();
                            break;
                        default:
                            reportUnexpectedCharacterError( current );
                            break loop;
                        }
                    }

                    fragmentIdentifierHandler.endViewTarget();
                    break;

                default:
                    reportUnexpectedCharacterError( current );
                    break loop;
                }
                break;
            case 'p':
                first = false;
                current = reader.read();
                if (current != 'r') {
                    reportCharacterExpectedError( 'r', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'e') {
                    reportCharacterExpectedError( 'e', current );
                    break loop;
                }
                current = reader.read();
                if (current != 's') {
                    reportCharacterExpectedError( 's', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'e') {
                    reportCharacterExpectedError( 'e', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'r') {
                    reportCharacterExpectedError( 'r', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'v') {
                    reportCharacterExpectedError( 'v', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'e') {
                    reportCharacterExpectedError( 'e', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'A') {
                    reportCharacterExpectedError( 'A', current );
                    break loop;
                }
                current = reader.read();
                if (current != 's') {
                    reportCharacterExpectedError( 's', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'p') {
                    reportCharacterExpectedError( 'p', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'e') {
                    reportCharacterExpectedError( 'e', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'c') {
                    reportCharacterExpectedError( 'c', current );
                    break loop;
                }
                current = reader.read();
                if (current != 't') {
                    reportCharacterExpectedError( 't', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'R') {
                    reportCharacterExpectedError( 'R', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'a') {
                    reportCharacterExpectedError( 'a', current );
                    break loop;
                }
                current = reader.read();
                if (current != 't') {
                    reportCharacterExpectedError( 't', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'i') {
                    reportCharacterExpectedError( 'i', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'o') {
                    reportCharacterExpectedError( 'o', current );
                    break loop;
                }
                current = reader.read();
                if (current != '(') {
                    reportCharacterExpectedError( '(', current );
                    break loop;
                }
                current = reader.read();

                parsePreserveAspectRatio();

                if (current != ')') {
                    reportCharacterExpectedError( ')', current );
                    break loop;
                }
                current = reader.read();
                break;

            case 't':
                first = false;
                current = reader.read();
                if (current != 'r') {
                    reportCharacterExpectedError( 'r', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'a') {
                    reportCharacterExpectedError( 'a', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'n') {
                    reportCharacterExpectedError( 'n', current );
                    break loop;
                }
                current = reader.read();
                if (current != 's') {
                    reportCharacterExpectedError( 's', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'f') {
                    reportCharacterExpectedError( 'f', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'o') {
                    reportCharacterExpectedError( 'o', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'r') {
                    reportCharacterExpectedError( 'r', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'm') {
                    reportCharacterExpectedError( 'm', current );
                    break loop;
                }
                current = reader.read();
                if (current != '(') {
                    reportCharacterExpectedError( '(', current );
                    break loop;
                }

                fragmentIdentifierHandler.startTransformList();

                tloop: for (;;) {
                    try {
                        current = reader.read();
                        switch (current) {
                        case ',':
                            break;
                        case 'm':
                            parseMatrix();
                            break;
                        case 'r':
                            parseRotate();
                            break;
                        case 't':
                            parseTranslate();
                            break;
                        case 's':
                            current = reader.read();
                            switch (current) {
                            case 'c':
                                parseScale();
                                break;
                            case 'k':
                                parseSkew();
                                break;
                            default:
                                reportUnexpectedCharacterError( current );
                                skipTransform();
                            }
                            break;
                        default:
                            break tloop;
                        }
                    } catch (ParseException e) {
                        errorHandler.error(e);
                        skipTransform();
                    }
                }

                fragmentIdentifierHandler.endTransformList();
                break;

            case 'z':
                first = false;
                current = reader.read();
                if (current != 'o') {
                    reportCharacterExpectedError( 'o', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'o') {
                    reportCharacterExpectedError( 'o', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'm') {
                    reportCharacterExpectedError( 'm', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'A') {
                    reportCharacterExpectedError( 'A', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'n') {
                    reportCharacterExpectedError( 'n', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'd') {
                    reportCharacterExpectedError( 'd', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'P') {
                    reportCharacterExpectedError( 'P', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'a') {
                    reportCharacterExpectedError( 'a', current );
                    break loop;
                }
                current = reader.read();
                if (current != 'n') {
                    reportCharacterExpectedError( 'n', current );
                    break loop;
                }
                current = reader.read();
                if (current != '(') {
                    reportCharacterExpectedError( '(', current );
                    break loop;
                }
                current = reader.read();

                switch (current) {
                case 'm':
                    current = reader.read();
                    if (current != 'a') {
                        reportCharacterExpectedError( 'a', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'g') {
                        reportCharacterExpectedError( 'g', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'n') {
                        reportCharacterExpectedError( 'n', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'i') {
                        reportCharacterExpectedError( 'i', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'f') {
                        reportCharacterExpectedError( 'f', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'y') {
                        reportCharacterExpectedError( 'y', current );
                        break loop;
                    }
                    current = reader.read();
                    fragmentIdentifierHandler.zoomAndPan(true);
                    break;

                case 'd':
                    current = reader.read();
                    if (current != 'i') {
                        reportCharacterExpectedError( 'i', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 's') {
                        reportCharacterExpectedError( 's', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'a') {
                        reportCharacterExpectedError( 'a', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'b') {
                        reportCharacterExpectedError( 'b', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'l') {
                        reportCharacterExpectedError( 'l', current );
                        break loop;
                    }
                    current = reader.read();
                    if (current != 'e') {
                        reportCharacterExpectedError( 'e', current );
                        break loop;
                    }
                    current = reader.read();
                    fragmentIdentifierHandler.zoomAndPan(false);
                    break;

                default:
                    reportUnexpectedCharacterError( current );
                    break loop;
                }

                if (current != ')') {
                    reportCharacterExpectedError( ')', current );
                    break loop;
                }
                current = reader.read();
            }
        }
    }