| 
   | 
 |
| 
   QisBool
  Miscellaneous Functions  | 
 |
| 
   | 
 |
| 
   | 
 |
| 
   | 
 
| 
   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 ();  | 
 
| 
   | 
 
| 
   | 
 
| 
   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  | 
 
| 
   | 
 
| 
   | 
 
| 
   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  | 
 
| 
   | 
 
| 
   | 
 |
| 
   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.   | 
 |
| 
   
  | 
  
   
  | 
 
| 
   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  | 
 |
| 
   | 
 |
| 
   | 
 
| 
   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  | 
 
| 
   | 
 
| 
   | 
 
| 
   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-[E] info@artwork.com  | 
 |