oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 1 | /* |
| 2 | * Copyright (C) 2007 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 COMPUTER, INC. ``AS IS'' AND ANY |
| 14 | * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| 15 | * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| 16 | * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR |
| 17 | * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, |
| 18 | * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, |
| 19 | * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR |
| 20 | * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY |
| 21 | * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT |
| 22 | * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| 23 | * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| 24 | */ |
| 25 | |
| 26 | #ifndef DragImage_h |
| 27 | #define DragImage_h |
| 28 | |
| 29 | #include "IntSize.h" |
oliver | 73b4f89 | 2007-04-29 22:31:40 +0000 | [diff] [blame] | 30 | #include "FloatSize.h" |
barraclough@apple.com | d218c2d | 2010-08-10 00:38:14 +0000 | [diff] [blame] | 31 | #include <wtf/Forward.h> |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 32 | |
| 33 | #if PLATFORM(MAC) |
beidson | 4ce6494 | 2007-03-24 23:21:50 +0000 | [diff] [blame] | 34 | #include <wtf/RetainPtr.h> |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 35 | #ifdef __OBJC__ |
| 36 | @class NSImage; |
| 37 | #else |
| 38 | class NSImage; |
| 39 | #endif |
| 40 | #elif PLATFORM(QT) |
hausmann@webkit.org | 511b001 | 2008-04-15 09:40:59 +0000 | [diff] [blame] | 41 | QT_BEGIN_NAMESPACE |
hausmann | 0e5add4 | 2007-10-31 11:08:58 +0000 | [diff] [blame] | 42 | class QPixmap; |
hausmann@webkit.org | 511b001 | 2008-04-15 09:40:59 +0000 | [diff] [blame] | 43 | QT_END_NAMESPACE |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 44 | #elif PLATFORM(WIN) |
| 45 | typedef struct HBITMAP__* HBITMAP; |
kevino | b9b68c9 | 2007-10-28 19:18:04 +0000 | [diff] [blame] | 46 | #elif PLATFORM(WX) |
| 47 | class wxDragImage; |
darin@chromium.org | 5a0619c | 2008-10-15 05:15:47 +0000 | [diff] [blame] | 48 | #elif PLATFORM(CHROMIUM) |
| 49 | #include "DragImageRef.h" |
jmalonzo@webkit.org | 7222d28 | 2009-07-01 02:16:13 +0000 | [diff] [blame] | 50 | #elif PLATFORM(GTK) |
mrobinson@webkit.org | 7173b39 | 2010-09-16 20:51:09 +0000 | [diff] [blame] | 51 | typedef struct _cairo_surface cairo_surface_t; |
eric@webkit.org | c4efd65 | 2009-08-12 20:44:16 +0000 | [diff] [blame] | 52 | #elif PLATFORM(HAIKU) |
| 53 | class BBitmap; |
eric@webkit.org | 4d6b71e | 2010-02-11 03:30:59 +0000 | [diff] [blame] | 54 | #elif PLATFORM(BREWMP) |
| 55 | typedef struct IImage IImage; |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 56 | #endif |
| 57 | |
| 58 | //We need to #define YOffset as it needs to be shared with WebKit |
| 59 | #define DragLabelBorderYOffset 2 |
| 60 | |
| 61 | namespace WebCore { |
| 62 | |
| 63 | class CachedImage; |
| 64 | class Frame; |
| 65 | class Image; |
| 66 | class KURL; |
| 67 | class Range; |
barraclough@apple.com | d218c2d | 2010-08-10 00:38:14 +0000 | [diff] [blame] | 68 | |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 69 | #if PLATFORM(MAC) |
| 70 | typedef RetainPtr<NSImage> DragImageRef; |
| 71 | #elif PLATFORM(QT) |
hausmann | 0e5add4 | 2007-10-31 11:08:58 +0000 | [diff] [blame] | 72 | typedef QPixmap* DragImageRef; |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 73 | #elif PLATFORM(WIN) |
| 74 | typedef HBITMAP DragImageRef; |
kevino | b9b68c9 | 2007-10-28 19:18:04 +0000 | [diff] [blame] | 75 | #elif PLATFORM(WX) |
| 76 | typedef wxDragImage* DragImageRef; |
zecke | 2752405 | 2007-09-23 09:50:35 +0000 | [diff] [blame] | 77 | #elif PLATFORM(GTK) |
mrobinson@webkit.org | 7173b39 | 2010-09-16 20:51:09 +0000 | [diff] [blame] | 78 | typedef cairo_surface_t* DragImageRef; |
eric@webkit.org | c4efd65 | 2009-08-12 20:44:16 +0000 | [diff] [blame] | 79 | #elif PLATFORM(HAIKU) |
| 80 | typedef BBitmap* DragImageRef; |
eric@webkit.org | 4d6b71e | 2010-02-11 03:30:59 +0000 | [diff] [blame] | 81 | #elif PLATFORM(BREWMP) |
| 82 | typedef IImage* DragImageRef; |
zecke@webkit.org | 42ff713 | 2011-05-13 15:09:20 +0000 | [diff] [blame] | 83 | #elif PLATFORM(EFL) || PLATFORM(ANDROID) |
eric@webkit.org | 4d132ea | 2010-03-22 09:06:37 +0000 | [diff] [blame] | 84 | typedef void* DragImageRef; |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 85 | #endif |
| 86 | |
| 87 | IntSize dragImageSize(DragImageRef); |
| 88 | |
| 89 | //These functions should be memory neutral, eg. if they return a newly allocated image, |
| 90 | //they should release the input image. As a corollary these methods don't guarantee |
| 91 | //the input image ref will still be valid after they have been called |
oliver | 73b4f89 | 2007-04-29 22:31:40 +0000 | [diff] [blame] | 92 | DragImageRef fitDragImageToMaxSize(DragImageRef image, const IntSize& srcSize, const IntSize& size); |
| 93 | DragImageRef scaleDragImage(DragImageRef, FloatSize scale); |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 94 | DragImageRef dissolveDragImageToFraction(DragImageRef image, float delta); |
| 95 | |
| 96 | DragImageRef createDragImageFromImage(Image*); |
| 97 | DragImageRef createDragImageForSelection(Frame*); |
| 98 | DragImageRef createDragImageIconForCachedImage(CachedImage*); |
enrica@apple.com | 3492e98 | 2011-02-08 01:34:24 +0000 | [diff] [blame] | 99 | DragImageRef createDragImageForLink(KURL&, const String& label, Frame*); |
oliver | cd54bad | 2007-02-18 12:30:55 +0000 | [diff] [blame] | 100 | void deleteDragImage(DragImageRef); |
| 101 | } |
| 102 | |
| 103 | |
| 104 | #endif //!DragImage_h |