138 lines
4.7 KiB
C#
138 lines
4.7 KiB
C#
using System;
|
|
|
|
namespace Hjg.Pngcs
|
|
{
|
|
// Token: 0x02000019 RID: 25
|
|
public class ImageLines
|
|
{
|
|
// Token: 0x1700000F RID: 15
|
|
// (get) Token: 0x060000BF RID: 191 RVA: 0x00004190 File Offset: 0x00002390
|
|
// (set) Token: 0x060000C0 RID: 192 RVA: 0x00004198 File Offset: 0x00002398
|
|
public ImageInfo ImgInfo { get; private set; }
|
|
|
|
// Token: 0x17000010 RID: 16
|
|
// (get) Token: 0x060000C1 RID: 193 RVA: 0x000041A1 File Offset: 0x000023A1
|
|
// (set) Token: 0x060000C2 RID: 194 RVA: 0x000041A9 File Offset: 0x000023A9
|
|
public ImageLine.ESampleType sampleType { get; private set; }
|
|
|
|
// Token: 0x17000011 RID: 17
|
|
// (get) Token: 0x060000C3 RID: 195 RVA: 0x000041B2 File Offset: 0x000023B2
|
|
// (set) Token: 0x060000C4 RID: 196 RVA: 0x000041BA File Offset: 0x000023BA
|
|
public bool SamplesUnpacked { get; private set; }
|
|
|
|
// Token: 0x17000012 RID: 18
|
|
// (get) Token: 0x060000C5 RID: 197 RVA: 0x000041C3 File Offset: 0x000023C3
|
|
// (set) Token: 0x060000C6 RID: 198 RVA: 0x000041CB File Offset: 0x000023CB
|
|
public int RowOffset { get; private set; }
|
|
|
|
// Token: 0x17000013 RID: 19
|
|
// (get) Token: 0x060000C7 RID: 199 RVA: 0x000041D4 File Offset: 0x000023D4
|
|
// (set) Token: 0x060000C8 RID: 200 RVA: 0x000041DC File Offset: 0x000023DC
|
|
public int Nrows { get; private set; }
|
|
|
|
// Token: 0x17000014 RID: 20
|
|
// (get) Token: 0x060000C9 RID: 201 RVA: 0x000041E5 File Offset: 0x000023E5
|
|
// (set) Token: 0x060000CA RID: 202 RVA: 0x000041ED File Offset: 0x000023ED
|
|
public int RowStep { get; private set; }
|
|
|
|
// Token: 0x17000015 RID: 21
|
|
// (get) Token: 0x060000CB RID: 203 RVA: 0x000041F6 File Offset: 0x000023F6
|
|
// (set) Token: 0x060000CC RID: 204 RVA: 0x000041FE File Offset: 0x000023FE
|
|
public int[][] Scanlines { get; private set; }
|
|
|
|
// Token: 0x17000016 RID: 22
|
|
// (get) Token: 0x060000CD RID: 205 RVA: 0x00004207 File Offset: 0x00002407
|
|
// (set) Token: 0x060000CE RID: 206 RVA: 0x0000420F File Offset: 0x0000240F
|
|
public byte[][] ScanlinesB { get; private set; }
|
|
|
|
// Token: 0x060000CF RID: 207 RVA: 0x00004218 File Offset: 0x00002418
|
|
public ImageLines(ImageInfo ImgInfo, ImageLine.ESampleType sampleType, bool unpackedMode, int rowOffset, int nRows, int rowStep)
|
|
{
|
|
this.ImgInfo = ImgInfo;
|
|
this.channels = ImgInfo.Channels;
|
|
this.bitDepth = ImgInfo.BitDepth;
|
|
this.sampleType = sampleType;
|
|
this.SamplesUnpacked = unpackedMode || !ImgInfo.Packed;
|
|
this.RowOffset = rowOffset;
|
|
this.Nrows = nRows;
|
|
this.RowStep = rowStep;
|
|
this.elementsPerRow = (unpackedMode ? ImgInfo.SamplesPerRow : ImgInfo.SamplesPerRowPacked);
|
|
if (sampleType == ImageLine.ESampleType.INT)
|
|
{
|
|
this.Scanlines = new int[nRows][];
|
|
for (int i = 0; i < nRows; i++)
|
|
{
|
|
this.Scanlines[i] = new int[this.elementsPerRow];
|
|
}
|
|
this.ScanlinesB = null;
|
|
return;
|
|
}
|
|
if (sampleType == ImageLine.ESampleType.BYTE)
|
|
{
|
|
this.ScanlinesB = new byte[nRows][];
|
|
for (int j = 0; j < nRows; j++)
|
|
{
|
|
this.ScanlinesB[j] = new byte[this.elementsPerRow];
|
|
}
|
|
this.Scanlines = null;
|
|
return;
|
|
}
|
|
throw new PngjExceptionInternal("bad ImageLine initialization");
|
|
}
|
|
|
|
// Token: 0x060000D0 RID: 208 RVA: 0x00004310 File Offset: 0x00002510
|
|
public int ImageRowToMatrixRow(int imrow)
|
|
{
|
|
int num = (imrow - this.RowOffset) / this.RowStep;
|
|
if (num < 0)
|
|
{
|
|
return 0;
|
|
}
|
|
if (num >= this.Nrows)
|
|
{
|
|
return this.Nrows - 1;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060000D1 RID: 209 RVA: 0x00004348 File Offset: 0x00002548
|
|
public int ImageRowToMatrixRowStrict(int imrow)
|
|
{
|
|
imrow -= this.RowOffset;
|
|
int num = ((imrow >= 0 && imrow % this.RowStep == 0) ? (imrow / this.RowStep) : (-1));
|
|
if (num >= this.Nrows)
|
|
{
|
|
return -1;
|
|
}
|
|
return num;
|
|
}
|
|
|
|
// Token: 0x060000D2 RID: 210 RVA: 0x00004385 File Offset: 0x00002585
|
|
public int MatrixRowToImageRow(int mrow)
|
|
{
|
|
return mrow * this.RowStep + this.RowOffset;
|
|
}
|
|
|
|
// Token: 0x060000D3 RID: 211 RVA: 0x00004398 File Offset: 0x00002598
|
|
public ImageLine GetImageLineAtMatrixRow(int mrow)
|
|
{
|
|
if (mrow < 0 || mrow > this.Nrows)
|
|
{
|
|
throw new PngjException(string.Concat(new object[] { "Bad row ", mrow, ". Should be positive and less than ", this.Nrows }));
|
|
}
|
|
ImageLine imageLine = ((this.sampleType == ImageLine.ESampleType.INT) ? new ImageLine(this.ImgInfo, this.sampleType, this.SamplesUnpacked, this.Scanlines[mrow], null) : new ImageLine(this.ImgInfo, this.sampleType, this.SamplesUnpacked, null, this.ScanlinesB[mrow]));
|
|
imageLine.Rown = this.MatrixRowToImageRow(mrow);
|
|
return imageLine;
|
|
}
|
|
|
|
// Token: 0x0400006B RID: 107
|
|
internal readonly int channels;
|
|
|
|
// Token: 0x0400006C RID: 108
|
|
internal readonly int bitDepth;
|
|
|
|
// Token: 0x0400006D RID: 109
|
|
internal readonly int elementsPerRow;
|
|
}
|
|
}
|