/* * Copyright 2013 ZXing authors * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ namespace ZXing.PDF417.Internal { /// /// A Codeword in the PDF417 barcode /// /// Guenther Grau public sealed class Codeword { /// /// Default value for the RowNumber (-1 being an invalid real number) /// private static readonly int BARCODE_ROW_UNKNOWN = -1; public int StartX { get; private set; } public int EndX { get; private set; } public int Bucket { get; private set; } public int Value { get; private set; } public int RowNumber { get; set; } /// /// Initializes a new instance of the class. /// /// Start x. /// End x. /// Bucket. /// Value. public Codeword(int startX, int endX, int bucket, int value) { this.StartX = startX; this.EndX = endX; this.Bucket = bucket; this.Value = value; this.RowNumber = BARCODE_ROW_UNKNOWN; } /// /// Gets the width. /// /// The width. public int Width { get { return EndX - StartX; } } /// /// Gets a value indicating whether this instance has valid row number. /// /// true if this instance has valid row number; otherwise, false. public bool HasValidRowNumber { get { return IsValidRowNumber(RowNumber); } } /// /// Determines whether this instance is valid row number the specified rowNumber. /// /// true if this instance is valid row number the specified rowNumber; otherwise, false. /// Row number. public bool IsValidRowNumber(int rowNumber) { return rowNumber != BARCODE_ROW_UNKNOWN && Bucket == (rowNumber%3)*3; } /// /// Sets the row number as the row's indicator column. /// public void setRowNumberAsRowIndicatorColumn() { this.RowNumber = (Value/30)*3 + Bucket/3; } /// /// Returns a that represents the current . /// /// A that represents the current . public override string ToString() { return RowNumber + "|" + Value; } } }