OLD | NEW |
1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2006-2008 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 // Many of these functions are based on those found in | 5 // Many of these functions are based on those found in |
6 // webkit/port/platform/PasteboardWin.cpp | 6 // webkit/port/platform/PasteboardWin.cpp |
7 | 7 |
8 #include <shlobj.h> | 8 #include <shlobj.h> |
9 #include <shellapi.h> | 9 #include <shellapi.h> |
10 | 10 |
(...skipping 129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
140 | 140 |
141 Clipboard::~Clipboard() { | 141 Clipboard::~Clipboard() { |
142 ::DestroyWindow(clipboard_owner_); | 142 ::DestroyWindow(clipboard_owner_); |
143 clipboard_owner_ = NULL; | 143 clipboard_owner_ = NULL; |
144 } | 144 } |
145 | 145 |
146 void Clipboard::WriteObjects(const ObjectMap& objects) { | 146 void Clipboard::WriteObjects(const ObjectMap& objects) { |
147 WriteObjects(objects, NULL); | 147 WriteObjects(objects, NULL); |
148 } | 148 } |
149 | 149 |
150 void Clipboard::WriteObjects(const ObjectMap& objects, ProcessHandle process) { | 150 void Clipboard::WriteObjects(const ObjectMap& objects, |
| 151 base::ProcessHandle process) { |
151 ScopedClipboard clipboard; | 152 ScopedClipboard clipboard; |
152 if (!clipboard.Acquire(clipboard_owner_)) | 153 if (!clipboard.Acquire(clipboard_owner_)) |
153 return; | 154 return; |
154 | 155 |
155 ::EmptyClipboard(); | 156 ::EmptyClipboard(); |
156 | 157 |
157 for (ObjectMap::const_iterator iter = objects.begin(); | 158 for (ObjectMap::const_iterator iter = objects.begin(); |
158 iter != objects.end(); ++iter) { | 159 iter != objects.end(); ++iter) { |
159 if (iter->first == CBF_SMBITMAP) | 160 if (iter->first == CBF_SMBITMAP) |
160 WriteBitmapFromSharedMemory(&(iter->second[0].front()), | 161 WriteBitmapFromSharedMemory(&(iter->second[0].front()), |
(...skipping 99 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
260 // Now we have an HBITMAP, we can write it to the clipboard | 261 // Now we have an HBITMAP, we can write it to the clipboard |
261 WriteBitmapFromHandle(source_hbitmap, *size); | 262 WriteBitmapFromHandle(source_hbitmap, *size); |
262 } | 263 } |
263 | 264 |
264 ::DeleteObject(source_hbitmap); | 265 ::DeleteObject(source_hbitmap); |
265 ::ReleaseDC(NULL, dc); | 266 ::ReleaseDC(NULL, dc); |
266 } | 267 } |
267 | 268 |
268 void Clipboard::WriteBitmapFromSharedMemory(const char* bitmap_data, | 269 void Clipboard::WriteBitmapFromSharedMemory(const char* bitmap_data, |
269 const char* size_data, | 270 const char* size_data, |
270 ProcessHandle process) { | 271 base::ProcessHandle process) { |
271 const SharedMemoryHandle* remote_bitmap_handle = | 272 const base::SharedMemoryHandle* remote_bitmap_handle = |
272 reinterpret_cast<const SharedMemoryHandle*>(bitmap_data); | 273 reinterpret_cast<const base::SharedMemoryHandle*>(bitmap_data); |
273 const gfx::Size* size = reinterpret_cast<const gfx::Size*>(size_data); | 274 const gfx::Size* size = reinterpret_cast<const gfx::Size*>(size_data); |
274 | 275 |
275 SharedMemory bitmap(*remote_bitmap_handle, false, process); | 276 base::SharedMemory bitmap(*remote_bitmap_handle, false, process); |
276 | 277 |
277 // TODO(darin): share data in gfx/bitmap_header.cc somehow | 278 // TODO(darin): share data in gfx/bitmap_header.cc somehow |
278 BITMAPINFO bm_info = {0}; | 279 BITMAPINFO bm_info = {0}; |
279 bm_info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); | 280 bm_info.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); |
280 bm_info.bmiHeader.biWidth = size->width(); | 281 bm_info.bmiHeader.biWidth = size->width(); |
281 bm_info.bmiHeader.biHeight = -size->height(); // Sets the vertical orientatio
n | 282 bm_info.bmiHeader.biHeight = -size->height(); // Sets the vertical orientatio
n |
282 bm_info.bmiHeader.biPlanes = 1; | 283 bm_info.bmiHeader.biPlanes = 1; |
283 bm_info.bmiHeader.biBitCount = 32; | 284 bm_info.bmiHeader.biBitCount = 32; |
284 bm_info.bmiHeader.biCompression = BI_RGB; | 285 bm_info.bmiHeader.biCompression = BI_RGB; |
285 | 286 |
(...skipping 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
694 return ClipboardUtil::GetWebKitSmartPasteFormat()->cfFormat; | 695 return ClipboardUtil::GetWebKitSmartPasteFormat()->cfFormat; |
695 } | 696 } |
696 | 697 |
697 // static | 698 // static |
698 void Clipboard::FreeData(FormatType format, HANDLE data) { | 699 void Clipboard::FreeData(FormatType format, HANDLE data) { |
699 if (format == CF_BITMAP) | 700 if (format == CF_BITMAP) |
700 ::DeleteObject(static_cast<HBITMAP>(data)); | 701 ::DeleteObject(static_cast<HBITMAP>(data)); |
701 else | 702 else |
702 ::GlobalFree(data); | 703 ::GlobalFree(data); |
703 } | 704 } |
OLD | NEW |