QisBool_ConvertToCounterClockwiseSyntax: void QisBool_ConvertToCounterClockwise(int n, int* xy); Function: used to convert a polygon so that the vertices are arranged in the counter clockwise direction. Some CAD systems expect a polygon's vertices to appear in this direction and treat it as filled. The location of the first coordinate is not constrained. Inputs: n  number of vertices xy  an array of xy coordinate pairs. The first and last pair are the same point. Outputs: xy  an array of coordinate pairs. The first and last pair are not changed but the order of the inner pairs may be to produce the desired direction. QisBool_PolyConvexingSyntax:
int QisBool_PolyConvexing Function: tests a polygon for convex (in X or both in X and Y) and breaks down polygons as needed to insure that they are convex. A single source polygon can generate multiple convex polygons. Inputs: n  number of vertices in the source polygon xy  an array containing the vertex pairs for the source polygon. cnv  BOOL_CONVEX_IN_X or BOOL_FULLY_CONVEX (this controls the type of convexing output independent of the QisBoolOptions_SetConvexOutput.) validate  0: do not perform validation on input; 1: perform validation on input. Outputs: numarr  an array where each element contains the number of vertices for the output polygons. XYarr  an contiguous array containing the vertex data for the polygons. pnumpolys  number of output convex polygons Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! CONVEX_ERR no output polygons  internal error CONVEX_OK input data is not Manhattan CONVEX_MANH input data is Manhattan Note: QisBool_GetPolygonAreaSyntax: double QisBool_GetPolygonArea(int n, int* xy); Function: Used to compute the area of a polygon Inputs: n  number of vertices in the input polygon xy  array containing the vertex pair list Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! QisBool_GetPolygonArea  the computed area of the polygon. Notes The polygon input must be standard  not a Leonov polygon  however it may contain cut lines. QisBool_RoundPathToBoundariesSyntax:
int QisBool_RoundPathToBoundaries Function: Converts a path of Type 1 (round endcap) into boundary data. Each segment of the path is converted into its own boundary with an approximation of the round end caps. Inputs: xy  an array of vertices for the path u  the number of vertices in the path width  the width of the path arcres  arc resolution (in degrees) to use for fracturing the end caps. chord_error  chord error parameter to use for fracturing the end caps and bend radii. If set ==0 then the arc resolution parameter determines the number of chords. If both arcres and chord_error are simultaneously specified, then the parameter that would produce the "finer" approximation is used. Output: XY_out_arr  an array containing the XY coordinates of the resulting boundaries. pair_num_out_arr  an array containing the vertex count for each of the output boundaries QisBool_RoundPathToBoundaries  the function returns the number of output polys. Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! the number of polygons outputQisBool_Path2BoundariesSyntax:
int QisBool_Path2Boundaries Function: Converts a path (of type 0 or 2) into a boundary. If unionize = 0, then the function returns boundaries representing individual path sections; if unionize = 1 then the individual sections are unionized into a single boundary. Inputs: Path  an array whose first element is the Path Type (0  2) and second element the path width. Following those two elements are the list of XY coordinate pairs. N  number of vertices in the path. unionize  0 = do not unionize segments; 1 = unionize returned polygonal segments bdll_handle  handle for this call. Output: XY_out_arr  an array containing the XY coordinate pairs. pair_num_out_arr  an array containing vertex count of each output polygon. Error codes: 0: (success)nonzero value: indicating that an error occurred during initialization. QisBool_ClipPathToWindowSyntax:
int QisBool_ClipPathToWindow Function: Used to test and clip a path (only type 02  does not support type 1 paths) to a user specified window. If the path is fully contained inside of the window then the function returns 0. Otherwise, the path is broken into its segments. This function does not take into account a path's width. Inputs: xy  an array containing the XY coordinates of the path. The first element of the array contains the path type (02) and the second element of the array contains the path width. n  number of vertices in the path Wnd  an array (4 elements) containing the LLx, LLy, URx and URy coordinates of the window. Output: pXYarr  an XY coordinate array of all vertices for the resulting output pathspNarr  an array of the number of vertices belonging to each path Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! 0: (success)nonzero value: indicating that an error occurred during initialization. Example QisBool_GetCutLinesSyntax:
int QisBool_GetCutLines Function: For a polygon with coordinate list xy, this function calculates the list of cutlines and returns them in an array. Inputs: xy  an array of the input polygon's coordinates n  the number of vertices contained in the polygon. Outputs: pXY  an array containing the cut line coordinates (in pairs) pN  the number of cut lines in the polygon. Since each cutline requires two vertices and cutlines always are enumerated in pairs, the number of elements in pXY is 4 x pN. Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! 0 no cutlines were found 1 cut lines returned Related Functions QisBool_ReleaseArray should be called after this function to release memory. QisBool_GetSliceEdgesSyntax: QisBool_GetSliceEdges(int **xy, void *bdll_handle); Function: will return a list of shared edges where a polygon was broken as a result of a polygon violating the max number of vertices restriction and when the output mode is set to butting. This function does not apply when output is set to cut lines. If there are N returned edges, then the size of the xy array = 4 x N x sizeof(int). xy[i*2],xy[i*2 + 1] and xy [i*2 +2],xy[i*2+3] are the endpoint coordinates of the ith returned edge. Inputs: bdll_handle: thread handle Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! the number of edges found.Related Functions QisBool_ReleaseArray should be called after this function call to release memory; QisBoolOptions_SetMaxPoints is used to set the maximum vertex count for a polygon. QisBool_GroupConnectedPolygonsSyntax: int QisBool_GroupConnectedPolygons Function: This function takes a list of polygons as input and creates sets of touching/overlapping polygons. It then returns the number of groups, the number of polygons per group and indexes to the polygons by group. Inputs: XY_in_arr  an array of coordinate pairs for the input boundariespair_num_in_arrays  an array of the number of coordinate pairs bndrs  the number of boundaries in the input set Output pindexarr  an array of lists. This array will have one list for each connected set. Each list points to the locations of the polygons for that set. pnumbers  an array containing the number of polygons in each set. psets  an integer showing number of polygon sets (7 in this example) Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! 0: all polygons are closednonzero value: indicates the number of nonclosed boundaries. QisBool_ClipPathToRegionSyntax: int QisBool_ClipPathToRegion Function: This function takes a path as the first input argument and a "clipping" boundary as the second input argument. The function first checks the validity of the clipping boundary and then whether the path lies fully outside of the boundary, completely inside of the boundary or crosses the boundary. If it crosses the boundary the function returns a new path that has been clipped to the edges of the boundary. Inputs: xy  array of xy coordinates for the path Outputs: pXYarrpNarr index Returns Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! 2: the boundary is not closed1: the path is fully outside of the boundary 0: the path is completely inside of the boundary positive integer: the number of boundaries returned within the region QisBool_IsObjectInRegionSyntax: int QisBool_IsObjectInRegion Function: This function tells you if the entity under consideration (a path or boundary) is enclosed by the "reference" boundary. The first entity is either a boundary ( if pathtype1 = 1), or a path in which case pathtype1 = 0, 1 or 2. The second entity (i.e. the reference boundary) is always a boundary. Inputs: The first object is either a a path or boundary description
int* xy1 an array of xy coordinates int n1 the number of vertices int pathtype1 the pathtype 1 = boundary 0 = flush 1 = half round, 2 = half width extended int width1 the path width The second object is the reference boundary description int* xy2 an array of xy coordinates int n2 the number of vertices in this boundary Output pstatus  the address of the variable answering the question: is object 1 inside of object 2?
1 = object 1 lies completely inside of object 2 2 = object 2 lies completely inside of object 1 3 = the objects are disjoint Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! 2: the second object, the reference boundary is not closed1: the first object (a boundary) is not closed QisBool_IsPointInPolygonsSyntax: int QisBool_IsPointInPolygons Function: given a point x,y and an array of polygons, you wish to determine if the point is inside or touching any of the polygons. Similar to the function QisBool_IsPointInsidePolygon but allows the user to specify a number of polygons at one time. Inputs: The first object is either a a path or boundary description
int x, int y the point to evaluate int** XYarr an array of polygons int* pairnumarr an array of vertex counts for the polygons in XYarr int N the number of polygons in XYarr Output int* indexarr the caller's array where return values (0,1,2,3) will be stored for each point/polygon test. Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! 0 success 1 failed Related Function PointsInsidePoly QisBool_IsPointInsidePolygonSyntax: int QisBool_IsPointInsidePolygon (int x, int y, int n, int* xy); Function: This function determines whether the specified point is outside, inside, on an edge or on a vertex of a given polygon. Inputs: int x, int y the coordinates of a point int n the number of vertices in the polygon int* xy an array of xy pairs for the polygon vertices Return Codes: PROVISIONAL: BE SURE TO REFER TO HEADER FILE! 0  point is outside the polygon 1  point is inside the polygon 2  point is on an edge of the polygon 3  point is on a vertex of the polygon 
Documentation  Download  Price  Revision History 
