gbr2greyscale web page logo

GBR2GREYSCALE Revision History

This page contains the summary of GBR2GREYSCALE release dates, versions and changes/fixes made for that release.

Version 1.63 7/3/2019

Software Updates

Fixed an issue where two round flashes were merged together. A state problem related to modality where the last G36/G37 coordinate was not used in computing the position of the subsequent flash was fixed. This was a previously un-handled case where the last G36/G37 polygon was a 360 arc. Because the start and end coordinates were the same the code that collects G36/G37 data blocks when separating draw and flash data from polygon (area fill) data incorrectly computed the position of the position of the misplaced flash.

Fixed the issue where temporary files were left open and locked when the pre-processor crashed. These files will now be unlocked and removable in the event of a crash.

A crash which was caused by the presence of non-Gerber records in the Gerber file. This class of data is now trapped and a message to the effect that the input file is either not a Gerber file or corrupt is issued. IN addition, the offending data and line number are reported in the log file. This condition is treated to be fatal and will result in no output.

Gerber data extents that are defined by circular data are now computed properly. Previously, this could result in a raster image that appeared to be truncated in the event of auto windowing.

Version 1.62 6/5/2019

Software Updates

Fixed the issue where data was dropped.
Fixed the issue where many errors are reported when ripping a GBR file. This was caused by how the tool converts paths with 2 points both of which are in the same coordinate. We now convert those paths into flashes.

Version 1.61 4/1/2019

Software Updates

Fixed the issue where some scratch data are dropped. This was caused by a bug in repairing an illegal polygon. A part of the polygon was hidden because its orientation was mistakenly changed.

Version 1.59 1/24/2019

Software Updates

This version fixed the issue where a Gerber file with many layers (> 35K) fails if ran with sizing.

This version fixed the issue where there is an output offset discrepancy when a Gerber file is ran with and without sizing. This was caused by a dropped scratch data on the border of the Gerber file during sizing. .

Version 1.58 11/22/2018

Speed improvement

Modified the code so that inverse is performed during plotting to improve timing.

Version 1.57 10/15/2018

Software Updates

The latest split274x fixes an issue where output data is incorrectly drawn. This was previously caused by a bug in resolving the input Gerber's G36 and G37 state.
Added support for command codes in lower case.

Version 1.56 6/29/2018

Crash fix

This version fixed an issue where data is either dropped or the program crashes when converting a Gerber data with poorly constructed polygons.

Version 1.55 6/6/2018


Fixed an issue in the buffered reading scheme for Gerber in GBRPLT.DLL. The problem is related to stale data (from previous runs or previous file reads) that resides beyond the end of an active buffer that coincides with "white space".

Too many layers

Fixed an issue where data was dropped because of too many Gerber layers. We increased the allowed maximum layer number to 256k in order to fix this issue.

Version 1.54 5/9/2018

Software Updates

Fixed an issue where some arcs were not sized properly if processed without shrink.

Fixed an issue where the margin of an IPNEG Gerber file differs when processed with or without shrink.

Added the optional argument to invert margin only. It can be used in the command line by specifying "-inverse_margin" or in the library by adding it to sGREYSETTING's mRArgNum and mRArgs.
This will allow the user to invert the polarity of the margin around the artwork. This new command line will complement the existing -inverse option which inverts the polarity of all the output (margin and artwork).
In the event when both of these options are used, the margins will stay the same and the artwork will get inverted.

Version 1.52 4/9/2018

Border and Margin Bug Fix

This version fixes a reported problem where borders are incorrectly identified and margins are not inverted when the input Gerber file is:

  1. negative
  2. and
  3. is processed with sizing.

New Control of Chord Error

Added the chord error argument in the pre-processor. The mChordError parameter in sGREYSETTING or the -chord_error:val command line argument will automatically be passed to the pre-processor.

The chord error, if passed, will override the arc resolution control. This will help cut down the pre-processing time without sacrificing the smoothness of large arcs.

Version 1.51 4/4/2018

Bug Fix - Incremental Gerber Data

Fixed the bug where GBR2GREYSCALE failed to convert Incremental Gerber files. The pre-processor now converts trailing zero and incremental Gerber files to leading zero and absolute RS274X instead of preserving them.

Decimal Formatted Gerber Files

Decimal format Gerber files are no longer supported.

New Control for Gerber Pre-Processor

A new parameter was added to pass additional arguments to the pre-processor. It can be used on the command line by specifying "-splitargs opt_args" or in the library by populating sGREYSETTING's mSArgNum and mSArgs. This can be used to speed up the rip.

Version 1.50 2/15/2018

Bug Fix - Dropped Re-Entrant Polygon

Fixed an issue where a single polygon, made up of digitized areas connected by "cutlines", is dropped. The Boolean function that processed/repaired holes and cutlines was updated.

Bug Fix - IPNEG combined with LPD first layer

Fixed an bug where data was dropped when an input Gerber file with Negative Image Polarity (IPNEG) starts with a "Level Polarity Dark" (LPD).

Bug Fix - Large Vertex Count Polygon

Fixed a problem where split274x was not able to handle polygons with large vertex count.

Bug Fix - Axis Rotation

Fixed an error where a Gerber file with an axis select that assigns output device axis A to data axis Y and axis B to data axis X (ASAYBX) is not rotated properly.

Version 1.49 1/29/2018

Software Updates

Fixed an issue where high enumerated Dcodes were not handled properly - the default maximal value is 9999.

The latest version removes references (draws and flashes) to Dcodes that are not defined - this condition caused GBRPLT.DLL to fail in the previous release.

Version 1.48 11/2/2017

Software Updates

This version fixed the issue of integer overflow with the Gerber input file.

Version 1.47 10/30/2017

Software Updates

Updated GBRIP to prevent messages from popping up when "-silent" option is specified.
The failure message will be recorded in the log file.

Version 1.46 6/21/2017

Software Updates

Updated GBRIP to fix the issue where some of the surface data were not scaled properly.

Added optional argument -ignore_deprecated to ignore axis select and mirror mass parameters. Added member to sGREYSETTING: mIgnoreDep (default is false on Init).

Version 1.45 5/3/2017

Software Updates

%ICAS% was dropped - this has been fixed.
(2) Fixed the issue where a round is erroneously converted into a rectangle.
(3) Fixed the issue where the raster crashes when the "-nosplitshrink" option is not used.

Version 1.44 3/14/2017

Large Vertex Count Polygon - Fix

Fixed a program crash that occurred when converting and qualifying a large vertex count polygon.A handler was added for this type of hard crash when qualifying the input data (implies NOT -nosplit). We will be adding the handler to other modules in our flow in the near future.

Added support for ASAYBX Mass Parameter

Fixed a reported problem where raster output is incorrect due to the XY axis swap designated (ASAYBX) mass parameter.

Version 1.43 1/18/2017

Enhanced reporting

Fixed conditioning flow to report an error if the file format is wrong. We added a check to make sure that the designated mass parameter is not out of place.

Version 1.42 11/1/2016

Data Conditioning Option

A new command line argument has been added:


and a new member of sGREYSETTING, mCondRetry, which enables the "rerun" of input data conditioning a number of times to try to fix bad input data. This data fixing is done ahead of the rasterizer module (which has its own data conditioning routines). This argument should not be used regularly but rather in cases where the input data has been found to be particularly "dirty" - for example, several duplicate points that result in dropped polygons. A good starting value for <num> is 2.

Version 1.41 10/9/2016

Circular Issue

This version fix an issue where an optimization introduced in v1.40 for handling full circles (circular data with the same starting and ending point) caused a problem across internal layers in the handling of G36/G37 while conditioning (split274x) the input Gerber file.

Version 1.40 10/7/2016

New command line Options

New -erraswarn command line option. When set, dropped polygons will not cause the program to fail.At the same time, the program will append conditioning error/warning messages to log file. Dropped polygons if any will be reported.

New -nowarn command line option. This option excludes conditioning warning (warning messages from our split274x call) messages in the log file. Actual conversion errors will still appear in the log file.

New -norip command line option. This option does not create any RIP output and logs the image info in the log file.

Fixed issues where some openings in the ground plane were dropped.

Version 1.39 9/28/2016

Rip problem

Fixed an issue when command line included a window with margin and inverse command line options.

Version 1.38 9/25/2016

Margin Controls

Added support for "-margin" with "-window". The optional argument "-aw:[l,r,b,t]" must be used if no window is specified. The optional argument "-margin:[val|l,r,b,t]" must be used with "-window:[LLx,LLy,URx,URy]". There is curently an issue with margin and inverse which we will fix in the next release.

  • Fixed issue where it fails to convert a few Gerber files (met6d045_hib.gbr, cas2j080_ls.gbr and cas2j080_bs.gbr). Please do not use the "-nosplit" optional argument unless the Gerber input comes from Artwork's tools.

    Default Location of Log File

    Default log file is moved to work directory instead of output directory.

    Log File Name/Location Argument

    Added optional argument "-log:[logpath]" to specify a log file name.

    Updates to members of sGREYSETTING

    Added members to sGREYSETTING: mLogFile (default init value should be set to "") and mNoHeader (default init value should be set to false). These will be initialized when the struct's init function is called.

    Version 1.37 8/15/2016

    GBRUNION Manager Unit Problem

    Unit values on the command line carrying an exponent in their expression (for example 1.0e-005) were not handled properly. This has now been fixed.

    Version 1.36    5/17/2016

    Error messages

    Catch error from rasterizer and include a more informative error message in the log file.
    Previously error handling on RIP errors did not depend on the exit code from GBR2TIFF, but depended on parsing the rasterizer log file. Now the exit code is checked and then the log file is checked. This provides a more robust method for checking for RIP failures. Until recently the only failure modes that presented themselves were either in parsing of the gerber file proper or in unionizing the gerber file as required by sizing. Recently some new test cases exposed a deficiency in error handling at the back end, i.e.while rasterizing. This has been corrected.

    Gerber Union output greater than 2GB

    Catch a gbrunion output that is greater than 2GB and give an error. This is true even if -erraswarn is set or -maxerr is greater than 0.
    Currently the rasterizer does not support gerber files greater than 2 GB that are the result of unionization which is required for sizing. This condition is now trapped and reported as a failure. Unionized file sizes can be minimized by making use of the -circularize command line option in gerber2grey.

    Version 1.35    4/28/2016

    Software Improvements

    Added new option -nosplit avoids input file validation. This should only be used if the input is known to be "good", this means there are no multiply defined apertures, the maximum number of macros and dcode definitions does not exceed 10000 and dcode enumeration does not exceed 10K. Consistency between G74/G75 codes and I/J values should be correct. Format statement precision does not exceed 8 places, typically 2.6 for inch and 3.5 for mm data. Data range is consistent with format statement.

    Added new option -nosplitshrink performs file validation but does not compensate G36/G37 data by 1/2 pixel size.

    Added an "Init" function for sGREYSETTING struct to initialize settings with their default values

    Updated sample code (including C# sample code):

  • to use new optional arguments: -maxerr, -erraswarn, -circularize, -gengargs, -nosplit, -nosplitshrink, -getinfo
  • to show updated usage of Gbrip_GetExtent (added optional args: wrkdir and keeptmp)
  • to show usage of new function Gbrip_GetOutputInfo

  • Version 1.34    4/15/2016

    Software Improvements

    Use specified thrnum for sizing (not limited to 4).
    Added -maxerr and -erraswarn optional arguments (int mMaxErr and bool mErrAsWarn in the API).
    Speed improvements.

    Version 1.33    4/7/2016

    Software Improvements

    Catch gbrunion error when -silent is turned off.
    Added a length parameter in the Gbrip_GetErrStr function. Default is 256 but it must be set to the error string buffer's length to avoid memory corruption.
    Added a new function Gbrip_GetOutInfo to get the output image's information. This will be stored in a sGBRIPOUTINFO struct and has the following members: mUnit, mShift, mImgXY, mScale, mRowCnt, mRowSz, mRowByte, mBitmapBytes.
    The API changes can be found in the header igbriplib.h located in the installation folder's source directory.

    Version 1.32    4/1/2016

    Software Improvements

    Intercept error pop-up and write the error message in the log file.

    Version 1.31    3/16/2016

    Software Improvements

    Invalid Gerber files are detected in the front end and not rasterized.
    No pop-up on silent mode. Error messages are output in the log file and the executable returns 1. The executable returns zero on success and non-zero on failure. The return value "one" means that the input arguments are not valid and negative return codes mean that the run failed.
    Added support to Gerber with dcode up to MAXINT.
    Fixed the issue where margins are not inverted with "-inverse" mode on.
    Scale is applied to the margin.

    Version 1.30    12/3/2015

    Speed Improvements

    This version is 5 to 10 times faster on customer files when sizing is used.

    New Licensing

    This version is up to date with the latest Flex node locked licensing.

    Version 1.28    7/14/2015

    Update and Bug Fix

  • Fixed the bug where output is blank when no sizing is present.
  • Rip speed improvement with sizing (grow only).

  • Version 1.27    4/22/2015

    New Features

  • Added new logging information.
  • Fixed the included C# DLL for 32bit.
  • Added a check for .NET prerequisite on installation.

  • Version 1.26    4/22/2015

    New API Gbrip_GetExtent function

    Added Gbrip_GetExtent function to get the extent of the input Gerber file without rasterization. The usage of this function is added in the sample source code that is included in the package.

    New Margin option

    Added margin capability with the new argument -aw:[left,right,bottom,top] where left, right, bottom and top values are the margins in the specified unit (-unit:mm or -unit:inch).

  • Pass argument in the gbr2geyscale command line.
  • Pass argument in the input parameter (mRArgs) of the DLL's Gbrip_Convert function.

  • Version 1.25    3/9/2015


    Added gbr_rip softkey - gbr2greyscale (32 or 64 bit) are the only key codes needed.

    Version 1.24    3/9/2015

    New 64 bit release

    Added a new 64 bit release. Includes C# sample source code.


    Added gbrunion softkey so we no longer need the GBRUNION (2757/2756) key for sizing.

    Added C# sample code

    As more of our OEM partners use C# we are adding C# sample source code to demonstrate what is needed when programming in C#.

    Version 1.23    2/24/2015

    Independent Bias in X and Y

    Added the ability to independently control the edge bias in X and Y.

    Window with Sizing

    Previous version did not pass the window size to the boolean sizing engine -- this resulted in very slow sizing when doing only a small part of the layout. This has been fixed.

    Added C# sample code

    As more of our OEM partners use C# we are adding C# sample source code to demonstrate what is needed when programming in C#.

    Version 1.22    2/04/2015

    Source Code Example

    Added sample code in source folder and batch file in examples folder for programmers who want to call the library from their C/C++ application.

    Disabled Ricoh bitmap orientation

    The standard version of GBR2GREYSCALE included an non-standard bitmap arrangement that was specific to Ricoh. This has been removed in the non-Ricoh version.

    Version 1.21    1/28/2015

    Software Updates

    Fixed flex node licensing issue.
    Fixed a bug that causes a crash (same as GBRIP).
    This release doesn't have a sample code - it will be added in the next release.

    Version 1.18    1/6/2014

    Flipped image

    The issue where the output image is flipped when -super:0 is specified has been fixed.

    417 Ingalls St. Unit C, Santa Cruz, CA 95060 831.426.6163  email: