Replace canBubble and cancelable booleans in Event by enum classes
[WebKit-https.git] / Source / WebKitLegacy / ios / WebView / WebPDFViewPlaceholder.h
1 /*
2  * Copyright (C) 2006, 2007, 2008, 2010, 2011 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #import <WebKitLegacy/WebDocumentPrivate.h>
27
28 #if TARGET_OS_IPHONE
29
30 @class UIColor;
31 @class UIPDFDocument;
32 @protocol WebPDFViewPlaceholderDelegate;
33
34 /*!
35     @class WebPDFViewPlaceholder
36     @discussion This class represents a placeholder for PDFs. It is intended to allow main frame PDFs
37     be drawn to the UI by some other object (ideally the delegate of this class) while still interfacing
38     with WAK and WebKit correctly.
39 */
40 @interface WebPDFViewPlaceholder : WAKView <WebPDFDocumentView, WebPDFDocumentRepresentation>
41
42 /*!
43     @method setAsPDFDocRepAndView
44     @abstract This methods sets [WebPDFViewPlaceholder class] as the document and view representations
45     for PDF.
46 */
47 + (void)setAsPDFDocRepAndView;
48
49
50 /*!
51  @property delegate
52  @abstract A delegate object conforming to WebPDFViewPlaceholderDelegate that will be informed about various state changes.
53  */
54 @property (assign) NSObject<WebPDFViewPlaceholderDelegate> *delegate;
55
56 /*!
57  @property pageRects
58  @abstract An array of CGRects (as NSValues) representing the bounds of each page in PDF document coordinate space.
59  */
60 @property (readonly, retain) NSArray *pageRects;
61
62 /*!
63  @property pageYOrigins
64  @abstract An array of CGFloats (as NSNumbers) representing the minimum y for every page in the document.
65  */
66 @property (readonly, retain) NSArray *pageYOrigins;
67
68 /*!
69  @property document
70  @abstract The CGPDFDocumentRef that this object represents. Until the document has loaded, this property will be NULL.
71  */
72 @property (readonly) CGPDFDocumentRef document;
73 @property (readonly) CGPDFDocumentRef doc;
74
75 /*!
76  @property totalPages
77  @abstract Convenience access for the total number of pages in the wrapped document.
78  */
79 @property (readonly) NSUInteger totalPages;
80
81 /*!
82  @property title
83  @abstract PDFs support a meta data field for the document's title. If this field is present in the PDF, title will be that string. 
84  If not, title will be the file name.
85  */
86 @property (readonly, retain) NSString *title;
87
88 /*!
89  @property containerSize
90  @abstract sets the size for the containing view. This is used to determine how big the shadows between pages should be.
91  */
92 @property (assign) CGSize containerSize;
93
94 @property (nonatomic, readonly) BOOL didCompleteLayout;
95
96 - (void)clearDocument;
97
98 /*!
99  @method didUnlockDocument
100  @abstract Informs the PDF view placeholder that the PDF document has been unlocked. The result of this involves laying 
101  out the pages, retaining the document title, and re-evaluating the document's javascript. This should be called on the WebThread.
102  */
103 - (void)didUnlockDocument;
104
105 /*!
106  @method rectForPageNumber
107  @abstract Returns the PDF document coordinate space rect given a page number. pageNumber must be in the range [1,totalPages], 
108  since page numbers are 1-based.
109  */
110 - (CGRect)rectForPageNumber:(NSUInteger)pageNumber;
111
112 /*!
113  @method simulateClickOnLinkToURL:
114  @abstract This method simulates a user clicking on the passed in URL.
115  */
116 - (void)simulateClickOnLinkToURL:(NSURL *)URL;
117
118 @end
119
120
121 /*!
122     @protocol WebPDFViewPlaceholderDelegate
123     @discussion This protocol is used to inform the object using the placeholder that the layout for the 
124     document has been calculated.
125 */
126 @protocol WebPDFViewPlaceholderDelegate
127
128 @optional
129
130 /*!
131  @method viewWillClose
132  @abstract This method is called to inform the delegate that the placeholder view's lifetime has ended. This might
133  be called from either the main thread or the WebThread.
134  */
135 - (void)viewWillClose;
136
137 /*!
138     @method didCompleteLayout
139     @abstract This method is called to inform the delegate that the placeholder has completed layout
140     and determined the document's bounds. Will always be called on the main thread.
141 */
142 - (void)didCompleteLayout;
143
144 @required
145
146 /*!
147  @method cgPDFDocument
148  @abstract The WebPDFViewPlaceholder may have abdicated responsibility for the underlying CGPDFDocument to the WebPDFViewPlaceholderDelegate.
149  That means that there may be times when the document is needed, but the WebPDFViewPlaceholder no longer has a reference to it. In which case
150  the WebPDFViewPlaceholderDelegate will be asked for the document.
151  */
152 - (CGPDFDocumentRef)cgPDFDocument;
153
154 @end
155
156 #endif /* TARGET_OS_IPHONE */