• 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: Extracting a (smooth) rect from an NSImageView displaying PDF?
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Extracting a (smooth) rect from an NSImageView displaying PDF?


  • Subject: Re: Extracting a (smooth) rect from an NSImageView displaying PDF?
  • From: Marco Binder <email@hidden>
  • Date: Wed, 14 May 2003 10:55:34 +0200

This is of course right if you talk about a NSImage that you set up yourself. If, however, the user can drag a PDF into your imageview, you either have to subclass NSImageView to make a retaining image or you have to render the pdf into a secondary NSImage of the desired size, whenever you want to display the enlarged view.

Brocks solution is of course the more sound one that gives you a high degree of control over the image. Actually, I myself do prefer working with imagereps much rather than working with NSImage for exactly that reason. With NSImage, you have to figure out and understand the way it caches image data, otherwise you will run into trouble like this sooner or later.

Marco


Am Mittwoch, 14.05.03 um 04:02 Uhr schrieb Brock Brandenberg:

In my app I have an NSImageView displaying a PDF file. I'd like the user to
be able to extract a rectangular region from the displayed PDF and view it
at 10x normal size.

The problem is that, although this *does* extract the rectangular region
between mouseDown (the upper-left corner) and mouseUp (the lower-right
corner) and displays it in the zoomImageView, it's extremely jagged...
Almost as if the PDF data is merely a PDF wrapper containing the screen
bitmap. What do I need to do in order to get the "real" PDF data so that I
can scale the region smoothly?

Actually, the image displayed in the imageview IS a bitmap (chached
version of the PDF). I am afraid you have to draw the whole PDF at 10x
the size of MyImageView into an image and then clip the rect from
there. This way, you force the (new) NSImage to fetch the PDF data
again and render it at the enlarged size.

Jason,

To keep from getting a bitmap from a PDF, you simply need to understand the
way that NSImage handles and renders PDF data. Normally, when you allow an
NSImage instance to open and render PDF data for you, it will generate a
NSCachedImageRep from it and discard the original data. You can see this
behavior if you log the representations at different times, both right after
the NSImage is created and after it is told to draw for the first time.

What you really want to do is work around this default NSImage behavior by
creating an NSImageRep from the PDF data (you'll get a NSPDFImageRep), then
add the rep to an empty NSImage and tell the NSImage to retain the data. By
doing so, the NSImage will depend on the PDF rep instead of a
NSCachedImageRep when it's asked to draw.

NSImage *srcPDF;
NSImageRep *srcPDFRep;

srcPDFRep = [NSPDFImageRep imageRepWithContentsOfFile:@"myFile"];
srcPDF = [[NSImage alloc] init];
[srcPDF setDataRetained:YES];
[srcPDF addRepresentation:srcPDFRep];
[srcPDF setSize:[srcPDFRep bounds].size];

This should get you pointed in a constructive direction :)

Brock Brandenberg

----- industrial design @ www.bergdesign.com ------



--
|\ /| email@hidden http://www.marco-binder.de
| \/ | Telefon: 07531 / 94 19 94 Fax: 07531 / 94 19 92
| |ARCO Snail-Mail: Banater Str. 3 - 78467 Konstanz
BINDER _____________________________________________________
_______________________________________________
cocoa-dev mailing list | email@hidden
Help/Unsubscribe/Archives: http://www.lists.apple.com/mailman/listinfo/cocoa-dev
Do not post admin requests to the list. They will be ignored.

  • Follow-Ups:
    • Re: Extracting a (smooth) rect from an NSImageView displaying PDF?
      • From: Marco Binder <email@hidden>
References: 
 >Re: Extracting a (smooth) rect from an NSImageView displaying PDF? (From: Brock Brandenberg <email@hidden>)

  • Prev by Date: Re: Subclassing NSControl
  • Next by Date: Re: Extracting a (smooth) rect from an NSImageView displaying PDF?
  • Previous by thread: Re: Extracting a (smooth) rect from an NSImageView displaying PDF?
  • Next by thread: Re: Extracting a (smooth) rect from an NSImageView displaying PDF?
  • Index(es):
    • Date
    • Thread