gbr rip web page logo


GBR RIP Revision History


Version 8.13 2/27/2024

Multi Window issue

This release fixes an issue in multi-window mode associated with SR data in the presence of scaling.


Version 8.12a 1/16/2024

Gerber preprocessor (split274x) Issue

This release fixes an issue in the Gerber preprocessor (split274x) which was manifest as in incorrect tool select. The Gerber preprocessor is more than a simple Gerber interpreter in that in addition to fixing things that are "not nice" it also produces an optimized output where data in LPD and LPC data may be reordered in the output (e.g. fill data is collected and output at the end of an LP block). Additionally, GBRIP is hard coded to call split with -output_arc_draws (i.e. arcs with width are converted to fill data). This has been the policy in GBRIP since v7.65 release 19 May 2021. In the problem customer file the optimization code picked the tool associated with the previous flash D61 rather than D50 when converting the arc draw to a filled area.


Version 8.12 10/24/2023

Layer Polarity issue

Incorrect layer polarity presented itself for the last nonempty internal layer of a Gerber file when the layers that followed it were only populated with round flashes of zero dimension. The Gerber preprocessor handled these internal layers correctly by removing these records leaving those layers empty but this confused the importer in GBRPLT DLL.
GBRPLT now invokes the split preprocessor with a "-keep_zero" command line option which tells split to not remove these records. The output from GBRIP is correct. The "-keep_zero" feature was an existing facility in the split preprocessor.


Version 8.11a 9/27/2023

Log file issue

A problem was reported such that when using the GBRPLT DLL some log files could not be deleted because these files created by the split274x Gerber preprocessor were not closed.
In addition to this issue, a memory leak in the Gerber preprocessor associated with a boolean function (window break) was fixed.
These issues would not be apparent in the use of the EXE version of GBR2TIFF.


Version 8.11 9/13/2023

SR Tolerance

The behavior of SR span tolerance was changed in the Gerber preprocessor (split274x). Where in previous versions there was by default a test for the displacement of the extremal drawables in an SR block from their "ideal" position, now this check is turned off by default.
It may be turned on by passing the command line option -enforce_sr_span_tol to the split274x Gerber preprocessor in the same way one would pass the control -sr_span_tol:value[unit], as an argument between -bgn_split_args and -end_split_args.
The default span tolerance is 1 um - this has not changed. Additionally, messages to stdout and/or the log file in this context were changed and (hopefully) are more understandable. SR span tolerance "violations" are now treated as warnings and only hard errors if -enforce_sr_span_tol is invoked.


Version 8.10 7/27/2023

Raised limit for number of paint/scratch layers

GbrRip 64 bit now supports up to 4M internal paint and scratch layers. Previously only 1M layers were supported which resulted in unpredictable behavior including no output when the input Gerber file had more than 1M layers. The 32 bit version still only supports 1M internal layers.

Negative Dcode Dimension

When the use of -dcode_adjust would generate a standard Dcode with a dimension less than zero, this Dcode will now have a dimension of zero.
For example, in a customer use case the size of a round Dcode in the ADD directive was negative after using -dcode_adjust.
The software now changes such aperture from %ADD93C,-0.00001*% to %ADD93C,0*%.
The presence of Dcodes with negative dimensions as output by the Gerber preprocessor would cause GBRPLT to exit without creating an output..


Version 8.09 2/22/2023

Scaling Issue when using Dcode Adjust

Fixes the broken functionalities introduced in v8.08 which addressed customer complaint about spurious extra pixel in line round tool draws (line widths ~20 pixels) when -dcode_adjust was used. Although v8.08 passed GBRIP regression testing, a problem became manifest for large width draws (> 500 pixels) for certain combinations of isotropic and non-isotropic scaling and rotation. The code changes introduced in v8.08 were developed under customer test conditions which only included unity scaling for narrow line widths.


Version 8.08 1/27/2023

Improved Dcode Adjust Behavior

This version fixed an issue where the rasterizer was snapping up when calculating the number of pixels in a round draw which sometimes resulted in an extra pixel along the width of a round draw. This was addressed by passing a non-rounded (double value) dcode tool width to the appropriate function in GBRPLT.DLL. Previously a rounded ((int) (toolwidth/grid+0.5) tool width was being passed and this value became quantized again (and sometimes it was rounded up) with the result that sometimes the output path width was 1 pixel wider.


Version 8.07 10/2/2022

Improved Slant Adjust Behavior

Fixed an issue where the output for -slant_adjust was incorrect for very shallow lines (angles that deviated from horizontal less or equal to 0.04 degrees). The threshold for shallow line behavior adjustment was changed such that shallow lines in this range were treated as they were before "-slant_adjust" was introduced (i.e. output in this regime is consistent with old behavior - version 8.03 1/10/2022).

Compensation (-contours)

Fixed an issue with an output deviations of 1 to 2 pixels from expected width for 45° and 135° diagonal lines. It turns out that these diagonal lines were not traces but actually polygon data. It was expected that the -contours option would address this issue but the flow associated with -contours (compensation) was inconsistent depending on how the RIP was invoked (i.e. with use of transform file (-xf) or auto window (-aw) or a prescribed window (-wplot)). This has been fixed. Now all three flows produce the same expected output.


Bug Fix - Dropped pad

A pad was dropped because the Gerber preprocessor was confused by the presence of G55 codes.
The notes from "The Gerber File Format Specification Revision 2019.06" in section 7.1 Deprecated Commands reads: G55 / Prepare for flash. This historic code optionally precedes D03 code. The problem was fixed by filtering out the G55 codes as the file was read.


Version 8.06 5/1/2022

Bug Fix - Long Pathname Execution Environment

Execution where pathnames exceeded 128 characters could result in a crash. Now the limit is WIN32 limit of 260 characters.

Width Corrections for Round Ended Linear Draws

v8.05 introduced corrections for round ended linear draws when the slope of a trace was between -20 and 20 degrees. This new behavior was not switchable. With v8.06 this behavior is now OFF by default and can be turned ON with the use of passing the "-slant_adjust" command line option to GBRPLT DLL. In GBR2TIFF this command line argument can be passed in the usual way as an argument to "-engargs" in which case it is passed downstream to GBRPLT.


Version 8.05 2/13/2022

Improved raster output for shallow angle traces

This version fixed an issue with the new algorithm to better handle line widths with shallow angle (new feature which was introduced in version 8.04).


Version 8.04 2/2/2022

Improved raster output for shallow angle traces

This version includes a new algorithm to better handle line widths with shallow angle (deviations from horizontal +/- 15 degrees).


Version 8.03 1/10/2022

Fix to Gerber preprocessor

Fixed a bug in the Gerber preprocessor that manifested as a extra pad under the following conditions: input Gerber file was IPPOS, the first internal layer was LPC, FS was "non-optimal" (not 3.5 for mm nor 2.6 for inch data, requiring reformatting) and the Gerber preprocessor was invoked with -outline_arc_draws which is the standard method as of GBRIP V7.65 5/19/2021. Data found on the first internal negative layer was treated as LPD - this was wrong and corrected.

New API

Added API to GBRPLT.DLL to affect the rasterization of round ended trace draws. This new command line -dcode_adjust is passed to the Gerber preprocessor which in turn modifies entries in the embedded Dcode table of the input Gerber file. Usage of this new API is as follows (taken from GBR2TIFF.EXE help):

    -dcode_adjust:VU[,D] compensate standard non-zero round apertures as per Value and Unit
                                Unit must be one of "um", "mm", "inch" or "%"
                                if Unit is "%" then it must be followed by ",Dpi" (suggested value for V is -10)

The following usages are all equivalent and will result in the same rasterized output:

-dcode_adjust:-0.05um, -dcode_adjust:-0.00005mm, -dcode_adjust:-0.000002inch, -dcode_adjust:-10%,50800
Note that when the adjustment is given as a percentage then DPI must be part of the argument list. The value of V is signed, so a negative value will result in rounding rules such that path draws in pixels will be narrower than the nominal (i.e. no dcode adjustment). If V is positive then the rounding rules will be such that path draws in pixels will be wider than the nominal.
When using Gbr2TIFF this option is passed after -engargs so that it will be passed to GBRPLT.DLL setupFunc as in this example:
c:\wcad\gbrip64.v803\gbr2tiff64.exe test_mod.gbr -274x -mm \
      -pack:50800_adj.tif -dpi:50800 -scale:1.0,1.0 -wplot -1,-1 1,1 \
      -ram:2000 -logcalls -engargs -thrnum:2 -dcode_adjust:-10%,50800

N.B. In this example the DPI is provided twice, once is the usual way and then again as a parameter to -dcode_adjust. The follow command line is fully equivalent to the one above:
c:\wcad\gbrip64.v803\gbr2tiff64.exe test_mod.gbr -274x -mm \
      -pack:50800_adj.tif -dpi:50800 -scale:1.0,1.0 -wplot -1,-1 1,1 \
      -ram:2000 -logcalls -engargs -thrnum:2 -dcode_adjust:-0.05um



Version 8.01a 10/08/2021

Sample Projects

Updated for the sample projects (located in "/source"):



Version 8.01 10/06/2021

Data Flow Correction

Fixed a flow bug in the Gerber preprocessor when sizing is requested.

either

-contours from GBR2TIFF or GBRPLT

or

-dpi:N in the split274x command line when N is non-zero

Note: N < 0 indicates negative sizing, the amount of sizing being one half of 1/N where the units of N are in dots per inch.


Version 8.00a 09/10/2021

MS VS 2015

Fully qualified 64 and 32 bit releases of GBRIP built on VS 2015.

Installer VS2015

Installer also depends on VS 2015 redistributables.

Performance Enhancement

Version 8.00a exhibits improved speed attributed to change in compiler version.


Version 7.66 7/16/2021

New OEM Licensing

This version has a new HASP keying routine for our OEMs. From this version on, there is no need to create specific version for each OEM who licenses GerberRip. OEM clients will be able to load and install the standard version along with a specific HASP DLL file which will be provided separately. This release was built with VS2008.


Version 7.65a 5/23/2021

Bug Fix in Gerber preprocessor

This version fixes a bug in the Gerber preprocessor when a D03* with no explicit X or Y values appeared immediately after an LP command and G36/G37 were present in the previous internal layer. Because the Gerber preprocessor rebuilds the input file including reordering of draw and area fill data to make use of multi-threading the lack of explicit X or Y values in the flash command caused a state problem in recording the correct position on output.


Version 7.65 5/19/2021

Bug Fix: Arc Draws with Width

Now, by *default* all arcs drawn with a non-zero width round tool are converted to polygon data before rasterization by the Gerber preprocessor. This avoids this class of data being rasterized with specialized arc draw routines. On occasion these routines would generate spurious data or artifacts especially if the width of the arc was large compared to the radius, arcs crossed raster band boundaries or would terminate at nearly 90 or 270 degrees and other conditions.
Over the years these issues were addressed by breaking such arcs into safe sections and calling the arc generation in a recursive manner. Rasterization of the polygon representation of said arc draws are now handled by the area fill rasterizer. If necessary, the user has the option to go back to the previous rasterization model for arcs drawn with a non-zero width round tool with the -engargs option -outline_arc_draws or to pass -outline_arc_draws to GBRPLT.DLL. This is not recommended.
The new method produces smoother arcs for low precision (FS) Gerber files, is faster than the old approach and has been extensively tested as a module and in the product. The code for arc draw to polygon conversion has been in use in the ODB++ family of products and now has been added to GbrRip.

Super Sampling

Super sampling *and* formatting of super sampled data is now multi-threaded. Previously it was single threaded and only mono-chrome images were formatted using multi-threading.

Big TIFF

GBR2TIFF now supports Big TIFF.
Big TIFF is turned on with the -bigtiff command line option.


Version 7.63 10/23/2020

Software Update

This version fixes the bug related to scaling in both directions that caused a gap in the output. This bug was tied to the fix introduced in v7.58 (the pad that was too big by one pixel).


Version 7.62 9/30/2020

Software Update

v7.61 fixed a bug associated with round circular traces with included angle less than 360 degrees and vertices that might coincide close to but not exactly ±90 degrees. The solution in v7.61 was to break up the arc by calling the out_arc function recursively but breaking the original included angle into a number smaller angles such that the arc path would start and/or terminate at multiples of ±90 degrees.
This version fixes a bug that manifested itself where a circular trace generated as just prescribed would be rendered with 360 degrees.
A simple check was added to protect against over-recursion.


Version 7.61 9/16/2020

Better handling of Circular traces

Fixed the bug related to a round circular trace with a vertex that coincides close to but not exactly +/-90 degrees. The algorithm to draw the circular trace is "exact" but in rare cases (when there are perturbations caused by the 90 rotation) some numerical problems can be introduced and the result is a loss in fidelity.


Version 7.60 8/19/2020

Better handling of Rectangle flash alignment with draws

This version has an improved way of handling square and rectangular flashes so that they align better with coincident draw data.


Version 7.58 5/25/2020

New -flash2bndry Command Line Option

Fixed an issue where GBRIP outputs a flash that is too big by 1 pixel by treating rectangular and square flashes as polygon data. In this mode, some flashes will be output as before but some will be smaller in size (usually 1 pixel in one dimension) because of the enhanced/improved precision associated with these two apertures types in GBRPLT's database.
The resulting size of course depends on DPI, whether the flash dimension is odd or even in pixels, scaling and snapping of flash center in pixel world. At lower DPI's this enhancement is not important.
This feature can be turned off by using -flash2bndry as an argument to -engargs in Gbr2Tiff or as a direct parameter to GBRPLT.DLL.


Version 7.56 5/12/2020

GBRIP crash fix

Fixed an issue where GBRIP crashes when using two threads. This was caused by a draw that crosses raster boundaries. To fix this, the software handles these draws specially.


Version 7.54 4/6/2020

Increase Max Internal Layer Support

Fixed an issue where GBRIP failed because the input file has too many layers. We updated some 64bit modules to increase the maximum number of layers it can support. The 64bit release can now support input files that have up to 1048576 layers. The32bit release only support input files that have up to 262144 layers.

Pixel Compensation Fix

Fixed an issue where the top part of the output is missing pixels. To fix this, we modified the library to add several pixels in the image length calculation and return the offset to the original row (for the first band).

Boolean Library

Updated boolean library to the latest (v2.645).


Version 7.53 3/15/2020

Pixel Snapping Issue

This version fixed an issue where the calculated image size snaps to the next/previous pixel unnecessarily. This was creating an image output that is 1 pixel larger than it should be. To fix this issue, we disable pixel snapping if the calculated image width/height is a whole number.


Version 7.52 1/15/2020

Support for Flexera Key

This version includes support for Flexera USB key and daisy chain licensing.

Software Updates

Fixed arc extent calculation. Extents defined fully or in part by circular data are now correct.

Fixed an issue where a file with many arcs created a polygon that has more than 5000 vertices. This type of polygon is not supported by the plotter. These arcs are now segmented and split into several overlapping polygons.

Fixed an issue where multi threading creates a broken text stroke. This manifested because the input file has such a coarse resolution. In this release, the processor automatically converts these input files into the best format.


Version 7.50 3/20/2019

Missing data in Macro

Fixed an issue where a macro was missing a hole when ripped. This was caused by a bug when cleaning up stale buffer with trailing garbage.


Version 7.49 3/15/2019

Thermal Macro Issue

Fixed issue with thermal macro definition having nonzero angle parameter in the presence of mirror and/or rotation.


Version 7.47 1/2/2019

Format Overflow

Fixed an issue where some SR data are not exploded. This was caused by a variable that is not properly reset because of format overflow.


Version 7.46 11/22/2018

Speed improvement

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


v 7.45 (11/15/2018)

Software Updates

Fixed the issue where multiple windows in MM unit are producing blank output on the 2nd and succeeding windows.


v 7.44 (9/4/2018)

Software Updates

Fixed a bug where GBRIP failed to rasterize an input file with a large number of layers. The maximum number of layers GBRIP was raised to 256K in v7.42 but one of the intermediate modules was not updated - this was fixed.

The pre-processor now removes redundant and empty internal RS274X layers. This results in faster rip times as it reduces the number of database traversals.

Added threading to circularization for speed improvement during pre-processing.

Fixed a bug in the pre-processor where an optimization thats removes redundant macros caused the output to be truncated.

Fixed a bug for large round draws that straddle raster buffer boundaries. These paths were showing discontinuities at the raster buffer boundaries.

The pre-processor (split274x) is no longer inlined into GBRPLT.DLL but used as a library.

The header for TIFF files (both uncompressed and packbits) now reflect the usage of the -dpx:N and -dpy:M command line options which allows for pixel scaling by row and/or column removal. Details


v 7.43 (7/14/2018)

split274x New features

This version augments the split274x (preprocessor/conditioning) functionality found in GBRPLT.DLL. To see the specifics please refer to the split274x page.


Refreshed source folder

Includes sample code that illustrates use of the new split274x features


Bug Fix - stack overflow

fixes an issue introduced in v742 that manifested itself as a stack-overflow crash


Bug Fix - MultiWindow Mode

Multi-window mode was fixed for the special condition when either xmin or ymin was equal to 0 in a list of windows to be plotted (-wplot format xmin,ymin xmax,ymax).


Increased pre-processor control

Fine control of the Gerber preprocessor is now available from GBR2TIFF by passing arguments to GBRPLT.DLL using the -engargs command line option. An example of thread control in GBRPLT from GBR2TIFF is illustrated here

gbr2tiff64.exe icsxseed.gbr -274x -inch -aw -dpi:10160 -pack:out.tif -engargs -thrnum:2

Options to be passed to split274x must appear with those after -engargs, but encapsulated with -bgn_split_args and -end_split_args as in this example:

gbr2tiff64.exe icsxseed.gbr 
   -274x -inch -aw -dpi:10160 -pack:out.tif -keep_split! 
      -engargs -thrnum:2 
         -bgn_split_args -thrnum:8 -dpi:0 -chord_error:0.5 -circularize:1um -end_split_args

In the second example the first -thrnum:2 tells GBRPLT.DLL that two rasterizers are to be used, but 8 threads are to be used for polygon sizing and vertex control. These processes, rasterizering and conditioning, do not run concurrently.

Use Cases Showing Different split274x Options

We have two files in our working directory: a 274x file called NoShift.gbr and a batch/script file called NoShift.bat. We will show differences in cleaned output size that are produced using different options; the difference in processing time and the difference in the bitmap output (hopefully none).

[C:/wcad/Gbrip64.v743/EXAMPLES] ls -ltr
total 94453
-rwxrwxrwa   1 win82\tester    win82\None      48358866 Jul 13 18:09 NoShift.gbr
-rwxrwxrwa   1 win82\tester    win82\None           748 Jul 13 18:15 NoShift.bat

The contents of NoShift.bat

erase *.art /q
erase *.log /q
erase *.tif /q

..\gbr2tiff64.exe %CD%\NoShift.gbr -274x -aw -dpi:10160 -status -logcalls
 -ram:1024 -pack:std.tif -units:inch


..\gbr2tiff64.exe %CD%\NoShift.gbr -274x -aw -dpi:10160 -status -logcalls
 -ram:1024 -pack:keep_split.tif -units:inch -keep_split!


..\gbr2tiff64.exe %CD%\NoShift.gbr -274x -aw -dpi:10160 -status -logcalls
 -ram:1024 -pack:dpi0_maxpts.tif -units:inch -keep_split! 
 -engargs 
 -bgn_split_args -dpi:0 -chord_error:1um -maxpts:4096 -end_split_args


..\gbr2tiff64.exe %CD%\NoShift.gbr -274x -aw -dpi:10160 -status -logcalls
 -ram:1024 -pack:cir_2um.tif -units:inch -keep_split! 
 -engargs 
 -bgn_split_args -dpi:0 -chord_error:1um -circularize:2um -maxpts:4096 -end_split_args
We then run the batch file
[C:/wcad/Gbrip64.v743/EXAMPLES] ./NoShift.bat

Comparison of Output Results

[C:/wcad/Gbrip64.v743/EXAMPLES] ls -ltr
total 1440258
-rwxrwxrwa    48358866 Jul 13 18:09 NoShift.gbr [1]
-rwxrwxrwa         748 Jul 13 18:15 NoShift.bat
-rwxrwxrwa   146733149 Jul 13 18:18 std.tif
-rwxrwxrwa    52191355 Jul 13 18:18 NoShift_split274x_20180713_181852.art
-rwxrwxrwa   146733149 Jul 13 18:18 keep_split.tif
-rwxrwxrwa    38616145 Jul 13 18:18 NoShift_split274x_20180713_181909.art
-rwxrwxrwa   146733266 Jul 13 18:19 dpi0_maxpts.tif
-rwxrwxrwa    11306528 Jul 13 18:19 NoShift_split274x_20180713_181925.art [2]
-rwxrwxrwa   146712791 Jul 13 18:19 cir_2um.tif
-rwxrwxrwa       22860 Jul 13 18:19 plot.log

Notes

1 The original RS274X file is 48.36 MByte

2 Using the circularize option the conditioned file is only 11.3 MBytes because many of the segments used to approximate curves were replaced with the circular command.

Timing Information

If we now extract from the log files the time required to rasterize the file we can also see the effect of the arguments.

[C:/wcad/Gbrip64.v743/EXAMPLES] grep Setup: plot.log | grep -v mm:ss

  Setup: 11, Rip: 07, Format: 00  Total: 18 (secs.)   (std.tif)
  Setup: 11, Rip: 07, Format: 01  Total: 19 (secs.)   (keep_split.tif)
  Setup: 09, Rip: 08, Format: 00  Total: 17 (secs.)   (dpi0_maxpts.tif)
  Setup: 08, Rip: 07, Format: 00  Total: 15 (secs.)   (cir_2um.tif)

Comparison - Conditioned Input with No Split274x

If we now take the conditioned RS274X file (the one that was produced using circularization) and run it through the rasterizer with the split274x operation disabled, we get the following timings.

../gbr2tiff64.exe NoShift_split274x_20180713_181925.art 
 -274x -aw -dpi:10160 -status -logcalls 
 -ram:1024 -pack:reused.tif  -units:inch 
 -engargs -nosplit

  Setup: 11, Rip: 07, Format: 00  Total: 18 (secs.)   (std.tif)
  Setup: 11, Rip: 07, Format: 01  Total: 19 (secs.)   (keep_split.tif)
  Setup: 09, Rip: 08, Format: 00  Total: 17 (secs.)   (dpi0_maxpts.tif)
  Setup: 08, Rip: 07, Format: 00  Total: 15 (secs.)   (cir_2um.tif)

  Setup: 03, Rip: 07, Format: 00 =      10 Total (secs.)   (reused.tif)[3]

Notes

[3] note that running the pre-conditioned input file with no split274x uses 3 seconds of setup time.


Output Bitmap Size

We can expect some very small differences in output file size. Since the size reported is after compression, very small differences in the size can be expected.


-rwxrwxrwa   146733149 Jul 13 18:18 std.tif
-rwxrwxrwa   146733149 Jul 13 18:18 keep_split.tif
-rwxrwxrwa   146733266 Jul 13 18:19 dpi0_maxpts.tif
-rwxrwxrwa   146712791 Jul 13 18:19 cir_2um.tif
-rwxrwxrwa   146712791 Jul 13 18:26 reused.tif





v7.42 (6/6/2018)

GBRPLT.DLL Update

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.




v7.40 (4/26/2018)

GBRPLT.DLL Update

Fixed an issue in v7.39 with GBRPLT.DLL when processing multiple files when encountering trailing zero (%FST..) or incremental (%FSLI...) Gerber files. The preprocessor which had a state problem was fixed. This issue would appear only if multiple Gerber files are rasterized one after another in a single run..

2GB Gerber files

Added support for rasterizing Gerber files larger than 2GB.

Speed Optimization

Added an optimization by avoiding re-interpretation of Gerber input files. This is achieved with the new optional argument "-keep_split" to the GBRPLT library in auto window mode. The pre-processed file is retained after computing file extents and then reused in subsequent calls. The caller of GBRPLT.DLL is responsible for removing this file.




v7.39 (2/16/2018)

Bug Fixes - Incorrectly rendered arc

Fixed issue where a "ghost line" appears in the output file. This was caused by an arc's invalid I/J value.
Fixed the issue where a single figure (G36/G37 block) where all digitized areas are connected by "cutlines" were dropped. The Boolean function that processed/repaired holes and cutlines was changed.

Bug Fix - IPNEG starts with LPD

Fixed the issue where input with Negative Image Polarity (IPNEG) starts with a Dark Level Polarity (LPD) drops most of the data. We fixed this by reversing all the level polarities of the input file. Negative Image Polarity files must start with a clear polarity.

Bug Fix - Axis Select

We fixed an issue where input has an axis select that assigns output device axis A to data axis Y, output device axis B to data axis X (ASAYBX) is not rotated properly.




v7.36 (6/21/2017)

Bug Fix - Arc Rendering

Fixed issue where some arc was drawn with rectangle corner.

Bug Fix - Polygon Scaling

Fixed a bug where polygons were not scaled properly.




v7.35 (11/18/2016)

Software Update

Updated the C# packaging, and added gbr2tiff debug DLL.

Macro Tolerance

User can pass arguments to split274x by using the following optional arguments in the gbrip command line:

-engargs -bgn_split_args [args for split] -end_split_args

For example, by default the tolerance to remove duplicate macro definitions is 1 um. If the user want to tighten this tolerance the command line above could be modified to look like the following:

gbr2tiff.exe 
       Inp.gbr 
         -274x 
           -mm 
             -pack:out.tif  
                -dpi:101600 
                  -wplot 0,-45 50,45.0 
                     -ram:256
                     -engargs -contours -thrnum:2 -bgn_split_args 
                                                     -arcres:6 
                                                     -macro_tol:0.0001 
                                                   -end_split_args

Macros would have to differ by less than 0.1 um to be considered the same.


v7.34a (10/15/2016)

Bug Fix: C# Application Crash

The C# application crash was fixed. It was caused by using a release version of gbr2tiff.dll from a debug version of C# application.
The Debug version of gbr2tiff.dll can be found in the "debug" directory at the install directory. This debug dll can be used for development purpose.




v7.34 (10/10/2016)

Bug Fix - Circles using Full Circular

An optimization introduced in v7.33 for handling full circles (circular data with the same starting and ending point) inside of G36/G37 blocks also introduced a state problem across internal layers in the handling of G36/G37 blocks while conditioning (split274x) the input Gerber file. This was fixed.




v7.33 (10/9/2016)

Unexpected Program Exit

A customer reported a problem while compiling our C# example source code. It resulted in premature and unexpected program exit when the calling program makes use of GBR2TIFF.DLL. This bug was related to security/licensing and not the core program flow.




v7.31 (9/27/2016)

Drawing Adjustments for Compensated Traces

A previously introduced option, -contour, which made small compensations in Gerber traces to improve line width accuracy, proved to introduce a new problem when such traces shared an edge with polygon fill (G36/G37) data. The compensation to provide a more accurate line width could potentially leave a gap between the rendering of the trace and the edge of the filled polygon.

A new option, -drawadj, is now introduced, which will "grow" trace data to prevent such gaps.

It can be used in two ways:

This new option may or may not be used in conjunction with -contours (or -compensate)


Max Dcode Count Raised

The max Dcode value has been raised to 231


Improved Handling of RS274X Directives

Interpretation of RS274X directives have been improved: some non conventional usages of the format statement (FS) are now handled "properly", at least as the user intended. Poorly constructed or unusable RS274X preambles are flagged as errors and rasterization will not occur.


Margin Controls Enhanced
The -margin command line option now supports more than one value similar to -aw. -margin can take on a single value (original behavior) or four independent values.
 -margin:L,R,B,T 

where L, R, B and T are the Left, Right, Bottom and Top margins respectively.


Margin and AutoWindow Working Together Correctly

The -margin directive and the autowindow directive (-aw) now are working together correctly. In previous versions, this combination did not always produce the expected margin values.




v7.30 (6/24/2016)

Added monochrome output in 8 bits/pixel format

This is a monochrome (2 levels of "grey" black and white) but placed into a full byte (8 bits) for applications that only read standard grey scale input. It can be produced using the command line directive: -super:18.
This is consistent with the other super sampling options. The various options are shown in the table below:

Command Line
Directive
Grey
Levels
TIFF
bits/pixel
Compression
Options
BMP
bits/pixel
Compression
Options
None 2 1 U, PB 1 U
-super:2 4 2 U 8 U, RLE
-super:4 16 4 U 8 U, RLE
-super:8 256 8 U 8 U, RLE
-super:18 (new) 2 8 U, PB 8 U, RLE
-super:28 (new) 4 8 U 8 U, RLE
-super:48 (new) 16 8 U 8 U, RLE

Compression Options

  U= uncompressed

  PB = packbits

  RLE = run length encoding



Multi USB Key Support

Prior versions did not work when more than one Sentinel USB key was inserted into a computer. This version now supports multiple USB keys on same computer.




v7.29 (5/10/2016)

Thread Control

A bug in thread control which was introduced in v7.27 was fixed. The thread control bug resulted from the fact that a global variable controlling the maximum number of threads was reset to "1" during file validation.

Missing Flash

Our Gerber front end failed to handle specific Gerber code for a flash. This is now fixed.


v7.27 (4/30/2016)

Update to -contours Command Line Option

In this version, the -contours command line option in GBRPLT.DLL treats circular traces with non-zero width differently. In v7.26 they were segmented in a manner similar to circular data they might have been part of a G36/G37 block, now in v7.27 they are output as circular data.
The motivations for changing the way circular traces with width were handled were two fold:

  • During regression testing of the prototype release of ODBRIP, it was discovered that in the majority of (but not all) cases raster images of non-segmented data (taken from the previous release of ODBRIP) were smoother than those generated with GBRPLT.DLL v7.26.
  • Preserving circular data when possible also made for smaller files submitted to the rasterizer which of course has the benefits of smaller databases and faster rip times.
  • Update to BMP driver

    GBRPLT.DLL enforces a new policy that bitmaps need to be at least 8 bits wide and 8 bits high. If this condition is violated, this will trapped as load error.


    v7.26 (4/20/2016)

    Long Conversion time on client file

    A client reported long conversion time at 25400 DPI. We were able to improve the speed by performing a number of optimizations, including speed ups in the sizing algorithm in BoolDll and caching and reusing the results of sizing and window breaking data that were just translated in X and Y.


    v7.24 (3/28/2016)

    New Multi window

    New Multi-Window Mode is available with GBR2TIFF 7.24 and GBRPLT.DLL - it supports multi-window raster image generation.
    In this mode preprocessing, Gerber interpretation and database creation (in GBRPLT.DLL) happens only once per RS274X Gerber file. Multiple raster images can be generated quickly without the latency of preprocessing or database creation.
    In GBR2TIFF this facility is an extension of the –wplot command line option as seen here:
    C:\wcad\Gbrip\gbr2tiff64.exe icsxseed.gbr -274x -wplot @wplot3.txt -dpi:5080 -status -ram:128 -pack:win.tif -units:inch

    In this case the argument to the –wplot command line option is a text file in which each line contains two coordinate pairs as seen in the example below.

    3,2,3.2,2.2
    3.2,2.2,3.4,2.4
    3.4,2.4,3.6,2.6
    

    Just as in the multi-file mode all of the other command line options apply to the data to be windowed, i.e. DPI, rotation, scaling, etc.


    v7.22 (1/28/2016)

    New Licensing

    Adopted new Flexlm license model, and no more support for disk serial number.

    Layer Name Limit

    Fixes an issue where more than 4096 RS274X LN (Layer Name) directives appear in a file.
    The limits was increased to be equal to that of the maximum number of internal layers 96K.

    -contour support

    Supports the -contour argument to the GBRPLT.DLL setup function. This new functionality compensates polygon data (G36/G37) by 1/2 pixel.
    From the GBR2TIFF command line this option is passed to GBRPLT.DLL in the usual way by making use of the -engargs command line argument. For example:

    gbr2tiff.exe ....... -engargs -contour -thrum:4

    In this mode split274x is called and a new Gerber file is always created with "optimal" format: 2.6 for inch and 3.5 for mm data.
    As a point of reference split274x is always called (unless GBRPLT.DLL receives the -nosplit command line, which of course is supported via -engargs -nosplit to GBR2TIFF) to potentially condition the input to GBRPLT.DLL. In the event it is found that preconditioning was deemed not necessary, the conditioned file is erased and the original file is submitted to GBRPLT.DLL.
    This flow has been in place 2006 when it was first put in place to support files with multiply defined apertures.
    This new functionality necessarily impacts throughput as negative sizing of polygons is computationally expensive.


    v7.17 (8/27/2015)

    Incorrect output for fine features/resolution

    A customer file with a 2 um round draw border exhibited several artifacts when rasterized at 1 and 2 um resolution. A similar file was constructed from the first one but the round tool was replaced with a square tool. Artifacts included:

    This issue has been fixed.

    Varying Line Width and Spacings

    This version minimizes the number of line widths and spaces associated with apparent traces.

    Files with large number of macros or apertures

    Gerber Rip had issues converting Gerber files with over 10,000 apertures. This version has much improved support for files with large Dcode and MACRO counts. Optimizations are in place for redundant Dcodes and MACROs and nearly similar MACRO definitions.

    Disparity between Round and Square Draws

    Gerber Rip generated square draws which were misaligned and sometimes wider from there round counterparts. This has been fixed.


    v7.16 (4/22/2015)

    New Margin Option

    This version includes a new command line option -aw:L,R,B,T where the autowindow mode is capable of providing margins on the Left, Right, Bottom and Top in the units provided on the command line (inch or mm).


    v7.14 (2/28/2015)

    Sample Source Code

    Added sample source code to GBRIP 64bit package (including C#).


    v7.13 (2/28/2015)

    Large Radius

    Fixed a problem with arcs that have very large radius.


    v7.12 (11/28/2014)

    Software Updates

    Update libraries and engines (acsbool and gbr2tiff).
    Fixed a bug that causes a crash.


    v7.11 (12/5/2014)

    Licensing problem

    Fixed Flexlm node locked licensing issue.

    grey scale

    Fixed bug that causes an error when using -greylevel option.


    v7.10 (12/4/2014)

    Source Code Example

    Added C# sample program in the source folder.


    v7.09a (11/12/2014)

    Source Code Example

    Updated libraries included in the package. It will be installed in
    instdir/Source/lib

    Updated gbr2tiffshell.dsp and added gbr2tiffshell.sln which can be found in instdir/Source/shell4dll.
    These will create the sample program gbr2tiffshell.exe in the instdir (install directory).


    v7.09 (11/11/2014)

    Windows 64 bit release for Fuji/Adtec and Dynatron OEM version.

    New HASP version (Fuji and Dynatron) of GBRIP 64bit.


    v7.08 (10/31/2014)

    Windows 64 bit release

    First release of the 64 bit version of GBRPLT.DLL and the accompanying rasterizers.
    On an average, the 64 bit version is 1.4 times faster than the 32 bit version.
    The 64 bit version doesn't have the memory limitations of the 32 bit version.


    v7.05 (10/20/2013)

    False vertical line in output

    There was a bug in the buffered reading module in which the last character in the buffer was dropped before refreshing the read buffer. This created a false vertical line that covers many cells in the panel. The issue has been fixed.


    v7.05 (10/20/2013)

    Complex Aperture Macro Issue

    self-intersecting polygons in a Complex Aperture Macro was dropped. The issue was related to the latest boolean ACSBOOL.DLL and was fixed.

    New -adnaseum command line option

    A new command line option -adnaseum:N,M will repeat the same job N times and retain every Mth TIFF file.

    
    c:\wcad\gbrip4fujijp.v705\gbr2tiff.exe -dpi:10160 -274x -mm 
          j02-204-02-2.gbr -pack:out.tif -ram:256 -scale:1.00055,1.0003 
          -wplot 8.64891,11.6739 550.151,633.486 -mirror:x -rotate:90 
          -status -adnaseum:1000,20 -engargs -thrnum:6 
    

    In this example 1000 RIPs are performed, and only files 0_out.tif 20_out.tif, 40_out.tif... are retained.


    v7.03 (09/20/2013)

    Rasterizer error when in MT mode

    This version fixes the problem with stray line in multi-threaded operation where spurious data appeared at sub-band boundaries in the main band.


    v7.02 (08/27/2013)

    Rasterizer error when in MT mode

    This version fixes the problem with running off the end of the region of interest in the rasterizer when multi-threading has been fixed.
    This manifested as a crash or exception when the band size was short and the sub bands associated with threading were even shorter and data in the last band was sparse; short bands are the consequence of higher DPI for a given raster buffer size; short sub-bands are the result of higher thread counts, i.e. if one uses -thrnum:N then the sub band height is 1/N that of the band height.
    In the past, this issue was only seen for 6 threaded operation at moderate values of DPI (less than or equal to 10000 DPI). This issue became important for at higher values of DPI used in conjunction with super sampling.

    Protection against large files over 4GB

    This version has protections against the creation of illegal output files (file sizes that would exceed 4GB).
    Uncompressed BMP and TIFF file creation is checked at program start up, packbits TIFF is checked as the TIFF file is created (because the final output size depends on how compressible the image is).


    v7.01 (07/30/2013)

    Super sampling Updates

    This version reflects corrections and improvements to super sampling and uncompressed TIFF support:

  • In the case of BMP or uncompressed TIFF a warning (usually a pop up) will be given if the final image size will exceed 4GB.
  • Now super sampling supports packbits TIFF. Previously only uncompressed TFF or BMP was supported.
  • Program footprint for super sampling has been optimized.
  • Program footprint for uncompressed TIFF and BMP output has been optimized. For simpler files (those with low LP and SR counts) it may be possible to run with 512 MB of raster buffer. For packbits TIFF the maximum raster buffer size is probably around 256 MB because packbits TIFF uses a double buffering scheme for rasterizing. There are no changes to program flow or architecture in this respect.

  • v6.93 (10/17/2012)

    Max layers

    This version now supports 96K layers. The memory footprint has been reduced in GBRPLT.DLL with respect to layer count.


    v6.90 (9/15/2012)

    Super sampling and threshold option

    fixes a bug in super sampling in conjunction with thresholding

    Arc Issue

    fixed an issue with missing ball on arc.


    Arc Related Issues

    This version fixes three arc related issues:

  • Connection between an arc and a line is not smooth.
  • Tail is drawn at the end of an arc.
  • Misplaced ball appears at the end of an arc.

  • v6.86 (6/20/2012)

    Incorrect Rendering of circular data trace

    This version fixes an issue where the rasterizer incompletely renders the end of a arc with width (circular data trace) in the presence of 90 degree rotation (but not -90 degrees). This issue was manifest only in SR'd data for some user specified windows and the entire image. The problem was related to aliasing issues when mapping real world coordinates to raster data. This aliasing issue was addressed, specifically the arc start and end points and there corresponding angles were adjusted in the presence of aliasing.


    v6.84 (4/2/2012)

    Dropped Polygon

    This version fixes the issue when a polygon whose extents exactly coincide with raster band edges is dropped.


    v6.82 (3/14/2012)

    Complex macro

    A complex macro with paint and scratch was incorrectly booleanized: a new version of BoolDll.DLL was required. This problem did not manifest itself with odd number of threads (1,3,5). With threading, the input set is striped and it happened that with an even numbers of threads (-thrnum:2 and -thrnum:4) a stripe boundary crossed several polygons with vertices coincident at the stripe edge. This has been fixed (issue 36).

    Rectangular Draw

    A large ground plane made of up rectangular (not square) draws was not rendered correctly when 90 degree rotation was applied. The problem was a result of an optimization used to decide whether a path resides in the current band. With 90 degree rotation that wrong dimension of the rectangular trace was used to compute whether the trace was in the current band. This resulted in some traces being dropped. This problem also manifested itself as producing inconsistent behavior with different raster buffer sizes as this creates bands with different sizes and positions across the rendered image


    v6.81 (3/11/2012)

    Super sampling

    This version fixed a problem reported in regards to image location and size issues in conjunction with super sampling.

    In addition, -super:2 for BMP now support RLE encoding.


    v6.80 (3/3/2012)

    Improved GREYSCALE and GREYLEVEL performance

    The new version improves performance by 3 times compare to the previous version in GREYSCALE and GREYLEVEL mode (this is true for high DPI). Run length encoding (RLE) speed is comparable to TIFF Packbits.


    v6.79 (1/24/2012)

    Gerber file with 40000 layers

    The new version supports up to 64000 internal layers.

    Custom Aperture bug

    A bug related to custom aperture definitions was fixed. It was introduced during the effort to be able to load large layer counts.


    v6.75 (12/21/2011)

    Bottleneck during multi-threaded operation

    This version fixes a bottleneck related to multi-threaded operation that was not noticed before. Previously some flashes were processed more than once in MT mode.

    Memory Leak Fix

    A memory leak related to thread handles was discovered and corrected.

    Max internal layer count increased ...

    This version supports 274X files that contain in excess of 1024 internal layers (i.e. LPD/LPC changes); unfortunately the upper limit is limited due to 32 bit memory constraints. The maximum number of internal layers is file dependent, but lies somewhere around 10K. More work needs to be done here to achieve the target limit of 64K internal layers.


    v6.73 (5/24/2011)

    Incorrect output with -wplot option

    This version fixes a problem that occured when a very small window was specified for a gerber file using the SR command.


    v6.72 (4/26/2011)

    Incorrect output with -wplot option

    This version fixes a problem noted in -wplot mode in the tiff output.


    v6.70 (4/13/2011)

    Small arc with very large radius

    This version fixes incorrect output triggered by an arc with large radius and almost 0 angle.

    Multi-threaded raster output fixed for IPNEG

    This version fixes a problem: raster output differed for files using IPNEG directive depending on whether multi-threading was turned on or off.


    v6.69 (4/09/2011)

    New multi threading

    This version supports multi-threaded rasterization with up to 6 concurrent threads. Users can see major speed improvements especially when processing files at high DPI where the dominant bottleneck is the rasterizer. Note: Loading and polygon extraction is still single threaded and no speedup will be seen in those parts of the program.


    v6.60 (2/15/2010)

    Complex polygon issue

    The version fixes an error which was the result of a "degeneracy" caused by a cutline that "touched" a hole made from circular data in a large vertex count ground plane. This problem was fixed by removing the problematic cutline before converting the ground plane to its internal representation.

    Extent calculation error

    The version fixes an extent calculation error for a donut shaped flash.


    v6.57 (9/15/2009)

    Circle at 4.5 format

    This version fixes a problem with a circular pad at 4.5 format.


    v6.55 (7/9/2009)

    Very Short Arc

    This version fixes a problem processing a very "short" arc that is part of a G36/G37 block. The start and end point of the arc were so close that the RIP treated it as a full circle and therefore cut it away from the main polygon.

    Integer overflow with shallow arc

    This version fixes an integer overflow in the rasterizer for a shallow arc at high resolution.


    v6.54a (4/14/2009)

    GBRSPOOL

    This version supports USB key for the Gerber Spool utility.


    v6.54 (4/9/2009)

    Arcs at 2um DPI were not handled correctly

    This version fixes a bug report from Fuji which had to do with handling arcs at high DPI.


    v6.53 (3/22/2009)

    Flash and AreaFill

    This version fixes the issue with a flash connected to an area fill - it was the result of a change made in v6.52 in response to another customer's request regarding the interpretation of codes in G36/G37 sequences. This fix caused the broken functionality reported by Fuji. The new code not only fixes the broken functionality introduced in v6.52 but also is an improvement over v6.51, i.e. it fixed some related issues that were previously undiscovered with respect to the interpretation of codes in G36/G37 sequences.


    v6.52 (3/13/2009)

    Dropped data with Gerber Rip

    This version fixes the issue with dropped data due to an area fill denoted by a G36 G37 pair started with a move-to command D02 without any accompanying X or Y data; even though the front end treats the input GERBER stream as modal - it expected to see at least an X or Y value.


    v6.51 (1/13/2009)

    Crash in GBRIP 6.51

    This version fixes a problem which resides in BOOLDLL.DLL in evaluating a macro.


    v6.50 (11/28/2008)

    Error handling scaled oblong flash

    This version fixes a problem handling a scaled oblong flash. This bug was introduced again in 6.49 when we fixed an issue raised by Fuji Japan.


    v6.48 (9/16/2008)

    Error handling scaled oblong flash

    This version fixes a problem handling a scaled oblong flash.


    v6.47a (8/1/2008)

    USB key support on Windows XP and Vista 64

    This version supports USB key under Windows XP and Vista 64 bit.


    v6.47 (2/27/2008)

    Error handling short arc

    This version fixes very short arc (1 format statement grid) reported by Printar.


    v6.46 (10/3/2007)

    Error handling the SR command

    Fuji Japan reported a problem with the way with supported the SR command with negative values. This has been fixed.


    v6.44 (9/16/2007)

    Gerber Format issue and two syntax issues from Fuji Japan

    We added support for Gerber files with format of 9 digits (For example 4.5).
    We also improved the software to handle gerber files that used syntax we didn't support.


    v6.43 (9/6/2007)

    Reverse color palette for BMP

    We added a new command line option -reverse which reverses the color palette for BMP only. This is independent of the -inverse command line option.


    v6.42 (7/26/2007)

    Support for RLE8

    This version support RLE8 in conjunction with super sampling, i.e. you may use the -rle command line option with -super:N for N equal to 2, 4, 8, 16.

    As an example

    gbr2tiff.exe Layer02.gbr -274x -bmp:L01_in_s04_case3-rle.bmp 
      -super:4 -units:inch -dpi:5800 -wplot -0.8,-0.4 2.4,3.65 -status -ram:16 -rle 
    

    generates a compressed RLE8 BMP file while

    gbr2tiff.exe Layer02.gbr -274x -bmp:L01_in_s04_case3.bmp 
      -super:4 -units:inch -dpi:5800 -wplot -0.8,-0.4 2.4,3.65 -status -ram:16 
    

    generates an uncompressed BMP file

    The uncompressed output is 19.9 MB while the compressed file is 233 KB.


    2,4,8, and 16 bit super sampling

    This version now supports 2, 4, 8, and 16 bit super sampling, corresponding to 4, 16, 64, and 256 x reductions in resolution. All outputs are greyscale.
    For TIFF and BMP the corresponding command line options are

     -super:2
     -super:4
     -super:8
     -super:16
    

    Note that BMP does not support 2 bits per pixel rendering. For TIFF output we have added -super:28 and -super:48, which are equivalent to -super:2 and -super:4

    But the output reflects 8 bits per pixel rendering, i.e. 256 levels of greyscale. For BMP, GBR2TIFF maps user command line options -super:2 and -super:4 to -super:28 and -super:48.


    v6.41 (7/17/2007)

    Incorrect output window

    This version now outputs the correct windowed data for -aw and -wplot commands. Previously the image height was padded to the nearest value of 8000/SuperSampleValue.

    2,4,8, and 16 bit super sampling

    This version now supports 2, 4, 8, and 16 bit super sampling, corresponding to 4, 16, 64, and 256 x reductions in resolution. All outputs are greyscale.
    For TIFF and BMP the corresponding command line options are

     -super:2
     -super:4
     -super:8
     -super:16
    
    Note that BMP does not support 2 bits per pixel rendering. For TIFF output we have added -super:28 and -super:48, which are equivalent to -super:2 and -super:4
    But the output reflects 8 bits per pixel rendering, i.e. 256 levels of greyscale. For BMP, GBR2TIFF maps user command line options -super:2 and -super:4 to -super:28 and -super:48.


    v6.40 (7/1/2007)

    2,4,8,16 Super Sampling

    This version now supports 2, 4, 8, and 16 bit super sampling, corresponding to 4, 16, 64, and 256 x reductions in resolution. All outputs are greyscale.

    For TIFF and BMP the corresponding command line options are

    -super:2
    -super:4
    -super:8
    -super:16
    

    Note that BMP does not support 2 bits per pixel rendering. For TIFF output we have added -super:28 and -super:48, which are equivalent to -super:2 and -super:4. BUT the output reflects 8 bits per pixel rendering, i.e. 256 levels of greyscale. For BMP GBR2TIFF maps user command line options -super:2 and -super:4 to -super:28 and -super:48.


    v6.38 (4/25/2007)

    USB key support

    This version is USB enabled.

    Rip error

    Gerber Rip had a rip error where a G36/G37 boundary gets connected to another G36/G37 boundary outside the field of view. Problem reported by Fuji Japan.

    Zero aperture Dcode

    Fixes the issue where a zero width dcode is flagged as an error in the log file; before it was a warning.. Problem reported by Cisco.


    v6.34 (11/20/2006)

    Oblong apertures not scaled properly

    Oblong apertures were not scaled properly when the X and Y scale were different. The problem was fixed.


    v6.32 (10/18/2006)

    Conflict between command line options

    Conflicts between some command line switches are now properly flagged.
    -super command line option must come last and only used in conjunction with -tiff or -bmp, and some others. Before a warning would be issued, but execution would continue. Now, the user is forced to fix the construction of the command line..


    v6.31 (10/15/2006)

    Added Support for large ratios of DPI in X and Y

    We added two new command line options for GBR2TIFF.EXE, namely -dpx:N and -dpy:N where N is the integral factor of columns and rows removed from an "oversampled" image.
    For example...

    Consider the following example command lines:

    1) gbr2tiff.exe icsxseed.gbr -274x -inch -aw -dpi:4096 -pack:pack0.tif 
    
    2) gbr2tiff.exe icsxseed.gbr -274x -inch -aw -dpi:4096 -pack:pack_x3.tif -dpx:3
    
    3) gbr2tiff.exe icsxseed.gbr -274x -inch -aw -dpi:4096 -pack:pack_y3.tif -dpy:3
    

    If (1) is the nominal command line, (2) generates an image that is 3x narrower, while (3) produces an image that is 3x shorter.

    Row removal is much faster than the bit manipulations required to do column removal. This could esily be made 2x or 4x faster using multi-threading on a multi-core, multi-processor machine.


    v6.30 (09/11/2006)

    FineTrak Issue #76 (AR APNL6RFKFL)

    Fix a bug report from FineTrak (Fuji UK).


    v6.29 (08/08/2006)

    New command line option -fill

    Narrow traces that are less than one pixel width would sometimes be dropped from the output file. That depended on whether the Gerber Rip scan line fell on the trace or not.

    Added a new option -fill which will always give you a one pixel line under the above conditions.

    -fill:0    (default or old behavior)
    
    -fill:1    (fills in "gaps" less than 1 pixel).
    

    test this option carefully before using it in "production" as it may produce surprising results and run much longer.


    v6.28 (07/06/2006)

    Grayscale Bug Fix

    The conversion from a monochrome bitmap to grayscale bitmap could generate bad data at the edges between data bands. This has been fixed. [reported by Maskless Lithography]


    v6.27 (06/25/2006)

    Dropped Macros due to Data Transformation

    Fuji Japan reported a problem where macros disapper in the presence of some transformations, i.e. mirroring and/or rotation.

    This problem was fixed; it was the result of macros that were drawn far off 0,0 i.e. macro definition extents did not include the origin. When these macros were inserted into the main drawing and rasterization was to be done with mirroring and/or rotation, they were thought to be off the rendered image and dropped.


    v6.25 (05/15/2006)

    Missing Oblongs

    Fuji UK reported a problem where oblongs were missing. This has been fixed.

    The problem was the result of a large macro that followed a dcode reference in a file with decode redefintions. The coordinates to the reference were corrupted as the result memory overrun in a shared memory buffer used by the GERBER file reader and a coordinate database.

    Wedge in a curved path during rotation and mirror

    Hitachi reported a problem in which a wedge was created in a curved path during a mirror and rotation. This has been fixed.


    v6.24 (03/29/2006)

    Gerber Rip failed to support custom draw macros

    Gerber Rip didn't support a macro that was used as a draw with more than 2 points. This limitation has been fixed


    v6.23 (1/24/2006)

    Gerber Rip failed to support large size apertures

    Gerber Rip had a limit of 100MM aperture size. Fuji UK reported a problem with a file that had 2 donuts bigger than 100MM in size. This limitation has been fixed


    v6.21 (11/8/2005)

    DPI supports decimal values

    You can now set a DPI with a decimal number.

    New options - DPM and PixelSize

    User can now define a DPM value (dots per milimeter) or define a pixel size instead.
    For example..
    -dpm:500
    Will translate to 500 dots per MM.
    -pixelsize:0.001
    Will translate to pixel size of 0.001 inch or mm based on your -inch or -mm command line options.


    v6.20 (10/4/2005)

    Circle Draw issue

    There was a problem with a circle draw I J values both identically equal to zero. The draw is converted to a straight line. This was fixed (reported by Fuji Japan #11).


    v6.19 (9/19/2005)

    Point removal error

    Point removal of excess points generated an open figure. This was fixed (reported by Fuji UK).

    Folded polygon error

    An incorrect folded polygon caused an error in Gerber Rip. A new folded polygon repair was added BOOLDLL.DLL (reported by Fuji UK).


    v6.18 (8/26/2005)

    Gray Scale Output

    an optional gray scale output has been added. The gray scale output is calculated by first rasterizing at 8X or 16X of the desired output and using the number of "mini pixels" triggered to set a gray value. [Requested by Maskless Lithography]


    v6.17 (7/2/2005)

    Missing Flash

    The problem was related to the presense of an arc with a single unit of arc length. With a scale of 0.5 the starting and end points of the arc collapsed to the same point which implies an arc of 360 degrees which in turn painted over the missing flash. This has been fixed.


    v6.16 (5/20/2005)

    Rotate option on the command line

    When the option "-rotate" is specified, the "S&R" command was not rasterized correctly. This has been fixed.


    v6.15 (4/6/2005)

    8 bit characters

    Gerber rip failed to support 8 bit characters - it is now supported.

    Circular data bug

    Fixed a bug where circular data in a G36/G37 block in the presence of large non-isotropic scaling rendered incorrectly.

    Dropped Flashes

    Fixed a bug where flashes near the border of a rendered window, were dropped because they were thought to be outside the plot window in the presence of rotation and mirroring.


    v6.14 (2/14/2005)

    Missing Flash

    Some Dcode definitions (the ones that were missing) were redefined. Normally, this is handled properly, but in this case no GERBER data appears between the initial definitions and the secondary definitions. This has been fixed.


    v6.13 (2/10/2005)

    Polygon with 35000 vertices

    Gerber rip was not able to handle a polygon that had 35000 vertices (7600 were arcs). This has been fixed.


    v6.12 (2/08/2005)

    Bug with multiple defined Dcodes

    This version fixes the last issue reported by Hitachi. A problem in a module that supports multiply defined Dcodes was fixed. This is module handles the case when Dcodes are redefined as in the case in customer file. It has nothing to do with regular Dcode i assignments or macros. The bulges that appeared have nothing to do with issues in the RIP per se, but in the Gerber front end interpretter.

    v6.11 (1/25/2005)

    Rasterizer error

    The problem showed up when two unrelated and disjoint G36/G37 area fills were inadvertently connected as a result of windowing.

    v6.10 (12/18/2004)

    Arc handling

    Extremely large polygons with arcs were not handled properly. This problem has been fixed.

    v6.08 (12/8/2004)

    Small Donuts

    Donuts with small radius were dropped at low DPI (360). This problem has been fixed.

    Polygons with too many vertices dropped

    Under some conditions, polygons with thousands of vertices were dropped. This problem has been fixed.


    v6.05 (10/18/2004)

    Spurious line across the field

    There seemed to be a spurious line across the field of an otherwise properly rendered image. This problem was a bug in the buffered reading of data as the reader transitioned from the 274X header to the actual GERBER data. The problem has not been seen before because in most 274X files rendered to date the header (including custom macro definitions resided within the first buffered read). This problem has been fixed.


    v6.04 (10/14/2004)

    A problem with SR command used along with Scale

    There was a problem with SR's with scaling present. There was special code to handle scaling properly, however, the test to see if this code was to be used was inadequate when scaling was to be the same in both the X and Y directions. The old code produced the correct results with no scaling or with non-isotropic scaling, scaling in X is not the same as scaling in Y.

    Extent calculation

    There was a problem in the extent calculation of flashes in the presence of mirroring in which square, rectangular, oblong, and thermal flashes would be dropped if the flash appeared near the image border.

    PACKBITS compression

    There was a problem with PACKBITS compression that has been corrected. Compression was being done in place which assumes local compression ratios less than 1 (one). When spatial variations are high the assumption is not valid resulting in the compressed data over-running the data to be compressed which of course results a corrupted image. We have never seen this before and has been corrected. The advantage of the previous scheme was memory conservation (equal to a raster buffer size). Now the data is not compressed in place rather a buffer is allocated data is copied to it.


    v6.02 (09/17/2004)

    New Postscript Raster Driver

    GBV_RIP now supports the raster Postscript format (PSII). It supports color and black and white output.

    These are the command line options available with this version...

      -ps2:<eps_filename>
    
      -cps2:<eps_filename>
    
      -color:<primary_color_name>
    

    Notes


    Rendering problem at high DPI

    GBR_RIP was not rendering correctly one of the customer files at high DPI (12000). The problem was the result of a clipping routine that produced incorrect output at the higher resolutions when passed polygon data that exceeded 10 inches in extent. The file extents are about 20 inches on a side. The clipping routine now protects against integer overflow while retaining full precision of the data passed to it.


    v5.99 (07/28/2004)

    Fixed Round Draw Problem at low DPI

    GBV_RIP was dropping a 360 degree draw (donut shape) when the aperture was narrow and the DPI was low enough that there were only 1-2 pixels to draw it. This has been fixed. (Reported by Printar)

    Fixed Out of Range Gerber Input Data

    Corrected an integer overflow that occured when a Gerber file with 3.6 format was submitted. GBR_RIP has a max dynamic range of 8 places (i.e. 4.4 is OK, 4.5 NotOK) Autoranging is not yet implemented. Data in the last place would be lost. (reported by FFEI)

    Fixed misc lines and corrupted figures

    FFEI reported a file with small narrow lines running across it and missing or distorted area fills. This was traced to improper use of the G36/G37 area fill in the input file.

    In one case a D02 (move with pen up) command was embedded inside of a G36/G37 block. GBR_RIP treated this as a pen down draw -- but the resulting polygon was bad. GBR_RIP now will close and fill the polygon if it encounters a D02 and start a new polygon after the D02 move.

    In a second case, a G36/G37 block had "zero" area. GBR_RIP rendered this as a single pixel wide line. GBR_RIP now fully discards such zero area G36/G37 draws.


    v5.98 (07/26/2004)

    Fixed Rectangular Draw Problem II

    Drawing with a rectangular aperture did not work if the input data was transformed by rotation. This was believed to be fixed in 5.97 but further tests indicated it had not been fixed when no scaling was applied. (reported by FFEI)

    Failure when empty file is submitted

    submitting an empty Gerber file to the RIP (and failing to close the RIP DLL) would cause subsequent jobs to fail. This condition is now detected and the DLL will automatically close. (Reported by FFEI)

    Out of Range Gerber Data

    Submitting Gerber files with excessive dynamic range (i.e greater than 8 total digits) can cause the RIP to fail. The RIP is designed to support a maximum of 8 places of dynamic range i.e. 4.4 is OK but 3.6 is not OK.

    Detection and autoranging will be incorporated into the next release. Reported by FFEI and various other users.


    v5.97 (07/08/2004)

    Fixed Rectangular Draw Problem

    Drawing with a rectangular aperture did not work if the input data was transformed by rotation. This has been fixed. (reported by FFEI)

    large boundary with arcs fixed

    A very large contour with arcs as part of the boundary was not rendered correctly. This has been fixed.(reported by FFEI)

    draw with custom aperture macro

    A draw command using custom apertures was not supported. In this version the bounding box of the custom aperture is calculated and this bounding box (typically a square or rectangle) follows the vertices of the draw coordinates.(reported by FFEI)


    v5.95 (03/21/2004)

    Improper Rendering of Thermals

    fixed a reported instance improper rendering of thermals.

    Improper Rendering of Arc data when using Anistropic Scaling

    Certain arcs were improperly rendered when: a) the IJ (center coordinates of the arc) was not consistent with the arc's starting and ending points and b) scaling in X and Y was applied anisotropically. i.e. Xscale not equal to Y scale. Under these conditions the computation for the ellipse that results from the anisotropic scaling could blow up. A new computation method has been designed that eliminates this possibility. (Reported by FFEI)


    v5.93a (02/15/2004)

    Memory Leak Fixed

    Fixes a memory leak that caused memory usage to grow if the DLL was executed over and over again. Reported by FFEI.


    v5.92 (1/9/2004)

    Circular data problem
    This version fixes all the issues reported (and not reported) by TRW:

    1. Circular data that is part of a G36/G37 group is now rastered properly when isotropic and non-isotropic scaling is applied. Previously scaling was not applied to circular data that was part of a G36/G37 group resulting is distorted figures, especially if the scale factors were non unitary.

    2. Circular data that is part of a G36/G37 group is now treated correctly. Previously the initial point of a G36/G37 group was lost when the group contained G02 or G03 commands, resulting in a raster image with spurious lines.

    3. The handling of extremely shallow circular data (where the radius of the arc can be very much larger than the field being rendered) is improved.


    v5.90 (11/14/2003)

    Added support to Mirror command

    GBR_RIP enhanced to support the MI mirror command in RS274X.


    v5.83 (07/31/2003)

    Support for very large Vertex Count

    GBR_RIP enhanced to support G36/G37 polygons with more than 100,000 vertices per polygon. Note: such files may not render on other photoplotters or load correctly into other CAM systems. (Reported by FFEI #38)


    v5.81 (07/24/2003)

    Extra Pixels near arc removed

    Fixes a rendering bug where extra pixels appeared near the arc. (Reported by FFEI #37)


    v5.80 (07/14/2003)

    Lazy Pad Fix Part II

    The fix in V5.79 was not complete and still manifested itself under some conditions of rotation and mirroring. It has been put to rest now. (Reported by FFEI #36)


    v5.79 (07/13/2003)

    Dropped Arc Fixed

    A dropped arc reported by FFEI (33) was the result of throwing away the missing arc during a prescreening process to see if data falls in the rasterization window (not a banding issue as originally suspected). This error never showed up before because the prescreening process positioned the arc incorrectly when BOTH -90 degree rotation and mirroring was applied. This has been fixed.

    Lazy Pad Fixed

    Pad positioning incorrect due to program not properly applying the non-isotropic transformations to SR (step and repeat) data. This has been fixed.


    v5.77 (07/07/2003)

    Fixed Large Arc Bug

    Fixed a problem that occured when an arc or circle crossed a rasterization boundary. (see 5.69a -- apparently that fix did not address all possible conditions.)


    v5.72 (03/31/2003)

    Rotation and Mirroring with SR Command

    Files that included the SR command (step-and-repeat) and that were transformed by rotation and mirroring would drop or scatter the stepped data. This has been fixed.

    Sizing of Rectangular Data

    Certain rectangular data entities were sized twice resulting in bitmap width and height that was too large by a pixel. Fixed.

    Detecting Arc Interpolation

    If no arc interpolation command is present in the file (G75) the RIP assumed 360 degrees. This behavior has been changed -- the RIP now examines the IJ commands to determine if interpolation is 360 or 90.

    Arc Rendering with Rotation

    Under some conditions applying a rotation to the data caused arcs to be rendered incorrectly.


    v5.70 (03/07/2003)

    Extent Calculation Bug Fix - GBV_RIP II fails to get the correct extent from the automatic window calculation routine. The solution is to booleanize each custom aperture and use the extents of the aperture to calculate the overall extents of the data. (reported by FFEI)


    v5.69a (03/02/2003)

    Large Arcs Bug Fix

    very large arcs (G02/G03) were not correctly rendered if they crossed a raster band. This has been fixed. (reported by FFEI)

    Bug Fix - G36/G37 pen up/pen down

    Corrected a bug caused by loss of pen up/down state prior to and during a G36/G37 command. (reported by FFEI)


    v5.69 (02/28/2003)

    Bug Fix - G36/G37 pen up/pen down

    Corrected a bug caused by loss of pen up/down state prior to and during a G36/G37 command. (reported by FFEI)

    Bug Fix - Custom Apertures

    Corrected bug in parsing and booleanizing custom aperture macros. (reported by FFEI)


    v5.68c (02/24/2003)

    Callback functionality for gbr2tiff.dll added
    gbr2tiffcb_bitmapinfo(long width, long height, unsigned long sizeinbytes)
    gbr2tiffcb_progress(long percent)
    gbr2tiffcb_status(char *status)
    gbr2tiffcb_message(char *message)
    

    This release has

    1. has callback functionality; (look in source/lib directory of the GBR_RIP distribution for callback related code and documentation)

    2. when using GBR2TIFF.DLL you must now provide GBR2TIFFCB.DLL with your executable

    3. to make use of the callback functionality in GBR2TIFF.DLL you must supply the "-callback" command line option; this forces the execution of GBR2TIFF.DLL in "silent" mode, i.e. it will not pop up any messaging, and all progress, status, and messaging is handled via the callback functions. In the sample GBR2TIFFCB.DLL provided with the release all these messages are written to plot.log

    4. GBR2TIFF no longer hangs when the number of strips is insuffcient to contain the TIF image. (Applies to Automatech output only.)

    5. the default number of strips is 6, i.e. 0 - 5 (applies to the proprietary Automatech output only.)


    v5.68 (02/11/2003)

    FLEXLM licensing
    GBV_RIP now supports FLEXLM license manager in floating license mode.

    Large raster file support
    GBR2TIFF.EXE and GBR2TIFF.DLL have large file TIFF packbits support; have achieved 5 Gbyte images (@ 12000 DPI) with 1 Gbyte disk files.

    Better Speed
    GBR2TIFF.EXE and GBR2TIFF.DLL TIFF packbits compression is done on the fly resulting in better than 4x speed ups.

    Auto Rotation
    GBRSPOOL now supports auto rotation, i.e. best fit to target image size.

    Maximum layer support
    Maximum number of internal RS274X layers increased from 256 to 1024.


    v5.67 (10/01/2002)

    Gerber spooling
    GBV_RIP now supports hot folders. User can define a hot folder where you can place Gerber files for plotting. The GBV_RIP will constantly look in the defined folder (or folders) and rip the Gerber file.


    v5.66c (05/01/2002)

    BMP support for 4 and 16 bit greyscales
    The program now supports BMP format in 2 (mono), 4 and 16 bit greyscales (16 and 256 "color" palettes).
    Option added for Bosch in South Carolina.


    v5.66b (03/05/2002)

    Cutout in a rectangular flash
    The program supports cutout in a rectangular flash. The front end now properly supports the standard 274x definitions of Round, Square, Rectangular, and Oblong decodes with voids.


    v5.65 (11/19/2001)

    Circular Data
    The problem here had to do with some very small circular data, i.e. the radius of circular data as denoted by I J commands were much less than the grid defined by the DPI.


    v5.64 (9/15/2001)

    MACROs bug fix
    This revision represents all the cummalative patches that were part of v5.63 as well as one bug fix that involved MACROs. When a MACRO became subject to a mirror operation it's extents were computed incorrectly. The behavior was such that the MACRO sometimes was dropped from the output. This has been fixed.


    v5.62 (1/14/2001)

    GBR2TIFF.EXE (v1.10)
    1. gbr2tiff.exe (v1.10). It is intended to replace gbripmgn.exe and gbrplt.exe. gbr2tiff will create either a TIFF file or a raw bitmap. It is intended to be launched from a command line. It's usage can be generated by invoking gbr2tiff.exe with the "-h" command line option. By default it runs in silent mode (no dialog, no status) which can be turned off with the "-status" command line option. Even with the "-status" option gbr2tiff.exe will not wait for user intervention to close by default. To defeat this behavior gbr2tiff.exe should be invoked with the "-pause" command line option.

    Invocation of gbr2tiff.exe is done in one of four ways, i.e. a transform file specification or plot window specification in conjunction with a GERBER file type specificaion:

    In each case other optional command line parameters can be provided. For clarity

    plot_window is denoted by -wplot xmin,ymin xmax,ymax

    dpi_specifier is denoted by -dpi:DPI

    unit_specifier is either -mm or -inch

    The plot window model accomodates rotation, mirroring, and scaling. These and other command line options can be readily viewed by invoking gbr2tiff.exe with the "-h" command line option.

    By default gbr2tiff.exe invokes gbrplt.dll with either the -274xbi or -274xbm command line options. These command line options force the booleanization of 274X aperture macro definitions. To turn this behavior off, gbr2tiff.exe can be invoked with the -bool command line option. The -274xbi and -274xbm command line options to gbrplt.dll turn on aperture macro booleanization for inch and mm data respectively. Booleanization is not performed when the gbrplt.dll is invoked with the standard -274x command line option. There is usually no performance hit associated with aperture macro booleanization.

    2. The rasterizers have been fixed to provided improved status reporting. The progress status should always be monotonic increasing.

    3. gbrplt.dll now supports aperture macro booleanization. The -274xbi and -274xbm command line options to gbrplt.dll turn on aperture macro booleanization for inch and mm data respectively. Booleanization is not performed when the gbrplt.dll is invoked with the standard -274x command line option. There is usually no performance hit associated with aperture macro booleanization.

    4. A number of fixes to the gbrplt.dll have been incorporated; these all have to do with rotation and mirroring of the GERBER data. In GBRIP v5.60 the following data were either dropped, misplaced, and/or incorrected processed in the presence of rotation or mirroring:

    circular draws

    all data subject to an SR command

    custom apertures

    These errors were present even for rotations that were a multiple of 90 degrees.


    v5.59 (5/24/2000)

    Different Scale in X and Y
    Developed an efficient method of drawing arcs where the X and Y scale are not equal. This method does not require a cubic order equation and does not use any approximation.


    v5.55 (3/6/2000)

    Increase Aperture Limit
    Previous version supports D-Codes from D10 to D999. This version supports D-Codes from D10 to D9999.

    Increase Macro Aperture Limit
    Previous version limited RS274X Macro definition to 1000 internal apertures per macro.. This version has no limit per macro, but has a limit of 10000 apertures in total apertures.


    v5.54 (2/29/2000)

    Thermal Rotation Angle Bug
    Thermal aperture rotation angle was ignored in previous versions. This is now fixed.


    v5.50 (11/9/1999)

    Floating license
    Network (floating) license support added.

    Add -server option
    By default, license is locked during plotting. (Previous versions release the license immediately at startup.)
    Add -server option to release the license immediately at startup. (Old behavior.)


    v5.44 (9/23/1999)

    Support "Scratch" macro definition
    RS274X aperture macro primitives have a flag that indicates On or Off (paint or scratch) status. This version adds codes to support this flag.


    v5.38 (1/28/1998)

    SR command problem fixed.
    The data loader might load junk data if the input RS274X file does not have a SR command.

    Custom Flashes Not plotted
    Some custom flashes might not be plotted. This has been fixed.


    v5.37 (12/02/1997)

    32-bit DPI enables increased output resolution
    Previous version use 16-bit DPI value, which limited maximum DPI to 32767. This version uses 32-bit DPI value to allow the user to set higher DPI's.

    Change Windows query function parameters
    Added 2 parameters to the query function. One parameter is to force the output unit and the other is to return the extents unit.

    Add unit control to plot window argument
    Added the command line arguments -inch and -mm options to control the unit of -wplot window extents.

    Added Quiet Mode option (Windows only)
    Add -q option to disable progress dialog


    v5.36 (12/01/1997)

    Corrected Calculation Error for media specified in mm.
    Auto-compute media size function did not compute the correct media size when the gerber file was in MM. This is now fixed.