Package org.h2gis.functions.io.shp.internal

# Class PolygonHandler

java.lang.Object
org.h2gis.functions.io.shp.internal.PolygonHandler

All Implemented Interfaces:
  `ShapeHandler`

public class PolygonHandler extends Object implements ShapeHandler
Wrapper for a Shapefile polygon.

Version:
  $Id: PolygonHandler.java 22264 2006-10-19 10:10:35Z acuster $
Author:
  aaime, Ian Schneider
See Also:
  - "http://svn.geotools.org/geotools/tags/2.3.1/plugin/shapefile/src/org/geotools/data/shapefile/shp/PolygonHandler.java"

## Constructor Summary

Constructors
Constructor
Description
`PolygonHandler()`
`PolygonHandler(ShapeType type)`

## Method Summary

Modifier and Type
Method
Description
`static int`
`computeOrientation(org.locationtech.jts.geom.CoordinateSequence cs, int p1, int p2, int q)`
`int`
`getLength(org.locationtech.jts.geom.Geometry geometry)`
Get the length of the given geometry Object in bytes not 16-bit words.
`ShapeType`
`getShapeType()`
Get the ShapeType of this handler.
`static boolean`
`isCCW(org.locationtech.jts.geom.CoordinateSequence ring)`
Computes whether a ring defined by an array of `Coordinate`s is oriented counter-clockwise.
`org.locationtech.jts.geom.Geometry`
`read(ReadBufferManager buffer, ShapeType type)`
Read a geometry from the ByteBuffer.The buffer's position, byteOrder, and limit are set to that which is needed.
`void`
`write(WriteBufferManager buffer, org.locationtech.jts.geom.Geometry geometry)`
Write the geometry into the ByteBuffer.

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Constructor Details

### PolygonHandler

public PolygonHandler()

### PolygonHandler

public PolygonHandler(ShapeType type) throws ShapefileException

Throws:
  `ShapefileException`

## Method Details

### getShapeType

public ShapeType getShapeType()
Description copied from interface: `ShapeHandler`
Get the ShapeType of this handler.

Specified by:
  `getShapeType` in interface `ShapeHandler`
Returns:
  The ShapeType.

### getLength

public int getLength(org.locationtech.jts.geom.Geometry geometry)
Description copied from interface: `ShapeHandler`
Get the length of the given geometry Object in bytes not 16-bit words. This is easier to keep track of, since the ByteBuffer deals with bytes. Do not include the 8 bytes of record.

Specified by:
  `getLength` in interface `ShapeHandler`
Parameters:
  `geometry` - The geometry to analyze.
Returns:
  The number of bytes the shape will take up.

### read

public org.locationtech.jts.geom.Geometry read(ReadBufferManager buffer, ShapeType type) throws IOException
Description copied from interface: `ShapeHandler`
Read a geometry from the ByteBuffer.The buffer's position, byteOrder, and limit are set to that which is needed. The record has been read as well as the shape type integer. The handler need not worry about reading unused information as the ShapefileReader will correctly adjust the buffer position after this call.

Specified by:
  `read` in interface `ShapeHandler`
Parameters:
  `buffer` - The ByteBuffer to read from.
  `type` - The shape type
Returns:
  A geometry object.
Throws:
  `IOException`

### isCCW

public static boolean isCCW(org.locationtech.jts.geom.CoordinateSequence ring)
Computes whether a ring defined by an array of `Coordinate`s is oriented counter-clockwise.

- The list of points is assumed to have the first and last points equal.
- This will handle coordinate lists which contain repeated points.

This algorithm is only guaranteed to work with valid rings. If the ring is invalid (e.g. self-crosses or touches), the computed result may not be correct.

Parameters:
  `ring` - an array of Coordinates forming a ring
Returns:
  true if the ring is oriented counter-clockwise.

### computeOrientation

public static int computeOrientation(org.locationtech.jts.geom.CoordinateSequence cs, int p1, int p2, int q)

### write

public void write(WriteBufferManager buffer, org.locationtech.jts.geom.Geometry geometry) throws IOException
Description copied from interface: `ShapeHandler`
Write the geometry into the ByteBuffer. The position, byteOrder, and limit are all set. The handler is not responsible for writing the record or shape type integer.

Specified by:
  `write` in interface `ShapeHandler`
Parameters:
  `buffer` - The ByteBuffer to write to.
  `geometry` - The geometry to write.
Throws:
  `IOException`