public override void Redraw(Bitmap framebuffer)
        {
            using (FastBitmap bmp = new FastBitmap(framebuffer, true, true)) {
                IntPtr scan0 = bmp.Scan0;
                int    size  = bmp.Width * bmp.Height * 4;

                IntPtr     colorSpace = OSX.API.CGColorSpaceCreateDeviceRGB();
                IntPtr     provider   = OSX.API.CGDataProviderCreateWithData(IntPtr.Zero, scan0, size, IntPtr.Zero);
                const uint flags      = 4 | (2 << 12);
                IntPtr     image      = OSX.API.CGImageCreate(bmp.Width, bmp.Height, 8, 8 * 4, bmp.Stride,
                                                              colorSpace, flags, provider, IntPtr.Zero, 0, 0);
                IntPtr   context = IntPtr.Zero;
                OSStatus err     = OSX.API.QDBeginCGContext(windowPort, ref context);
                OSX.API.CheckReturn(err);

                OSX.HIRect rect = new OSX.HIRect();
                rect.Origin.X = 0; rect.Origin.Y = 0;
                rect.Size.X   = bmp.Width; rect.Size.Y = bmp.Height;

                OSX.API.CGContextDrawImage(context, rect, image);
                OSX.API.CGContextSynchronize(context);
                err = OSX.API.QDEndCGContext(windowPort, ref context);
                OSX.API.CheckReturn(err);

                OSX.API.CGImageRelease(image);
                OSX.API.CGDataProviderRelease(provider);
                OSX.API.CGColorSpaceRelease(colorSpace);
            }
        }
        public override void Draw( IWindowInfo info, Bitmap framebuffer )
        {
            using( FastBitmap bmp = new FastBitmap( framebuffer, true ) ) {
                IntPtr scan0 = bmp.Scan0;
                int size = bmp.Width * bmp.Height * 4;

                IntPtr colorSpace = OSX.API.CGColorSpaceCreateDeviceRGB();
                IntPtr provider = OSX.API.CGDataProviderCreateWithData( IntPtr.Zero, scan0, size, IntPtr.Zero );
                const uint flags = 4 | (2 << 12);
                IntPtr image = OSX.API.CGImageCreate( bmp.Width, bmp.Height, 8, 8 * 4, bmp.Stride,
                                                     colorSpace, flags, provider, IntPtr.Zero, 0, 0 );
                IntPtr context = IntPtr.Zero;
                OSStatus err = OSX.API.QDBeginCGContext( windowPort, ref context );
                OSX.API.CheckReturn( err );

                OSX.HIRect rect = new OSX.HIRect();
                rect.Origin.X = 0; rect.Origin.Y = 0;
                rect.Size.X = bmp.Width; rect.Size.Y = bmp.Height;

                OSX.API.CGContextDrawImage( context, rect, image );
                OSX.API.CGContextSynchronize( context );
                err = OSX.API.QDEndCGContext( windowPort, ref context );
                OSX.API.CheckReturn( err );

                OSX.API.CGImageRelease( image );
                OSX.API.CGDataProviderRelease( provider );
                OSX.API.CGColorSpaceRelease( colorSpace );
            }
        }
Exemple #3
0
 static extern OSStatus HIViewGetFrame(IntPtr inView, out HIRect outRect);
Exemple #4
0
 private static OSStatus HIViewGetFrame(IntPtr inView, out HIRect outRect);
Exemple #5
0
 static extern OSStatus HIViewGetFrame(IntPtr inView, out HIRect outRect);
 unsafe static extern void DisplayBounds(out HIRect rect, IntPtr display);
 public static extern void CGContextDrawImage( IntPtr context, HIRect rect, IntPtr image );
Exemple #8
0
 public extern static void CGContextDrawImage(IntPtr context, HIRect rect, IntPtr image);
Exemple #9
0
 private static OSStatus HIViewGetFrame(IntPtr inView, out HIRect outRect);