1TODO
2-----------------------------------------------------------------
3
4version 1.0.0: (planned TBD)
5FOCUS: remaining gaps, testing, documentation
6  o decoder: Investigate using MMX to optimize inner loops
7  o decoder: Investigate using threads to split up image processing
8  o testing: Generate metrics in reproducible format to enable historical tracking
9  o testing: Investigate option of embedding decoded text into PNG test image comments
10  o testing: Tests should compare scanned results to embedded PNG comments
11  o testing: 'make test' writes metrics file
12  o testing: 'make test' confirms performance
13
14version 0.9.0: (planned TBD)
15FOCUS: multiple barcode scanning, structured append, FNC1, macros
16  o Implement --auto-fast option using algorithm from spec (lighter & faster?)
17  o Structured append reading and writing
18  o (test suite) Implement exhaustive comparison between --auto-fast and --auto-best
19  o Implement consistent and robust error handling (errno.h + custom)
20  o Implement structured append symbols
21  o Image quality metric
22  o Clean up source file permissions (write script to detect outliers?)
23
24version 0.8.0: (planned TBD)
25FOCUS: region detection
26  o Use calibration edge alignment to set precise locs for all edges
27  o Replace DmtxDirection (e.g., DmtxDirUp) with index range 0-7 (?)
28  o Rename outputIdx to outputLength? (Count pad codewords instead of pointer)
29  o Rename math types to drop unnecessary numeral (DmtxVector2, DmtxRay2, etc...)
30  o Inspect SDL image packing naming conventions (stride vs. pad, etc...)
31  o Clean up API for use with external ROI finders
32  o Is there a good way to know if dmtxRegionFindNext() timed out or finished file?
33  o testing: Test error corrections with controled damage to images
34  o library: Add .gitignore for generated files
35  o library: Add explicit build targets for debug and release
36  o library: Library should never call exit() or assert()
37  x encoder: Fixed Data Mosaic encoding bug
38
39version 0.7.4: (02-Jun-2011)
40  x library: Relicensed to use Simplified BSD with waiver option
41  x library: Added new error codes and messages in dmtxencode.c
42  x library: Added DmtxByteList struct and supporting functions
43  x library: Changed file header with updated text
44  x library: Fixed ECC bug for 144x144 case (thanks Huver!)
45  x library: New Reed Solomon implementation
46  x library: New repository structure: libdmtx, dmtx-utils, and dmtx-wrappers
47  x testing: Added test in compare_generated.sh to create directory if needed
48  x testing: Fix compare_generated.sh to prevent false negatives
49  x encoder: Review CHK macro strategy
50  x encoder: New encoding implementation
51  x encoder: Added Base 256 "encode to end of symbol" single byte header
52  x encoder: Check ProcessEndOfSymbolTriplet() for same problem fixed in Edifact
53  x encoder: Clean up PushCTXValues() passFail handling
54  x encoder: Fixed all encoding bugs reported by compare_generated.sh
55  x encoder: Fixed encoding bug affecting certain end-of-symbol conditions
56  x encoder: Replaced "twothirdsbits" encoder concept (major source of headaches)
57  x encoder: Track intermediate states in "optimize best" to handle all possibilities
58  x decoder: Use new Edifact decode function that doesn't assume full triplet
59
60version 0.7.2: (04-Sep-2009)
61  x Added initial macro decoding support (thanks Marlon!)
62  x Fast quad fill for dmtxDecodeMatrixRegion() (thanks Mackenzie!)
63  x Fixed capacity bug with rectangle requests
64  x Add libdmtx-X.X.X.zip as source package option
65  x Add libdmtx-win32-X.X.X.zip as binary package option
66  x Add "project" directory to EXTRA_DIST in Makefile.am
67
68version 0.7.0: (02-Mar-2009)
69  x Fix 64b->32b int assignment warnings
70  x FNC1 and correct upper shift (thanks Robin!)
71  x Support byte-padded row sizes via dmtxImageSetProp()
72  x Move image scaling factors to DmtxDecode
73  x Add DmtxUndefined to replace "-1" for undefined fixes, offset, etc...
74  x Update dmtxImageCreate() parameter options
75  x Switch DmtxFlipNone represent top-down row order
76  x Add dmtxEncodeSetProp() and dmtxEncodeGetProp()
77  x Relocate scan cache from DmtxImage to DmtxDecode
78  x Remove status from DmtxPixelLoc
79  x Configurable pixel packing
80  x Removed DmtxRgb, dmtxcolor.c, DmtxColor3, and DmtxGradient
81  x DmtxTrue/DmtxFalse replaces DMTX_TRUE/DMTX_FALSE
82  x DmtxPass/DmtxFail replaces DMTX_SUCCESS/DMTX_FAILURE
83  x Change all major types to use Create() and Destroy() convention
84  x Update documentation to reflect API changes
85  x Add comment to wiki pages that points to source README
86  x Figure out earliest usable Magick version for configure.ac
87  x Add simple_test project to libdmtx.sln
88  x Rename wiki page to "Windows (VisualC)"
89  x Introduce "project" directory for non-autotools platforms
90  x Rename "wrappers" directory to "wrapper" for consistency
91  x Create a common tasks and release checklist document
92
93version 0.6.0: (23-Nov-2008)
94  x Initial work preparing for custom pixel packing in future
95  x Begin static analysis cleanup with splint
96  x New --disable-dmtxread and --disable-dmtxwrite [Romain]
97  x Ability to specify max/min expected barcode sizes
98  x New edge neighbor tracking (Hough Transform + 2 way edge cache)
99  x Info cache to track scan progress and avoid rescanning pixels
100  x Scan multiple barcodes within an image
101  x Significantly reduced memory footprint
102  x Major reduction in floating point operations
103  x Dedicated README.xxx instructions for specific platforms
104  x Various improvements for cross platform builds
105
106version 0.5.2: (04-Sep-2008)
107  x Move SetRangeLimit and SetScanRegion into library
108  x Replace DMTXUTIL_SUCCESS/ERROR with DMTX_SUCCESS/FAILURE
109  x Add edge threshold filtering
110  x Add encoding support for 144x144 barcodes
111  x Fixed encoding case when message starts with two digits
112  x Fixed bug in range limit option
113  x Add dynamic image shrinking (pixel skipping)
114  x Add step-by-step diagnostic image dump (debug build)
115  x Fixed bug in minimum scan gap setting
116  x Removed y-flip from internal pixel storage
117  x Added strict border tests to eliminate false positives
118  x Added squareness deviation filter
119  x Implement simplified Hough transform for locating first edge
120  x Several behind-the-scenes performance enhancements
121  x Various improvements when building for OS X and FreeBSD
122
123version 0.5.1: (01-Jul-2008)
124  x Fixed Extended ASCII encoding bug
125  x Fixed error correction bug related to multiple interleaved blocks
126  x Added timeout condition for region detection
127  x Allow partial and complete disabling of error correction
128  x Replaced DmtxPixel struct with DmtxRgb for safe pixel copies
129  x Tighter integration with libfec
130  x (test suite) Started unit test executable for low level testing
131  x Include local copies of getopt1.c getopt.c getopt.h
132  x Various things to help compiling in MS VC++
133  x Added missing header comments
134
135version 0.5: (13-Apr-2008)
136  x Rework encoding and decoding API for consistency and intuitiveness
137  x Handle region detection and region decoding as separate tasks
138  x Pass found regions back to calling app before attempting decode
139  x Image mask approach (for performance and multi-barcode scans)
140  x Remove "2" from functions named *MatrixRegion2*() (whoops)
141  x Fix TestForEndOfSymbolEdifact() to handle special cases correctly
142  x Roll scan pattern into core library (inward breadth-first cross)
143  x Replace dmtxScanLine() with dmtxScanPixel()
144  x Implement 4-direction weighted module decisions (eliminates thresholds)
145  x Error correction using libfec (thanks Florian!)
146  x Remove gltest and simpletest from default build target
147  x Update Subversion to be keyword friendly ($Id$)
148  x Updated documentation to reflect API and option changes
149  x (test suite) Moved all public images to common directory with single copyright file
150
151version 0.4: (07-Dec-2008)
152  x Remove arbitrary sz scaling (100.0) since it doesn't matter anyway
153  x Fix 4 bottom-right modules in sizes where they are not used (thanks Matthias R.!)
154  x Replace callback references with preprocessor macros
155  x Implement remaining encodation schemes for encoding (X12, Base 256, etc...)
156  x Implement remaining encodation schemes for decoding (X12, Base 256, etc...)
157  x Implement --auto-best option for best possible encoding efficiency
158  x Implement multi-region symbols
159  x Read and write rectangle shaped barcodes
160  x Use GNU autotools (autoconf, automake, libtool)
161  x New region detection overhaul
162  x Fix chcon error in Makefile (right answer might be to use autoconf)
163  x (test suite) 'make test' executes regression tests for encodation
164  x (test suite) Add marathon images to project (thanks John!)
165
166version 0.3: (15-Oct-2006)
167  x Use preprocessor to pull code into one big file before compiling
168  x Update Makefile to handle monolithic approach; add targets for test, util, tarball
169  x Rename DmtxInfo struct and variables to DmtxDecode (for consistency with DmtxEncode)
170  x Merge placement logic into single implementation for both encoding and decoding
171  x Deploy codebase to SourceForge CVS
172  x Add revision control keywords to source files
173  x Implement remaining encodation schemes in dmtxdecode.c (X12, Base 256, etc...)
174  x Create separate file for callback functions (allows them to be optional)
175  x Move PNG (and other format) logic and dependencies to dmtxread, dmtxwrite, etc...
176  x Fix the regressions (crash bugs) introduced during v0.2 structural rework
177  x Add multi-page TIFF capabilities to dmtxread
178  x Move pure decode calls from dmtxScanLine into a dmtxdecode.c function
179  x Sample module color from more than one pixel location
180  x Rename DmtxVector3 to DmtxColor3 and merge into dmtxcolor.c
181  x Add package/build dependencies to INSTALL file
182  x Build coding style test scripts
183  x Replace current calibration size estimate with new approach
184  x Size step size dynamically according to pixel size
185
186version 0.2: (11-Jun-2006)
187  x Move dmtxCapturePixel routine to library code
188  x Initial restructuring of code for architectural goodness
189  x Improve API for real-world use (and not just dumping results to STDOUT)
190  x Implement error detection
191  x Create "simpletest.c" for full-circle processing
192  x Use libpng(3) in library to read Data Matrix images
193  x Slap together some basic documentation
194
195version 0.1: (22-Apr-2006)
196  x Cycle texture images with right-click
197  x Complete PlotPoint so it handles floating rows and columns
198  x Implement right and left directions of FollowEdge
199  x Call right and left edge following scans started from vertical step scans
200  x Implement 2D vector and matrix functions
201  x Trace lines with actual line object (2D ray)
202  x Turn corners when encountering the end of a followed line
203  x Build 2d transformation to wrap around region, assuming parallelogram
204  x Display pane 4 with reverse-transformed image capture
205  x Enhance dmtxCapturePixel to use "area averaging" instead of nearest neighbor
206  x Figure out why squares are 3 pixels off (to start: draw white gl lines over follower paths)
207  x Add callback function for PlotEventPoint(x, y, event_type)
208  x Improve follower logic (weighted line fit)
209  x dmtxGetPixel: do averaged interpolation followed by a tMin/tMid/tMax cutoff
210  x Add in de-skew transformation
211  x Refactor vector libraries to consistently list target parameter first
212  x Calibrate based on calibration lines
213  x Shrink-fit transformation around region
214
215Future Versions:
216-----------------------------------------------------------------
217  o Capture high-level design in documentation (data flow, module analogies)
218  o Try bi-linear approximation (instead of linear) in follower edge detection
219  o Implement fixed point math functions for use on mobile platforms
220  o Add calibration functionality to remove spherical distortion
221
222Perhaps Never:
223-----------------------------------------------------------------
224  o Implement pre-ECC200 Data Matrix standards (big effort/low demand)
225
226Website:
227-----------------------------------------------------------------
228  o Explore using single background image instead of split
229  o Add what we currently do, don't do, would like to do in the future
230  o Add http://hosted-projects.com/trac/hudora/public/wiki/huBarcode to resources page
231