using System;
using System.Collections.Generic;
using System.Text;
namespace jSignature.Tools
{
public class Stats
{
private int[][][] data;
private int[] _content_dimensions;
private void _calc_content_dimensions()
{
int x;
int y;
int minx = System.Int32.MaxValue;
int miny = System.Int32.MaxValue;
int maxx = System.Int32.MinValue;
int maxy = System.Int32.MinValue;
foreach (int[][] stroke in this.data)
{
int lastx = 0;
int lasty = 0;
foreach (int[] coordinate in stroke)
{
x = lastx + coordinate[0];
y = lasty + coordinate[1];
if (x < minx) minx = x;
if (x > maxx) maxx = x;
if (y < miny) miny = y;
if (y > maxy) maxy = y;
lastx = x;
lasty = y;
}
}
this._content_dimensions = new int[] { minx, miny, maxx, maxy };
}
public Stats(int[][][] data)
{
this.data = data;
_calc_content_dimensions();
}
///
/// Returns total image's size, including whitespace around content
///
///
public int[] Size
{
get { return new int[] { this._content_dimensions[2], this._content_dimensions[3] }; }
}
///
/// Returns the size of the content only, excluding the whitespace around content
/// This is useful for cropping.
///
///
public int[] ContentSize
{
get
{
return new int[] {
this._content_dimensions[2] - this._content_dimensions[0] + 1
, this._content_dimensions[3] - this._content_dimensions[1] + 1
};
}
}
///
/// Returns min upper left coordinate and max lower right coordinate of the content
///
/// int[] of form [minx, miny, maxx, maxy], where "min" is upper left point and "max" is lower right point.
///
public int[] ContentLimits
{
get
{
return this._content_dimensions;
}
}
}
}