diff options
author | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-05 01:34:30 +0000 |
---|---|---|
committer | estade@chromium.org <estade@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2008-11-05 01:34:30 +0000 |
commit | 3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f (patch) | |
tree | 0943a0925f5974478463e5d00886be29109858e6 /base/scoped_clipboard_writer.h | |
parent | 38733063b7e1cf0b6e67c0b590773ff4f1aaa18d (diff) | |
download | chromium_src-3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f.zip chromium_src-3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f.tar.gz chromium_src-3ee3ffd1d79a0c1544f3bfd70c7de7606df9482f.tar.bz2 |
Rewrote the clipboard API to be more concurrent. Added a helper class to make it more foolproof. Updated all clients and unittests. Mac port by jeremy@chromium.org
Review URL: http://codereview.chromium.org/9154
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@4719 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/scoped_clipboard_writer.h')
-rw-r--r-- | base/scoped_clipboard_writer.h | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/base/scoped_clipboard_writer.h b/base/scoped_clipboard_writer.h new file mode 100644 index 0000000..08a36fd --- /dev/null +++ b/base/scoped_clipboard_writer.h @@ -0,0 +1,62 @@ +// Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. +// Use of this source code is governed by a BSD-style license that can be +// found in the LICENSE file. + +#ifndef SCOPED_CLIPBOARD_WRITER_H_ +#define SCOPED_CLIPBOARD_WRITER_H_ + +#include "base/clipboard.h" + +#if defined(OS_WIN) +class SkBitmap; +#endif + +// This class is a wrapper for |Clipboard| that handles packing data +// into a Clipboard::ObjectMap. +// NB: You should probably NOT be using this class if you include +// webkit_glue.h. Use ScopedClipboardWriterGlue instead. +class ScopedClipboardWriter { + public: + // Create an instance that is a simple wrapper around clipboard. + ScopedClipboardWriter(Clipboard* clipboard); + + ~ScopedClipboardWriter(); + + // Adds UNICODE and ASCII text to the clipboard. + void WriteText(const std::wstring& text); + + // Adds HTML to the clipboard. The url parameter is optional, but especially + // useful if the HTML fragment contains relative links + void WriteHTML(const std::wstring& markup, const std::string& src_url); + + // Adds a bookmark to the clipboard + void WriteBookmark(const std::wstring& title, const std::string& url); + + // Adds both a bookmark and an HTML hyperlink to the clipboard. It is a + // convenience wrapper around WriteBookmark and WriteHTML. + void WriteHyperlink(const std::wstring& title, const std::string& url); + + // Adds a file or group of files to the clipboard. + void WriteFile(const std::wstring& file); + void WriteFiles(const std::vector<std::wstring>& files); + +#if defined(OS_WIN) + // Used by WebKit to determine whether WebKit wrote the clipboard last + void WriteWebSmartPaste(); + + // Adds a bitmap to the clipboard + // This is the slowest way to copy a bitmap to the clipboard as we must first + // memcpy the pixels into GDI and the blit the bitmap to the clipboard. + // Pixel format is assumed to be 32-bit BI_RGB. + void WriteBitmapFromPixels(const void* pixels, const gfx::Size& size); +#endif + + protected: + Clipboard::ObjectMap objects_; + Clipboard* clipboard_; + + private: + DISALLOW_COPY_AND_ASSIGN(ScopedClipboardWriter); +}; + +#endif // SCOPED_CLIPBOARD_WRITER_H_ |