00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015 #ifndef COSXCLIPBOARD_H
00016 #define COSXCLIPBOARD_H
00017
00018 #include <Carbon/Carbon.h>
00019 #include "IClipboard.h"
00020 #include <vector>
00021
00022 class IOSXClipboardConverter;
00023
00025 class COSXClipboard : public IClipboard {
00026 public:
00027 COSXClipboard();
00028 virtual ~COSXClipboard();
00029
00031 static bool isOwnedBySynergy();
00032
00033
00034 virtual bool empty();
00035 virtual void add(EFormat, const CString& data);
00036 virtual bool open(Time) const;
00037 virtual void close() const;
00038 virtual Time getTime() const;
00039 virtual bool has(EFormat) const;
00040 virtual CString get(EFormat) const;
00041
00042 bool synchronize();
00043 private:
00044 void clearConverters();
00045
00046 private:
00047 typedef std::vector<IOSXClipboardConverter*> ConverterList;
00048
00049 mutable Time m_time;
00050 ConverterList m_converters;
00051 PasteboardRef m_pboard;
00052 };
00053
00055
00058 class IOSXClipboardConverter : public IInterface {
00059 public:
00061
00062
00064
00067 virtual IClipboard::EFormat
00068 getFormat() const = 0;
00069
00071 virtual CFStringRef
00072 getOSXFormat() const = 0;
00073
00075
00081 virtual CString fromIClipboard(const CString&) const = 0;
00082
00084
00088 virtual CString toIClipboard(const CString&) const = 0;
00089
00091 };
00092
00093 #endif