@@ -82,3 +82,47 @@ export function projExtent(fromProj, toProj, extent) {
82
82
}
83
83
return null
84
84
}
85
+
86
+ /**
87
+ * Return an extent normalized to [[x, y], [x, y]] from a flat extent
88
+ *
89
+ * @param {Array } extent Extent to normalize
90
+ * @returns {Array } Extent in the form [[x, y], [x, y]]
91
+ */
92
+ export function normalizeExtent ( extent ) {
93
+ let extentNormalized = extent
94
+ if ( extent ?. length === 4 ) {
95
+ // convert to the flat extent to [[x, y], [x, y]]
96
+ extentNormalized = [
97
+ [ extent [ 0 ] , extent [ 1 ] ] ,
98
+ [ extent [ 2 ] , extent [ 3 ] ] ,
99
+ ]
100
+ } else if ( extent ?. length !== 2 ) {
101
+ throw new Error ( `Invalid extent: ${ extent } ` )
102
+ }
103
+ return extentNormalized
104
+ }
105
+
106
+ /**
107
+ * Flatten extent
108
+ *
109
+ * @param {Array } extent Extent to flatten
110
+ * @returns {Array } Flatten extent in from [minx, miny, maxx, maxy]
111
+ */
112
+ export function flattenExtent ( extent ) {
113
+ let flattenExtent = extent
114
+ if ( extent ?. length === 2 ) {
115
+ flattenExtent = [ ...extent [ 0 ] , ...extent [ 1 ] ]
116
+ } else if ( extent ?. length !== 4 ) {
117
+ throw new Error ( `Invalid extent: ${ extent } ` )
118
+ }
119
+ return flattenExtent
120
+ }
121
+
122
+ /** Coordinates or extent out of bounds error */
123
+ export class OutOfBoundsError extends Error {
124
+ constructor ( message ) {
125
+ super ( message )
126
+ this . name = 'OutOfBoundsError'
127
+ }
128
+ }
0 commit comments