コード例 #1
0
 public void Dispose()
 {
     if (BaseImage != null)
     {
         BaseImage.Dispose();
     }
     if (IDImage != null)
     {
         IDImage.Dispose();
     }
     if (CollisionMaskA != null)
     {
         CollisionMaskA.Dispose();
     }
     if (CollisionMaskB != null)
     {
         CollisionMaskB.Dispose();
     }
     if (InternalImage != null)
     {
         InternalImage.Dispose();
     }
     if (CollectiveImage != null)
     {
         CollectiveImage.Dispose();
     }
 }
コード例 #2
0
 public void Reload(string PaletteDataPath = null)
 {
     if (BaseImage != null)
     {
         BaseImage.Reload(PaletteDataPath);
     }
     if (IDImage != null)
     {
         IDImage.Reload();
     }
     if (InternalImage != null)
     {
         InternalImage.Reload();
     }
     if (CollisionMaskA != null)
     {
         CollisionMaskA.Reload(DrawCollisionMaskA());
     }
     if (CollisionMaskB != null)
     {
         CollisionMaskB.Reload(DrawCollisionMaskB());
     }
     if (CollectiveImage != null)
     {
         CollectiveImage.Reload(CreateCollectiveImage());
     }
 }
コード例 #3
0
        public Bitmap CreateCollectiveImage()
        {
            int    bitmap_width  = 16 * 5;
            int    bitmap_height = 16384;
            Bitmap bitmap        = new Bitmap(bitmap_width, bitmap_height);

            using (Graphics gfx = Graphics.FromImage(bitmap))
            {
                if (BaseImage != null)
                {
                    gfx.DrawImage(BaseImage.ToBitmap(), new Point(0, 0));
                }
                if (IDImage != null)
                {
                    gfx.DrawImage(IDImage.ToBitmap(), new Point(16, 0));
                }
                if (CollisionMaskA != null)
                {
                    gfx.DrawImage(CollisionMaskA.ToBitmap(), new Point(32, 0));
                }
                if (CollisionMaskB != null)
                {
                    gfx.DrawImage(CollisionMaskB.ToBitmap(), new Point(48, 0));
                }
                if (InternalImage != null)
                {
                    gfx.DrawImage(InternalImage.ToBitmap(), new Point(64, 0));
                }
            }
            return(bitmap);
        }
コード例 #4
0
ファイル: DefaultEncoder.cs プロジェクト: Darcara/LibApng
        //read http://stackoverflow.com/questions/6216094/implementing-the-apng-render-function
        public Tuple<Fctl, Fdat> EncodeFrame(Ihdr ihdr, InternalImage img, uint sequenceNumber, InternalImage lastImage, Rational delay)
        {
            //Rectangle bb = CalculateDifferenceBoundingBox(img, lastImage);
            //float approxns = ApproximateCompressionSize(img, lastImage, bb, ApngDisposeOperation.None, ApngBlendOperation.Source);
            //float approxns = ApproximateCompressionSize(img, lastImage, bb, ApngDisposeOperation., ApngBlendOperation.Source);

            return new Tuple<Fctl, Fdat>(new Fctl(ihdr, sequenceNumber, 0, 0, img.Ihdr.Width, img.Ihdr.Height, delay, ApngDisposeOperation.None, ApngBlendOperation.Source), new Fdat(sequenceNumber+1, Encode(img, lastImage), true));
        }
コード例 #5
0
ファイル: DefaultEncoder.cs プロジェクト: Darcara/LibApng
        protected byte[] Encode(InternalImage img, InternalImage lastImg)
        {
            Int64 stride = img.RgbData.Length / img.Ihdr.Height;
            var pngData = new byte[img.Ihdr.Height * (stride + 1)];

            for(Int64 y = 0; y < img.Ihdr.Height; ++y)
                {
                Int64 rowStart = y * (stride + 1);
                pngData[rowStart] = 0x00;	//Filter None
                Array.Copy(img.RgbData, y * stride, pngData, rowStart + 1, stride);
                }

            return pngData;
        }
コード例 #6
0
ファイル: DefaultEncoder.cs プロジェクト: Darcara/LibApng
 public Tuple<Fctl, Idat> EncodeImage(Ihdr ihdr, InternalImage img, uint sequenceNumber)
 {
     return new Tuple<Fctl, Idat>(new Fctl(ihdr, sequenceNumber, 0, 0, img.Ihdr.Width, img.Ihdr.Height, new Rational(0, 0), ApngDisposeOperation.None, ApngBlendOperation.Source), new Idat(Encode(img, null), true));
 }
コード例 #7
0
ファイル: DefaultEncoder.cs プロジェクト: Darcara/LibApng
 public Plte CreatePalette(InternalImage img)
 {
     throw new NotImplementedException();
 }
コード例 #8
0
 internal BackgroundImage(RenderingContext context, Image.SourceType imageSource, object imageValue, string mimeType)
 {
     m_internalImage = new InternalImage(imageSource, mimeType, imageValue, context);
 }
コード例 #9
0
ファイル: SimpleDecoder.cs プロジェクト: Darcara/LibApng
        public InternalImage Decode(Object obj, Ihdr ihdr, byte[] usePalette = null)
        {
            if(obj == null)
                throw new ArgumentNullException("obj");
            var bitmap = obj as Bitmap;
            if(bitmap == null)
                throw new NotSupportedException(GetType().Name + " is unable to decode object type " + obj.GetType().Name);

            #region sanity
            if(bitmap.Width != ihdr.Width)
                throw new ArgumentException("bitmap.Width should be " + ihdr.Width + " is " + bitmap.Width, "obj");
            if(bitmap.Height != ihdr.Height)
                throw new ArgumentException("bitmap.Height should be " + ihdr.Height + " is " + bitmap.Height, "obj");
            #endregion

            var intImage = new InternalImage(ihdr);

            switch (ihdr.ColorType)
                {
                case ColorType.Palette:
                    if(usePalette == null)
                        intImage.RgbPaletteData = CreatePalette(bitmap);
                    intImage.RgbData = CreateImageIndices(bitmap, ihdr, usePalette ?? intImage.RgbPaletteData);
                    break;
                case ColorType.Grayscale:
                    throw new NotImplementedException();
                    break;
                case ColorType.Rgb:
                    intImage.RgbData =CreateImageRgb(bitmap, ihdr);
                    break;
                case ColorType.GrayscaleWithAlpha:
                    throw new NotImplementedException();
                    break;
                case ColorType.Rgba:
                    throw new NotImplementedException();
                    break;
                default:
                    throw new ArgumentOutOfRangeException();
                }

            #region unable to process

            //switch(bitmap.PixelFormat)
            //  {
            //  case PixelFormat.Indexed:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format1bppIndexed:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format4bppIndexed:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format8bppIndexed:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format16bppGrayScale:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format16bppRgb555:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format16bppRgb565:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format16bppArgb1555:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format24bppRgb:
            //    throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format32bppRgb:
            //    if(ihdr.ColorType == ColorType.Rgb && ihdr.BitDepth == BitDepth._8)
            //      ;
            //    else
            //      throw new NotImplementedException();
            //    break;
            //  case PixelFormat.Format32bppArgb:
            //    throw new NotImplementedException();
            //    break;
            //  //case PixelFormat.Format32bppPArgb:
            //  //case PixelFormat.Alpha:
            //  //case PixelFormat.PAlpha:
            //  //case PixelFormat.Extended:
            //  //case PixelFormat.Canonical:
            //  //case PixelFormat.Undefined:
            //  //case PixelFormat.Format48bppRgb:
            //  //case PixelFormat.Format64bppArgb:
            //  //case PixelFormat.Format64bppPArgb:
            //  //case PixelFormat.Max:
            //  //case PixelFormat.Gdi:
            //  default:
            //    throw new UnsupportedPixelTypeException("Image pixel format unsupported: " + bitmap.PixelFormat);
            //  }

            #endregion

            return intImage;
        }
コード例 #10
0
ファイル: SimpleEncoder.cs プロジェクト: Darcara/LibApng
 public Tuple<Fctl, Fdat> EncodeFrame(Ihdr ihdr, InternalImage img, uint sequenceNumber, InternalImage lastImage, Rational delay)
 {
     return new Tuple<Fctl, Fdat>(new Fctl(ihdr, sequenceNumber, 0, 0, img.Ihdr.Width, img.Ihdr.Height, delay, ApngDisposeOperation.None, ApngBlendOperation.Source), new Fdat(sequenceNumber+1, Encode(img, lastImage), true));
 }