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 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
129 HGLOBAL CreateGlobalData(const std::basic_string<charT>& str) { | 129 HGLOBAL CreateGlobalData(const std::basic_string<charT>& str) { |
130 HGLOBAL data = | 130 HGLOBAL data = |
131 ::GlobalAlloc(GMEM_MOVEABLE, ((str.size() + 1) * sizeof(charT))); | 131 ::GlobalAlloc(GMEM_MOVEABLE, ((str.size() + 1) * sizeof(charT))); |
132 if (data) { | 132 if (data) { |
133 charT* raw_data = static_cast<charT*>(::GlobalLock(data)); | 133 charT* raw_data = static_cast<charT*>(::GlobalLock(data)); |
134 memcpy(raw_data, str.data(), str.size() * sizeof(charT)); | 134 memcpy(raw_data, str.data(), str.size() * sizeof(charT)); |
135 raw_data[str.size()] = '\0'; | 135 raw_data[str.size()] = '\0'; |
136 ::GlobalUnlock(data); | 136 ::GlobalUnlock(data); |
137 } | 137 } |
138 return data; | 138 return data; |
139 }; | 139 } |
140 | 140 |
141 bool BitmapHasInvalidPremultipliedColors(const SkBitmap& bitmap) { | 141 bool BitmapHasInvalidPremultipliedColors(const SkBitmap& bitmap) { |
142 for (int x = 0; x < bitmap.width(); ++x) { | 142 for (int x = 0; x < bitmap.width(); ++x) { |
143 for (int y = 0; y < bitmap.height(); ++y) { | 143 for (int y = 0; y < bitmap.height(); ++y) { |
144 uint32_t pixel = *bitmap.getAddr32(x, y); | 144 uint32_t pixel = *bitmap.getAddr32(x, y); |
145 if (SkColorGetR(pixel) > SkColorGetA(pixel) || | 145 if (SkColorGetR(pixel) > SkColorGetA(pixel) || |
146 SkColorGetG(pixel) > SkColorGetA(pixel) || | 146 SkColorGetG(pixel) > SkColorGetA(pixel) || |
147 SkColorGetB(pixel) > SkColorGetA(pixel)) | 147 SkColorGetB(pixel) > SkColorGetA(pixel)) |
148 return true; | 148 return true; |
149 } | 149 } |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
231 | 231 |
232 bool Clipboard::FormatType::Equals(const FormatType& other) const { | 232 bool Clipboard::FormatType::Equals(const FormatType& other) const { |
233 return data_.cfFormat == other.data_.cfFormat; | 233 return data_.cfFormat == other.data_.cfFormat; |
234 } | 234 } |
235 | 235 |
236 // Various predefined FormatTypes. | 236 // Various predefined FormatTypes. |
237 // static | 237 // static |
238 Clipboard::FormatType Clipboard::GetFormatType( | 238 Clipboard::FormatType Clipboard::GetFormatType( |
239 const std::string& format_string) { | 239 const std::string& format_string) { |
240 return FormatType( | 240 return FormatType( |
241 ::RegisterClipboardFormat(base::ASCIIToWide(format_string).c_str())); | 241 ::RegisterClipboardFormat(base::ASCIIToUTF16(format_string).c_str())); |
242 } | 242 } |
243 | 243 |
244 // static | 244 // static |
245 const Clipboard::FormatType& Clipboard::GetUrlFormatType() { | 245 const Clipboard::FormatType& Clipboard::GetUrlFormatType() { |
246 CR_DEFINE_STATIC_LOCAL( | 246 CR_DEFINE_STATIC_LOCAL( |
247 FormatType, type, (::RegisterClipboardFormat(CFSTR_INETURLA))); | 247 FormatType, type, (::RegisterClipboardFormat(CFSTR_INETURLA))); |
248 return type; | 248 return type; |
249 } | 249 } |
250 | 250 |
251 // static | 251 // static |
(...skipping 468 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
720 } | 720 } |
721 | 721 |
722 void ClipboardWin::WriteBookmark(const char* title_data, | 722 void ClipboardWin::WriteBookmark(const char* title_data, |
723 size_t title_len, | 723 size_t title_len, |
724 const char* url_data, | 724 const char* url_data, |
725 size_t url_len) { | 725 size_t url_len) { |
726 std::string bookmark(title_data, title_len); | 726 std::string bookmark(title_data, title_len); |
727 bookmark.append(1, L'\n'); | 727 bookmark.append(1, L'\n'); |
728 bookmark.append(url_data, url_len); | 728 bookmark.append(url_data, url_len); |
729 | 729 |
730 base::string16 wide_bookmark = base::UTF8ToWide(bookmark); | 730 base::string16 wide_bookmark = base::UTF8ToUTF16(bookmark); |
731 HGLOBAL glob = CreateGlobalData(wide_bookmark); | 731 HGLOBAL glob = CreateGlobalData(wide_bookmark); |
732 | 732 |
733 WriteToClipboard(GetUrlWFormatType().ToFormatEtc().cfFormat, glob); | 733 WriteToClipboard(GetUrlWFormatType().ToFormatEtc().cfFormat, glob); |
734 } | 734 } |
735 | 735 |
736 void ClipboardWin::WriteWebSmartPaste() { | 736 void ClipboardWin::WriteWebSmartPaste() { |
737 DCHECK(clipboard_owner_->hwnd() != NULL); | 737 DCHECK(clipboard_owner_->hwnd() != NULL); |
738 ::SetClipboardData(GetWebKitSmartPasteFormatType().ToFormatEtc().cfFormat, | 738 ::SetClipboardData(GetWebKitSmartPasteFormatType().ToFormatEtc().cfFormat, |
739 NULL); | 739 NULL); |
740 } | 740 } |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
853 if (!clipboard_owner_) | 853 if (!clipboard_owner_) |
854 return NULL; | 854 return NULL; |
855 | 855 |
856 if (clipboard_owner_->hwnd() == NULL) | 856 if (clipboard_owner_->hwnd() == NULL) |
857 clipboard_owner_->Create(base::Bind(&ClipboardOwnerWndProc)); | 857 clipboard_owner_->Create(base::Bind(&ClipboardOwnerWndProc)); |
858 | 858 |
859 return clipboard_owner_->hwnd(); | 859 return clipboard_owner_->hwnd(); |
860 } | 860 } |
861 | 861 |
862 } // namespace ui | 862 } // namespace ui |
OLD | NEW |