01: /*
02: * The JTS Topology Suite is a collection of Java classes that
03: * implement the fundamental operations required to validate a given
04: * geo-spatial data set to a known topological specification.
05: *
06: * Copyright (C) 2001 Vivid Solutions
07: *
08: * This library is free software; you can redistribute it and/or
09: * modify it under the terms of the GNU Lesser General Public
10: * License as published by the Free Software Foundation; either
11: * version 2.1 of the License, or (at your option) any later version.
12: *
13: * This library is distributed in the hope that it will be useful,
14: * but WITHOUT ANY WARRANTY; without even the implied warranty of
15: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
16: * Lesser General Public License for more details.
17: *
18: * You should have received a copy of the GNU Lesser General Public
19: * License along with this library; if not, write to the Free Software
20: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
21: *
22: * For more information, contact:
23: *
24: * Vivid Solutions
25: * Suite #1A
26: * 2328 Government Street
27: * Victoria BC V8T 5G5
28: * Canada
29: *
30: * (250)385-6040
31: * www.vividsolutions.com
32: */
33: package com.vividsolutions.jts.geom;
34:
35: /**
36: * A factory to create concrete instances of {@link CoordinateSequence}s.
37: * Used to configure {@link GeometryFactory}s
38: * to provide specific kinds of CoordinateSequences.
39: *
40: * @version 1.7
41: */
42: public interface CoordinateSequenceFactory {
43:
44: /**
45: * Returns a {@link CoordinateSequence} based on the given array.
46: * Whether the array is copied or simply referenced
47: * is implementation-dependent.
48: * This method must handle null arguments by creating an empty sequence.
49: *
50: * @param coordinates the coordinates
51: */
52: CoordinateSequence create(Coordinate[] coordinates);
53:
54: /**
55: * Creates a {@link CoordinateSequence} which is a copy
56: * of the given {@link CoordinateSequence}.
57: * This method must handle null arguments by creating an empty sequence.
58: *
59: * @param coordSeq the coordinate sequence to copy
60: */
61: CoordinateSequence create(CoordinateSequence coordSeq);
62:
63: /**
64: * Creates a {@link CoordinateSequence} of the specified size and dimension.
65: * For this to be useful, the {@link CoordinateSequence} implementation must
66: * be mutable.
67: *
68: * @param size the number of coordinates in the sequence
69: * @param dimension the dimension of the coordinates in the sequence (if user-specifiable,
70: * otherwise ignored)
71: */
72: CoordinateSequence create(int size, int dimension);
73:
74: }
|