OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "ui/base/clipboard/clipboard_win.h" | 8 #include "ui/base/clipboard/clipboard_win.h" |
9 | 9 |
10 #include <shellapi.h> | 10 #include <shellapi.h> |
(...skipping 790 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
801 bm_info.bmiHeader.biCompression = BI_RGB; | 801 bm_info.bmiHeader.biCompression = BI_RGB; |
802 | 802 |
803 // ::CreateDIBSection allocates memory for us to copy our bitmap into. | 803 // ::CreateDIBSection allocates memory for us to copy our bitmap into. |
804 // Unfortunately, we can't write the created bitmap to the clipboard, | 804 // Unfortunately, we can't write the created bitmap to the clipboard, |
805 // (see http://msdn2.microsoft.com/en-us/library/ms532292.aspx) | 805 // (see http://msdn2.microsoft.com/en-us/library/ms532292.aspx) |
806 void* bits; | 806 void* bits; |
807 HBITMAP source_hbitmap = | 807 HBITMAP source_hbitmap = |
808 ::CreateDIBSection(dc, &bm_info, DIB_RGB_COLORS, &bits, NULL, 0); | 808 ::CreateDIBSection(dc, &bm_info, DIB_RGB_COLORS, &bits, NULL, 0); |
809 | 809 |
810 if (bits && source_hbitmap) { | 810 if (bits && source_hbitmap) { |
811 { | 811 // Copy the bitmap out of shared memory and into GDI |
812 SkAutoLockPixels bitmap_lock(bitmap); | 812 memcpy(bits, bitmap.getPixels(), bitmap.getSize()); |
813 // Copy the bitmap out of shared memory and into GDI | |
814 memcpy(bits, bitmap.getPixels(), bitmap.getSize()); | |
815 } | |
816 | 813 |
817 // Now we have an HBITMAP, we can write it to the clipboard | 814 // Now we have an HBITMAP, we can write it to the clipboard |
818 WriteBitmapFromHandle(source_hbitmap, | 815 WriteBitmapFromHandle(source_hbitmap, |
819 gfx::Size(bitmap.width(), bitmap.height())); | 816 gfx::Size(bitmap.width(), bitmap.height())); |
820 } | 817 } |
821 | 818 |
822 ::DeleteObject(source_hbitmap); | 819 ::DeleteObject(source_hbitmap); |
823 ::ReleaseDC(NULL, dc); | 820 ::ReleaseDC(NULL, dc); |
824 } | 821 } |
825 | 822 |
(...skipping 72 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
898 if (!clipboard_owner_) | 895 if (!clipboard_owner_) |
899 return NULL; | 896 return NULL; |
900 | 897 |
901 if (clipboard_owner_->hwnd() == NULL) | 898 if (clipboard_owner_->hwnd() == NULL) |
902 clipboard_owner_->Create(base::Bind(&ClipboardOwnerWndProc)); | 899 clipboard_owner_->Create(base::Bind(&ClipboardOwnerWndProc)); |
903 | 900 |
904 return clipboard_owner_->hwnd(); | 901 return clipboard_owner_->hwnd(); |
905 } | 902 } |
906 | 903 |
907 } // namespace ui | 904 } // namespace ui |
OLD | NEW |