Container to store polygons
QisMBStore QisMBStore C++ API (qismbstore.h)class QisMBStoreVersion ControlN()NV()XY()Layers()Datatypes()class QisMBStoreV2Get_data_extents()Get_vertex_count()Get_min_max_layer()Get_min_max_datatype()Get_unique_ld_nums()Get_unique_lnums()Free_layer_list()QisMBStore commandsstore.print_infostore.write_as_polysstore.write_as_image
class QisMBStore { ... };Interface to an object that stores a set of boundaries
Cast to a pointer of another version in the class hierarchy (base/derived).
Get the latest version number
Version numbers start at 1 and are reflected in the class name using the suffix V
The topmost base class is version 1 (V1 implied)
The cast returns NULL if a version number is not recognized/implemented
xxxxxxxxxxvirtual const char* QisMBStore_name(const int version) const = 0;virtual void* QisMBStore_cast(const int version) = 0;virtual const void* QisMBStore_cast(const int version) const = 0;virtual int QisMBStore_latest_version() const = 0;Returns the number of boundaries in this set. Returns 0 for an empty set
xxxxxxxxxxvirtual const int N() const = 0;For each P (0 <= P < N()), NV()[P] represents the number of vertices in the boundary at index P in this set
Returns NULL for an empty set
xxxxxxxxxxvirtual const int* NV() const = 0;For each
P (0 <= P < N()),XY()[P]is an array of xy-coordinate pairs for the boundary at index P in this set
Total number of integers in XY()[P] is NV()[P]*2. For each i (0 <= i < NV()[P]) XY()[P][2*i] and XY()[P][2*i+1] represent a single vertex of that boundary.
Returns NULL for an empty set
xxxxxxxxxxvirtual const int* const* XY() const = 0;For each
P (0 <= P < N()),Layers()[P]andDatatypes()[P]represents the layer:datatype corresponding to the boundary at index P in this set
Returns NULL for an empty set
xxxxxxxxxxvirtual const unsigned short* Layers() const = 0;virtual const unsigned short* Datatypes() const = 0;xxxxxxxxxxclass QisMBStoreV2: public QisMBStore { ... };QisMBStore Extension #2 to get more information about the container
Get the cumulative extents of the boundaries contained within this store
minx..miny : buffers to retreive the extents
xxxxxxxxxxvirtual void Get_data_extents( int& minx, int& miny, int& maxx, int& maxy ) const = 0;Get the sum of vertices of the boundaries contained within this store
xxxxxxxxxxvirtual unsigned long long Get_vertex_count() const = 0;Get min and max layer numbers of the boundaries contained within this store
min, max : buffers to retreive the min, max layer numbers
returns false if the store is empty
xxxxxxxxxxvirtual bool Get_min_max_layer( unsigned short* min, unsigned short* max ) const = 0;Get min and max datatype numbers of the boundaries contained within this store
min, max : buffers to retreive the min, max datatype numbers
returns false if the store is empty
xxxxxxxxxxvirtual bool Get_min_max_datatype( unsigned short* min, unsigned short* max ) const = 0;Get a list of unique layer:datatype(s) from the boundaries contained within this store
layers, datatypes : buffers to retrive the list of layer and datatype pairs. layers[i] and datatypes[i] represent one unique pair
returns the number of items in both lists (number of pairs)
the memory allocated to store the lists MUST be destroyed using QisMBStoreV2::Free_layer_list for both lists
xxxxxxxxxxvirtual int Get_unique_ld_nums( unsigned short*& layers, unsigned short*& datatypes ) const = 0;Get a list of unique layer number(s) from the boundaries contained within this store
layers : buffers to retrive the list of layer numbers
returns the number of items in the list
each layer in the list may contain more than one datatypes
the memory allocated to store the list MUST be destroyed using QisMBStoreV2::Free_layer_list
xxxxxxxxxxvirtual int Get_unique_lnums( unsigned short*& layers ) const = 0;Free the memory allocated to store the layer list
xxxxxxxxxxvirtual void Free_layer_list(unsigned short* list) const = 0;See qismbstore.h for relevant API
xxxxxxxxxxstore.print_info $bin={bin_id}
Print information about a container of boundaries
{bin_id} represents name of a variable associated with the container to be written
xxxxxxxxxxstore.write_as_polys$bin={bin_id}path={output_base_path}grid={grid_m}units={units_m}[format={GDS | OAS}][top={top_cellname}]
Write a boundary container to disk as a GDSII or OASIS file
{bin_id} represents name of a variable associated with the container to be written
{output_base_path} is the directory + file name of the output file. The extension (.gds or .oas) is automatically added based on the format
{grid_m} and {units_m} are the file grid and units in meters. e.g for a micron file with nano meter resolution, grid = 1e-9 (nm) and units = 1e-6 (um)
format if used determines the file format. Default -- GDS
{top_cell_name} if used writes the top cell name as specified. Default -- "TOP"
xxxxxxxxxxstore.write_as_image$bin={bin_id}path={output_base_path}grid={grid_m}units={units_m}resolution={PXSIZE | DPI | GRID},{x}[,{y}][format={TIF | TIF8 | BMP | RAW}][invert][right_to_left][dither=0.0-1.0]
Write a boundary container as a monochrome bitmap image in TIFF/BMP/RAW format
Requires the QisMRaster extension to be installed and configured
Requires 1 license of (14827) per call
{bin_id} represents name of a variable associated with the container to be written
{output_base_path} is the directory + file name of the output file. The extension (.tif, .bmp or .raw) is automatically added based on the format
{grid_m} and {units_m} are the file grid and units in meters. e.g for a micron file with nano meter resolution, grid = 1e-9 (nm) and units = 1e-6 (um)
resolution can be specified in both X and Y directions as :-
PXSIZE -- size of 1 pixel in file units
DPI -- dots per inch
GRID -- as a multiple of the file grid
Pixels can be square {x} == {y} or rectangle {x} != {y} . If {y} is omitted, {y} = {x}
format if specified, determines the file format. Default -- TIF
invert if used, reverses the image polarity (black (0) data on white (1) background)
right_to_left if used, rasterizes the data from right to left. i.e. min-x of the data appears on the right hand size (max-x) of the image
dither if used, generates a dithered image using a 8x8 Bayer matrix. The dithering value must be from 0.0 (max. 0 pixels/8x8 pixel data block) to 1.0 (max. 64 pixels/8x8 pixel data block)
Last Updated -- Wed Nov 19 18:22:01 UTC 2025