/* * OSGeom -- Geometry Collab * * (C) 2009, Open Source Geospatial Foundation (OSGeo) * (C) 2001-2009 Department of Geography, University of Bonn * (C) 2001-2009 lat/lon GmbH * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation; * version 2.1 of the License. * * 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 * Lesser General Public License for more details. */ package org.osgeo.geometry.primitive; import java.util.List; /** * <code>Solid</code> instances are 3D-geometries that ... * * @author <a href="mailto:poth@lat-lon.de">Andreas Poth</a> * @author <a href="mailto:schneider@lat-lon.de">Markus Schneider</a> * @author last edited by: $Author$ * * @version. $Revision$, $Date$ */ public interface Solid extends GeometricPrimitive { /** * Convenience enum type for discriminating the different solid variants. */ public enum SolidType { /** Generic solid that consists of an arbitrary number of */ Solid, /** Solid composited from multiple members solids. */ CompositeSolid } /** * Must always return {@link GeometricPrimitive.PrimitiveType#Solid}. * * @return {@link GeometricPrimitive.PrimitiveType#Solid} */ public PrimitiveType getPrimitiveType(); /** * Returns the type of solid. * * @return the type of solid */ public SolidType getSolidType(); /** * Returns the exterior surface (shell) of the solid. * <p> * Please note that this method may return null. The following explanation is from the GML 3.1.1 schema * (geometryPrimitives.xsd): In normal 3-dimensional Euclidean space, one (composite) surface is distinguished as * the exterior. In the more general case, this is not always possible. * * @return the exterior surface, or null if no surface is distinguished as being the exterior boundary */ public Surface getExteriorSurface(); /** * Returns the interior surfaces of the solid. * * @return the interior surfaces, list may be empty (but not null) */ public List<Surface> getInteriorSurfaces(); }