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

Side by Side Diff: views/controls/table/native_table_win.cc

Issue 8122013: Allow CanvasSkia to bind to an existing SkCanvas. (Closed) Base URL: http://git.chromium.org/git/chromium.git@trunk
Patch Set: 1 more fix Created 9 years, 2 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/table/native_table_win.h" 5 #include "views/controls/table/native_table_win.h"
6 6
7 #include <commctrl.h> 7 #include <commctrl.h>
8 #include <windowsx.h> 8 #include <windowsx.h>
9 9
10 #include <algorithm> 10 #include <algorithm>
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after
388 UpdateListViewCache(0, table_->model()->RowCount(), true); 388 UpdateListViewCache(0, table_->model()->RowCount(), true);
389 389
390 if (table_->type() == ICON_AND_TEXT) { 390 if (table_->type() == ICON_AND_TEXT) {
391 HIMAGELIST image_list = 391 HIMAGELIST image_list =
392 ImageList_Create(kImageSize, kImageSize, ILC_COLOR32, 2, 2); 392 ImageList_Create(kImageSize, kImageSize, ILC_COLOR32, 2, 2);
393 // We create 2 phony images because we are going to switch images at every 393 // We create 2 phony images because we are going to switch images at every
394 // refresh in order to force a refresh of the icon area (somehow the clip 394 // refresh in order to force a refresh of the icon area (somehow the clip
395 // rect does not include the icon). 395 // rect does not include the icon).
396 gfx::CanvasSkia canvas(kImageSize, kImageSize, false); 396 gfx::CanvasSkia canvas(kImageSize, kImageSize, false);
397 // Make the background completely transparent. 397 // Make the background completely transparent.
398 canvas.drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode); 398 canvas.sk_canvas()->drawColor(SK_ColorBLACK, SkXfermode::kClear_Mode);
399 { 399 {
400 base::win::ScopedHICON empty_icon( 400 base::win::ScopedHICON empty_icon(
401 IconUtil::CreateHICONFromSkBitmap(canvas.ExtractBitmap())); 401 IconUtil::CreateHICONFromSkBitmap(canvas.ExtractBitmap()));
402 ImageList_AddIcon(image_list, empty_icon); 402 ImageList_AddIcon(image_list, empty_icon);
403 ImageList_AddIcon(image_list, empty_icon); 403 ImageList_AddIcon(image_list, empty_icon);
404 } 404 }
405 ListView_SetImageList(native_view(), image_list, LVSIL_SMALL); 405 ListView_SetImageList(native_view(), image_list, LVSIL_SMALL);
406 } 406 }
407 407
408 if (!table_->resizable_columns()) { 408 if (!table_->resizable_columns()) {
(...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after
526 bg_color_index = COLOR_3DFACE; 526 bg_color_index = COLOR_3DFACE;
527 else if (drop_highlight) 527 else if (drop_highlight)
528 bg_color_index = COLOR_HIGHLIGHT; 528 bg_color_index = COLOR_HIGHLIGHT;
529 else if (selected) 529 else if (selected)
530 bg_color_index = HasFocus() ? COLOR_HIGHLIGHT : COLOR_3DFACE; 530 bg_color_index = HasFocus() ? COLOR_HIGHLIGHT : COLOR_3DFACE;
531 else 531 else
532 bg_color_index = COLOR_WINDOW; 532 bg_color_index = COLOR_WINDOW;
533 // NOTE: This may be invoked without the ListView filling in the 533 // NOTE: This may be invoked without the ListView filling in the
534 // background (or rather windows paints background, then invokes 534 // background (or rather windows paints background, then invokes
535 // this twice). As such, we always fill in the background. 535 // this twice). As such, we always fill in the background.
536 canvas.drawColor( 536 canvas.sk_canvas()->drawColor(
537 skia::COLORREFToSkColor(GetSysColor(bg_color_index)), 537 skia::COLORREFToSkColor(GetSysColor(bg_color_index)),
538 SkXfermode::kSrc_Mode); 538 SkXfermode::kSrc_Mode);
539 // + 1 for padding (we declared the image as 18x18 in the list- 539 // + 1 for padding (we declared the image as 18x18 in the list-
540 // view when they are 16x16 so we get an extra pixel of padding). 540 // view when they are 16x16 so we get an extra pixel of padding).
541 canvas.DrawBitmapInt(image, 0, 0, 541 canvas.DrawBitmapInt(image, 0, 0,
542 image.width(), image.height(), 542 image.width(), image.height(),
543 1, 1, 543 1, 1,
544 gfx::kFaviconSize, gfx::kFaviconSize, true); 544 gfx::kFaviconSize, gfx::kFaviconSize, true);
545 545
546 // Only paint the visible region of the icon. 546 // Only paint the visible region of the icon.
547 RECT to_draw = { intersection.left - icon_rect.left, 547 RECT to_draw = { intersection.left - icon_rect.left,
548 intersection.top - icon_rect.top, 548 intersection.top - icon_rect.top,
549 0, 0 }; 549 0, 0 };
550 to_draw.right = to_draw.left + 550 to_draw.right = to_draw.left +
551 (intersection.right - intersection.left); 551 (intersection.right - intersection.left);
552 to_draw.bottom = to_draw.top + 552 to_draw.bottom = to_draw.top +
553 (intersection.bottom - intersection.top); 553 (intersection.bottom - intersection.top);
554 skia::DrawToNativeContext(&canvas, draw_info->nmcd.hdc, 554 skia::DrawToNativeContext(canvas.sk_canvas(), draw_info->nmcd.hdc,
555 intersection.left, intersection.top, 555 intersection.left, intersection.top,
556 &to_draw); 556 &to_draw);
557 r = CDRF_SKIPDEFAULT; 557 r = CDRF_SKIPDEFAULT;
558 } 558 }
559 } 559 }
560 } 560 }
561 } 561 }
562 return r; 562 return r;
563 } 563 }
564 default: 564 default:
565 return CDRF_DODEFAULT; 565 return CDRF_DODEFAULT;
566 } 566 }
(...skipping 338 matching lines...) Expand 10 before | Expand all | Expand 10 after
905 905
906 //////////////////////////////////////////////////////////////////////////////// 906 ////////////////////////////////////////////////////////////////////////////////
907 // NativeTableWrapper, public: 907 // NativeTableWrapper, public:
908 908
909 // static 909 // static
910 NativeTableWrapper* NativeTableWrapper::CreateNativeWrapper(TableView2* table) { 910 NativeTableWrapper* NativeTableWrapper::CreateNativeWrapper(TableView2* table) {
911 return new NativeTableWin(table); 911 return new NativeTableWin(table);
912 } 912 }
913 913
914 } // namespace views 914 } // namespace views
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698