Example #1
0
 public string GetPortName(int port)
 {
     if (_rtmidi == null || !_rtmidi->ok)
     {
         return(null);
     }
     return(Marshal.PtrToStringAnsi(RtMidiDll.GetPortName(_rtmidi, (uint)port)));
 }
Example #2
0
        RenderTexture TryReceiveFrame()
        {
            PrepareInternalObjects();

            // Do nothing if the recv object is not ready.
            if (_recv == null)
            {
                return(null);
            }

            // Try getting a video frame.
            var frameOrNull = RecvHelper.TryCaptureVideoFrame(_recv);

            if (frameOrNull == null)
            {
                return(null);
            }
            var frame = (Interop.VideoFrame)frameOrNull;

            // Pixel format conversion
            var rt = _converter.Decode
                         (frame.Width, frame.Height,
                         Util.CheckAlpha(frame.FourCC), frame.Data);

            // Copy the metadata if any.
            if (frame.Metadata != System.IntPtr.Zero)
            {
                metadata = Marshal.PtrToStringAnsi(frame.Metadata);
            }
            else
            {
                metadata = null;
            }

            // Free the frame up.
            _recv.FreeVideoFrame(frame);

            return(rt);
        }
Example #3
0
        RenderTexture TryReceiveFrame()
        {
            PrepareReceiverObjects();
            if (_recv == null)
            {
                return(null);
            }

            // Video frame capturing
            var frameOrNull = RecvHelper.TryCaptureVideoFrame(_recv);

            if (frameOrNull == null)
            {
                return(null);
            }
            var frame = (Interop.VideoFrame)frameOrNull;

            // Pixel format conversion
            var rt = _converter.Decode
                         (frame.Width, frame.Height, Util.HasAlpha(frame.FourCC), frame.Data);

            // Metadata retrieval
            if (frame.Metadata != IntPtr.Zero)
            {
                metadata = Marshal.PtrToStringAnsi(frame.Metadata);
            }
            else
            {
                metadata = null;
            }

            // Video frame release
            _recv.FreeVideoFrame(frame);

            return(rt);
        }
Example #4
0
        /// <summary>
        /// Gets content of the system clipboard.
        /// </summary>
        /// <param name="dataType">The type of the text data in the clipboard</param>
        /// <returns>
        /// Text content retrieved from the clipboard if available. Otherwise null.
        /// </returns>
        /// <remarks>
        ///   <para>
        ///   This method gets text from the system clipboard. If stored text data is a special
        ///   format (line or rectangle,) its data type will be set to <paramref name="dataType"/>
        ///   parameter.
        ///   </para>
        /// </remarks>
        /// <seealso cref="Sgry.Azuki.TextDataType">TextDataType enum</seealso>
        public string GetClipboardText(out TextDataType dataType)
        {
            Int32  rc;            // result code
            var    clipboardOpened = false;
            var    dataHandle      = IntPtr.Zero;
            var    dataPtr         = IntPtr.Zero;
            var    formatID        = UInt32.MaxValue;
            string data            = null;

            dataType = TextDataType.Normal;

            try
            {
                // open clipboard
                rc = WinApi.OpenClipboard(IntPtr.Zero);
                if (rc == 0)
                {
                    return(null);
                }
                clipboardOpened = true;

                // distinguish type of data in the clipboard
                if (WinApi.IsClipboardFormatAvailable(_CF_LINEOBJECT) != 0)
                {
                    formatID = WinApi.CF_UNICODETEXT;
                    dataType = TextDataType.Line;
                }
                else if (WinApi.IsClipboardFormatAvailable(_CF_RECTSELECT) != 0)
                {
                    formatID = WinApi.CF_UNICODETEXT;
                    dataType = TextDataType.Rectangle;
                }
                else if (WinApi.IsClipboardFormatAvailable(WinApi.CF_UNICODETEXT) != 0)
                {
                    formatID = WinApi.CF_UNICODETEXT;
                }
                else if (WinApi.IsClipboardFormatAvailable(WinApi.CF_TEXT) != 0)
                {
                    formatID = WinApi.CF_TEXT;
                }
                if (formatID == UInt32.MaxValue)
                {
                    return(null);                    // no text data was in clipboard
                }

                // get handle of the clipboard data
                dataHandle = WinApi.GetClipboardData(formatID);
                if (dataHandle == IntPtr.Zero)
                {
                    return(null);
                }

                // get data pointer by locking the handle
                dataPtr = WinApi.GlobalLock(dataHandle);
                if (dataPtr == IntPtr.Zero)
                {
                    return(null);
                }

                // retrieve data
                if (formatID == WinApi.CF_TEXT)
                {
                    data = Marshal.PtrToStringAnsi(dataPtr);
                }
                else
                {
                    data = Marshal.PtrToStringUni(dataPtr);
                }
            }
            finally
            {
                // unlock handle
                if (dataPtr != IntPtr.Zero)
                {
                    WinApi.GlobalUnlock(dataHandle);
                }
                if (clipboardOpened)
                {
                    WinApi.CloseClipboard();
                }
            }

            return(data);
        }