Re: capturing a partial screen.
Re: capturing a partial screen.
- Subject: Re: capturing a partial screen.
- From: Steven Degutis <email@hidden>
- Date: Fri, 4 Sep 2009 17:47:50 -0500
If you're specifically trying to mimic the screenshot-capabilties in Mac OS
X itself, you can use the `screencapture` command line utility, coupled with
an NSTask object in Cocoa. This is what I use in one of my apps, and what
Papaya does.
--
Steven Degutis
http://www.thoughtfultree.com/
http://www.degutis.org/
On Fri, Sep 4, 2009 at 12:25 PM, Development <email@hidden>wrote:
> I am attempting to capture part of the user screen, for instance a window.
> I'm using the OpenGL screen capture example code to build on so the
> following is my capture code. When I attempt to capture I get a garbled
> screen so I know I'm not passing the right value somewhere but I don't know
> where. Forgive me I'm very new to opengl.
>
> -(void)readScreenRect:(NSRect)rect
> {
> long w =rect.size.width;
> long h =rect.size.height;
>
> [self readPartialScreenToBuffer:w bufferHeight: h
> origin:NSMakePoint(0, 0) bufferBaseAddress: mData];
> }
> // Use this routine if you want to read only a portion of the screen pixels
> - (void) readPartialScreenToBuffer: (size_t) width bufferHeight:(size_t)
> height origin:(NSPoint)origin bufferBaseAddress: (void *) baseAddress
> {
> // select front buffer as our source for pixel data
> glReadBuffer(GL_FRONT);
>
> //Read OpenGL context pixels directly.
>
> // For extra safety, save & restore OpenGL states that are changed
> glPushClientAttrib(GL_CLIENT_PIXEL_STORE_BIT);
>
> glPixelStorei(GL_PACK_ALIGNMENT, 4); /* Force 4-byte alignment */
> glPixelStorei(GL_PACK_ROW_LENGTH, 0);
> glPixelStorei(GL_PACK_SKIP_ROWS, 0);
> glPixelStorei(GL_PACK_SKIP_PIXELS, 0);
>
> //Read a block of pixels from the frame buffer
> glReadPixels(origin.x,
> origin.y,
> width,
> height,
> GL_BGRA,
> GL_UNSIGNED_INT_8_8_8_8_REV,
> baseAddress);
>
> glPopClientAttrib();
>
> //Check for OpenGL errors
> GLenum theError = GL_NO_ERROR;
> theError = glGetError();
>
> }
> _______________________________________________
>
> Cocoa-dev mailing list (email@hidden)
>
> Please do not post admin requests or moderator comments to the list.
> Contact the moderators at cocoa-dev-admins(at)lists.apple.com
>
> Help/Unsubscribe/Update your Subscription:
>
> This email sent to email@hidden
>
_______________________________________________
Cocoa-dev mailing list (email@hidden)
Please do not post admin requests or moderator comments to the list.
Contact the moderators at cocoa-dev-admins(at)lists.apple.com
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden