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