This page contains the summary of GBR2GREYSCALE release dates, versions and changes/fixes made for that release.
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.
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.
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.
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. .
Modified the code so that inverse is performed during plotting to improve timing.
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.
This version fixed an issue where data is either dropped or the program crashes when converting a Gerber data with poorly constructed polygons.
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.
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.
This version fixes a reported problem where borders are incorrectly identified and margins are not inverted when the input Gerber file is:
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.
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 format Gerber files are no longer supported.
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.
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.
Fixed an bug where data was dropped when an input Gerber file with Negative Image Polarity (IPNEG) starts with a "Level Polarity Dark" (LPD).
Fixed a problem where split274x was not able to handle polygons with large vertex count.
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.
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.
This version fixed the issue of integer overflow with the Gerber input file.
Updated GBRIP to prevent messages from popping up when "-silent" option is specified.
The failure message will be recorded in the log file.
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).
%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.
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.
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.
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.
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.
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.
Fixed an issue when command line included a window with margin and inverse command line options.
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.
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.
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.
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.
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.
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):
Use specified thrnum for sizing (not limited to 4).
Added -maxerr and -erraswarn optional arguments (int mMaxErr and bool mErrAsWarn in the API).
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.
Intercept error pop-up and write the error message in the log file.
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.
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.
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).
Added gbr_rip softkey - gbr2greyscale (32 or 64 bit) are the only key codes needed.
Added a new 64 bit release. Includes C# sample source code.Licensing
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#.
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#.
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.
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.
The issue where the output image is flipped when -super:0 is specified has been fixed.