Index: chrome/browser/views/about_chrome_view.cc |
=================================================================== |
--- chrome/browser/views/about_chrome_view.cc (revision 3391) |
+++ chrome/browser/views/about_chrome_view.cc (working copy) |
@@ -189,62 +189,60 @@ |
//////////////////////////////////////////////////////////////////////////////// |
// AboutChromeView, ChromeViews::View implementation: |
-void AboutChromeView::GetPreferredSize(CSize *out) { |
- DCHECK(out); |
- *out = ChromeViews::Window::GetLocalizedContentsSize( |
+gfx::Size AboutChromeView::GetPreferredSize() { |
+ gfx::Size prefsize(ChromeViews::Window::GetLocalizedContentsSize( |
IDS_ABOUT_DIALOG_WIDTH_CHARS, |
- IDS_ABOUT_DIALOG_HEIGHT_LINES).ToSIZE(); |
+ IDS_ABOUT_DIALOG_HEIGHT_LINES)); |
// We compute the height of the dialog based on the size of the image (it |
// would be nice to not hard code this), the text in the about dialog and the |
// margins around the text. |
- out->cy += 145 + (kPanelVertMargin * 2); |
+ prefsize.Enlarge(0, 145 + (kPanelVertMargin * 2)); |
// TODO(beng): Eventually the image should be positioned such that hard- |
// coding the width isn't necessary. This breaks with fonts |
// that are large and cause wrapping. |
- out->cx = 422; |
+ prefsize.set_width(422); |
+ return prefsize; |
} |
void AboutChromeView::Layout() { |
- CSize panel_size; |
- GetPreferredSize(&panel_size); |
+ gfx::Size panel_size = GetPreferredSize(); |
- CSize sz; |
- |
// Background image for the dialog. |
- about_dlg_background_->GetPreferredSize(&sz); |
- int background_image_height = sz.cy; // used to position main text below. |
- about_dlg_background_->SetBounds(0, 0, sz.cx, sz.cy); |
+ gfx::Size sz = about_dlg_background_->GetPreferredSize(); |
+ // used to position main text below. |
+ int background_image_height = sz.height(); |
+ about_dlg_background_->SetBounds(0, 0, sz.width(), sz.height()); |
// First label goes to the top left corner. |
- about_title_label_->GetPreferredSize(&sz); |
+ sz = about_title_label_->GetPreferredSize(); |
about_title_label_->SetBounds(kPanelHorizMargin, kPanelVertMargin, |
- sz.cx, sz.cy); |
+ sz.width(), sz.height()); |
// Then we have the version number right below it. |
- version_label_->GetPreferredSize(&sz); |
+ sz = version_label_->GetPreferredSize(); |
version_label_->SetBounds(kPanelHorizMargin, |
about_title_label_->y() + |
about_title_label_->height() + |
kRelatedControlVerticalSpacing, |
kVersionFieldWidth, |
- sz.cy); |
+ sz.height()); |
// For the width of the main text label we want to use up the whole panel |
// width and remaining height, minus a little margin on each side. |
int y_pos = background_image_height + kRelatedControlVerticalSpacing; |
- sz.cx = panel_size.cx - 2 * kPanelHorizMargin; |
+ sz.set_width(panel_size.width() - 2 * kPanelHorizMargin); |
// Draw the text right below the background image. |
copyright_label_->SetBounds(kPanelHorizMargin, |
y_pos, |
- sz.cx, |
- sz.cy); |
+ sz.width(), |
+ sz.height()); |
// Then the main_text_label. |
main_text_label_->SetBounds(kPanelHorizMargin, |
copyright_label_->y() + |
copyright_label_->height(), |
- sz.cx, |
+ sz.width(), |
main_text_label_height_); |
// Position the URLs within the main label. The rects here are calculated when |
@@ -271,38 +269,39 @@ |
CRect parent_bounds; |
GetParent()->GetLocalBounds(&parent_bounds, false); |
- throbber_->GetPreferredSize(&sz); |
+ sz = throbber_->GetPreferredSize(); |
int throbber_topleft_x = kPanelHorizMargin; |
- int throbber_topleft_y = parent_bounds.bottom - sz.cy - |
+ int throbber_topleft_y = parent_bounds.bottom - sz.height() - |
kButtonVEdgeMargin - 3; |
- throbber_->SetBounds(throbber_topleft_x, throbber_topleft_y, sz.cx, sz.cy); |
+ throbber_->SetBounds(throbber_topleft_x, throbber_topleft_y, |
+ sz.width(), sz.height()); |
// This image is hidden (see ViewHierarchyChanged) and displayed on demand. |
- success_indicator_.GetPreferredSize(&sz); |
+ sz = success_indicator_.GetPreferredSize(); |
success_indicator_.SetBounds(throbber_topleft_x, throbber_topleft_y, |
- sz.cx, sz.cy); |
+ sz.width(), sz.height()); |
// This image is hidden (see ViewHierarchyChanged) and displayed on demand. |
- update_available_indicator_.GetPreferredSize(&sz); |
+ sz = update_available_indicator_.GetPreferredSize(); |
update_available_indicator_.SetBounds(throbber_topleft_x, throbber_topleft_y, |
- sz.cx, sz.cy); |
+ sz.width(), sz.height()); |
// This image is hidden (see ViewHierarchyChanged) and displayed on demand. |
- timeout_indicator_.GetPreferredSize(&sz); |
+ sz = timeout_indicator_.GetPreferredSize(); |
timeout_indicator_.SetBounds(throbber_topleft_x, throbber_topleft_y, |
- sz.cx, sz.cy); |
+ sz.width(), sz.height()); |
// The update label should be at the bottom of the screen, to the right of |
// the throbber. We specify width to the end of the dialog because it contains |
// variable length messages. |
- update_label_.GetPreferredSize(&sz); |
+ sz = update_label_.GetPreferredSize(); |
int update_label_x = throbber_->x() + throbber_->width() + |
kRelatedControlHorizontalSpacing; |
update_label_.SetHorizontalAlignment(ChromeViews::Label::ALIGN_LEFT); |
update_label_.SetBounds(update_label_x, |
throbber_topleft_y + 1, |
parent_bounds.Width() - update_label_x, |
- sz.cy); |
+ sz.height()); |
} |
@@ -326,7 +325,7 @@ |
// This struct keeps track of where to write the next word (which x,y |
// pixel coordinate). This struct is updated after drawing text and checking |
// if we need to wrap. |
- CSize position; |
+ gfx::Size position; |
// Draw the first text chunk and position the Chromium url. |
DrawTextAndPositionUrl(canvas, main_label_chunk1_, link1, |
rect1, &position, label_bounds, font); |
@@ -339,8 +338,8 @@ |
#if defined(GOOGLE_CHROME_BUILD) |
// Insert a line break and some whitespace. |
- position.cx = 0; |
- position.cy += font.height() + kRelatedControlVerticalSpacing; |
+ position.set_width(0); |
+ position.Enlarge(0, font.height() + kRelatedControlVerticalSpacing); |
// And now the Terms of Service and position the TOS url. |
DrawTextAndPositionUrl(canvas, main_label_chunk4_, terms_of_service_url_, |
@@ -352,14 +351,14 @@ |
#endif |
// Save the height so we can set the bounds correctly. |
- main_text_label_height_ = position.cy + font.height(); |
+ main_text_label_height_ = position.height() + font.height(); |
} |
void AboutChromeView::DrawTextAndPositionUrl(ChromeCanvas* canvas, |
const std::wstring& text, |
ChromeViews::Link* link, |
gfx::Rect* rect, |
- CSize* position, |
+ gfx::Size* position, |
const gfx::Rect& bounds, |
const ChromeFont& font) { |
DCHECK(canvas && link && rect && position); |
@@ -367,20 +366,20 @@ |
DrawTextStartingFrom(canvas, text, position, bounds, font); |
// And then position the link after it. |
- CSize sz; |
- link->GetPreferredSize(&sz); |
- WrapIfWordDoesntFit(sz.cx, font.height(), position, bounds); |
- *rect = gfx::Rect(position->cx, position->cy, sz.cx, sz.cy); |
+ gfx::Size sz = link->GetPreferredSize(); |
+ WrapIfWordDoesntFit(sz.width(), font.height(), position, bounds); |
+ *rect = gfx::Rect(position->width(), position->height(), sz.width(), |
+ sz.height()); |
// Going from relative to absolute pixel coordinates again. |
rect->Offset(bounds.x(), bounds.y()); |
// And leave some space to draw the link in. |
- position->cx += sz.cx; |
+ position->Enlarge(sz.width(), 0); |
} |
void AboutChromeView::DrawTextStartingFrom(ChromeCanvas* canvas, |
const std::wstring& text, |
- CSize* position, |
+ gfx::Size* position, |
const gfx::Rect& bounds, |
const ChromeFont& font) { |
// Iterate through line breaking opportunities (which in English would be |
@@ -409,28 +408,28 @@ |
// Draw the word on the screen (mirrored if RTL locale). |
canvas->DrawStringInt(word, font, SK_ColorBLACK, |
main_text_label_->MirroredXCoordinateInsideView( |
- position->cx + bounds.x()), |
- position->cy + bounds.y(), |
+ position->width() + bounds.x()), |
+ position->height() + bounds.y(), |
w, h, flags); |
if (word.size() > 0 && word[word.size() - 1] == L'\x0a') { |
// When we come across '\n', we move to the beginning of the next line. |
- position->cx = 0; |
- position->cy += font.height(); |
+ position->set_width(0); |
+ position->Enlarge(0, font.height()); |
} else { |
// Otherwise, we advance position to the next word. |
- position->cx += w; |
+ position->Enlarge(w, 0); |
} |
} |
} |
void AboutChromeView::WrapIfWordDoesntFit(int word_width, |
int font_height, |
- CSize* position, |
+ gfx::Size* position, |
const gfx::Rect& bounds) { |
- if (position->cx + word_width > bounds.right()) { |
- position->cx = 0; |
- position->cy += font_height; |
+ if (position->width() + word_width > bounds.right()) { |
+ position->set_width(0); |
+ position->Enlarge(0, font_height); |
} |
} |