Modified the code so that inverse is performed during plotting to improve timing.
Fixed the issue where multiple windows in MM unit are producing blank output on the 2nd and succeeding windows.
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
This version augments the split274x (preprocessor/conditioning) functionality found in GBRPLT.DLL. To see the specifics please refer to the split274x page.
Includes sample code that illustrates use of the new split274x features
fixes an issue introduced in v742 that manifested itself as a stack-overflow crash
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).
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_argsWe then run the batch file
Comparison of Output Results
[C:/wcad/Gbrip64.v743/EXAMPLES] ls -ltr total 1440258 -rwxrwxrwa 48358866 Jul 13 18:09 NoShift.gbr  -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  -rwxrwxrwa 146712791 Jul 13 18:19 cir_2um.tif -rwxrwxrwa 22860 Jul 13 18:19 plot.log
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.
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)
 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
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 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.
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.
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.
Fixed issue where some arc was drawn with rectangle corner.Bug Fix - Polygon Scaling
Fixed a bug where polygons were not scaled properly.
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.
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.
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.
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.
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:
-drawadj used without any following parameter, gbr_rip will automatically select an optimal amount of trace width growth based on the DPI; All traces are sized up by the same amount independent of the original trace width.
-drawadj:A the parameter A enables the user to control the amount of growth by value A (using the units specified in the transform file or passed on the command line). Again, all trace data is sized up by the same amount without regard to the original trace width.
This new option may or may not be used in conjunction with -contours (or -compensate)
The max Dcode value has been raised to 231
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.
where L, R, B and T are the Left, Right, Bottom and Top margins respectively.
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.
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:
|-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|
PB = packbits
RLE = run length encoding
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.
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.
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:
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.
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.
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
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.
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.
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 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.
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).
Added sample source code to GBRIP 64bit package (including C#).
Fixed a problem with arcs that have very large radius.
Update libraries and engines (acsbool and gbr2tiff).
Fixed a bug that causes a crash.
Fixed Flexlm node locked licensing issue.grey scale
Fixed bug that causes an error when using -greylevel option.
Added C# sample program in the source folder.
Updated libraries included in the package. It will be installed in
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).
New HASP version (Fuji and Dynatron) of GBRIP 64bit.
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.
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.
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.
This version fixes the problem with stray line in multi-threaded operation where spurious data appeared at sub-band boundaries in the main band.
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.
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).
This version reflects corrections and improvements to super sampling and uncompressed TIFF support:
This version now supports 96K layers. The memory footprint has been reduced in GBRPLT.DLL with respect to layer count.
fixes a bug in super sampling in conjunction with thresholdingArc Issue
fixed an issue with missing ball on arc.
This version fixes three arc related issues:
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.
This version fixes the issue when a polygon whose extents exactly coincide with raster band edges is dropped.
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
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.
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.
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.
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.
This version fixes a problem that occured when a very small window was specified for a gerber file using the SR command.
This version fixes a problem noted in -wplot mode in the tiff output.
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.
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.
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.
This version fixes a problem with a circular pad at 4.5 format.
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.
This version supports USB key for the Gerber Spool utility.
This version fixes a bug report from Fuji which had to do with handling arcs at high DPI.
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.
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.
This version fixes a problem which resides in BOOLDLL.DLL in evaluating a macro.
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.
This version fixes a problem handling a scaled oblong flash.
This version supports USB key under Windows XP and Vista 64 bit.
This version fixes very short arc (1 format statement grid) reported by Printar.
Fuji Japan reported a problem with the way with supported the SR command with negative values. This has been fixed.
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.
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.
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.
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.
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:16Note 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
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.
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.
Oblong apertures were not scaled properly when the X and Y scale were different. The problem was fixed.
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..
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.
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.
Fix a bug report from FineTrak (Fuji UK).
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.
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]
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.
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.
Gerber Rip didn't support a macro that was used as a draw with more than 2 points. This limitation has been fixed
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
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.
Will translate to 500 dots per MM.
Will translate to pixel size of 0.001 inch or mm based on your -inch or -mm command line options.
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).
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).
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]
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.
When the option "-rotate" is specified, the "S&R" command was not rasterized correctly. This has been fixed.
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.
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.
Gerber rip was not able to handle a polygon that had 35000 vertices (7600 were arcs). This has been fixed.
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.
The problem showed up when two unrelated and disjoint G36/G37 area fills were inadvertently connected as a result of windowing.
Extremely large polygons with arcs were not handled properly. This problem has been fixed.
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.
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.
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.
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>
-ps2 and -cps2 indicate that the output is to be encapsulated Postscript level 2.
-cps2 indicates output is compressed (RLE)
unless the -color option is used, output is black and white.
primary_color_name can take on the following values:
red, green, blue, cyan, yellow, magenta, black
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.
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.
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.
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)
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)
Fixes a memory leak that caused memory usage to grow if the DLL was executed over and over again. Reported by FFEI.
GBR_RIP enhanced to support the MI mirror command in RS274X.
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)
Fixes a rendering bug where extra pixels appeared near the arc. (Reported by FFEI #37)
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)
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.
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.)
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.
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)
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)
gbr2tiffcb_bitmapinfo(long width, long height, unsigned long sizeinbytes) gbr2tiffcb_progress(long percent) gbr2tiffcb_status(char *status) gbr2tiffcb_message(char *message)
This release has
has callback functionality; (look in source/lib directory of the GBR_RIP distribution for callback related code and documentation)
when using GBR2TIFF.DLL you must now provide GBR2TIFFCB.DLL with your executable
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
GBR2TIFF no longer hangs when the number of strips is insuffcient to contain the TIF image. (Applies to Automatech output only.)
the default number of strips is 6, i.e. 0 - 5 (applies to the proprietary Automatech output only.)
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.
GBR2TIFF.EXE and GBR2TIFF.DLL TIFF packbits compression is done on the fly resulting in better than 4x speed ups.
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.
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.
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.
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.
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.
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.
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:
a. [path_to_gbr2tiff.exe] [gerber_file] -274x -xf [transform_file]
b. [path_to_gbr2tiff.exe] [gerber_file] -apt:[acs_aperture_file] -xf [transform_file]
c. [path_to_gbr2tiff.exe] [gerber_file] -274x [unit_specifier] [plot_window] [dpi_specifier]
d. [path_to_gbr2tiff.exe] [gerber_file] -apt:[acs_aperture_file] [unit_specifier] [plot_window] [dpi_specifier]
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:
all data subject to an SR command
These errors were present even for rotations that were a multiple of 90 degrees.
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.
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.)
Custom Flashes Not plotted
Some custom flashes might not be plotted. This has been fixed.
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