• Open Menu Close Menu
  • Apple
  • Shopping Bag
  • Apple
  • Mac
  • iPad
  • iPhone
  • Watch
  • TV
  • Music
  • Support
  • Search apple.com
  • Shopping Bag

Lists

Open Menu Close Menu
  • Terms and Conditions
  • Lists hosted on this site
  • Email the Postmaster
  • Tips for posting to public mailing lists
Re: capturing a partial screen.
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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

References: 
 >capturing a partial screen. (From: Development <email@hidden>)

  • Prev by Date: Re: Need a launch/loading screen to be displayed while app is starting/initializing?
  • Next by Date: Re: performSelectorInBackground:anObject:
  • Previous by thread: capturing a partial screen.
  • Next by thread: Re: capturing a partial screen.
  • Index(es):
    • Date
    • Thread