Files
Dec2017-Script-Dump/Pngcs/ProgressiveOutputStream.cs
2026-06-04 11:42:34 +02:00

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;
}
}