Exemple #1
0
        private void CreateOffscreenViewer()
        {
            DestroyOffscreenViewer();
            if (m_GngOffscreenViewer == null)
            {
                // create two decompression buffer object instances
                m_GngDecompBuffer1 = new GngDecompBuffer();
                m_GngDecompBuffer1.SetBufferSize(width, heigth, GngDecompBufferFormat.dbfRGB32);
                m_GngDecompBuffer2 = new GngDecompBuffer();
                m_GngDecompBuffer2.SetBufferSize(width, heigth, GngDecompBufferFormat.dbfRGB32);

                // create the offscreen viewer object instance
                m_GngOffscreenViewer = new GngOffscreenViewer(m_GngDecompBuffer1);

                m_NewPicDecompBuffer = m_GngDecompBuffer1;

                m_GngOffscreenViewer.GetTextParams(out GngViewTextParams Params);
                // display a timestamp in the viewer
                Params.InsertPicInfo = true;
                Params.FontSize      = 20;
                m_GngOffscreenViewer.SetTextParams(Params);

                m_GngOffscreenViewer.SetOffscreenViewerSize(width, heigth, true);
                m_GngOffscreenViewer.Refresh();

                // set callbacks of the offscreen viewer objects
                OffscreenViewerAcceptCallbackDelegate OffscreenViewerAcceptCallbackDelegateInstance = new OffscreenViewerAcceptCallbackDelegate(GngOffscreenViewer_AcceptCallbackDelegate);
                m_GngOffscreenViewer.SetOffscreenViewerAcceptCallBack(OffscreenViewerAcceptCallbackDelegateInstance);
                OffscreenViewerCallbackDelegate OffscreenViewerCallbackDelegateInstance = new OffscreenViewerCallbackDelegate(GngOffscreenViewer_CallbackDelegate);
                m_GngOffscreenViewer.SetOffscreenViewerCallBack(OffscreenViewerCallbackDelegateInstance);
            }
        }
Exemple #2
0
        private void GngOffscreenViewer_CallbackDelegate(OffscreenViewerCallbackEventArgs e)
        {
            // check whether image in buffer is valid
            if (e.PicData.GngMediaDesc != null)
            {
                // new decompressed picture available
                lock (m_CSBuffer)
                {
                    m_NewPicDecompressed = true;
                    if (e.OffscreenBufferHandle.IsNativeBufferIdentical(m_GngDecompBuffer2))
                    {
                        Monitor.Exit(m_CSBuffer2);
                        m_NewPicDecompBuffer = m_GngDecompBuffer2;
                    }
                    else
                    {
                        Monitor.Exit(m_CSBuffer1);
                        m_NewPicDecompBuffer = m_GngDecompBuffer1;
                    }
                }

                CreateFrame();

                e.ImageWasHandled = true;
            }
        }
Exemple #3
0
 private void DestroyOffscreenViewer()
 {
     if (m_GngOffscreenViewer != null)
     {
         m_GngOffscreenViewer.Disconnect(true);
         m_GngOffscreenViewer.CloseCustomDrawCallBack();
         m_GngOffscreenViewer.CloseOffscreenViewerAcceptCallBack();
         m_GngOffscreenViewer.CloseOffscreenViewerCallBack();
         m_GngOffscreenViewer.Dispose();
         m_GngOffscreenViewer = null;
     }
     m_NewPicDecompBuffer = null;
     if (m_GngDecompBuffer1 != null)
     {
         m_GngDecompBuffer1.Dispose();
         m_GngDecompBuffer1 = null;
     }
     if (m_GngDecompBuffer2 != null)
     {
         m_GngDecompBuffer2.Dispose();
         m_GngDecompBuffer2 = null;
     }
 }