#ifndef ClipboardMac_h
#define ClipboardMac_h
#include "Image.h"
#include "IntPoint.h"
#include "Clipboard.h"
#include "CachedResourceClient.h"
#ifdef __OBJC__
@class NSImage;
@class NSPasteboard;
#else
class NSImage;
class NSPasteboard;
typedef unsigned int NSDragOperation;
#endif
namespace WebCore {
class DeprecatedStringList;
class FrameMac;
class ClipboardMac : public Clipboard, public CachedResourceClient {
public:
typedef enum {
Numb, ImageWritable, Writable, TypesReadable, Readable
} AccessPolicy;
ClipboardMac(bool forDragging, NSPasteboard *pasteboard, AccessPolicy policy, FrameMac *frame = 0);
virtual ~ClipboardMac();
bool isForDragging() const;
String dropEffect() const;
void setDropEffect(const String &s);
String effectAllowed() const;
void setEffectAllowed(const String &s);
void clearData(const String &type);
void clearAllData();
String getData(const String &type, bool &success) const;
bool setData(const String &type, const String &data);
virtual DeprecatedStringList types() const;
IntPoint dragLocation() const; CachedImage* dragImage() const;
void setDragImage(CachedImage*, const IntPoint &);
Node *dragImageElement();
void setDragImageElement(Node *, const IntPoint &);
#if __APPLE__
NSImage *dragNSImage(NSPoint *loc); bool sourceOperation(NSDragOperation *op) const;
bool destinationOperation(NSDragOperation *op) const;
void setSourceOperation(NSDragOperation op);
void setDestinationOperation(NSDragOperation op);
#endif
void setAccessPolicy(AccessPolicy policy);
AccessPolicy accessPolicy() const;
void setDragHasStarted() { m_dragStarted = true; }
private:
void setDragImage(CachedImage* cachedImage, Node *, const IntPoint &loc);
NSPasteboard *m_pasteboard;
bool m_forDragging;
String m_dropEffect;
String m_effectAllowed;
IntPoint m_dragLoc;
CachedImage* m_dragImage;
RefPtr<Node> m_dragImageElement;
AccessPolicy m_policy;
int m_changeCount;
bool m_dragStarted;
FrameMac *m_frame; };
}
#endif