1/*
2 * Copyright (C) 2004-2006 Apple Inc.  All rights reserved.
3 * Copyright (C) 2006 Samuel Weinig <sam.weinig@gmail.com>
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright
9 *    notice, this list of conditions and the following disclaimer.
10 * 2. Redistributions in binary form must reproduce the above copyright
11 *    notice, this list of conditions and the following disclaimer in the
12 *    documentation and/or other materials provided with the distribution.
13 *
14 * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
15 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
16 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
17 * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE INC. OR
18 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
19 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
20 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
21 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
22 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
23 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
24 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
25 */
26
27#import <WebCore/DOMAttr.h>
28#import <WebCore/DOMCSS.h>
29#import <WebCore/DOMCSSStyleDeclaration.h>
30#import <WebCore/DOMDocument.h>
31#import <WebCore/DOMElement.h>
32#import <WebCore/DOMHTML.h>
33#import <WebCore/DOMHTMLAnchorElement.h>
34#import <WebCore/DOMHTMLAreaElement.h>
35#import <WebCore/DOMHTMLDocument.h>
36#import <WebCore/DOMHTMLElement.h>
37#import <WebCore/DOMHTMLEmbedElement.h>
38#import <WebCore/DOMHTMLImageElement.h>
39#import <WebCore/DOMHTMLInputElement.h>
40#import <WebCore/DOMHTMLLinkElement.h>
41#import <WebCore/DOMHTMLObjectElement.h>
42#import <WebCore/DOMNode.h>
43#import <WebCore/DOMRGBColor.h>
44#import <WebCore/DOMRange.h>
45
46#if TARGET_OS_IPHONE
47#import <CoreGraphics/CoreGraphics.h>
48#endif
49
50@class NSArray;
51#if !TARGET_OS_IPHONE
52@class NSImage;
53#endif
54@class NSURL;
55
56
57#if TARGET_OS_IPHONE
58@interface DOMHTMLElement (DOMHTMLElementExtensions)
59- (int)scrollXOffset;
60- (int)scrollYOffset;
61- (void)setScrollXOffset:(int)x scrollYOffset:(int)y;
62- (void)setScrollXOffset:(int)x scrollYOffset:(int)y adjustForIOSCaret:(BOOL)adjustForIOSCaret;
63- (void)absolutePosition:(int *)x :(int *)y :(int *)w :(int *)h;
64@end
65#endif
66
67#if TARGET_OS_IPHONE
68typedef struct _WKQuad {
69    CGPoint p1;
70    CGPoint p2;
71    CGPoint p3;
72    CGPoint p4;
73} WKQuad;
74
75@interface WKQuadObject : NSObject
76{
77    WKQuad  _quad;
78}
79
80- (id)initWithQuad:(WKQuad)quad;
81- (WKQuad)quad;
82- (CGRect)boundingBox;
83@end
84#endif
85
86@interface DOMNode (DOMNodeExtensions)
87#if TARGET_OS_IPHONE
88- (CGRect)boundingBox;
89#else
90- (NSRect)boundingBox WEBKIT_AVAILABLE_MAC(10_5);
91#endif
92- (NSArray *)lineBoxRects WEBKIT_AVAILABLE_MAC(10_5);
93
94#if TARGET_OS_IPHONE
95- (CGRect)boundingBoxUsingTransforms; // takes transforms into account
96
97- (WKQuad)absoluteQuad;
98- (WKQuad)absoluteQuadAndInsideFixedPosition:(BOOL *)insideFixed;
99- (NSArray *)lineBoxQuads;      // returns array of WKQuadObject
100
101- (NSURL *)hrefURL;
102- (CGRect)hrefFrame;
103- (NSString *)hrefTarget;
104- (NSString *)hrefLabel;
105- (NSString *)hrefTitle;
106- (CGRect)boundingFrame;
107- (WKQuad)innerFrameQuad;       // takes transforms into account
108- (float)computedFontSize;
109- (DOMNode *)nextFocusNode;
110- (DOMNode *)previousFocusNode;
111#endif
112@end
113
114@interface DOMElement (DOMElementAppKitExtensions)
115#if !TARGET_OS_IPHONE
116- (NSImage *)image WEBKIT_AVAILABLE_MAC(10_5);
117#endif
118@end
119
120@interface DOMHTMLDocument (DOMHTMLDocumentExtensions)
121- (DOMDocumentFragment *)createDocumentFragmentWithMarkupString:(NSString *)markupString baseURL:(NSURL *)baseURL WEBKIT_AVAILABLE_MAC(10_5);
122- (DOMDocumentFragment *)createDocumentFragmentWithText:(NSString *)text WEBKIT_AVAILABLE_MAC(10_5);
123@end
124
125#if TARGET_OS_IPHONE
126@interface DOMHTMLAreaElement (DOMHTMLAreaElementExtensions)
127- (CGRect)boundingFrameForOwner:(DOMNode *)anOwner;
128@end
129
130@interface DOMHTMLSelectElement (DOMHTMLSelectElementExtensions)
131- (DOMNode *)listItemAtIndex:(int)anIndex;
132@end
133#endif
134