X-Git-Url: http://git.rot13.org/?a=blobdiff_plain;f=csharp%2Fcommon%2FByteMatrix.cs;fp=csharp%2Fcommon%2FByteMatrix.cs;h=b1daa7210c7f59104ae12685879cffbee811a6e7;hb=e35d358134873c3f640672da7cd0c01f02253151;hp=0000000000000000000000000000000000000000;hpb=dac5abcb8f2d3d3e61977924dc01e5749d75dc00;p=zxing.git
diff --git a/csharp/common/ByteMatrix.cs b/csharp/common/ByteMatrix.cs
new file mode 100755
index 00000000..b1daa721
--- /dev/null
+++ b/csharp/common/ByteMatrix.cs
@@ -0,0 +1,115 @@
+/*
+* Copyright 2008 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 com.google.zxing.common
+{
+ using System;
+ using System.Text;
+
+ /// A class which wraps a 2D array of bytes. The default usage is signed. If you want to use it as a
+ /// unsigned container, it's up to you to do byteValue & 0xff at each location.
+ /// *
+ /// JAVAPORT: I'm not happy about the argument ordering throughout the file, as I always like to have
+ /// the horizontal component first, but this is for compatibility with the C++ code. The original
+ /// code was a 2D array of ints, but since it only ever gets assigned -1, 0, and 1, I'm going to use
+ /// less memory and go with bytes.
+ /// *
+ ///
+ /// dswitkin@google.com (Daniel Switkin)
+ ///
+ ///
+ public sealed class ByteMatrix
+ {
+ private sbyte[][] bytes;
+ private int Height;
+ private int Width;
+
+
+ public ByteMatrix(int height, int width) {
+ bytes = new sbyte[height][];
+ for (int i = 0; i < height; i++) {
+ bytes[i] = new sbyte[width];
+ }
+ this.Height = height;
+ this.Width = width;
+ }
+
+ public int height()
+ {
+ return Height;
+ }
+
+ public int width()
+ {
+ return Width;
+ }
+
+ public sbyte get(int y, int x)
+ {
+ return bytes[y][x];
+ }
+
+ public sbyte[][] getArray()
+ {
+ return bytes;
+ }
+
+ public void set(int y, int x, sbyte value)
+ {
+ bytes[y][x] = value;
+ }
+
+ public void set(int y, int x, int value)
+ {
+ bytes[y][x] = (sbyte)value;
+ }
+
+ public void clear(sbyte value)
+ {
+ for (int y = 0; y < Height; ++y)
+ {
+ for (int x = 0; x < Width; ++x)
+ {
+ bytes[y][x] = value;
+ }
+ }
+ }
+
+ public String toString()
+ {
+ StringBuilder result = new StringBuilder();
+ for (int y = 0; y < Height; ++y)
+ {
+ for (int x = 0; x < Width; ++x)
+ {
+ switch (bytes[y][x])
+ {
+ case 0:
+ result.Append(" 0");
+ break;
+ case 1:
+ result.Append(" 1");
+ break;
+ default:
+ result.Append(" ");
+ break;
+ }
+ }
+ result.Append('\n');
+ }
+ return result.ToString();
+ }
+ }
+}
\ No newline at end of file