QIS Library Revision History

QISLIB v2.81 4/23/2012

New Function QisLib_SetIgnoreTexts

A new function QisLib_SetIgnoreTexts to control if text data is loaded into the QisLib database on file open (GDSII, OASIS).
It takes one parameter: int onOff where onOff is _QIS_ON (load text data) or _QIS_OFF (do not load text data).
This function must be called before QisLib_OpenGDSII or QisLib_OpenOASIS.

Cell Extent

Improved cell extents calculation for cells with paths along the cell's bounding box.
The new extents calculation is more precise and takes into account the path width and path types.
The extents would not be exact only in extreme cases where the path angle is non-orthogonal

File name with space

QisLib_OpenOASIS now works with file names containing spaces. Previously, it returned an error code (-4).

QISBOOL

QisBool_UnionMT and QisBool_BinaryMT now honor the QisBoolOptions_SetConvexOutput.


QISLIB v2.783 1/4/2012

New Function QFract_SetFracture

We have added a new function to the QFract API that would allow the caller to control whether it receives fractured polygons or just unionized polygons without fracturing.
The function syntax is:

void QFract_SetFracture(const int onOff);

If onOff is 0, polygons are unionized but NOT fractured.
If onOff is 1, polygons are fractured just like before.


QISLIB v2.761 2/24/2011

QISLIB Windows 64bit

This version of the library resolves an incompatibility between Win64 STL Iterators and Win32 which was responsible for a crash.


QISLIB v2.751 12/06/2010

QISLIB/QFRACT Update for Linux RHE4 using GCC 3.4.6 [64bit]

The QisLib and Qfract binaries available with this package have been compiled with GCC 3.4.6 on a machine running RH 3.4.3-9.EL4 Kernel 2.6.9-5.ELsmp and seem to work as expected in the environment.


QISLIB v2.75 11/29/2010

QISLIB/QFRACT Update for Linux

The latest QISLIB release for all Linux versions with QFRACT (trapezoid fracturing) support.
The 'runtimefiles' directory would carry the qis and qfract libraries, while the 'includefiles' directory would carry the qislib and qfract header files.


QISLIB v2.72 5/21/2010

QISLIB Windows64 supports VS2008

The latest QISLIB release on Windows64 is compatible with VS2005 and VS2008.


QISLIB v2.72 4/7/2010

Complete release

This is the first complete release since version 2.61. Here is a list of the main changes:

    Optimized QisLib_GetStructureReferences for GDS and OASIS
    Support for loading compressed GDSII, GZ and ZIP files (GDS only)
    Major memory usage optimization for GDS and OASIS
    New feature to filter/ignore cells (by name or by regular expressions) during file open for GDS and OASIS.

Ignore cells on open for OASIS + GDSII

New QisLib function QisLib_SetIgnoreStructureList - Use it before QisLib_OpenOASIS/QisLib_OpenGDSII to ignore specific cells by their name or by regular expressions.

New QisLib functions QisLib_SetReferenceOnlyMarker(int onoff)

If onoff == 1, reference markers will be turned on only for references.
If onoff == 0, the setting depends on QisLib_SetReferenceMarker

New QisLib functions QisLib_SetTextMarker(int onoff)

If onoff == 1, geometry markers will be turned on for text only.
If onoff == 0, the setting depends on QisLib_SetReferenceMarker.
QisLib_SetReferenceMarker has been retained only for backwards compatibility.
Controls both text and refs. Use either that or one of the 2 new functions.

Major Memory Usage Optimization

Memory usage is now reduced to less than half of the previous versions. An average of 10% to 20% of the GDSII file size can be expected.
A new version of the load memory map, v1.03, is needed for this version.
Older versions of load memory maps will not be used and will be recreated with a new version.

Some performance data:
42GB GDS 20GB to 7.3GB
32GB GDS 9GB to 3.6GB
15GB GDS 7.4GB to 2.7GB
2.5GB OAS 4.8GB to 3.1GB

Support for GZ, Zip and Compressed GDSII Files

Added support for compressed GDSII files.

Delete and UnDelete Vector Errors

Previous versions would not return an error code of -3 as documented when QisLib_DeleteVector or QisLib_UndeleteVector are called and the file has not been opened with QisLib_SetLoadMemory turned on. This has been fixed.

OASIS and OpenAccess Array References Missing Data

OASIS array references had a bug where the number of rows and columns to be processed would be switched and so data would be missing. This has been fixed. (OpenAccess didn't have a problem but it is now adjusted to work with the OASIS change.)

Faster OASIS/GDSII Get_Structure_References and QisLib_GetStructureReferences

OASIS/GDSII search has now been further optimized. Structure reference search goes through all references in the current view disregarding the display filters. So it could be very slow when in home view or more zoomed out view. This version is as fast as GDSII for a corresponding OASIS file.


QISLIB v2.69 (libqis32.so , libqis64.so) 2/11/2010

Drawing crash

Fix to the drawing crash when the file is loaded into memory. (observed on RHE3 Linux 32)


QISLIB v2.68 (libqis32.so , libqis64.so) 1/29/2010

Major Memory Usage Optimization

Memory usage is now reduced to less than half of the previous versions.
An average of 10% to 20% of the GDSII file size can be expected.

A new version of the load memory map, v1.03, is needed for this version.
Older versions of load memory maps will not be used and will be recreated with a new version.

Some memory usage improvement data:
42GB GDS 20GB to 7.3GB
32GB GDS 9GB to 3.6GB
15GB GDS 7.4GB to 2.7GB
2.5GB OAS 4.8GB to 3.1GB

Detail Notes:
When one calls QisLib_InitLib, the first parameter must be the complete path of the executable linking the QisLib.
Previously, it was the path of the directory containing the executable linking the QisLib.

Old Behavior:
int return = QisLib_InitLib(programDir, . . .);

New Behavior:
int return = QisLib_InitLib(programPath, . . .);

If this change is not reflected in your QisLib client program's source code, you will get a license error (-3).


QISLIB v2.641 Windows 32bit VS6.0 and Windows 64bit VS 2005   (4/9/2009)

The new QIS Library version is v2.64.1.0 (Apr 03, 2009).
The corresponding BoolDll version is 2.153 (Apr 09, 2009).

The QIS Library API has not changed since the last release v2.61.1.0 except for some new functions added to it in light of our work with OpenAccess, KLA Care Area Wizard and the QckPlugin API. Therefore, existing QIS Library customers should not have any issues using the new library.

The current QIS Library on Windows is now coherent with it's UNIX/Linux version that it being employed in Qckvu3.

Open_OASIS bug on Windows64 has now been fixed. QIS Library can open oasis files without any crashes.

The GDSII extraction bug has been fixed. Previously extracted GDSII files contained multiple copies of each polygon.

QISLIB v2.61 Windows XP64    (2/14/2008)

Windows XP 64 bit support

QISLIB for XP64 bit is now available. This version will handle multiGB files, something the 32 bit version is not able to do.

QISLIB v2.61    (10/12/2007)

Faster OpenGDSII

Faster OpenGDSII for small GDSII file without any penalty for larger GDSII files.

New Product number

The new QisLib product number has changed and hence none of these will work with the old licenses. New licenses will have to be shipped with these packages.

Single Threaded

This package is single threaded. Special wrappers are needed for multi threading operation.
Contact us for details.

Memory leak

Small memory leak caused the program to crash after thousands of open GDSII file. This has been fixed.


QISLIB v2.602    (07/24/2007)

New PDF manual

This package includes a complete and easy-to-use PDF Documentation.

Demo Programs

This package includes four demo programs that the user can build on their own machine. These demo programs illustrate some of the basic and most important functionalities of the QIS Library.
The demo programs can be used to see how QIS Library works and their source code can be used as a reference for using the QIS Library.

Linking errors on windows

This package fixes the issues that our Windows customers reported.


QISLIB v2.60    (06/14/2007)

New Function - QisLib_SetProcessEvents

While QIS is busy doing something (e.g. opening a file, drawing, getting vectors, saving to a file, etc.), QIS would process any events for the program so the program will be responsive to user input. e.g. User clicking stop during a redraw.

If the program does not want QIS to process events during a busy process, use this function to turn it off.

Default for Windows is on, default for Unix/Linux is on if a XtAppContext is passed to QIS via the InitLib function, it is off if XtAppContext is NULL.

For Unix/Linux, if XtAppContext is NULL, SetProcessEvents cannot be turned on, the function would return -1. Otherwise, the state is set and the function returns 0 for success.

New Function - QisLib_OpenMemoryMaps

To open GDSII scan and dbload memory maps directly without the original GDSII file.

New Function - QisLib_SetDrawWindowID

Use this function to give QIS the program's drawing area and QIS would draw directly to this drawing area when the Redraw or ZoomHome function is called.

Pass in a HWND (Windows) or Pixmap/Drawable (Unix/Linux). This can be turned on or off via the onoff parameter. This mode can be toggled on and off during a program's run except during a QIS redraw. Check the return code to see if the mode has been changed or not.

If this direct draw is turned on, QIS would finish the drawing (on the program's drawing area) but it would not return an image size and image buffer when the Redraw or ZoomHome function returns, regardless of what the Set_Image_Format is. The function GetImage would do nothing, it just returns -3 without returning the window, image size, and image buffer.

If this direct draw is turned on, the drawing area can be set to not cleared before drawing starts. QIS draws on top of whatever is in the drawing area prior to a Redraw command. This behavior has an effect of overlaying QIS data on top of an existing picture. The functions Redraw and ZoomHome can be controlled to clear or not clear.

Home view is not remembered/cached under this mode so the command Zoom_Home would not be almost instant. Home view is now also a redraw.

New Function - QisLib_SetExceptionHandlerCallback

New callback mechanism to report asynchronous security errors and allow the user to handle them appropriately.

New Function Parameter - QisLib_InitLib

Unix/Linux only.

The InitLib function now takes an XtAppContext (const void *) parameter. This is the application context of the program. While QIS is busy doing something (e.g. opening a file, drawing, getting vectors, saving to a file, etc.), QIS would process any events for this application context so the program will be responsive to user input. e.g. User clicking stop during a redraw.

If a program doesn't have an application context, for example a simple command line program, then pass NULL as the parameter.

If a program has an application context but does not wish QIS to process any events during a busy process, pass NULL as the parameter.

Also use the SetProcessEvents function to turn on/off processing events during a busy process.

New Function Parameter - QisLib_Redraw, QisLib_ZoomHome

Redraw and ZoomHome have a ClearScreen parameter to control whether QIS would clear the screen before redraw or not. This parameter is only used if SetDrawWindowID is on.

If ClearScreen is off, QIS drawing would be overlayed on top of the existing drawing in the program's drawing area. If ClearScreen is on, QIS would first clear the program's drawing area, then a new drawing would be drawn.

Various Functions Behavior While Opening A File

The behavior of various functions including OpenGDSII, OpenOASIS and OpenMemoryMaps has been changed while a file open is already in progress. Calling these functions while a file open is in progress would do nothing, an error code would be returned to indicate this situation.

Invalid pImageSize Returned for Redraw and ZoomHome

Previous versions of QIS would return a wrong pImageSize when the Redraw or ZoomHome functions are called, thus the program might use invalid bytes in the ImageBuffer and get a wrong image. This has been fixed.


QISLIB v2.60beta1    (03/26/2007)

USB Key support

This version supports USB Key licensing.

Opening and Saving File Progress Function

Opening and Saving File Progress Function - QisLib_SetProgressMessageCallback.
Pass a callback function via this function and file opening and saving percentage progress message string will be passed to the callback function. Default is no progress message.

New Detail QisLib_InitLib Return Codes
 
0, no error
-3, license error
-4, colfill.pat is missing from the program's directory
-5, out of system resource, fill pattern bitmaps cannot be created (Windows only)
-6, gdsfont.shx is missing from the program's directory


To get a detail error message, call QisLib_GetErrorMsg
QFract v1.00 - Trapezoid fracture

First complete release of QFract. This version of QFract output polygons are all trapezoids.

QFract_Init Function Returns Different Codes and Error Messages

QFract_Init now returns 0 for success, -1 for internal database error, -2 for licensing error. In the case of -2, QisLib_GetErrorMsg can be called to get the detail error message for the licensing error.

QFract_GetFracture Function Returns Different Codes and Error Messages
 
0 no error
-1 license db error
-2 license error, QisLib_GetErrorMsg can be called to get the detail
  error message for the licensing error
-3 data collection memory error
-4 data collection error
-5 error/warning, there are open, illegal or unfractured polygons
  QFract_GetErrorCoords can be called to get the coordinates and
  layer:datatype of the error vertices
New Fracturing Error Function - QFract_GetErrorCoords

While fracturing, when there are illegal polygons (e.g. self intersecting), open polygons or polygons that cannot be fractured, in the specified window area, previous version of QFract would stop the fracturing and return an error with no detail information.
This version, the coordinates of the problematic vertex/vertices would be remembered and fracturing will continue for the rest of the layers and polygons in the window. The QFract_GetFracture function now returns if there are fracturing error vertices and users can call a new function, QFract_GetErrorCoords, after each call to QFract_GetFracture to get a list of error vertices if QFract_GetFracture returns -5. The error vertices are grouped on a per layer:datatype basis.
QFract_GetErrorCoords returns the number of layer:datatype, N, where there are error vertices. If the number N is greater than 0, then it returns a pointer to an array of N of type CQisLayerCoords*. Each element in this array is a pointer to CQisLayerCoords which contains the layer and datatype, the number of error vertices and the coordinates of each vertex. Users can parse through this array and report the error vertices if necessary. This array does not need to be freed by the user, QFract will take care of the freeing.
The unit of the coordinates are in the unit set via QisLib_SetVectorUnit before QFract_GetFracture is called which is default to _QISUNIT_UU (user unit).
When there are error vertices, the fracturing might actually be good because depending on the nature of the error polygon, say if it's a zero area polygon, the fracturing output would be the same either way.

New Version Information Function - QFract_GetVersion

Added QFract_GetVersion to get a version and date string. QFract version is separate from QIS version.


QISLIB v2.60Alpha2    (03/16/2007)

First Windows DLL version

This is the first release of the Windows QIS library software. Here are a few preliminary release notes:
This version has the QIS Library in a DLL format. The QFract "module" is inside the QIS DLL.
QFract is separately licensed.
User will need a license for QIS GDSII and OASIS.
This version supports SafeNet USB key.
QFract fractured output are not trapezoidal, they are just convex in X. Output could be a 5 point polygon.
QFract API functions return success or fail. Different failure return codes will be implemented.
There are just 3 simple API functions in the QFract module:
int QFract_Init();
void QFract_Close();
int QFract_GetFracture();

They are declared in the qfract.h file in the installation.






Documentation Download Rev History Price



ARTWORK CONVERSION SOFTWARE, INC.       Company Profile
417 Ingalls St., Santa Cruz, CA 95060    Tel (831) 426-6163     Fax 426-2824    email: info@artwork.com