200{
203 {
205 {
206 int side;
209
211
212
214 {
216 return 0;
217 }
218
219
220 if (p1->
y < p2->
y && side == -1 && q->
y != p2->
y)
221 {
222 return 1;
223 }
224
225
226 if (p1->
y > p2->
y && side == 1 && q->
y != p2->
y)
227 {
228 return 1;
229 }
230
231
232 if (p1->
y == p2->
y && q->
x < p1->
x)
233 {
234 return 1;
235 }
236
237 return 0;
238 }
240 {
241 int arc_side, seg_side;
242
246
247
249 if (arc_side == 0)
250 {
252 return 0;
253 }
254
256 if (seg_side == arc_side)
257 {
258
259 if (p1->
y < p3->
y && seg_side == -1 && q->
y != p3->
y)
260 {
261 return 1;
262 }
263
264
265 if (p1->
y > p3->
y && seg_side == 1 && q->
y != p3->
y)
266 {
267 return 1;
268 }
269 }
270 else
271 {
272
273 if (p1->
y < p3->
y && seg_side == 1 && q->
y != p3->
y)
274 {
275 return 1;
276 }
277
278
279 if (p1->
y > p3->
y && seg_side == -1 && q->
y != p3->
y)
280 {
281 return 1;
282 }
283
284
286 {
287 return 1;
288 }
289 }
290
291 return 0;
292
293 }
294 default:
295 {
297 return 0;
298 }
299 }
300
301 return 0;
302}
#define LW_TRUE
Return types for functions with status returns.
int lw_arc_side(const POINT2D *A1, const POINT2D *A2, const POINT2D *A3, const POINT2D *Q)
int lw_pt_in_seg(const POINT2D *P, const POINT2D *A1, const POINT2D *A2)
Returns true if P is between A1/A2.
int lw_segment_side(const POINT2D *p1, const POINT2D *p2, const POINT2D *q)
lw_segment_side()
void void lwerror(const char *fmt,...) __attribute__((format(printf
Write a notice out to the error handler.
static const POINT2D * getPoint2d_cp(const POINTARRAY *pa, uint32_t n)
Returns a POINT2D pointer into the POINTARRAY serialized_ptlist, suitable for reading from.
RECT_NODE_SEG_TYPE seg_type