Package org.geotools.data.dxf.entities

Source Code of org.geotools.data.dxf.entities.DXFSpLine

package org.geotools.data.dxf.entities;

import java.io.EOFException;
import java.util.Vector;
import org.geotools.data.dxf.parser.DXFLineNumberReader;
import java.io.IOException;

import org.geotools.data.GeometryType;
import org.geotools.data.dxf.parser.DXFUnivers;
import org.geotools.data.dxf.header.DXFLayer;
import org.geotools.data.dxf.header.DXFTables;
import org.geotools.data.dxf.header.DXFLineType;
import org.geotools.data.dxf.parser.DXFCodeValuePair;
import org.geotools.data.dxf.parser.DXFGroupCode;
import org.geotools.data.dxf.parser.DXFParseException;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
*
*
* @source $URL$
*/
public class DXFSpLine extends DXFPolyline {

    private static final Log log = LogFactory.getLog(DXFSpLine.class);
    public DXFPoint _a = new DXFPoint();
    public DXFPoint _b = new DXFPoint();

    public DXFSpLine(DXFPolyline newPolyLine) {
        super(newPolyLine);
        setName("DXFSpLine");
    }

    public DXFSpLine(String name, int flag, int c, DXFLayer l, Vector<DXFVertex> v, int visibility, DXFLineType lineType, double thickness) {
        super(name, flag, c, l, v, visibility, lineType, thickness);
        setName("DXFSpLine");
    }
    public DXFSpLine(String name, int flag, int c, DXFLayer l, Vector<DXFVertex> v, int visibility, DXFLineType lineType, double thickness, DXFExtendedData extData) {
      super(name, flag, c, l, v, visibility, lineType, thickness);
      _extendedData = extData;
      setName("DXFSpLine");
    }

    public static DXFSpLine read(DXFLineNumberReader br, DXFUnivers univers) throws IOException {
        DXFLayer l = null;
        int flag = 0, visibility = 0, c = -1;
        String name = "";
        DXFLineType lineType = null;
        Vector<DXFVertex> lv = new Vector<DXFVertex>();

        int sln = br.getLineNumber();
        log.debug(">>Enter at line: " + sln);

        DXFCodeValuePair cvp = null;
        DXFGroupCode gc = null;
        DXFExtendedData _extData = null;

        boolean doLoop = true;
        while (doLoop) {
            cvp = new DXFCodeValuePair();
            try {
                gc = cvp.read(br);
            } catch (DXFParseException ex) {
                throw new IOException("DXF parse error" + ex.getLocalizedMessage());
            } catch (EOFException e) {
                doLoop = false;
                break;
            }

            // Unsupported GroupCodes:
            // HANDLE, SOFT_POINTER_HANDLE_1, SUBCLASS_DATA_MARKER, INT_1, INT_2, INT_3, INT_4, INT_5, DOUBLE_3, DOUBLE_4, DOUBLE_1, Z_1

            switch (gc) {
                case TYPE:
                    // geldt voor alle waarden van type
                    br.reset();
                    doLoop = false;
                    break;
                case LAYER_NAME: //"8"
                    l = univers.findLayer(cvp.getStringValue());
                    break;
                case X_1:
                    double x = cvp.getDoubleValue();
                    lv.add(new DXFVertex(x, -1, 1, c, l, visibility));
                case Y_1:
                    int lastIndex = lv.size() - 1;
                    DXFVertex lastCoord = lv.get(lastIndex);
                    lastCoord.setY(cvp.getDoubleValue());
                    lv.set(lastIndex, lastCoord);
                    break;
                default:
                  String appName = cvp.getStringValue();
                _extData = DXFExtendedData.getExtendedData(br);
                _extData.setAppName(appName);
                    break;
            }
        }

        DXFSpLine e = new DXFSpLine(name, 4, c, l, lv, visibility, lineType, DXFTables.defaultThickness, _extData);
        e.setType(GeometryType.LINE);
        e.setStartingLineNumber(sln);
        e.setUnivers(univers);

        log.debug(e.toString(lv.get(0).X(), lv.get(0).Y(), lv.get(lv.size() - 1).X(), lv.get(lv.size() - 1).Y(), c, visibility));
        log.debug(">Exit at line: " + br.getLineNumber());
        return e;
    }

    public String toString(double x1, double y1, double x2, double y2, int c, int visibility) {
        StringBuffer s = new StringBuffer();
        s.append("DXFSpLine [");
        s.append("start x: ");
        s.append(x1 + ", ");
        s.append("start y: ");
        s.append(y1 + ", ");
        s.append("end x: ");
        s.append(x2 + ", ");
        s.append("end y: ");
        s.append(y2 + ", ");
        s.append("color: ");
        s.append(c + ", ");
        s.append("visibility: ");
        s.append(visibility);
        s.append("]");
        return s.toString();
    }
}
TOP

Related Classes of org.geotools.data.dxf.entities.DXFSpLine

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.