From 64b56d7018c66916731dab18ff08bc0953ab5c97 Mon Sep 17 00:00:00 2001 From: Andrey Kamaev Date: Mon, 15 Oct 2012 20:26:42 +0400 Subject: [PATCH] Revert "remaining C-style planar subdivisions data structures are moved to legacy" This reverts commit 4aaaef5967240d2da4d78674048c0c3a1a6fef53. Conflicts: modules/imgproc/include/opencv2/imgproc/types_c.h modules/legacy/include/opencv2/legacy/legacy.hpp --- .../imgproc/include/opencv2/imgproc/types_c.h | 73 +++++++++++++++++++ modules/imgproc/src/_geom.h | 2 + .../legacy/include/opencv2/legacy/legacy.hpp | 68 ----------------- 3 files changed, 75 insertions(+), 68 deletions(-) diff --git a/modules/imgproc/include/opencv2/imgproc/types_c.h b/modules/imgproc/include/opencv2/imgproc/types_c.h index 4154eb197..0e4f0a244 100644 --- a/modules/imgproc/include/opencv2/imgproc/types_c.h +++ b/modules/imgproc/include/opencv2/imgproc/types_c.h @@ -426,6 +426,79 @@ CvChainPtReader; (deltas)[6] = (step), (deltas)[7] = (step) + (nch)) +/****************************************************************************************\ +* Planar subdivisions * +\****************************************************************************************/ + +typedef size_t CvSubdiv2DEdge; + +#define CV_QUADEDGE2D_FIELDS() \ + int flags; \ + struct CvSubdiv2DPoint* pt[4]; \ + CvSubdiv2DEdge next[4]; + +#define CV_SUBDIV2D_POINT_FIELDS()\ + int flags; \ + CvSubdiv2DEdge first; \ + CvPoint2D32f pt; \ + int id; + +#define CV_SUBDIV2D_VIRTUAL_POINT_FLAG (1 << 30) + +typedef struct CvQuadEdge2D +{ + CV_QUADEDGE2D_FIELDS() +} +CvQuadEdge2D; + +typedef struct CvSubdiv2DPoint +{ + CV_SUBDIV2D_POINT_FIELDS() +} +CvSubdiv2DPoint; + +#define CV_SUBDIV2D_FIELDS() \ + CV_GRAPH_FIELDS() \ + int quad_edges; \ + int is_geometry_valid; \ + CvSubdiv2DEdge recent_edge; \ + CvPoint2D32f topleft; \ + CvPoint2D32f bottomright; + +typedef struct CvSubdiv2D +{ + CV_SUBDIV2D_FIELDS() +} +CvSubdiv2D; + + +typedef enum CvSubdiv2DPointLocation +{ + CV_PTLOC_ERROR = -2, + CV_PTLOC_OUTSIDE_RECT = -1, + CV_PTLOC_INSIDE = 0, + CV_PTLOC_VERTEX = 1, + CV_PTLOC_ON_EDGE = 2 +} +CvSubdiv2DPointLocation; + +typedef enum CvNextEdgeType +{ + CV_NEXT_AROUND_ORG = 0x00, + CV_NEXT_AROUND_DST = 0x22, + CV_PREV_AROUND_ORG = 0x11, + CV_PREV_AROUND_DST = 0x33, + CV_NEXT_AROUND_LEFT = 0x13, + CV_NEXT_AROUND_RIGHT = 0x31, + CV_PREV_AROUND_LEFT = 0x20, + CV_PREV_AROUND_RIGHT = 0x02 +} +CvNextEdgeType; + +/* get the next edge with the same origin point (counterwise) */ +#define CV_SUBDIV2D_NEXT_EDGE( edge ) (((CvQuadEdge2D*)((edge) & ~3))->next[(edge)&3]) + + /* Contour approximation algorithms */ enum { diff --git a/modules/imgproc/src/_geom.h b/modules/imgproc/src/_geom.h index 25050390e..7da607996 100644 --- a/modules/imgproc/src/_geom.h +++ b/modules/imgproc/src/_geom.h @@ -57,6 +57,8 @@ int icvIntersectLines( double x1, double dx1, double y1, double dy1, double* t2 ); +void icvCreateCenterNormalLine( CvSubdiv2DEdge edge, double* a, double* b, double* c ); + void icvIntersectLines3( double* a0, double* b0, double* c0, double* a1, double* b1, double* c1, CvPoint2D32f* point ); diff --git a/modules/legacy/include/opencv2/legacy/legacy.hpp b/modules/legacy/include/opencv2/legacy/legacy.hpp index 114413128..96da25c9e 100644 --- a/modules/legacy/include/opencv2/legacy/legacy.hpp +++ b/modules/legacy/include/opencv2/legacy/legacy.hpp @@ -2923,74 +2923,6 @@ CVAPI(void) cvPyrSegmentation( IplImage* src, IplImage* dst, * Planar subdivisions * \****************************************************************************************/ -typedef size_t CvSubdiv2DEdge; - -#define CV_QUADEDGE2D_FIELDS() \ - int flags; \ - struct CvSubdiv2DPoint* pt[4]; \ - CvSubdiv2DEdge next[4]; - -#define CV_SUBDIV2D_POINT_FIELDS()\ - int flags; \ - CvSubdiv2DEdge first; \ - CvPoint2D32f pt; \ - int id; - -#define CV_SUBDIV2D_VIRTUAL_POINT_FLAG (1 << 30) - -typedef struct CvQuadEdge2D -{ - CV_QUADEDGE2D_FIELDS() -} -CvQuadEdge2D; - -typedef struct CvSubdiv2DPoint -{ - CV_SUBDIV2D_POINT_FIELDS() -} -CvSubdiv2DPoint; - -#define CV_SUBDIV2D_FIELDS() \ - CV_GRAPH_FIELDS() \ - int quad_edges; \ - int is_geometry_valid; \ - CvSubdiv2DEdge recent_edge; \ - CvPoint2D32f topleft; \ - CvPoint2D32f bottomright; - -typedef struct CvSubdiv2D -{ - CV_SUBDIV2D_FIELDS() -} -CvSubdiv2D; - -typedef enum CvSubdiv2DPointLocation -{ - CV_PTLOC_ERROR = -2, - CV_PTLOC_OUTSIDE_RECT = -1, - CV_PTLOC_INSIDE = 0, - CV_PTLOC_VERTEX = 1, - CV_PTLOC_ON_EDGE = 2 -} -CvSubdiv2DPointLocation; - -typedef enum CvNextEdgeType -{ - CV_NEXT_AROUND_ORG = 0x00, - CV_NEXT_AROUND_DST = 0x22, - CV_PREV_AROUND_ORG = 0x11, - CV_PREV_AROUND_DST = 0x33, - CV_NEXT_AROUND_LEFT = 0x13, - CV_NEXT_AROUND_RIGHT = 0x31, - CV_PREV_AROUND_LEFT = 0x20, - CV_PREV_AROUND_RIGHT = 0x02 -} -CvNextEdgeType; - -/* get the next edge with the same origin point (counterwise) */ -#define CV_SUBDIV2D_NEXT_EDGE( edge ) (((CvQuadEdge2D*)((edge) & ~3))->next[(edge)&3]) - - /* Initializes Delaunay triangulation */ CVAPI(void) cvInitSubdivDelaunay2D( CvSubdiv2D* subdiv, CvRect rect );