| /* |
| * Copyright (C) 2005, 2006, 2007, 2008 Apple Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * 3. Neither the name of Apple Computer, Inc. ("Apple") nor the names of |
| * its contributors may be used to endorse or promote products derived |
| * from this software without specific prior written permission. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE AND ITS CONTRIBUTORS "AS IS" AND ANY |
| * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED |
| * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE |
| * DISCLAIMED. IN NO EVENT SHALL APPLE OR ITS CONTRIBUTORS BE LIABLE FOR ANY |
| * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES |
| * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; |
| * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND |
| * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF |
| * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #import <WebKit/WebHTMLView.h> |
| |
| #if !defined(ENABLE_NETSCAPE_PLUGIN_API) |
| #define ENABLE_NETSCAPE_PLUGIN_API 1 |
| #endif |
| |
| #if MAC_OS_X_VERSION_MAX_ALLOWED <= MAC_OS_X_VERSION_10_4 |
| #define WebCGFloat float |
| #else |
| #define WebCGFloat CGFloat |
| #endif |
| |
| @class DOMDocumentFragment; |
| @class DOMNode; |
| @class DOMRange; |
| @class WebPluginController; |
| |
| @protocol WebHTMLHighlighter |
| - (NSRect)highlightRectForLine:(NSRect)lineRect representedNode:(DOMNode *)node; |
| - (void)paintHighlightForBox:(NSRect)boxRect onLine:(NSRect)lineRect behindText:(BOOL)text entireLine:(BOOL)line representedNode:(DOMNode *)node; |
| @end |
| |
| extern const float _WebHTMLViewPrintingMinimumShrinkFactor; |
| extern const float _WebHTMLViewPrintingMaximumShrinkFactor; |
| |
| @interface WebHTMLView (WebPrivate) |
| |
| + (NSArray *)supportedMIMETypes; |
| + (NSArray *)supportedImageMIMETypes; |
| + (NSArray *)supportedNonImageMIMETypes; |
| + (NSArray *)unsupportedTextMIMETypes; |
| |
| - (void)close; |
| |
| // Modifier (flagsChanged) tracking SPI |
| + (void)_postFlagsChangedEvent:(NSEvent *)flagsChangedEvent; |
| - (void)_updateMouseoverWithFakeEvent; |
| |
| - (void)_setAsideSubviews; |
| - (void)_restoreSubviews; |
| |
| - (BOOL)_insideAnotherHTMLView; |
| - (void)_clearLastHitViewIfSelf; |
| - (void)_updateMouseoverWithEvent:(NSEvent *)event; |
| |
| + (NSArray *)_insertablePasteboardTypes; |
| + (NSArray *)_selectionPasteboardTypes; |
| - (void)_writeSelectionToPasteboard:(NSPasteboard *)pasteboard; |
| |
| - (void)_frameOrBoundsChanged; |
| |
| - (void)_handleAutoscrollForMouseDragged:(NSEvent *)event; |
| - (WebPluginController *)_pluginController; |
| |
| // FIXME: _selectionRect is deprecated in favor of selectionRect, which is in protocol WebDocumentSelection. |
| // We can't remove this yet because it's still in use by Mail. |
| - (NSRect)_selectionRect; |
| |
| - (void)_startAutoscrollTimer:(NSEvent *)event; |
| - (void)_stopAutoscrollTimer; |
| |
| - (BOOL)_canEdit; |
| - (BOOL)_canEditRichly; |
| - (BOOL)_canAlterCurrentSelection; |
| - (BOOL)_hasSelection; |
| - (BOOL)_hasSelectionOrInsertionPoint; |
| - (BOOL)_isEditable; |
| |
| - (BOOL)_transparentBackground; |
| - (void)_setTransparentBackground:(BOOL)isBackgroundTransparent; |
| |
| - (void)_setToolTip:(NSString *)string; |
| |
| // SPI used by Mail. |
| // FIXME: These should all be moved to WebView; we won't always have a WebHTMLView. |
| - (NSImage *)_selectionDraggingImage; |
| - (NSRect)_selectionDraggingRect; |
| - (DOMNode *)_insertOrderedList; |
| - (DOMNode *)_insertUnorderedList; |
| - (BOOL)_canIncreaseSelectionListLevel; |
| - (BOOL)_canDecreaseSelectionListLevel; |
| - (DOMNode *)_increaseSelectionListLevel; |
| - (DOMNode *)_increaseSelectionListLevelOrdered; |
| - (DOMNode *)_increaseSelectionListLevelUnordered; |
| - (void)_decreaseSelectionListLevel; |
| - (void)_setHighlighter:(id <WebHTMLHighlighter>)highlighter ofType:(NSString *)type; |
| - (void)_removeHighlighterOfType:(NSString *)type; |
| - (DOMDocumentFragment *)_documentFragmentFromPasteboard:(NSPasteboard *)pasteboard forType:(NSString *)pboardType inContext:(DOMRange *)context subresources:(NSArray **)subresources; |
| |
| #if ENABLE_NETSCAPE_PLUGIN_API |
| - (void)_resumeNullEventsForAllNetscapePlugins; |
| - (void)_pauseNullEventsForAllNetscapePlugins; |
| #endif |
| |
| - (BOOL)_isUsingAcceleratedCompositing; |
| - (NSView *)_compositingLayersHostingView; |
| |
| // SPI for printing (should be converted to API someday). When the WebHTMLView isn't being printed |
| // directly, this method must be called before paginating, or the computed height might be incorrect. |
| // Typically this would be called from inside an override of -[NSView knowsPageRange:]. |
| - (void)_layoutForPrinting; |
| - (WebCGFloat)_adjustedBottomOfPageWithTop:(WebCGFloat)top bottom:(WebCGFloat)bottom limit:(WebCGFloat)bottomLimit; |
| - (BOOL)_isInPrintMode; |
| - (BOOL)_beginPrintModeWithPageWidth:(float)pageWidth height:(float)pageHeight shrinkToFit:(BOOL)shrinkToFit; |
| // Lays out to pages of the given minimum width and height or more (increasing both dimensions proportionally) |
| // as needed for the content to fit, but no more than the given maximum width. |
| - (BOOL)_beginPrintModeWithMinimumPageWidth:(WebCGFloat)minimumPageWidth height:(WebCGFloat)minimumPageHeight maximumPageWidth:(WebCGFloat)maximumPageWidth; |
| - (void)_endPrintMode; |
| |
| - (BOOL)_isInScreenPaginationMode; |
| - (BOOL)_beginScreenPaginationModeWithPageSize:(CGSize)pageSize shrinkToFit:(BOOL)shrinkToFit; |
| - (void)_endScreenPaginationMode; |
| |
| - (BOOL)_canSmartReplaceWithPasteboard:(NSPasteboard *)pasteboard; |
| |
| @end |
| |
| #undef WebCGFloat |