00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027 #ifndef DragData_h
00028 #define DragData_h
00029
00030 #include "ClipboardAccessPolicy.h"
00031 #include "Color.h"
00032 #include "DragActions.h"
00033 #include "IntPoint.h"
00034
00035 #include <wtf/Forward.h>
00036 #include <wtf/Vector.h>
00037
00038 #if PLATFORM(MAC)
00039 #ifdef __OBJC__
00040 #import <Foundation/Foundation.h>
00041 #import <AppKit/NSDragging.h>
00042 typedef id <NSDraggingInfo> DragDataRef;
00043 #else
00044 typedef void* DragDataRef;
00045 #endif
00046 #elif PLATFORM(QT)
00047 class QMimeData;
00048 typedef const QMimeData* DragDataRef;
00049 #elif PLATFORM(WIN)
00050 typedef struct IDataObject* DragDataRef;
00051 #elif PLATFORM(GTK)
00052
00053 typedef void* DragDataRef;
00054 #elif defined __OWB__
00055 typedef void* DragDataRef;
00056 #endif
00057
00058
00059 namespace WebCore {
00060
00061 class Clipboard;
00062 class Document;
00063 class DocumentFragment;
00064 class KURL;
00065
00066 #if PLATFORM(MAC)
00067 class PasteboardHelper;
00068 #endif
00069
00070
00071 class DragData {
00072 public:
00073 #if PLATFORM(MAC)
00074
00075
00076 DragData(DragDataRef data, const IntPoint& clientPosition, const IntPoint& globalPosition,
00077 DragOperation operation, PasteboardHelper*);
00078 #else
00079
00080 DragData(DragDataRef data, const IntPoint& clientPosition, const IntPoint& globalPosition, DragOperation operation);
00081 #endif
00082 const IntPoint& clientPosition() const { return m_clientPosition; }
00083 const IntPoint& globalPosition() const { return m_globalPosition; }
00084 DragDataRef platformData() const { return m_platformDragData; }
00085 DragOperation draggingSourceOperationMask() const { return m_draggingSourceOperationMask; }
00086 Clipboard* createClipboard(ClipboardAccessPolicy) const;
00087 bool containsURL() const;
00088 bool containsPlainText() const;
00089 bool containsCompatibleContent() const;
00090 String asURL(String* title = 0) const;
00091 String asPlainText() const;
00092 void asFilenames(Vector<String>&) const;
00093 Color asColor() const;
00094 PassRefPtr<DocumentFragment> asFragment(Document*) const;
00095 bool canSmartReplace() const;
00096 bool containsColor() const;
00097 bool containsFiles() const;
00098 private:
00099 IntPoint m_clientPosition;
00100 IntPoint m_globalPosition;
00101 DragDataRef m_platformDragData;
00102 DragOperation m_draggingSourceOperationMask;
00103 #if PLATFORM(MAC)
00104 PasteboardHelper* m_pasteboardHelper;
00105 #endif
00106 };
00107
00108 }
00109
00110 #endif
00111