001 //$HeadURL: svn+ssh://rbezema@svn.wald.intevation.org/deegree/base/branches/2.2_testing/src/org/deegree/io/shpapi/shape_new/Shape.java $ 002 /*---------------- FILE HEADER ------------------------------------------ 003 This file is part of deegree. 004 Copyright (C) 2001-2008 by: 005 Department of Geography, University of Bonn 006 http://www.giub.uni-bonn.de/deegree/ 007 lat/lon GmbH 008 http://www.lat-lon.de 009 010 This library is free software; you can redistribute it and/or 011 modify it under the terms of the GNU Lesser General Public 012 License as published by the Free Software Foundation; either 013 version 2.1 of the License, or (at your option) any later version. 014 015 This library is distributed in the hope that it will be useful, 016 but WITHOUT ANY WARRANTY; without even the implied warranty of 017 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 018 Lesser General Public License for more details. 019 020 You should have received a copy of the GNU Lesser General Public 021 License along with this library; if not, write to the Free Software 022 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA 023 024 Contact: 025 026 Andreas Poth 027 lat/lon GmbH 028 Aennchenstr. 19 029 53177 Bonn 030 Germany 031 E-Mail: poth@lat-lon.de 032 033 Prof. Dr. Klaus Greve 034 Department of Geography 035 University of Bonn 036 Meckenheimer Allee 166 037 53115 Bonn 038 Germany 039 E-Mail: greve@giub.uni-bonn.de 040 041 ---------------------------------------------------------------------------*/ 042 package org.deegree.io.shpapi.shape_new; 043 044 import org.deegree.model.spatialschema.Geometry; 045 046 /** 047 * <code>Shape</code> defines methods to read, write and use objects read from/written to a 048 * shapefile (as well as some basic information). 049 * 050 * @author <a href="mailto:schmitz@lat-lon.de">Andreas Schmitz</a> 051 * @author last edited by: $Author: apoth $ 052 * 053 * @version $Revision: 9342 $, $Date: 2007-12-27 13:32:57 +0100 (Do, 27 Dez 2007) $ 054 */ 055 public interface Shape { 056 057 /** 058 * Reads the object from a byte array. 059 * 060 * @param bytes 061 * @param offset 062 * where to start reading 063 * @return the new offset or -1, if the type was wrong. 064 */ 065 public int read( byte[] bytes, int offset ); 066 067 /** 068 * Writes the object to a byte array. 069 * 070 * @param bytes 071 * @param offset 072 * @return the new offset. 073 */ 074 public int write( byte[] bytes, int offset ); 075 076 /** 077 * @return the number of bytes necessary to write this instance. 078 */ 079 public int getByteLength(); 080 081 /** 082 * @return the type of the shape 083 */ 084 public int getType(); 085 086 /** 087 * @return the shapes' envelope, or null, if it has none 088 */ 089 public ShapeEnvelope getEnvelope(); 090 091 /** 092 * @return the shape as deegree Geometry 093 * @throws ShapeGeometryException 094 * if the deegree geometry could not be constructed 095 */ 096 public Geometry getGeometry() 097 throws ShapeGeometryException; 098 099 }