public override void ParseFromRaw(ChunkRaw chunk)
 {
     byte[] data = chunk.Data;
     if (ImgInfo.Greyscale)
     {
         Gray = PngHelperInternal.ReadInt2fromBytes(data, 0);
     }
     else if (ImgInfo.Indexed)
     {
         int numEntries = data.Length;
         PaletteAlpha = new int[numEntries];
         for (int n = 0; n < numEntries; n++)
         {
             PaletteAlpha[n] = (int)(data[n] & 0xff);
         }
     }
     else
     {
         Rgb = new RGB <int> {
             R = PngHelperInternal.ReadInt2fromBytes(data, 0),
             G = PngHelperInternal.ReadInt2fromBytes(data, 2),
             B = PngHelperInternal.ReadInt2fromBytes(data, 4)
         };
     }
 }
Exemplo n.º 2
0
        public override void ParseFromRaw(ChunkRaw c)
        {
            if (c is null)
            {
                throw new ArgumentNullException(nameof(c));
            }

            if (c.Len != 7)
            {
                throw new PngjException("bad chunk " + c);
            }

            var year = PngHelperInternal.ReadInt2fromBytes(c.Data, 0);
            var mon  = PngHelperInternal.ReadInt1fromByte(c.Data, 2);
            var day  = PngHelperInternal.ReadInt1fromByte(c.Data, 3);
            var hour = PngHelperInternal.ReadInt1fromByte(c.Data, 4);
            var min  = PngHelperInternal.ReadInt1fromByte(c.Data, 5);
            var sec  = PngHelperInternal.ReadInt1fromByte(c.Data, 6);

            try
            {
                timestamp = new DateTime(year, mon, day, hour, min, sec);
            }
            catch
            {
                timestamp = DateTime.MinValue;
            }
        }
Exemplo n.º 3
0
        public override void ParseFromRaw(ChunkRaw c)
        {
            if (c is null)
            {
                throw new System.ArgumentNullException(nameof(c));
            }

            if (ImgInfo.Greyscale)
            {
                gray = PngHelperInternal.ReadInt2fromBytes(c.Data, 0);
            }
            else if (ImgInfo.Indexed)
            {
                var nentries = c.Data.Length;
                paletteAlpha = new int[nentries];
                for (var n = 0; n < nentries; n++)
                {
                    paletteAlpha[n] = c.Data[n] & 0xff;
                }
            }
            else
            {
                red   = PngHelperInternal.ReadInt2fromBytes(c.Data, 0);
                green = PngHelperInternal.ReadInt2fromBytes(c.Data, 2);
                blue  = PngHelperInternal.ReadInt2fromBytes(c.Data, 4);
            }
        }
Exemplo n.º 4
0
        public override void ParseFromRaw(ChunkRaw c)
        {
            int num = -1;

            for (int i = 0; i < c.Data.Length; i++)
            {
                if (c.Data[i] == 0)
                {
                    num = i;
                    break;
                }
            }
            if (num <= 0 || num > c.Data.Length - 2)
            {
                throw new PngjException("bad sPLT chunk: no separator found");
            }
            PalName     = ChunkHelper.ToString(c.Data, 0, num);
            SampleDepth = PngHelperInternal.ReadInt1fromByte(c.Data, num + 1);
            num        += 2;
            int num2 = (c.Data.Length - num) / ((SampleDepth == 8) ? 6 : 10);

            Palette = new int[num2 * 5];
            int num3 = 0;

            for (int j = 0; j < num2; j++)
            {
                int num4;
                int num5;
                int num6;
                int num7;
                if (SampleDepth == 8)
                {
                    num4 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
                    num5 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
                    num6 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
                    num7 = PngHelperInternal.ReadInt1fromByte(c.Data, num++);
                }
                else
                {
                    num4 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
                    num += 2;
                    num5 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
                    num += 2;
                    num6 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
                    num += 2;
                    num7 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
                    num += 2;
                }
                int num8 = PngHelperInternal.ReadInt2fromBytes(c.Data, num);
                num            += 2;
                Palette[num3++] = num4;
                Palette[num3++] = num5;
                Palette[num3++] = num6;
                Palette[num3++] = num7;
                Palette[num3++] = num8;
            }
        }
Exemplo n.º 5
0
        public override void ParseFromRaw(ChunkRaw chunk)
        {
            byte[] data   = chunk.Data;
            int    length = data.Length;
            int    t      = -1;

            for (int i = 0; i < length; i++)           // look for first zero
            {
                if (data[i] == 0)
                {
                    t = i;
                    break;
                }
            }
            if (t <= 0 || t > length - 2)
            {
                throw new System.Exception("bad sPLT chunk: no separator found");
            }
            PalName     = ChunkHelper.ToString(data, 0, t);
            SampleDepth = PngHelperInternal.ReadInt1fromByte(data, t + 1);
            t          += 2;
            int nentries = (length - t) / (SampleDepth == 8 ? 6 : 10);

            Palette = new int[nentries * 5];
            int r, g, b, a, f, ne;

            ne = 0;
            for (int i = 0; i < nentries; i++)
            {
                if (SampleDepth == 8)
                {
                    r = PngHelperInternal.ReadInt1fromByte(data, t++);
                    g = PngHelperInternal.ReadInt1fromByte(data, t++);
                    b = PngHelperInternal.ReadInt1fromByte(data, t++);
                    a = PngHelperInternal.ReadInt1fromByte(data, t++);
                }
                else
                {
                    r  = PngHelperInternal.ReadInt2fromBytes(data, t);
                    t += 2;
                    g  = PngHelperInternal.ReadInt2fromBytes(data, t);
                    t += 2;
                    b  = PngHelperInternal.ReadInt2fromBytes(data, t);
                    t += 2;
                    a  = PngHelperInternal.ReadInt2fromBytes(data, t);
                    t += 2;
                }
                f             = PngHelperInternal.ReadInt2fromBytes(data, t);
                t            += 2;
                Palette[ne++] = r;
                Palette[ne++] = g;
                Palette[ne++] = b;
                Palette[ne++] = a;
                Palette[ne++] = f;
            }
        }
Exemplo n.º 6
0
 public override void ParseFromRaw(ChunkRaw chunk)
 {
     if (chunk.Length != 7)
     {
         throw new PngjException("bad chunk " + chunk?.ToString());
     }
     year = PngHelperInternal.ReadInt2fromBytes(chunk.Data, 0);
     mon  = PngHelperInternal.ReadInt1fromByte(chunk.Data, 2);
     day  = PngHelperInternal.ReadInt1fromByte(chunk.Data, 3);
     hour = PngHelperInternal.ReadInt1fromByte(chunk.Data, 4);
     min  = PngHelperInternal.ReadInt1fromByte(chunk.Data, 5);
     sec  = PngHelperInternal.ReadInt1fromByte(chunk.Data, 6);
 }
Exemplo n.º 7
0
        public override void ParseFromRaw(ChunkRaw c)
        {
            if (!ImgInfo.Indexed)
            {
                throw new PngjException("only indexed images accept a HIST chunk");
            }
            int nentries = c.Data.Length / 2;

            hist = new int[nentries];
            for (int i = 0; i < hist.Length; i++)
            {
                hist[i] = PngHelperInternal.ReadInt2fromBytes(c.Data, i * 2);
            }
        }
 public override void ParseFromRaw(ChunkRaw chunk)
 {
     if (chunk.Len != 7)
     {
         throw new System.Exception($"bad chunk {chunk}");
     }
     byte[] data = chunk.Data;
     year = PngHelperInternal.ReadInt2fromBytes(data, 0);
     mon  = PngHelperInternal.ReadInt1fromByte(data, 2);
     day  = PngHelperInternal.ReadInt1fromByte(data, 3);
     hour = PngHelperInternal.ReadInt1fromByte(data, 4);
     min  = PngHelperInternal.ReadInt1fromByte(data, 5);
     sec  = PngHelperInternal.ReadInt1fromByte(data, 6);
 }
Exemplo n.º 9
0
 public override void ParseFromRaw(ChunkRaw c)
 {
     if (ImgInfo.Greyscale)
     {
         gray = PngHelperInternal.ReadInt2fromBytes(c.Data, 0);
         return;
     }
     if (ImgInfo.Indexed)
     {
         paletteIndex = (c.Data[0] & 0xFF);
         return;
     }
     red   = PngHelperInternal.ReadInt2fromBytes(c.Data, 0);
     green = PngHelperInternal.ReadInt2fromBytes(c.Data, 2);
     blue  = PngHelperInternal.ReadInt2fromBytes(c.Data, 4);
 }
 public override void ParseFromRaw(ChunkRaw chunk)
 {
     byte[] data = chunk.Data;
     if (ImgInfo.Greyscale)
     {
         gray = PngHelperInternal.ReadInt2fromBytes(data, 0);
     }
     else if (ImgInfo.Indexed)
     {
         paletteIndex = (int)(data[0] & 0xff);
     }
     else
     {
         red   = PngHelperInternal.ReadInt2fromBytes(data, 0);
         green = PngHelperInternal.ReadInt2fromBytes(data, 2);
         blue  = PngHelperInternal.ReadInt2fromBytes(data, 4);
     }
 }
Exemplo n.º 11
0
 public override void ParseFromRaw(ChunkRaw c)
 {
     if (ImgInfo.Greyscale)
     {
         gray = PngHelperInternal.ReadInt2fromBytes(c.Data, 0);
     }
     else if (ImgInfo.Indexed)
     {
         int num = c.Data.Length;
         paletteAlpha = new int[num];
         for (int i = 0; i < num; i++)
         {
             paletteAlpha[i] = (c.Data[i] & 0xFF);
         }
     }
     else
     {
         red   = PngHelperInternal.ReadInt2fromBytes(c.Data, 0);
         green = PngHelperInternal.ReadInt2fromBytes(c.Data, 2);
         blue  = PngHelperInternal.ReadInt2fromBytes(c.Data, 4);
     }
 }
Exemplo n.º 12
0
        public override void ParseFromRaw(ChunkRaw c)
        {
            if (c is null)
            {
                throw new System.ArgumentNullException(nameof(c));
            }

            var t = -1;

            for (var i = 0; i < c.Data.Length; i++)
            { // look for first zero
                if (c.Data[i] == 0)
                {
                    t = i;
                    break;
                }
            }

            if (t <= 0 || t > c.Data.Length - 2)
            {
                throw new PngjException("bad sPLT chunk: no separator found");
            }

            PalName     = ChunkHelper.ToString(c.Data, 0, t);
            SampleDepth = PngHelperInternal.ReadInt1fromByte(c.Data, t + 1);
            t          += 2;
            var nentries = (c.Data.Length - t) / (SampleDepth == 8 ? 6 : 10);

            Palette = new int[nentries * 5];
            int r;
            int g;
            int b;
            int a;
            int f;
            int ne;

            ne = 0;
            for (var i = 0; i < nentries; i++)
            {
                if (SampleDepth == 8)
                {
                    r = PngHelperInternal.ReadInt1fromByte(c.Data, t++);
                    g = PngHelperInternal.ReadInt1fromByte(c.Data, t++);
                    b = PngHelperInternal.ReadInt1fromByte(c.Data, t++);
                    a = PngHelperInternal.ReadInt1fromByte(c.Data, t++);
                }
                else
                {
                    r  = PngHelperInternal.ReadInt2fromBytes(c.Data, t);
                    t += 2;
                    g  = PngHelperInternal.ReadInt2fromBytes(c.Data, t);
                    t += 2;
                    b  = PngHelperInternal.ReadInt2fromBytes(c.Data, t);
                    t += 2;
                    a  = PngHelperInternal.ReadInt2fromBytes(c.Data, t);
                    t += 2;
                }

                f             = PngHelperInternal.ReadInt2fromBytes(c.Data, t);
                t            += 2;
                Palette[ne++] = r;
                Palette[ne++] = g;
                Palette[ne++] = b;
                Palette[ne++] = a;
                Palette[ne++] = f;
            }
        }