ARTWORK CONVERSION SOFTWARE

GDSII | QISBOOL | Index

 

QisBool Miscellaneous Functions

 

 

 


 

QisBool_Version

 

Objective

To return a string containing the QisBool library version.

Prototype

const char* QisBool_Version();

Input Arguments

-

Output Arguments

-

Return Value

a.     A c-string containing the QisBool library version.

Pre-Conditions

-

Post-Conditions

a.     The pointer returned by this function points to an internal buffer and therefore it should be used as read-only and should be release/deleted.

C++ Equivalent

static const char* IQisBool::Version ();

 

 


 

QisBool_Release

 

Objective

To release the memory allocated by the Boolean operations to store output polygons.

Prototype

void QisBool_Release(int*** ioXY, int** ioNV, int* ioN);

Input Arguments

a.     int*** ioXY: Address of the integer double pointer that points to the X,Y co-ordinates of the output polygons.

b.     int** ioNV: Address of the integer pointer that points to the list of number of vertices for each output polygon.

c.     int* ioN: Address of the integer that stores the number of output polygons.

Output Arguments

a.     All three pointers (ioXY, ioNV, ioN) are set to NULL when this function returns.

Return Value

-

Pre-Conditions

a.     *ioN must specify the number of output polygons as a result of successful execution of QisBool_Booleanize, QisBool_UnionMT or QisBool_BinaryMT.

b.     *ioNV must be a non-NULL pointer representing a list of vertex numbers obtained as a result of successful execution of QisBool_Booleanize, QisBool_UnionMT or QisBool_BinaryMT.

c.     *ioXY must be a non-NULL integer double pointer representing a list of x,y co-ordinates obtained as a result of successful execution of QisBool_Booleanize, QisBool_UnionMT or QisBool_BinaryMT.

Operation

a.     This function releases the memory allocated by the Boolean operations to store output polygons.

b.     Every successful call to QisBool_Booleanize, QisBool_UnionMT or QisBool_BinaryMT must be eventually matched by a call to this function or a memory leak will occur.

Post-Conditions

-

C++ Equivalent

static void IQisBool::Release(int**& ioXY, int*& ioNV, int& ioN);

See Also

QisBool_Booleanize

QisBool_UnionMT

QisBool_BinaryMT

 

 


 

QisBool_GetIllegalPolygonIndices

 

Objective

To get all the x,y co-ordinates where QisBool_Booleanize encountered illegal polygon(s).

Prototype

int QisBool_GetIllegalPolygonIndices(

int** oListOfIndices, int* oNIndices, void* iBoolHandle

);

Input Arguments

a.     void* iBoolHandle: Handle to a QisBool object obtained using QisBool_Create.

Output Arguments

a.     int** oListOfIndices: Address of an integer pointer that will point to a list of x,y co-ordinates pairs, each representing the location where QisBool_Booleanize encountered an illegal polygon.

b.     int* oNIndices: Address of an integer variable that will store the number of x,y pairs.

Return Value

-

Pre-Conditions

a.     iBoolHandle , oListOfIndices and oNIndices must be non-NULL.

Operation

a.     When this function returns, oNIndices stores the number of locations (x,y pairs) where an illegal polygon was found. oListOfIndices stores the address of an integer array containing a list of those locations.

Post-Conditions

a.     The memory allocated for storing the list of x,y pairs (*oListOfIndices) must be released using QisBool_ReleaseArray.

C++ Equivalent

virtual int IQisBool::GetIllegalPolygonIndices(

int** oListOfIndices, int* oNIndices

) = 0;

See Also

QisBool_Booleanize

QisBool_ReleaseArray

 

 


 

QisBool_GetCutLines

 

Objective

To get a list of cutlines if the specified polygon has any.

Prototype

int QisBool_GetCutLines(

int* iXY, int iNV, int** oXY, int* oN, void* iBooleanHandle

);

Input Arguments

a.     int* iXY: A list of x,y co-ordinates of the polygon to be tested (iNV*2 integers)

b.     int iNV: Number of vertices in the polygon.

c.     void* iBooleanHandle: Handle to a QisBool object obtained using QisBool_Create.

Output Arguments

a.     int** oXY: Address of an integer pointer which will point to a list of cutlines.

b.     int* oN: Address of an integer which will store the number of cutlines.

Return Value

a.     success: 0

b.     failure: < 0. Call QisBool_ErrorMsg to get more details.

c.     No cutlines found: 1

Pre-Conditions

-

Operation

a.     This function analyses the polygon and returns a list of cutlines if present.

b.     If N is the number of cutlines (*oN), there are 4*N integers in the list (*oXY).

c.     In cases where two edges of a polygon coincide, each of those edges will be returned as a separate cutline.

geo2.gif

cutlines_1.gif

Post-Conditions

a.     The memory allocated to store the cutlines (*oXY) must be released using QisBool_ReleaseArray.

C++ Equivalent

virtual int IQisBool::GetCutLines(

int* iXY, int iNV, int** oXY, int* oN

) = 0;

See Also

QisBool_ReleaseArray

 

 


 

QisBool_GetSliceEdges

 

Objective

To get a list of butting edges when the Leonov output mode for Boolean operations is set to eLEONOV_OUT_BUTTING

Prototype

int QisBool_GetSliceEdges(int** oXY, int* oN, void* iBooleanHandle);

Input Arguments

a.     void* iBooleanHandle: Handle to a QisBool object obtained using QisBool_Create.

Output Arguments

a.     int** oXY: Address of an integer pointer which will point to a list of edges allocated inside this function.

b.     int* oN: Address of an integer which will store the number of edges.

Return Value

a.     success: 0

b.     failure: < 0. Call QisBool_ErrorMsg for details.

Pre-Conditions

a.     The Boolean operations must be setup so that QisBoolOptions_SetLeonovOutput is set to eLEONOV_OUT_BUTTING.

b.     This function can be called only after the Boolean operations (QisBool_Booleanize, QisBool_UnionMT or QisBool_BinaryMT) run successfully.

Operation

a.     This function returns all those edges that join the butting polygons. Each edge is represented by four integers or two x,y co-ordinates.

b.     If there are N edges (*oN), number of integers in the list (*oXY) is 4*N.

Post-Conditions

a.     The memory allocated to store the edges (*oXY) must be released using QisBool_ReleaseArray.

C++ Equivalent

virtual int IQisBool::GetSliceEdges(int** oXY, int* oN) = 0;

See Also

QisBoolOptions_SetLeonovOutput

QisBool_Booleanize

QisBool_UnionMT

QisBool_BinaryMT

QisBool_ReleaseArray

 

 


 

QisBool_ReleaseArray

 

Objective

To release the memory allocated inside QisBool to store a list of integers.

Prototype

void QisBool_ReleaseArray(int** ioXY);

Input Arguments

a.     int** ioXY: Address of the integer array to be released, allocated by a QisBool function.

Output Arguments

a.     The pointer to the integer array (*ioXY) is set to NULL.

Return Value

-

Pre-Conditions

a.     The integer array to be release must have been allocated inside a QisBool function that ran successfully.

Operation

a.     This function releases the allocated memory and sets the pointer to NULL to prevent reference.

Post-Conditions

-

C++ Equivalent

static void IQisBool::Release(int*& ioXY);

See Also

-

 


 

 

 

2012 Artwork Conversion Software Inc.

417 Ingalls St. Santa Cruz CA 95060

[T] +1 831-426-6163 [F] +1 831-426-2824 [E] info@artwork.com