blob: fcb980aaa14b85545211c49364d3346d39515047 [file] [log] [blame]
olivercd54bad2007-02-18 12:30:55 +00001/*
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"
oliver73b4f892007-04-29 22:31:40 +000030#include "FloatSize.h"
barraclough@apple.comd218c2d2010-08-10 00:38:14 +000031#include <wtf/Forward.h>
olivercd54bad2007-02-18 12:30:55 +000032
33#if PLATFORM(MAC)
beidson4ce64942007-03-24 23:21:50 +000034#include <wtf/RetainPtr.h>
olivercd54bad2007-02-18 12:30:55 +000035#ifdef __OBJC__
36@class NSImage;
37#else
38class NSImage;
39#endif
40#elif PLATFORM(QT)
hausmann@webkit.org511b0012008-04-15 09:40:59 +000041QT_BEGIN_NAMESPACE
hausmann0e5add42007-10-31 11:08:58 +000042class QPixmap;
hausmann@webkit.org511b0012008-04-15 09:40:59 +000043QT_END_NAMESPACE
olivercd54bad2007-02-18 12:30:55 +000044#elif PLATFORM(WIN)
45typedef struct HBITMAP__* HBITMAP;
kevinob9b68c92007-10-28 19:18:04 +000046#elif PLATFORM(WX)
47class wxDragImage;
darin@chromium.org5a0619c2008-10-15 05:15:47 +000048#elif PLATFORM(CHROMIUM)
49#include "DragImageRef.h"
jmalonzo@webkit.org7222d282009-07-01 02:16:13 +000050#elif PLATFORM(GTK)
mrobinson@webkit.org7173b392010-09-16 20:51:09 +000051typedef struct _cairo_surface cairo_surface_t;
eric@webkit.orgc4efd652009-08-12 20:44:16 +000052#elif PLATFORM(HAIKU)
53class BBitmap;
eric@webkit.org4d6b71e2010-02-11 03:30:59 +000054#elif PLATFORM(BREWMP)
55typedef struct IImage IImage;
olivercd54bad2007-02-18 12:30:55 +000056#endif
57
58//We need to #define YOffset as it needs to be shared with WebKit
59#define DragLabelBorderYOffset 2
60
61namespace WebCore {
62
63 class CachedImage;
64 class Frame;
65 class Image;
66 class KURL;
67 class Range;
barraclough@apple.comd218c2d2010-08-10 00:38:14 +000068
olivercd54bad2007-02-18 12:30:55 +000069#if PLATFORM(MAC)
70 typedef RetainPtr<NSImage> DragImageRef;
71#elif PLATFORM(QT)
hausmann0e5add42007-10-31 11:08:58 +000072 typedef QPixmap* DragImageRef;
olivercd54bad2007-02-18 12:30:55 +000073#elif PLATFORM(WIN)
74 typedef HBITMAP DragImageRef;
kevinob9b68c92007-10-28 19:18:04 +000075#elif PLATFORM(WX)
76 typedef wxDragImage* DragImageRef;
zecke27524052007-09-23 09:50:35 +000077#elif PLATFORM(GTK)
mrobinson@webkit.org7173b392010-09-16 20:51:09 +000078 typedef cairo_surface_t* DragImageRef;
eric@webkit.orgc4efd652009-08-12 20:44:16 +000079#elif PLATFORM(HAIKU)
80 typedef BBitmap* DragImageRef;
eric@webkit.org4d6b71e2010-02-11 03:30:59 +000081#elif PLATFORM(BREWMP)
82 typedef IImage* DragImageRef;
zecke@webkit.org42ff7132011-05-13 15:09:20 +000083#elif PLATFORM(EFL) || PLATFORM(ANDROID)
eric@webkit.org4d132ea2010-03-22 09:06:37 +000084 typedef void* DragImageRef;
olivercd54bad2007-02-18 12:30:55 +000085#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
oliver73b4f892007-04-29 22:31:40 +000092 DragImageRef fitDragImageToMaxSize(DragImageRef image, const IntSize& srcSize, const IntSize& size);
93 DragImageRef scaleDragImage(DragImageRef, FloatSize scale);
olivercd54bad2007-02-18 12:30:55 +000094 DragImageRef dissolveDragImageToFraction(DragImageRef image, float delta);
95
96 DragImageRef createDragImageFromImage(Image*);
97 DragImageRef createDragImageForSelection(Frame*);
98 DragImageRef createDragImageIconForCachedImage(CachedImage*);
enrica@apple.com3492e982011-02-08 01:34:24 +000099 DragImageRef createDragImageForLink(KURL&, const String& label, Frame*);
olivercd54bad2007-02-18 12:30:55 +0000100 void deleteDragImage(DragImageRef);
101}
102
103
104#endif //!DragImage_h