?? metado.java
字號:
/* * $Id: MetaDo.java,v 1.18 2002/11/19 08:33:39 blowagie Exp $ * $Name: $ * * Copyright 2001, 2002 Paulo Soares * * The contents of this file are subject to the Mozilla Public License Version 1.1 * (the "License"); you may not use this file except in compliance with the License. * You may obtain a copy of the License at http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the License. * * The Original Code is 'iText, a free JAVA-PDF library'. * * The Initial Developer of the Original Code is Bruno Lowagie. Portions created by * the Initial Developer are Copyright (C) 1999, 2000, 2001, 2002 by Bruno Lowagie. * All Rights Reserved. * Co-Developer of the code is Paulo Soares. Portions created by the Co-Developer * are Copyright (C) 2000, 2001, 2002 by Paulo Soares. All Rights Reserved. * * Contributor(s): all the names of the contributors are added in the source code * where applicable. * * Alternatively, the contents of this file may be used under the terms of the * LGPL license (the "GNU LIBRARY GENERAL PUBLIC LICENSE"), in which case the * provisions of LGPL are applicable instead of those above. If you wish to * allow use of your version of this file only under the terms of the LGPL * License and not to allow others to use your version of this file under * the MPL, indicate your decision by deleting the provisions above and * replace them with the notice and other provisions required by the LGPL. * If you do not delete the provisions above, a recipient may use your version * of this file under either the MPL or the GNU LIBRARY GENERAL PUBLIC LICENSE. * * This library is free software; you can redistribute it and/or modify it * under the terms of the MPL as stated above or under the terms of the GNU * Library General Public License as published by the Free Software Foundation; * either version 2 of the License, or any later version. * * This library is distributed in the hope that it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS * FOR A PARTICULAR PURPOSE. See the GNU Library general Public License for more * details. * * If you didn't download this code from the following link, you should check if * you aren't using an obsolete version: * http://www.lowagie.com/iText/ */package com.lowagie.text.pdf.wmf;import java.io.*;import com.lowagie.text.pdf.*;import com.lowagie.text.*;import java.awt.Point;import java.awt.Color;import java.util.ArrayList;public class MetaDo { public static final int META_SETBKCOLOR = 0x0201; public static final int META_SETBKMODE = 0x0102; public static final int META_SETMAPMODE = 0x0103; public static final int META_SETROP2 = 0x0104; public static final int META_SETRELABS = 0x0105; public static final int META_SETPOLYFILLMODE = 0x0106; public static final int META_SETSTRETCHBLTMODE = 0x0107; public static final int META_SETTEXTCHAREXTRA = 0x0108; public static final int META_SETTEXTCOLOR = 0x0209; public static final int META_SETTEXTJUSTIFICATION = 0x020A; public static final int META_SETWINDOWORG = 0x020B; public static final int META_SETWINDOWEXT = 0x020C; public static final int META_SETVIEWPORTORG = 0x020D; public static final int META_SETVIEWPORTEXT = 0x020E; public static final int META_OFFSETWINDOWORG = 0x020F; public static final int META_SCALEWINDOWEXT = 0x0410; public static final int META_OFFSETVIEWPORTORG = 0x0211; public static final int META_SCALEVIEWPORTEXT = 0x0412; public static final int META_LINETO = 0x0213; public static final int META_MOVETO = 0x0214; public static final int META_EXCLUDECLIPRECT = 0x0415; public static final int META_INTERSECTCLIPRECT = 0x0416; public static final int META_ARC = 0x0817; public static final int META_ELLIPSE = 0x0418; public static final int META_FLOODFILL = 0x0419; public static final int META_PIE = 0x081A; public static final int META_RECTANGLE = 0x041B; public static final int META_ROUNDRECT = 0x061C; public static final int META_PATBLT = 0x061D; public static final int META_SAVEDC = 0x001E; public static final int META_SETPIXEL = 0x041F; public static final int META_OFFSETCLIPRGN = 0x0220; public static final int META_TEXTOUT = 0x0521; public static final int META_BITBLT = 0x0922; public static final int META_STRETCHBLT = 0x0B23; public static final int META_POLYGON = 0x0324; public static final int META_POLYLINE = 0x0325; public static final int META_ESCAPE = 0x0626; public static final int META_RESTOREDC = 0x0127; public static final int META_FILLREGION = 0x0228; public static final int META_FRAMEREGION = 0x0429; public static final int META_INVERTREGION = 0x012A; public static final int META_PAINTREGION = 0x012B; public static final int META_SELECTCLIPREGION = 0x012C; public static final int META_SELECTOBJECT = 0x012D; public static final int META_SETTEXTALIGN = 0x012E; public static final int META_CHORD = 0x0830; public static final int META_SETMAPPERFLAGS = 0x0231; public static final int META_EXTTEXTOUT = 0x0a32; public static final int META_SETDIBTODEV = 0x0d33; public static final int META_SELECTPALETTE = 0x0234; public static final int META_REALIZEPALETTE = 0x0035; public static final int META_ANIMATEPALETTE = 0x0436; public static final int META_SETPALENTRIES = 0x0037; public static final int META_POLYPOLYGON = 0x0538; public static final int META_RESIZEPALETTE = 0x0139; public static final int META_DIBBITBLT = 0x0940; public static final int META_DIBSTRETCHBLT = 0x0b41; public static final int META_DIBCREATEPATTERNBRUSH = 0x0142; public static final int META_STRETCHDIB = 0x0f43; public static final int META_EXTFLOODFILL = 0x0548; public static final int META_DELETEOBJECT = 0x01f0; public static final int META_CREATEPALETTE = 0x00f7; public static final int META_CREATEPATTERNBRUSH = 0x01F9; public static final int META_CREATEPENINDIRECT = 0x02FA; public static final int META_CREATEFONTINDIRECT = 0x02FB; public static final int META_CREATEBRUSHINDIRECT = 0x02FC; public static final int META_CREATEREGION = 0x06FF; public PdfContentByte cb; public InputMeta in; int left; int top; int right; int bottom; int inch; MetaState state = new MetaState(); public MetaDo(InputStream in, PdfContentByte cb) { this.cb = cb; this.in = new InputMeta(in); } public void readAll() throws IOException, DocumentException{ if (in.readInt() != 0x9AC6CDD7) { throw new DocumentException("Not a placeable windows metafile"); } in.readWord(); left = in.readShort(); top = in.readShort(); right = in.readShort(); bottom = in.readShort(); inch = in.readWord(); state.setScalingX((float)(right - left) / (float)inch * 72f); state.setScalingY((float)(bottom - top) / (float)inch * 72f); state.setOffsetWx(left); state.setOffsetWy(top); state.setExtentWx(right - left); state.setExtentWy(bottom - top); in.readInt(); in.readWord(); in.skip(18); int tsize; int function; cb.setLineCap(1); cb.setLineJoin(1); for (;;) { int lenMarker = in.getLength(); tsize = in.readInt(); if (tsize < 3) break; function = in.readWord(); switch (function) { case 0: break; case META_CREATEPALETTE: case META_CREATEREGION: case META_DIBCREATEPATTERNBRUSH: state.addMetaObject(new MetaObject()); break; case META_CREATEPENINDIRECT: { MetaPen pen = new MetaPen(); pen.init(in); state.addMetaObject(pen); break; } case META_CREATEBRUSHINDIRECT: { MetaBrush brush = new MetaBrush(); brush.init(in); state.addMetaObject(brush); break; } case META_CREATEFONTINDIRECT: { MetaFont font = new MetaFont(); font.init(in); state.addMetaObject(font); break; } case META_SELECTOBJECT: { int idx = in.readWord(); state.selectMetaObject(idx, cb); break; } case META_DELETEOBJECT: { int idx = in.readWord(); state.deleteMetaObject(idx); break; } case META_SAVEDC: state.saveState(cb); break; case META_RESTOREDC: { int idx = in.readShort(); state.restoreState(idx, cb); break; } case META_SETWINDOWORG: state.setOffsetWy(in.readShort()); state.setOffsetWx(in.readShort()); break; case META_SETWINDOWEXT: state.setExtentWy(in.readShort()); state.setExtentWx(in.readShort()); break; case META_MOVETO: { int y = in.readShort(); Point p = new Point(in.readShort(), y); state.setCurrentPoint(p); break; } case META_LINETO: { int y = in.readShort(); int x = in.readShort(); Point p = state.getCurrentPoint(); cb.moveTo(state.transformX(p.x), state.transformY(p.y)); cb.lineTo(state.transformX(x), state.transformY(y)); cb.stroke(); state.setCurrentPoint(new Point(x, y)); break; } 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();
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -