Package org.geotools.data.dxf.header

Source Code of org.geotools.data.dxf.header.DXFHeader

package org.geotools.data.dxf.header;

import java.awt.geom.Point2D;
import java.io.EOFException;
import java.io.IOException;


import org.geotools.data.dxf.parser.DXFParseException;
import org.geotools.data.dxf.parser.DXFLineNumberReader;
import org.geotools.data.dxf.entities.DXFPoint;
import org.geotools.data.dxf.parser.DXFCodeValuePair;
import org.geotools.data.dxf.parser.DXFConstants;
import org.geotools.data.dxf.parser.DXFGroupCode;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;

/**
*
*
* @source $URL$
*/
public class DXFHeader implements DXFConstants {

    private static final Log log = LogFactory.getLog(DXFHeader.class);
    public DXFPoint _LIMMIN;
    public DXFPoint _LIMMAX;
    public DXFPoint _EXTMIN;
    public DXFPoint _EXTMAX;
    public int _FILLMODE;
    public String _ACADVER;
    public int _SRID;

    public DXFHeader() {
        _LIMMIN = new DXFPoint(new Point2D.Double(0, 0));
        _LIMMAX = new DXFPoint(new Point2D.Double(100, 100));
        _EXTMIN = new DXFPoint(new Point2D.Double(100, 100));
        _EXTMAX = new DXFPoint(new Point2D.Double(50, 50));
        _FILLMODE = 0;
        _ACADVER = "AC1006";
        _SRID = 28992;
    }

    public DXFHeader(DXFPoint limmin, DXFPoint limmax, DXFPoint extmin, DXFPoint extmax, int fillmode, String version, int srid) {
        _LIMMIN = limmin;
        _LIMMAX = limmax;
        _EXTMIN = extmin;
        _EXTMAX = extmax;
        _FILLMODE = fillmode;
        _ACADVER = version;
        _SRID = srid;
    }

    public static DXFHeader read(DXFLineNumberReader br) throws IOException {
        Point2D.Double limmin = null;
        Point2D.Double limmax = null;
        Point2D.Double extmin = null;
        Point2D.Double extmax = null;
        int fillmode = 0;
        String version = "AC1006";
        int srid = 28992; // default rd new


        int sln = br.getLineNumber();
        log.debug(">Enter at line: " + sln);
        DXFCodeValuePair cvp = null;
        DXFGroupCode gc = 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;
            }

            switch (gc) {
                case TYPE:
                    String type = cvp.getStringValue();
                    if (type.equals(ENDSEC)) {
                        doLoop = false;
                        break;
                    }
                    break;
                case VARIABLE_NAME:
                    String variableName = cvp.getStringValue();
                    double x = 0,
                     y = 0;
                    int tfillmode = 0;
                    String tversion = null;

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

                        switch (gc) {
                            case TYPE:
                                type = cvp.getStringValue();
                                if (type.equals(ENDSEC)) {
                                    doLoop = false;
                                    doLoop2 = false;
                                    break;
                                }
                                break;
                            case VARIABLE_NAME:
                                doLoop2 = false;
                                br.reset();
                                break;
                            case X_1:
                                x = cvp.getDoubleValue();
                                break;
                            case Y_1:
                                y = cvp.getDoubleValue();
                                break;
                            case TEXT:
                                tversion = cvp.getStringValue();
                                break;
                            case INT_1:
                                tfillmode = cvp.getShortValue();
                                break;
                            default:
                        }
                    }
                    if (variableName.equals($LIMMIN)) {
                        limmin = new Point2D.Double(x, y);
                    } else if (variableName.equals($LIMMAX)) {
                        limmax = new Point2D.Double(x, y);
                    } else if (variableName.equals($EXTMIN)) {
                        extmin = new Point2D.Double(x, y);
                    } else if (variableName.equals($EXTMAX)) {
                        extmax = new Point2D.Double(x, y);
                    } else if (variableName.equals($ACADVER)) {
                        version = tversion;
                    } else if (variableName.equals($FILLMODE)) {
                        fillmode = tfillmode;
                    }
                    break;
                default:
                    break;
            }
        }

        DXFHeader e = new DXFHeader(new DXFPoint(limmin, -1, null, 1, 1),
                new DXFPoint(limmax, -1, null, 1, 1),
                new DXFPoint(extmin, -1, null, 1, 1),
                new DXFPoint(extmax, -1, null, 1, 1),
                fillmode, version, srid);
        log.debug(e.toString(limmin, limmax, extmin, extmax, fillmode, version, srid));
        log.debug(">Exit at line: " + br.getLineNumber());
        return e;
    }

    public String toString(Point2D.Double limmin, Point2D.Double limmax, Point2D.Double extmin, Point2D.Double extmax, int fillmode, String version, int srid) {
        StringBuffer s = new StringBuffer();
        s.append("DXFHeader [");
        s.append("limmin: ");
        s.append(limmin + ", ");
        s.append("limmax: ");
        s.append(limmax + ", ");
        s.append("extmin: ");
        s.append(extmin + ", ");
        s.append("extmax: ");
        s.append(extmax + ", ");
        s.append("fillmode: ");
        s.append(fillmode + ",");
        s.append("srid: ");
        s.append(srid + ",");
        s.append("version: ");
        s.append(version);
        s.append("]");
        return s.toString();
    }
}
TOP

Related Classes of org.geotools.data.dxf.header.DXFHeader

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.