/// <summary>
        /// Initializes instance.
        /// </summary>
        /// <param name="modelPtr"> Native model pointer. </param>
        internal unsafe CubismUnmanagedCanvasInfo(IntPtr modelPtr)
        {
            if (modelPtr == IntPtr.Zero)
            {
                return;
            }

            float[] _sizeXY   = new float[2];
            float[] _originXY = new float[2];
            float[] _ppu      = new float[1];

            IntPtr size_ptr   = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(float)) * 2);
            IntPtr origin_ptr = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(float)) * 2);
            IntPtr ppu_ptr    = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(float)) * 1);

            CubismCoreDll.ReadCanvasInfo(modelPtr, size_ptr, origin_ptr, ppu_ptr);

            Marshal.Copy(size_ptr, _sizeXY, 0, 2);
            Marshal.Copy(origin_ptr, _originXY, 0, 2);
            Marshal.Copy(ppu_ptr, _ppu, 0, 1);

            Marshal.FreeCoTaskMem(size_ptr);
            Marshal.FreeCoTaskMem(origin_ptr);
            Marshal.FreeCoTaskMem(ppu_ptr);

            CanvasWidth   = _sizeXY[0];
            CanvasHeight  = _sizeXY[1];
            CanvasOriginX = _originXY[0];
            CanvasOriginY = _originXY[1];
            PixelsPerUnit = _ppu[0];
        }
        /// <summary>
        /// Initializes instance.
        /// </summary>
        /// <param name="modelPtr"> Native model pointer. </param>
        internal unsafe CubismUnmanagedCanvasInformation(IntPtr modelPtr)
        {
            if (modelPtr == IntPtr.Zero)
            {
                return;
            }

            float[] canvasSize          = new float[2];
            float[] canvasOrigin        = new float[2];
            float[] pixelsPerUnitBuffer = new float[1];

            fixed(float *canvasSizePtr = canvasSize, canvasOriginPtr = canvasOrigin, pixelsPerUnitPtr = pixelsPerUnitBuffer)
            {
                CubismCoreDll.ReadCanvasInfo(modelPtr, (IntPtr)canvasSizePtr, (IntPtr)canvasOriginPtr, (IntPtr)pixelsPerUnitPtr);

                CanvasWidth   = canvasSize[0];
                CanvasHeight  = canvasSize[1];
                CanvasOriginX = canvasOrigin[0];
                CanvasOriginY = canvasOrigin[1];
                PixelsPerUnit = pixelsPerUnitBuffer[0];
            }
        }