mirror of
https://github.com/buserror/mii_emu.git
synced 2024-11-29 02:49:59 +00:00
3fd0540a83
Changes are just too long to list... Signed-off-by: Michel Pollet <buserror@gmail.com>
120 lines
1.9 KiB
C
120 lines
1.9 KiB
C
/*
|
|
* c2_geometry_poly.h
|
|
*
|
|
* Copyright (C) 2023 Michel Pollet <buserror@gmail.com>
|
|
*
|
|
* SPDX-License-Identifier: MIT
|
|
*/
|
|
|
|
#ifndef C2_GEOMETRY_POLY_H_
|
|
#define C2_GEOMETRY_POLY_H_
|
|
|
|
#include "c2_arrays.h"
|
|
|
|
typedef struct c2_polyline_t {
|
|
c2_pt_array_t pt;
|
|
c2_rect_t bounds;
|
|
} c2_polyline_t, *c2_polyline_p;
|
|
|
|
DECLARE_C_ARRAY(c2_polyline_p, c2_polyline_array, 16,
|
|
c2_polyline_p current; );
|
|
DECLARE_C_ARRAY(c2_coord_array_t, c2_scanline_array, 16,
|
|
c2_coord_t height; );
|
|
|
|
IMPLEMENT_C_ARRAY(c2_scanline_array);
|
|
IMPLEMENT_C_ARRAY(c2_polyline_array);
|
|
|
|
|
|
void
|
|
c2_polyline_clear(
|
|
c2_polyline_p pl);
|
|
|
|
int
|
|
c2_polyline_get_segment(
|
|
c2_polyline_p pl,
|
|
long ind,
|
|
c2_segment_p o );
|
|
|
|
void
|
|
c2_polyline_offset(
|
|
c2_polyline_p pl,
|
|
c2_coord_t inX,
|
|
c2_coord_t inY );
|
|
|
|
void
|
|
c2_polyline_scale(
|
|
c2_polyline_p pl,
|
|
double inFactor,
|
|
c2_rect_p inSkip /* = NULL */ );
|
|
|
|
void
|
|
c2_polyline_add_pt(
|
|
c2_polyline_p pl,
|
|
c2_pt_p p );
|
|
|
|
int
|
|
c2_polyline_array_clip(
|
|
c2_polyline_array_p pa,
|
|
c2_rect_p clip,
|
|
c2_polyline_array_p outPoly );
|
|
void
|
|
c2_polyline_array_break(
|
|
c2_polyline_array_p pa);
|
|
void
|
|
c2_polyline_array_add_pt(
|
|
c2_polyline_array_p pa,
|
|
c2_pt_p p );
|
|
|
|
void
|
|
c2_polyline_array_scale(
|
|
c2_polyline_array_p pa,
|
|
float inFactor,
|
|
c2_rect_p inSkip /* = NULL */ );
|
|
void
|
|
c2_polyline_array_offset(
|
|
c2_polyline_array_p pa,
|
|
c2_coord_t inX,
|
|
c2_coord_t inY );
|
|
|
|
|
|
void
|
|
c2_scanline_array_proper_alloc(
|
|
c2_scanline_array_p a,
|
|
c2_coord_t height);
|
|
void
|
|
c2_scanline_array_proper_clear(
|
|
c2_scanline_array_p a);
|
|
void
|
|
c2_scanline_array_add_coord(
|
|
c2_scanline_array_p a,
|
|
int inY,
|
|
c2_coord_t inX );
|
|
|
|
|
|
typedef c2_polyline_p c2_polygon_p;
|
|
|
|
int
|
|
c2_polygon_isempty(
|
|
c2_polygon_p pl);
|
|
|
|
c2_coord_t
|
|
c2_polygon_get_heigth(
|
|
c2_polygon_p pl);
|
|
|
|
|
|
void
|
|
c2_polygon_clip(
|
|
c2_polygon_p pl,
|
|
c2_rect_p clip,
|
|
c2_polygon_p outPoly );
|
|
|
|
void
|
|
c2_polygon_scanline(
|
|
c2_polygon_p pl,
|
|
c2_scanline_array_p ioList,
|
|
c2_coord_t ymin );
|
|
|
|
|
|
|
|
#endif /* C2_GEOMETRY_POLY_H_ */
|