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

Side by Side Diff: chrome/browser/ui/views/frame/opaque_browser_frame_view.cc

Issue 8405002: ui/gfx: Convert Canvas::FillRectInt() to use gfx::Rect. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Created 9 years, 1 month 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 "chrome/browser/ui/views/frame/opaque_browser_frame_view.h" 5 #include "chrome/browser/ui/views/frame/opaque_browser_frame_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 #include <string> 8 #include <string>
9 9
10 #include "base/command_line.h" 10 #include "base/command_line.h"
(...skipping 592 matching lines...) Expand 10 before | Expand all | Expand 10 after
603 603
604 // Fill with the frame color first so we have a constant background for 604 // Fill with the frame color first so we have a constant background for
605 // areas not covered by the theme image. 605 // areas not covered by the theme image.
606 SkBitmap* theme_frame = GetFrameBitmap(); 606 SkBitmap* theme_frame = GetFrameBitmap();
607 int top_area_height = theme_frame->height(); 607 int top_area_height = theme_frame->height();
608 if (browser_view_->IsTabStripVisible()) { 608 if (browser_view_->IsTabStripVisible()) {
609 top_area_height = std::max(top_area_height, 609 top_area_height = std::max(top_area_height,
610 GetBoundsForTabStrip(browser_view_->tabstrip()).bottom()); 610 GetBoundsForTabStrip(browser_view_->tabstrip()).bottom());
611 } 611 }
612 SkColor frame_color = GetFrameColor(); 612 SkColor frame_color = GetFrameColor();
613 canvas->FillRectInt(frame_color, 0, 0, width(), top_area_height); 613 canvas->FillRect(frame_color, gfx::Rect(0, 0, width(), top_area_height));
614 614
615 // Now fill down the sides. 615 // Now fill down the sides.
616 canvas->FillRectInt(frame_color, 0, top_area_height, left_edge->width(), 616 canvas->FillRect(frame_color,
617 height() - top_area_height); 617 gfx::Rect(0, top_area_height, left_edge->width(),
618 canvas->FillRectInt(frame_color, width() - right_edge->width(), 618 height() - top_area_height));
619 top_area_height, right_edge->width(), 619 canvas->FillRect(frame_color,
620 height() - top_area_height); 620 gfx::Rect(width() - right_edge->width(),
621 top_area_height, right_edge->width(),
622 height() - top_area_height));
621 // Now fill the bottom area. 623 // Now fill the bottom area.
622 canvas->FillRectInt(frame_color, left_edge->width(), 624 canvas->FillRect(frame_color,
623 height() - bottom_edge->height(), 625 gfx::Rect(left_edge->width(),
624 width() - left_edge->width() - right_edge->width(), 626 height() - bottom_edge->height(),
625 bottom_edge->height()); 627 width() - left_edge->width() - right_edge->width(),
628 bottom_edge->height()));
626 629
627 // Draw the theme frame. 630 // Draw the theme frame.
628 canvas->TileImageInt(*theme_frame, 0, 0, width(), theme_frame->height()); 631 canvas->TileImageInt(*theme_frame, 0, 0, width(), theme_frame->height());
629 632
630 // Draw the theme frame overlay. 633 // Draw the theme frame overlay.
631 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) && 634 if (tp->HasCustomImage(IDR_THEME_FRAME_OVERLAY) &&
632 browser_view_->IsBrowserTypeNormal() && 635 browser_view_->IsBrowserTypeNormal() &&
633 !browser_view_->IsOffTheRecord()) { 636 !browser_view_->IsOffTheRecord()) {
634 canvas->DrawBitmapInt(*tp->GetBitmapNamed(ShouldPaintAsActive() ? 637 canvas->DrawBitmapInt(*tp->GetBitmapNamed(ShouldPaintAsActive() ?
635 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE), 0, 0); 638 IDR_THEME_FRAME_OVERLAY : IDR_THEME_FRAME_OVERLAY_INACTIVE), 0, 0);
(...skipping 48 matching lines...) Expand 10 before | Expand all | Expand 10 after
684 687
685 // We will be painting from top_offset to top_offset + theme_frame_height. If 688 // We will be painting from top_offset to top_offset + theme_frame_height. If
686 // this is less than GetBoundsForTabStrip.bottom, we need to paint the frame 689 // this is less than GetBoundsForTabStrip.bottom, we need to paint the frame
687 // color. 690 // color.
688 SkBitmap* theme_frame = GetFrameBitmap(); 691 SkBitmap* theme_frame = GetFrameBitmap();
689 int theme_frame_bottom = top_offset + theme_frame->height(); 692 int theme_frame_bottom = top_offset + theme_frame->height();
690 int top_area_height = 693 int top_area_height =
691 GetBoundsForTabStrip(browser_view_->tabstrip()).bottom(); 694 GetBoundsForTabStrip(browser_view_->tabstrip()).bottom();
692 if (top_area_height > theme_frame_bottom) { 695 if (top_area_height > theme_frame_bottom) {
693 SkColor frame_color = GetFrameColor(); 696 SkColor frame_color = GetFrameColor();
694 canvas->FillRectInt(frame_color, 0, 0, width(), top_area_height); 697 canvas->FillRect(frame_color, gfx::Rect(0, 0, width(), top_area_height));
695 } 698 }
696 699
697 // Draw the theme frame. It must be aligned with the tabstrip as if we were 700 // Draw the theme frame. It must be aligned with the tabstrip as if we were
698 // in restored mode. Note that the top of the tabstrip is 701 // in restored mode. Note that the top of the tabstrip is
699 // kTabstripTopShadowThickness px off the top of the screen. 702 // kTabstripTopShadowThickness px off the top of the screen.
700 int theme_background_y = -(GetHorizontalTabStripVerticalOffset(true) + 703 int theme_background_y = -(GetHorizontalTabStripVerticalOffset(true) +
701 kTabstripTopShadowThickness); 704 kTabstripTopShadowThickness);
702 int left_offset = 0, right_offset = 0; 705 int left_offset = 0, right_offset = 0;
703 706
704 if (left || right) { 707 if (left || right) {
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 SkBitmap* toolbar_left = tp->GetBitmapNamed(IDR_CONTENT_TOP_LEFT_CORNER); 783 SkBitmap* toolbar_left = tp->GetBitmapNamed(IDR_CONTENT_TOP_LEFT_CORNER);
781 int bottom_edge_height = std::min(toolbar_left->height(), h) - split_point; 784 int bottom_edge_height = std::min(toolbar_left->height(), h) - split_point;
782 785
783 // Split our canvas out so we can mask out the corners of the toolbar 786 // Split our canvas out so we can mask out the corners of the toolbar
784 // without masking out the frame. 787 // without masking out the frame.
785 canvas->SaveLayerAlpha( 788 canvas->SaveLayerAlpha(
786 255, gfx::Rect(x - kClientEdgeThickness, y, w + kClientEdgeThickness * 3, 789 255, gfx::Rect(x - kClientEdgeThickness, y, w + kClientEdgeThickness * 3,
787 h)); 790 h));
788 canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode); 791 canvas->GetSkCanvas()->drawARGB(0, 255, 255, 255, SkXfermode::kClear_Mode);
789 792
790 SkColor theme_toolbar_color = 793 SkColor theme_toolbar_color = tp->GetColor(ThemeService::COLOR_TOOLBAR);
791 tp->GetColor(ThemeService::COLOR_TOOLBAR); 794 canvas->FillRect(theme_toolbar_color,
792 canvas->FillRectInt(theme_toolbar_color, x, bottom_y, w, bottom_edge_height); 795 gfx::Rect(x, bottom_y, w, bottom_edge_height));
793 796
794 // Tile the toolbar image starting at the frame edge on the left and where the 797 // Tile the toolbar image starting at the frame edge on the left and where the
795 // horizontal tabstrip is (or would be) on the top. 798 // horizontal tabstrip is (or would be) on the top.
796 SkBitmap* theme_toolbar = tp->GetBitmapNamed(IDR_THEME_TOOLBAR); 799 SkBitmap* theme_toolbar = tp->GetBitmapNamed(IDR_THEME_TOOLBAR);
797 canvas->TileImageInt(*theme_toolbar, x, 800 canvas->TileImageInt(*theme_toolbar, x,
798 bottom_y - GetHorizontalTabStripVerticalOffset(false), x, 801 bottom_y - GetHorizontalTabStripVerticalOffset(false), x,
799 bottom_y, w, theme_toolbar->height()); 802 bottom_y, w, theme_toolbar->height());
800 803
801 // Draw rounded corners for the tab. 804 // Draw rounded corners for the tab.
802 SkBitmap* toolbar_left_mask = 805 SkBitmap* toolbar_left_mask =
(...skipping 44 matching lines...) Expand 10 before | Expand all | Expand 10 after
847 850
848 SkBitmap* toolbar_right = tp->GetBitmapNamed(IDR_CONTENT_TOP_RIGHT_CORNER); 851 SkBitmap* toolbar_right = tp->GetBitmapNamed(IDR_CONTENT_TOP_RIGHT_CORNER);
849 canvas->DrawBitmapInt(*toolbar_right, 0, 0, toolbar_right->width(), 852 canvas->DrawBitmapInt(*toolbar_right, 0, 0, toolbar_right->width(),
850 split_point, right_x, y, toolbar_right->width(), split_point, false); 853 split_point, right_x, y, toolbar_right->width(), split_point, false);
851 canvas->DrawBitmapInt(*toolbar_right, 0, 854 canvas->DrawBitmapInt(*toolbar_right, 0,
852 toolbar_right->height() - bottom_edge_height, toolbar_right->width(), 855 toolbar_right->height() - bottom_edge_height, toolbar_right->width(),
853 bottom_edge_height, right_x, bottom_y, toolbar_right->width(), 856 bottom_edge_height, right_x, bottom_y, toolbar_right->width(),
854 bottom_edge_height, false); 857 bottom_edge_height, false);
855 858
856 // Draw the content/toolbar separator. 859 // Draw the content/toolbar separator.
857 canvas->FillRectInt(ResourceBundle::toolbar_separator_color, 860 canvas->FillRect(ResourceBundle::toolbar_separator_color,
858 x + kClientEdgeThickness, toolbar_bounds.bottom() - kClientEdgeThickness, 861 gfx::Rect(x + kClientEdgeThickness,
859 w - (2 * kClientEdgeThickness), kClientEdgeThickness); 862 toolbar_bounds.bottom() - kClientEdgeThickness,
863 w - (2 * kClientEdgeThickness),
864 kClientEdgeThickness));
860 } 865 }
861 866
862 void OpaqueBrowserFrameView::PaintRestoredClientEdge(gfx::Canvas* canvas) { 867 void OpaqueBrowserFrameView::PaintRestoredClientEdge(gfx::Canvas* canvas) {
863 ui::ThemeProvider* tp = GetThemeProvider(); 868 ui::ThemeProvider* tp = GetThemeProvider();
864 int client_area_top = frame_->client_view()->y(); 869 int client_area_top = frame_->client_view()->y();
865 int image_top = client_area_top; 870 int image_top = client_area_top;
866 871
867 gfx::Rect client_area_bounds = CalculateClientAreaBounds(width(), height()); 872 gfx::Rect client_area_bounds = CalculateClientAreaBounds(width(), height());
868 SkColor toolbar_color = tp->GetColor(ThemeService::COLOR_TOOLBAR); 873 SkColor toolbar_color = tp->GetColor(ThemeService::COLOR_TOOLBAR);
869 874
(...skipping 18 matching lines...) Expand all
888 canvas->DrawBitmapInt(*top_left, 0, 0, top_left->width(), height, 893 canvas->DrawBitmapInt(*top_left, 0, 0, top_left->width(), height,
889 client_area_bounds.x() - top_left->width(), top_edge_y, 894 client_area_bounds.x() - top_left->width(), top_edge_y,
890 top_left->width(), height, false); 895 top_left->width(), height, false);
891 canvas->TileImageInt(*top_center, 0, 0, client_area_bounds.x(), top_edge_y, 896 canvas->TileImageInt(*top_center, 0, 0, client_area_bounds.x(), top_edge_y,
892 client_area_bounds.width(), std::min(height, top_center->height())); 897 client_area_bounds.width(), std::min(height, top_center->height()));
893 canvas->DrawBitmapInt(*top_right, 0, 0, top_right->width(), height, 898 canvas->DrawBitmapInt(*top_right, 0, 0, top_right->width(), height,
894 client_area_bounds.right(), top_edge_y, 899 client_area_bounds.right(), top_edge_y,
895 top_right->width(), height, false); 900 top_right->width(), height, false);
896 901
897 // Draw the toolbar color across the top edge. 902 // Draw the toolbar color across the top edge.
898 canvas->FillRectInt(toolbar_color, 903 canvas->FillRect(
899 client_area_bounds.x() - kClientEdgeThickness, 904 toolbar_color,
900 client_area_top - kClientEdgeThickness, 905 gfx::Rect(client_area_bounds.x() - kClientEdgeThickness,
901 client_area_bounds.width() + (2 * kClientEdgeThickness), 906 client_area_top - kClientEdgeThickness,
902 kClientEdgeThickness); 907 client_area_bounds.width() + (2 * kClientEdgeThickness),
908 kClientEdgeThickness));
903 } 909 }
904 910
905 int client_area_bottom = 911 int client_area_bottom =
906 std::max(client_area_top, height() - NonClientBorderThickness()); 912 std::max(client_area_top, height() - NonClientBorderThickness());
907 int image_height = client_area_bottom - image_top; 913 int image_height = client_area_bottom - image_top;
908 914
909 // Draw the client edge images. 915 // Draw the client edge images.
910 // Draw the client edge images. 916 // Draw the client edge images.
911 SkBitmap* right = tp->GetBitmapNamed(IDR_CONTENT_RIGHT_SIDE); 917 SkBitmap* right = tp->GetBitmapNamed(IDR_CONTENT_RIGHT_SIDE);
912 canvas->TileImageInt(*right, client_area_bounds.right(), image_top, 918 canvas->TileImageInt(*right, client_area_bounds.right(), image_top,
(...skipping 10 matching lines...) Expand all
923 canvas->DrawBitmapInt(*bottom_left, 929 canvas->DrawBitmapInt(*bottom_left,
924 client_area_bounds.x() - bottom_left->width(), client_area_bottom); 930 client_area_bounds.x() - bottom_left->width(), client_area_bottom);
925 SkBitmap* left = tp->GetBitmapNamed(IDR_CONTENT_LEFT_SIDE); 931 SkBitmap* left = tp->GetBitmapNamed(IDR_CONTENT_LEFT_SIDE);
926 canvas->TileImageInt(*left, client_area_bounds.x() - left->width(), 932 canvas->TileImageInt(*left, client_area_bounds.x() - left->width(),
927 image_top, left->width(), image_height); 933 image_top, left->width(), image_height);
928 934
929 // Draw the toolbar color so that the client edges show the right color even 935 // Draw the toolbar color so that the client edges show the right color even
930 // where not covered by the toolbar image. NOTE: We do this after drawing the 936 // where not covered by the toolbar image. NOTE: We do this after drawing the
931 // images because the images are meant to alpha-blend atop the frame whereas 937 // images because the images are meant to alpha-blend atop the frame whereas
932 // these rects are meant to be fully opaque, without anything overlaid. 938 // these rects are meant to be fully opaque, without anything overlaid.
933 canvas->FillRectInt(toolbar_color, 939 canvas->FillRect(
934 client_area_bounds.x() - kClientEdgeThickness, client_area_top, 940 toolbar_color,
935 kClientEdgeThickness, 941 gfx::Rect(client_area_bounds.x() - kClientEdgeThickness,
936 client_area_bottom + kClientEdgeThickness - client_area_top); 942 client_area_top,
937 canvas->FillRectInt(toolbar_color, client_area_bounds.x(), client_area_bottom, 943 kClientEdgeThickness,
938 client_area_bounds.width(), kClientEdgeThickness); 944 client_area_bottom + kClientEdgeThickness - client_area_top));
939 canvas->FillRectInt(toolbar_color, client_area_bounds.right(), 945 canvas->FillRect(toolbar_color,
940 client_area_top, kClientEdgeThickness, 946 gfx::Rect(client_area_bounds.x(), client_area_bottom,
941 client_area_bottom + kClientEdgeThickness - client_area_top); 947 client_area_bounds.width(), kClientEdgeThickness));
948 canvas->FillRect(
949 toolbar_color,
950 gfx::Rect(client_area_bounds.right(),
951 client_area_top,
952 kClientEdgeThickness,
953 client_area_bottom + kClientEdgeThickness - client_area_top));
942 } 954 }
943 955
944 SkBitmap* OpaqueBrowserFrameView::GetFrameBitmap() const { 956 SkBitmap* OpaqueBrowserFrameView::GetFrameBitmap() const {
945 bool is_incognito = browser_view_->IsOffTheRecord(); 957 bool is_incognito = browser_view_->IsOffTheRecord();
946 int resource_id; 958 int resource_id;
947 if (browser_view_->IsBrowserTypeNormal()) { 959 if (browser_view_->IsBrowserTypeNormal()) {
948 if (ShouldPaintAsActive()) { 960 if (ShouldPaintAsActive()) {
949 resource_id = is_incognito ? 961 resource_id = is_incognito ?
950 IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME; 962 IDR_THEME_FRAME_INCOGNITO : IDR_THEME_FRAME;
951 } else { 963 } else {
(...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after
1141 ProfileInfoCache& cache = 1153 ProfileInfoCache& cache =
1142 g_browser_process->profile_manager()->GetProfileInfoCache(); 1154 g_browser_process->profile_manager()->GetProfileInfoCache();
1143 Profile* profile = browser_view_->browser()->profile(); 1155 Profile* profile = browser_view_->browser()->profile();
1144 size_t index = cache.GetIndexOfProfileWithPath(profile->GetPath()); 1156 size_t index = cache.GetIndexOfProfileWithPath(profile->GetPath());
1145 if (index != std::string::npos) { 1157 if (index != std::string::npos) {
1146 avatar_button_->SetIcon(cache.GetAvatarIconOfProfileAtIndex(index)); 1158 avatar_button_->SetIcon(cache.GetAvatarIconOfProfileAtIndex(index));
1147 avatar_button_->SetText(cache.GetNameOfProfileAtIndex(index)); 1159 avatar_button_->SetText(cache.GetNameOfProfileAtIndex(index));
1148 } 1160 }
1149 } 1161 }
1150 } 1162 }
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698