parent
21ce1b8b2a
commit
cecba84877
1 changed files with 18 additions and 29 deletions
47
deps/agg/include/agg_conv_clipper.h
vendored
47
deps/agg/include/agg_conv_clipper.h
vendored
|
@ -28,24 +28,24 @@ enum clipper_PolyFillType {clipper_even_odd, clipper_non_zero, clipper_positive,
|
||||||
|
|
||||||
template<class VSA, class VSB> class conv_clipper
|
template<class VSA, class VSB> class conv_clipper
|
||||||
{
|
{
|
||||||
enum status { status_move_to, status_line_to, status_close_path, status_stop };
|
enum status { status_move_to, status_line_to, status_stop };
|
||||||
typedef VSA source_a_type;
|
typedef VSA source_a_type;
|
||||||
typedef VSB source_b_type;
|
typedef VSB source_b_type;
|
||||||
typedef conv_clipper<source_a_type, source_b_type> self_type;
|
typedef conv_clipper<source_a_type, source_b_type> self_type;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
source_a_type* m_src_a;
|
source_a_type* m_src_a;
|
||||||
source_b_type* m_src_b;
|
source_b_type* m_src_b;
|
||||||
status m_status;
|
status m_status;
|
||||||
int m_vertex;
|
int m_vertex;
|
||||||
int m_contour;
|
int m_contour;
|
||||||
int m_scaling_factor;
|
int m_scaling_factor;
|
||||||
clipper_op_e m_operation;
|
clipper_op_e m_operation;
|
||||||
pod_bvector<ClipperLib::IntPoint, 8> m_vertex_accumulator;
|
pod_bvector<ClipperLib::IntPoint, 8> m_vertex_accumulator;
|
||||||
ClipperLib::Polygons m_poly_a;
|
ClipperLib::Polygons m_poly_a;
|
||||||
ClipperLib::Polygons m_poly_b;
|
ClipperLib::Polygons m_poly_b;
|
||||||
ClipperLib::Polygons m_result;
|
ClipperLib::Polygons m_result;
|
||||||
ClipperLib::Clipper m_clipper;
|
ClipperLib::Clipper m_clipper;
|
||||||
clipper_PolyFillType m_subjFillType;
|
clipper_PolyFillType m_subjFillType;
|
||||||
clipper_PolyFillType m_clipFillType;
|
clipper_PolyFillType m_clipFillType;
|
||||||
double start_x_;
|
double start_x_;
|
||||||
|
@ -288,7 +288,7 @@ unsigned conv_clipper<VSA, VSB>::vertex(double *x, double *y)
|
||||||
{
|
{
|
||||||
if( next_vertex( x, y ) )
|
if( next_vertex( x, y ) )
|
||||||
{
|
{
|
||||||
m_status = status_line_to;
|
m_status =status_line_to;
|
||||||
start_x_ = *x;
|
start_x_ = *x;
|
||||||
start_y_ = *y;
|
start_y_ = *y;
|
||||||
return path_cmd_move_to;
|
return path_cmd_move_to;
|
||||||
|
@ -297,36 +297,25 @@ unsigned conv_clipper<VSA, VSB>::vertex(double *x, double *y)
|
||||||
{
|
{
|
||||||
*x = start_x_;
|
*x = start_x_;
|
||||||
*y = start_y_;
|
*y = start_y_;
|
||||||
m_status = status_close_path;
|
m_status = status_stop;
|
||||||
return path_cmd_line_to;
|
return path_cmd_end_poly | path_flags_close;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return path_cmd_stop;
|
return path_cmd_stop;
|
||||||
}
|
}
|
||||||
else if ( m_status == status_close_path)
|
|
||||||
{
|
|
||||||
*x = 0;
|
|
||||||
*y = 0;
|
|
||||||
m_status = status_move_to;
|
|
||||||
return path_cmd_end_poly | path_flags_close;
|
|
||||||
}
|
|
||||||
else if (m_status == status_stop)
|
|
||||||
{
|
|
||||||
return path_cmd_stop;
|
|
||||||
}
|
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
if( next_vertex( x, y ) )
|
if( next_vertex( x, y ) )
|
||||||
{
|
{
|
||||||
return path_cmd_line_to;
|
return path_cmd_line_to;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
m_status = status_move_to;
|
||||||
*x = start_x_;
|
*x = start_x_;
|
||||||
*y = start_y_;
|
*y = start_y_;
|
||||||
m_status = status_close_path;
|
return path_cmd_end_poly | path_flags_close;
|
||||||
return path_cmd_line_to;//path_cmd_end_poly | path_flags_close;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue