91 lines
2.0 KiB
C#
91 lines
2.0 KiB
C#
using System;
|
|
using System.IO;
|
|
|
|
namespace Hjg.Pngcs
|
|
{
|
|
// Token: 0x02000037 RID: 55
|
|
internal abstract class ProgressiveOutputStream : MemoryStream
|
|
{
|
|
// Token: 0x060001F4 RID: 500 RVA: 0x00008072 File Offset: 0x00006272
|
|
public ProgressiveOutputStream(int size_0)
|
|
{
|
|
this.size = size_0;
|
|
if (this.size < 8)
|
|
{
|
|
throw new PngjException("bad size for ProgressiveOutputStream: " + this.size);
|
|
}
|
|
}
|
|
|
|
// Token: 0x060001F5 RID: 501 RVA: 0x000080A5 File Offset: 0x000062A5
|
|
public override void Close()
|
|
{
|
|
this.Flush();
|
|
base.Close();
|
|
}
|
|
|
|
// Token: 0x060001F6 RID: 502 RVA: 0x000080B3 File Offset: 0x000062B3
|
|
public override void Flush()
|
|
{
|
|
base.Flush();
|
|
this.CheckFlushBuffer(true);
|
|
}
|
|
|
|
// Token: 0x060001F7 RID: 503 RVA: 0x000080C2 File Offset: 0x000062C2
|
|
public override void Write(byte[] b, int off, int len)
|
|
{
|
|
base.Write(b, off, len);
|
|
this.CheckFlushBuffer(false);
|
|
}
|
|
|
|
// Token: 0x060001F8 RID: 504 RVA: 0x000080D4 File Offset: 0x000062D4
|
|
public void Write(byte[] b)
|
|
{
|
|
this.Write(b, 0, b.Length);
|
|
this.CheckFlushBuffer(false);
|
|
}
|
|
|
|
// Token: 0x060001F9 RID: 505 RVA: 0x000080E8 File Offset: 0x000062E8
|
|
private void CheckFlushBuffer(bool forced)
|
|
{
|
|
int num = (int)this.Position;
|
|
byte[] buffer = this.GetBuffer();
|
|
while (forced || num >= this.size)
|
|
{
|
|
int num2 = this.size;
|
|
if (num2 > num)
|
|
{
|
|
num2 = num;
|
|
}
|
|
if (num2 == 0)
|
|
{
|
|
return;
|
|
}
|
|
this.FlushBuffer(buffer, num2);
|
|
this.countFlushed += (long)num2;
|
|
int num3 = num - num2;
|
|
num = num3;
|
|
this.Position = (long)num;
|
|
if (num3 > 0)
|
|
{
|
|
Array.Copy(buffer, num2, buffer, 0, num3);
|
|
}
|
|
}
|
|
}
|
|
|
|
// Token: 0x060001FA RID: 506
|
|
protected abstract void FlushBuffer(byte[] b, int n);
|
|
|
|
// Token: 0x060001FB RID: 507 RVA: 0x00008156 File Offset: 0x00006356
|
|
public long GetCountFlushed()
|
|
{
|
|
return this.countFlushed;
|
|
}
|
|
|
|
// Token: 0x0400010F RID: 271
|
|
private readonly int size;
|
|
|
|
// Token: 0x04000110 RID: 272
|
|
private long countFlushed;
|
|
}
|
|
}
|