c++ port of the relevant parts of r2581

git-svn-id: http://zxing.googlecode.com/svn/trunk@2624 59b500cc-1b3d-0410-9834-0bbf25fbcc57