Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(343)

Side by Side Diff: views/controls/menu/native_menu_win.cc

Issue 7019013: Removal of dependencies on PlatformDevice classes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Add ScopedPlatformPaint class. Created 9 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 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 #include "views/controls/menu/native_menu_win.h" 5 #include "views/controls/menu/native_menu_win.h"
6 6
7 #include <Windowsx.h> 7 #include <Windowsx.h>
8 8
9 #include "base/logging.h" 9 #include "base/logging.h"
10 #include "base/message_loop.h" 10 #include "base/message_loop.h"
(...skipping 232 matching lines...) Expand 10 before | Expand all | Expand 10 after
243 243
244 // Draw the icon after the label, otherwise it would be covered 244 // Draw the icon after the label, otherwise it would be covered
245 // by the label. 245 // by the label.
246 SkBitmap icon; 246 SkBitmap icon;
247 if (data->native_menu_win->model_->GetIconAt(data->model_index, &icon)) { 247 if (data->native_menu_win->model_->GetIconAt(data->model_index, &icon)) {
248 // We currently don't support items with both icons and checkboxes. 248 // We currently don't support items with both icons and checkboxes.
249 DCHECK(type != ui::MenuModel::TYPE_CHECK); 249 DCHECK(type != ui::MenuModel::TYPE_CHECK);
250 gfx::CanvasSkia canvas(icon.width(), icon.height(), false); 250 gfx::CanvasSkia canvas(icon.width(), icon.height(), false);
251 canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); 251 canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode);
252 canvas.DrawBitmapInt(icon, 0, 0); 252 canvas.DrawBitmapInt(icon, 0, 0);
253 canvas.getTopPlatformDevice().drawToHDC(dc, 253 skia::DrawToNativeContext(
254 draw_item_struct->rcItem.left + kItemLeftMargin, 254 &canvas, dc, draw_item_struct->rcItem.left + kItemLeftMargin,
255 draw_item_struct->rcItem.top + (draw_item_struct->rcItem.bottom - 255 draw_item_struct->rcItem.top + (draw_item_struct->rcItem.bottom -
256 draw_item_struct->rcItem.top - icon.height()) / 2, NULL); 256 draw_item_struct->rcItem.top - icon.height()) / 2, NULL);
257 } else if (type == ui::MenuModel::TYPE_CHECK && 257 } else if (type == ui::MenuModel::TYPE_CHECK &&
258 data->native_menu_win->model_->IsItemCheckedAt( 258 data->native_menu_win->model_->IsItemCheckedAt(
259 data->model_index)) { 259 data->model_index)) {
260 // Manually render a checkbox. 260 // Manually render a checkbox.
261 const MenuConfig& config = MenuConfig::instance(); 261 const MenuConfig& config = MenuConfig::instance();
262 NativeTheme::State state; 262 NativeTheme::State state;
263 if (draw_item_struct->itemState & ODS_DISABLED) { 263 if (draw_item_struct->itemState & ODS_DISABLED) {
264 state = NativeTheme::kDisabled; 264 state = NativeTheme::kDisabled;
(...skipping 11 matching lines...) Expand all
276 extra.menu_check.is_radio = false; 276 extra.menu_check.is_radio = false;
277 gfx::Rect bounds(0, 0, config.check_width, config.check_height); 277 gfx::Rect bounds(0, 0, config.check_width, config.check_height);
278 278
279 // Draw the background and the check. 279 // Draw the background and the check.
280 NativeTheme::instance()->Paint( 280 NativeTheme::instance()->Paint(
281 &canvas, NativeTheme::kMenuCheckBackground, state, bounds, extra); 281 &canvas, NativeTheme::kMenuCheckBackground, state, bounds, extra);
282 NativeTheme::instance()->Paint( 282 NativeTheme::instance()->Paint(
283 &canvas, NativeTheme::kMenuCheck, state, bounds, extra); 283 &canvas, NativeTheme::kMenuCheck, state, bounds, extra);
284 284
285 // Draw checkbox to menu. 285 // Draw checkbox to menu.
286 canvas.getTopPlatformDevice().drawToHDC(dc, 286 skia::DrawToNativeContext(&canvas, dc,
287 draw_item_struct->rcItem.left + kItemLeftMargin, 287 draw_item_struct->rcItem.left + kItemLeftMargin,
288 draw_item_struct->rcItem.top + (draw_item_struct->rcItem.bottom - 288 draw_item_struct->rcItem.top + (draw_item_struct->rcItem.bottom -
289 draw_item_struct->rcItem.top - config.check_height) / 2, NULL); 289 draw_item_struct->rcItem.top - config.check_height) / 2, NULL);
290 } 290 }
291 291
292 } else { 292 } else {
293 // Draw the separator 293 // Draw the separator
294 draw_item_struct->rcItem.top += 294 draw_item_struct->rcItem.top +=
295 (draw_item_struct->rcItem.bottom - draw_item_struct->rcItem.top) / 3; 295 (draw_item_struct->rcItem.bottom - draw_item_struct->rcItem.top) / 3;
296 DrawEdge(dc, &draw_item_struct->rcItem, EDGE_ETCHED, BF_TOP); 296 DrawEdge(dc, &draw_item_struct->rcItem, EDGE_ETCHED, BF_TOP);
(...skipping 466 matching lines...) Expand 10 before | Expand all | Expand 10 after
763 763
764 //////////////////////////////////////////////////////////////////////////////// 764 ////////////////////////////////////////////////////////////////////////////////
765 // MenuWrapper, public: 765 // MenuWrapper, public:
766 766
767 // static 767 // static
768 MenuWrapper* MenuWrapper::CreateWrapper(Menu2* menu) { 768 MenuWrapper* MenuWrapper::CreateWrapper(Menu2* menu) {
769 return new NativeMenuWin(menu->model(), NULL); 769 return new NativeMenuWin(menu->model(), NULL);
770 } 770 }
771 771
772 } // namespace views 772 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698