Changeset 36349 in webkit


Ignore:
Timestamp:
Sep 11, 2008 9:44:40 PM (16 years ago)
Author:
timothy@apple.com
Message:

Add a renderedImage method to DOMNode to get an image
of the rendering for the node and it's descendants.

<rdar://problem/5849349> Would like API to create
an image for a DOM node

Reviewed by Oliver Hunt.

  • bindings/objc/DOM.mm: (-[DOMNode renderedImage]): Call Frame::nodeImage.
  • bindings/objc/DOMPrivate.h:
  • page/Frame.h:
  • page/mac/FrameMac.mm: (WebCore::Frame::nodeImage):
Location:
trunk/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/WebCore/ChangeLog

    r36347 r36349  
     12008-09-11  Timothy Hatcher  <timothy@apple.com>
     2
     3        Add a renderedImage method to DOMNode to get an image
     4        of the rendering for the node and it's descendants.
     5
     6        <rdar://problem/5849349> Would like API to create
     7        an image for a DOM node
     8
     9        Reviewed by Oliver Hunt.
     10
     11        * bindings/objc/DOM.mm:
     12        (-[DOMNode renderedImage]): Call Frame::nodeImage.
     13        * bindings/objc/DOMPrivate.h:
     14        * page/Frame.h:
     15        * page/mac/FrameMac.mm:
     16        (WebCore::Frame::nodeImage):
     17
    1182008-09-08  Chris Marrin  <cmarrin@apple.com>
    219
  • trunk/WebCore/bindings/objc/DOM.mm

    r36263 r36349  
    455455@end
    456456
     457@implementation DOMNode (DOMNodeExtensionsPendingPublic)
     458
     459- (NSImage *)renderedImage
     460{
     461    if (WebCore::Node *node = [self _node])
     462        if (WebCore::Frame* frame = node->document()->frame())
     463            return frame->nodeImage(node);
     464    return nil;
     465}
     466
     467@end
     468
    457469@implementation DOMRange (DOMRangeExtensions)
    458470
  • trunk/WebCore/bindings/objc/DOMPrivate.h

    r32664 r36349  
    6161#import <WebCore/DOMUIEventPrivate.h>
    6262#import <WebCore/DOMWheelEventPrivate.h>
     63
     64@interface DOMNode (DOMNodeExtensionsPendingPublic)
     65- (NSImage *)renderedImage;
     66@end
    6367
    6468// FIXME: this should be removed as soon as all internal Apple uses of it have been replaced with
  • trunk/WebCore/page/Frame.h

    r35900 r36349  
    307307    NSImage* selectionImage(bool forceBlackText = false) const;
    308308    NSImage* snapshotDragImage(Node*, NSRect* imageRect, NSRect* elementRect) const;
     309    NSImage* nodeImage(Node*) const;
    309310
    310311private:   
  • trunk/WebCore/page/mac/FrameMac.mm

    r36263 r36349  
    349349}
    350350
     351NSImage* Frame::nodeImage(Node* node) const
     352{
     353    RenderObject* renderer = node->renderer();
     354    if (!renderer)
     355        return nil;
     356
     357    d->m_doc->updateLayout(); // forces style recalc
     358
     359    IntRect topLevelRect;
     360    NSRect paintingRect = renderer->paintingRootRect(topLevelRect);
     361
     362    d->m_elementToDraw = node; // invoke special sub-tree drawing mode
     363    NSImage* result = imageFromRect(paintingRect);
     364    d->m_elementToDraw = 0;
     365
     366    return result;
     367}
     368
    351369NSDictionary* Frame::fontAttributesForSelectionStart() const
    352370{
Note: See TracChangeset for help on using the changeset viewer.