Esempio n. 1
1
        internal APNGFrame(GraphicsDevice graphicsDevice, Frame frame)
        {
            if (frame.fcTLChunk != null)
            {
                X = (int) frame.fcTLChunk.XOffset;
                Y = (int) frame.fcTLChunk.YOffset;
                Width = (int) frame.fcTLChunk.Width;
                Height = (int) frame.fcTLChunk.Height;
                BlendOp = frame.fcTLChunk.BlendOp;
                DisposeOp = frame.fcTLChunk.DisposeOp;
                DelayTime = new TimeSpan(
                    TimeSpan.TicksPerSecond*frame.fcTLChunk.DelayNum/frame.fcTLChunk.DelayDen);
            }
            else
            {
                X = 0;
                Y = 0;
                Width = frame.IHDRChunk.Width;
                Height = frame.IHDRChunk.Height;
                BlendOp = BlendOps.APNGBlendOpSource;
                DisposeOp = DisposeOps.APNGDisposeOpNone;
                DelayTime = TimeSpan.Zero;
            }

            // frame.GetStream() is not seekable, so we build a new MemoryStream.
            FrameTexture = Texture2D.FromStream(
                graphicsDevice, new MemoryStream(frame.GetStream().ToArray()));
            MultiplyAlpha(FrameTexture);
        }
Esempio n. 2
0
        internal APNGFrame(Game game, Frame frame)
        {
            if (frame.fcTLChunk != null)
            {
                X         = (int)frame.fcTLChunk.XOffset;
                Y         = (int)frame.fcTLChunk.YOffset;
                Width     = (int)frame.fcTLChunk.Width;
                Height    = (int)frame.fcTLChunk.Height;
                BlendOp   = frame.fcTLChunk.BlendOp;
                DisposeOp = frame.fcTLChunk.DisposeOp;
                DelayTime = new TimeSpan(
                    TimeSpan.TicksPerSecond * frame.fcTLChunk.DelayNum / frame.fcTLChunk.DelayDen);
            }
            else
            {
                X         = 0;
                Y         = 0;
                Width     = frame.IHDRChunk.Width;
                Height    = frame.IHDRChunk.Height;
                BlendOp   = BlendOps.APNGBlendOpSource;
                DisposeOp = DisposeOps.APNGDisposeOpNone;
                DelayTime = TimeSpan.Zero;
            }

            // frame.GetStream() is not seekable, so we build a new MemoryStream.
            FrameTexture = Texture2D.FromStream(
                game.GraphicsDevice, new MemoryStream(frame.GetStream().ToArray()));
            MultiplyAlpha(FrameTexture);
        }
Esempio n. 3
0
 public override void ReadFromString(ref string[] nodeParams)
 {
     base.ReadFromString(ref nodeParams);
     m_currentBlendOp = (BlendOps)Enum.Parse(typeof(BlendOps), GetCurrentParam(ref nodeParams));
     m_saturate       = Convert.ToBoolean(GetCurrentParam(ref nodeParams));
     SetAdditonalTitleText(string.Format(Constants.SubTitleTypeFormatStr, m_currentBlendOp));
 }
Esempio n. 4
0
 public override void DrawProperties()
 {
     base.DrawProperties();
     EditorGUI.BeginChangeCheck();
     m_currentBlendOp = (BlendOps)EditorGUILayoutEnumPopup(BlendOpsModeStr, m_currentBlendOp);
     if (EditorGUI.EndChangeCheck())
     {
         SetAdditonalTitleText(string.Format(Constants.SubTitleTypeFormatStr, m_currentBlendOp));
     }
     m_saturate = EditorGUILayoutToggle(SaturateResultStr, m_saturate);
 }
Esempio n. 5
0
        public override void Draw(DrawInfo drawInfo)
        {
            base.Draw(drawInfo);

            EditorGUI.BeginChangeCheck();
            m_currentBlendOp = (BlendOps)m_upperLeftWidget.DrawWidget(this, m_currentBlendOp);
            if (EditorGUI.EndChangeCheck())
            {
                SetAdditonalTitleText(string.Format(Constants.SubTitleTypeFormatStr, m_currentBlendOp));
            }
        }
 /// <summary>
 /// Parses the data.
 /// </summary>
 /// <param name="ms">Memory stream of chunk data.</param>
 protected override void ParseData(MemoryStream ms)
 {
     sequenceNumber   = Helper.ConvertEndian(ms.ReadUInt32());
     width            = Helper.ConvertEndian(ms.ReadUInt32());
     height           = Helper.ConvertEndian(ms.ReadUInt32());
     xOffset          = Helper.ConvertEndian(ms.ReadUInt32());
     yOffset          = Helper.ConvertEndian(ms.ReadUInt32());
     delayNumerator   = Helper.ConvertEndian(ms.ReadUInt16());
     delayDenominator = Helper.ConvertEndian(ms.ReadUInt16());
     disposeOp        = (DisposeOps)ms.ReadByte();
     blendOp          = (BlendOps)ms.ReadByte();
 }
Esempio n. 7
0
 protected override void ParseData(MemoryStream ms)
 {
     SequenceNumber = Helper.ConvertEndian(ms.ReadUInt32());
     Width          = Helper.ConvertEndian(ms.ReadUInt32());
     Height         = Helper.ConvertEndian(ms.ReadUInt32());
     XOffset        = Helper.ConvertEndian(ms.ReadUInt32());
     YOffset        = Helper.ConvertEndian(ms.ReadUInt32());
     DelayNum       = Helper.ConvertEndian(ms.ReadUInt16());
     DelayDen       = Helper.ConvertEndian(ms.ReadUInt16());
     DisposeOp      = (DisposeOps)ms.ReadByte();
     BlendOp        = (BlendOps)ms.ReadByte();
 }
Esempio n. 8
0
            public FrameInfo(IHDRChunk header, Frame frame)
            {
                FullRect  = new Rect(0, 0, header.Width, header.Height);
                FrameRect = new Rect(frame.fcTLChunk.XOffset, frame.fcTLChunk.YOffset,
                                     frame.fcTLChunk.Width, frame.fcTLChunk.Height);

                BlendOp   = frame.fcTLChunk.BlendOp;
                DisposeOp = frame.fcTLChunk.DisposeOp;

                Pixels = frame.GetBitmapSource();
                Pixels.Freeze();

                Delay = TimeSpan.FromSeconds((double)frame.fcTLChunk.DelayNum /
                                             (frame.fcTLChunk.DelayDen == 0
                                                 ? 100
                                                 : frame.fcTLChunk.DelayDen));
            }
Esempio n. 9
0
 public override void DrawProperties()
 {
     base.DrawProperties();
     m_currentBlendOp = ( BlendOps )EditorGUILayoutEnumPopup(BlendOpsModeStr, m_currentBlendOp);
 }
Esempio n. 10
0
 public override void ReadFromString(ref string[] nodeParams)
 {
     base.ReadFromString(ref nodeParams);
     m_currentBlendOp = ( BlendOps )Enum.Parse(typeof(BlendOps), GetCurrentParam(ref nodeParams));
     m_saturate       = Convert.ToBoolean(GetCurrentParam(ref nodeParams));
 }
Esempio n. 11
0
 public override void DrawProperties()
 {
     base.DrawProperties();
     m_currentBlendOp = ( BlendOps )EditorGUILayoutEnumPopup(BlendOpsModeStr, m_currentBlendOp);
     m_saturate       = EditorGUILayoutToggle(SaturateResultStr, m_saturate);
 }
Esempio n. 12
0
 protected override void ParseData(MemoryStream ms)
 {
     SequenceNumber = Helper.ConvertEndian(ms.ReadUInt32());
     Width = Helper.ConvertEndian(ms.ReadUInt32());
     Height = Helper.ConvertEndian(ms.ReadUInt32());
     XOffset = Helper.ConvertEndian(ms.ReadUInt32());
     YOffset = Helper.ConvertEndian(ms.ReadUInt32());
     DelayNum = Helper.ConvertEndian(ms.ReadUInt16());
     DelayDen = Helper.ConvertEndian(ms.ReadUInt16());
     DisposeOp = (DisposeOps)ms.ReadByte();
     BlendOp = (BlendOps)ms.ReadByte();
 }