⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 metado.java

📁 源码包含生成 PDF 和 HTML 的类库
💻 JAVA
📖 第 1 页 / 共 3 页
字号:
                }                case META_POLYLINE:                {                    state.setLineJoinPolygon(cb);                    int len = in.readWord();                    int x = in.readShort();                    int y = in.readShort();                    cb.moveTo(state.transformX(x), state.transformY(y));                    for (int k = 1; k < len; ++k) {                        x = in.readShort();                        y = in.readShort();                        cb.lineTo(state.transformX(x), state.transformY(y));                    }                    cb.stroke();                    break;                }                case META_POLYGON:                {                    if (isNullStrokeFill(false))                        break;                    int len = in.readWord();                    int sx = in.readShort();                    int sy = in.readShort();                    cb.moveTo(state.transformX(sx), state.transformY(sy));                    for (int k = 1; k < len; ++k) {                        int x = in.readShort();                        int y = in.readShort();                        cb.lineTo(state.transformX(x), state.transformY(y));                    }                    cb.lineTo(state.transformX(sx), state.transformY(sy));                    strokeAndFill();                    break;                }                case META_POLYPOLYGON:                {                    if (isNullStrokeFill(false))                        break;                    int numPoly = in.readWord();                    int lens[] = new int[numPoly];                    for (int k = 0; k < lens.length; ++k)                        lens[k] = in.readWord();                    for (int j = 0; j < lens.length; ++j) {                        int len = lens[j];                        int sx = in.readShort();                        int sy = in.readShort();                        cb.moveTo(state.transformX(sx), state.transformY(sy));                        for (int k = 1; k < len; ++k) {                            int x = in.readShort();                            int y = in.readShort();                            cb.lineTo(state.transformX(x), state.transformY(y));                        }                        cb.lineTo(state.transformX(sx), state.transformY(sy));                    }                    strokeAndFill();                    break;                }                case META_ELLIPSE:                {                    if (isNullStrokeFill(state.getLineNeutral()))                        break;                    int b = in.readShort();                    int r = in.readShort();                    int t = in.readShort();                    int l = in.readShort();                    cb.arc(state.transformX(l), state.transformY(b), state.transformX(r), state.transformY(t), 0, 360);                    strokeAndFill();                    break;                }                case META_ARC:                {                    if (isNullStrokeFill(state.getLineNeutral()))                        break;                    float yend = state.transformY(in.readShort());                    float xend = state.transformX(in.readShort());                    float ystart = state.transformY(in.readShort());                    float xstart = state.transformX(in.readShort());                    float b = state.transformY(in.readShort());                    float r = state.transformX(in.readShort());                    float t = state.transformY(in.readShort());                    float l = state.transformX(in.readShort());                    float cx = (r + l) / 2;                    float cy = (t + b) / 2;                    float arc1 = getArc(cx, cy, xstart, ystart);                    float arc2 = getArc(cx, cy, xend, yend);                    arc2 -= arc1;                    if (arc2 <= 0)                        arc2 += 360;                    cb.arc(l, b, r, t, arc1, arc2);                    cb.stroke();                    break;                }                case META_PIE:                {                    if (isNullStrokeFill(state.getLineNeutral()))                        break;                    float yend = state.transformY(in.readShort());                    float xend = state.transformX(in.readShort());                    float ystart = state.transformY(in.readShort());                    float xstart = state.transformX(in.readShort());                    float b = state.transformY(in.readShort());                    float r = state.transformX(in.readShort());                    float t = state.transformY(in.readShort());                    float l = state.transformX(in.readShort());                    float cx = (r + l) / 2;                    float cy = (t + b) / 2;                    float arc1 = getArc(cx, cy, xstart, ystart);                    float arc2 = getArc(cx, cy, xend, yend);                    arc2 -= arc1;                    if (arc2 <= 0)                        arc2 += 360;                    ArrayList ar = PdfContentByte.bezierArc(l, b, r, t, arc1, arc2);                    if (ar.isEmpty())                        break;                    float pt[] = (float [])ar.get(0);                    cb.moveTo(cx, cy);                    cb.lineTo(pt[0], pt[1]);                    for (int k = 0; k < ar.size(); ++k) {                        pt = (float [])ar.get(k);                        cb.curveTo(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);                    }                    cb.lineTo(cx, cy);                    strokeAndFill();                    break;                }                case META_CHORD:                {                    if (isNullStrokeFill(state.getLineNeutral()))                        break;                    float yend = state.transformY(in.readShort());                    float xend = state.transformX(in.readShort());                    float ystart = state.transformY(in.readShort());                    float xstart = state.transformX(in.readShort());                    float b = state.transformY(in.readShort());                    float r = state.transformX(in.readShort());                    float t = state.transformY(in.readShort());                    float l = state.transformX(in.readShort());                    float cx = (r + l) / 2;                    float cy = (t + b) / 2;                    float arc1 = getArc(cx, cy, xstart, ystart);                    float arc2 = getArc(cx, cy, xend, yend);                    arc2 -= arc1;                    if (arc2 <= 0)                        arc2 += 360;                    ArrayList ar = PdfContentByte.bezierArc(l, b, r, t, arc1, arc2);                    if (ar.isEmpty())                        break;                    float pt[] = (float [])ar.get(0);                    cx = pt[0];                    cy = pt[1];                    cb.moveTo(cx, cy);                    for (int k = 0; k < ar.size(); ++k) {                        pt = (float [])ar.get(k);                        cb.curveTo(pt[2], pt[3], pt[4], pt[5], pt[6], pt[7]);                    }                    cb.lineTo(cx, cy);                    strokeAndFill();                    break;                }                case META_RECTANGLE:                {                    if (isNullStrokeFill(true))                        break;                    float b = state.transformY(in.readShort());                    float r = state.transformX(in.readShort());                    float t = state.transformY(in.readShort());                    float l = state.transformX(in.readShort());                    cb.rectangle(l, b, r - l, t - b);                    strokeAndFill();                    break;                }                case META_ROUNDRECT:                {                    if (isNullStrokeFill(true))                        break;                    float h = state.transformY(0) - state.transformY(in.readShort());                    float w = state.transformX(in.readShort()) - state.transformX(0);                    float b = state.transformY(in.readShort());                    float r = state.transformX(in.readShort());                    float t = state.transformY(in.readShort());                    float l = state.transformX(in.readShort());                    cb.roundRectangle(l, b, r - l, t - b, (h + w) / 4);                    strokeAndFill();                    break;                }                case META_INTERSECTCLIPRECT:                {                    float b = state.transformY(in.readShort());                    float r = state.transformX(in.readShort());                    float t = state.transformY(in.readShort());                    float l = state.transformX(in.readShort());                    cb.rectangle(l, b, r - l, t - b);                    cb.eoClip();                    cb.newPath();                    break;                }                case META_EXTTEXTOUT:                {                    int y = in.readShort();                    int x = in.readShort();                    int count = in.readWord();                    int flag = in.readWord();                    int x1 = 0;                    int y1 = 0;                    int x2 = 0;                    int y2 = 0;                    if ((flag & (MetaFont.ETO_CLIPPED | MetaFont.ETO_OPAQUE)) != 0) {                        x1 = in.readShort();                        y1 = in.readShort();                        x2 = in.readShort();                        y2 = in.readShort();                    }                    byte text[] = new byte[count];                    int k;                    for (k = 0; k < count; ++k) {                        byte c = (byte)in.readByte();                        if (c == 0)                            break;                        text[k] = c;                    }                    String s;                    try {                        s = new String(text, 0, k, "Cp1252");                    }                    catch (UnsupportedEncodingException e) {                        s = new String(text, 0, k);                    }                    outputText(x, y, flag, x1, y1, x2, y2, s);                    break;                }                case META_TEXTOUT:                {                    int count = in.readWord();                    byte text[] = new byte[count];                    int k;                    for (k = 0; k < count; ++k) {                        byte c = (byte)in.readByte();                        if (c == 0)                            break;                        text[k] = c;                    }                    String s;                    try {                        s = new String(text, 0, k, "Cp1252");                    }                    catch (UnsupportedEncodingException e) {                        s = new String(text, 0, k);                    }                    count = (count + 1) & 0xfffe;                    in.skip(count - k);                    int y = in.readShort();                    int x = in.readShort();                    outputText(x, y, 0, 0, 0, 0, 0, s);                    break;                }                case META_SETBKCOLOR:                    state.setCurrentBackgroundColor(in.readColor());

⌨️ 快捷键说明

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