diff options
Diffstat (limited to 'ui/base/clipboard/clipboard_win.cc')
-rw-r--r-- | ui/base/clipboard/clipboard_win.cc | 31 |
1 files changed, 27 insertions, 4 deletions
diff --git a/ui/base/clipboard/clipboard_win.cc b/ui/base/clipboard/clipboard_win.cc index bd21708..8b2eaea 100644 --- a/ui/base/clipboard/clipboard_win.cc +++ b/ui/base/clipboard/clipboard_win.cc @@ -245,6 +245,10 @@ void Clipboard::WriteHTML(const char* markup_data, WriteToClipboard(ClipboardUtil::GetHtmlFormat()->cfFormat, glob); } +void Clipboard::WriteRTF(const char* rtf_data, size_t data_len) { + WriteData(GetRtfFormatType(), rtf_data, data_len); +} + void Clipboard::WriteBookmark(const char* title_data, size_t title_len, const char* url_data, @@ -391,13 +395,16 @@ void Clipboard::ReadAvailableTypes(Clipboard::Buffer buffer, return; } - const FORMATETC* textFormat = ClipboardUtil::GetPlainTextFormat(); - const FORMATETC* htmlFormat = ClipboardUtil::GetHtmlFormat(); + const FORMATETC* text_format = ClipboardUtil::GetPlainTextFormat(); + const FORMATETC* html_format = ClipboardUtil::GetHtmlFormat(); + const FORMATETC* rtf_format = ClipboardUtil::GetRtfFormat(); types->clear(); - if (::IsClipboardFormatAvailable(textFormat->cfFormat)) + if (::IsClipboardFormatAvailable(text_format->cfFormat)) types->push_back(UTF8ToUTF16(kMimeTypeText)); - if (::IsClipboardFormatAvailable(htmlFormat->cfFormat)) + if (::IsClipboardFormatAvailable(html_format->cfFormat)) types->push_back(UTF8ToUTF16(kMimeTypeHTML)); + if (::IsClipboardFormatAvailable(rtf_format->cfFormat)) + types->push_back(UTF8ToUTF16(kMimeTypeRTF)); if (::IsClipboardFormatAvailable(CF_DIB)) types->push_back(UTF8ToUTF16(kMimeTypePNG)); *contains_filenames = false; @@ -513,6 +520,12 @@ void Clipboard::ReadHTML(Clipboard::Buffer buffer, string16* markup, *fragment_end = static_cast<uint32>(offsets[1]); } +void Clipboard::ReadRTF(Buffer buffer, std::string* result) const { + DCHECK_EQ(buffer, BUFFER_STANDARD); + + ReadData(GetRtfFormatType(), result); +} + SkBitmap Clipboard::ReadImage(Buffer buffer) const { DCHECK_EQ(buffer, BUFFER_STANDARD); @@ -739,6 +752,16 @@ const Clipboard::FormatType& Clipboard::GetHtmlFormatType() { return type; } +// MS RTF Format +// static +const Clipboard::FormatType& Clipboard::GetRtfFormatType() { + CR_DEFINE_STATIC_LOCAL( + FormatType, + type, + (ClipboardUtil::GetRtfFormat()->cfFormat)); + return type; +} + // static const Clipboard::FormatType& Clipboard::GetBitmapFormatType() { CR_DEFINE_STATIC_LOCAL(FormatType, type, (CF_BITMAP)); |