DataMatrixCodeParams

Description

Specifies range of possible data matrix codes.

Structure fields and default values (if defined) are described below:

  • Polarity Polarity = Any - Specifies whether code is darker or brighter than the background
  • int MinRowCount = 8 - Minimal number of module rows
  • int MaxRowCount = 32 - Maximal number of module rows
  • int MinColumnCount = 8 - Minimal number of module columns
  • int MaxColumnCount = 32 - Maximal number of module columns
  • float MinModuleSize = 4 - Minimal size of a module in pixels
  • float MaxModuleSize = 40 - Maximal size of a module in pixels
  • DataMatrixGapSize ExpectedGapSize = Small - Highest distance between neighboring marks in the Finder Pattern
  • float MaxRectangleRatio = 4.0f - Length ratio between the longer and the shorter side of the code's bounding rectangle
  • float MaxSlant = 20.0f - Maximal deviation from the right angle in the corner of the Finder Pattern
  • bool AllowPerspective = true - Allows codes with perspective distortion (up to a certain level)
  • bool AllowOversizedModules = true - Allows codes with foreground modules overlapping background modules
struct DataMatrixCodeParams
{
	Polarity			Polarity;
	int					MinRowCount;
	int					MaxRowCount;
	int					MinColumnCount;
	int					MaxColumnCount;
	float				MinModuleSize;
	float				MaxModuleSize;
	DataMatrixGapSize	ExpectedGapSize;
	float				MaxRectangleRatio;
	float				MaxSlant;
	bool				AllowPerspective;
	bool				AllowOversizedModules;

	explicit DataMatrixCodeParams
	(
		 Polarity Polarity_ = Any,
		 int MinRowCount_ = 8,
		 int MaxRowCount_ = 32,
		 int MinColumnCount_ = 8,
		 int MaxColumnCount_ = 32,
		 float MinModuleSize_ = 4,
		 float MaxModuleSize_ = 40,
		 DataMatrixGapSize ExpectedGapSize_ = Small,
		 float MaxRectangleRatio_ = 4.0f,
		 float MaxSlant_ = 20.0f,
		 bool AllowPerspective_ = true,
		 bool AllowOversizedModules_ = true 
	) :
		 Polarity(Polarity_),
		 MinRowCount(MinRowCount_),
		 MaxRowCount(MaxRowCount_),
		 MinColumnCount(MinColumnCount_),
		 MaxColumnCount(MaxColumnCount_),
		 MinModuleSize(MinModuleSize_),
		 MaxModuleSize(MaxModuleSize_),
		 ExpectedGapSize(ExpectedGapSize_),
		 MaxRectangleRatio(MaxRectangleRatio_),
		 MaxSlant(MaxSlant_),
		 AllowPerspective(AllowPerspective_),
		 AllowOversizedModules(AllowOversizedModules_) 
	{}

	Polarity Polarity( void ) const					{ return Polarity;				};
	int MinRowCount( void ) const					{ return MinRowCount;			};
	int MaxRowCount( void ) const					{ return MaxRowCount;			};
	int MinColumnCount( void ) const				{ return MinColumnCount;		};
	int MaxColumnCount( void ) const				{ return MaxColumnCount;		};
	float MinModuleSize( void ) const				{ return MinModuleSize;			};
	float MaxModuleSize( void ) const				{ return MaxModuleSize;			};
	DataMatrixGapSize ExpectedGapSize( void ) const	{ return ExpectedGapSize;		};
	float MaxRectangleRatio( void ) const			{ return MaxRectangleRatio;		};
	float MaxSlant( void ) const					{ return MaxSlant;				};
	bool AllowPerspective( void ) const				{ return AllowPerspective;		};
	bool AllowOversizedModules( void ) const		{ return AllowOversizedModules;	};

	bool operator == ( const avl::DataMatrixCodeParams& rhs ) const
	{
		return Polarity == rhs.Polarity && 
			MinRowCount == rhs.MinRowCount && 
			MaxRowCount == rhs.MaxRowCount && 
			MinColumnCount == rhs.MinColumnCount && 
			MaxColumnCount == rhs.MaxColumnCount && 
			MinModuleSize == rhs.MinModuleSize && 
			MaxModuleSize == rhs.MaxModuleSize && 
			ExpectedGapSize == rhs.ExpectedGapSize && 
			MaxRectangleRatio == rhs.MaxRectangleRatio && 
			MaxSlant == rhs.MaxSlant && 
			AllowPerspective == rhs.AllowPerspective && 
			AllowOversizedModules == rhs.AllowOversizedModules;
	}

	bool operator != ( const avl::DataMatrixCodeParams& rhs ) const
	{
		return !(operator==(rhs));
	}

};