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

Side by Side Diff: chrome/browser/views/tabs/dragged_tab_view.cc

Issue 7344: Convert GetPreferredSize from:... (Closed) Base URL: svn://chrome-svn/chrome/trunk/src/
Patch Set: Created 12 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) 2006-2008 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2006-2008 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/views/tabs/dragged_tab_view.h" 5 #include "chrome/browser/views/tabs/dragged_tab_view.h"
6 6
7 #include "chrome/common/gfx/chrome_canvas.h" 7 #include "chrome/common/gfx/chrome_canvas.h"
8 #include "chrome/browser/tab_contents.h" 8 #include "chrome/browser/tab_contents.h"
9 #include "chrome/browser/tabs/tab_strip_model.h" 9 #include "chrome/browser/tabs/tab_strip_model.h"
10 #include "chrome/browser/views/tabs/hwnd_photobooth.h" 10 #include "chrome/browser/views/tabs/hwnd_photobooth.h"
(...skipping 45 matching lines...) Expand 10 before | Expand all | Expand 10 after
56 56
57 void DraggedTabView::MoveTo(const gfx::Point& screen_point) { 57 void DraggedTabView::MoveTo(const gfx::Point& screen_point) {
58 if (!container_->IsVisible()) 58 if (!container_->IsVisible())
59 container_->ShowWindow(SW_SHOWNOACTIVATE); 59 container_->ShowWindow(SW_SHOWNOACTIVATE);
60 60
61 int x; 61 int x;
62 if (UILayoutIsRightToLeft() && !attached_) { 62 if (UILayoutIsRightToLeft() && !attached_) {
63 // On RTL locales, a dragged tab (when it is not attached to a tab strip) 63 // On RTL locales, a dragged tab (when it is not attached to a tab strip)
64 // is rendered using a right-to-left orientation so we should calculate the 64 // is rendered using a right-to-left orientation so we should calculate the
65 // window position differently. 65 // window position differently.
66 CSize ps; 66 gfx::Size ps = GetPreferredSize();
67 GetPreferredSize(&ps); 67 x = screen_point.x() - ScaleValue(ps.width()) + mouse_tab_offset_.x() +
68 x = screen_point.x() - ScaleValue(ps.cx) + mouse_tab_offset_.x() +
69 ScaleValue( 68 ScaleValue(
70 renderer_->MirroredXCoordinateInsideView(mouse_tab_offset_.x())); 69 renderer_->MirroredXCoordinateInsideView(mouse_tab_offset_.x()));
71 } else { 70 } else {
72 x = screen_point.x() + mouse_tab_offset_.x() - 71 x = screen_point.x() + mouse_tab_offset_.x() -
73 ScaleValue(mouse_tab_offset_.x()); 72 ScaleValue(mouse_tab_offset_.x());
74 } 73 }
75 int y = screen_point.y() + mouse_tab_offset_.y() - 74 int y = screen_point.y() + mouse_tab_offset_.y() -
76 ScaleValue(mouse_tab_offset_.y()); 75 ScaleValue(mouse_tab_offset_.y());
77 76
78 container_->SetWindowPos(NULL, x, y, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE); 77 container_->SetWindowPos(NULL, x, y, 0, 0, SWP_NOSIZE | SWP_NOACTIVATE);
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after
143 142
144 void DraggedTabView::Paint(ChromeCanvas* canvas) { 143 void DraggedTabView::Paint(ChromeCanvas* canvas) {
145 if (attached_) { 144 if (attached_) {
146 PaintAttachedTab(canvas); 145 PaintAttachedTab(canvas);
147 } else { 146 } else {
148 PaintDetachedView(canvas); 147 PaintDetachedView(canvas);
149 } 148 }
150 } 149 }
151 150
152 void DraggedTabView::Layout() { 151 void DraggedTabView::Layout() {
153 CSize ps;
154 GetPreferredSize(&ps);
155 if (attached_) { 152 if (attached_) {
156 renderer_->SetBounds(CRect(0, 0, ps.cx, ps.cy)); 153 renderer_->SetBounds(gfx::Point(), GetPreferredSize());
157 } else { 154 } else {
158 int left = 0; 155 int left = 0;
159 if (UILayoutIsRightToLeft()) 156 if (UILayoutIsRightToLeft())
160 left = ps.cx - attached_tab_size_.width(); 157 left = GetPreferredSize().width() - attached_tab_size_.width();
161 renderer_->SetBounds(CRect(left, 0, left + attached_tab_size_.width(), 158 renderer_->SetBounds(CRect(left, 0, left + attached_tab_size_.width(),
162 attached_tab_size_.height())); 159 attached_tab_size_.height()));
163 } 160 }
164 } 161 }
165 162
166 void DraggedTabView::GetPreferredSize(CSize* out) { 163 gfx::Size DraggedTabView::GetPreferredSize() {
167 DCHECK(out); 164 if (attached_)
168 if (attached_) { 165 return attached_tab_size_;
169 *out = attached_tab_size_.ToSIZE(); 166
170 } else { 167 int width = std::max(attached_tab_size_.width(), contents_size_.width()) +
171 int width = std::max(attached_tab_size_.width(), contents_size_.width()) + 168 kTwiceDragFrameBorderSize;
172 kTwiceDragFrameBorderSize; 169 int height = attached_tab_size_.height() + kDragFrameBorderSize +
173 int height = attached_tab_size_.height() + kDragFrameBorderSize + 170 contents_size_.height();
174 contents_size_.height(); 171 return gfx::Size(width, height);
175 *out = CSize(width, height);
176 }
177 } 172 }
178 173
179 //////////////////////////////////////////////////////////////////////////////// 174 ////////////////////////////////////////////////////////////////////////////////
180 // DraggedTabView, private: 175 // DraggedTabView, private:
181 176
182 void DraggedTabView::PaintAttachedTab(ChromeCanvas* canvas) { 177 void DraggedTabView::PaintAttachedTab(ChromeCanvas* canvas) {
183 renderer_->ProcessPaint(canvas); 178 renderer_->ProcessPaint(canvas);
184 } 179 }
185 180
186 void DraggedTabView::PaintDetachedView(ChromeCanvas* canvas) { 181 void DraggedTabView::PaintDetachedView(ChromeCanvas* canvas) {
187 CSize ps; 182 gfx::Size ps = GetPreferredSize();
188 GetPreferredSize(&ps); 183 ChromeCanvas scale_canvas(ps.width(), ps.height(), false);
189 ChromeCanvas scale_canvas(ps.cx, ps.cy, false);
190 SkBitmap& bitmap_device = const_cast<SkBitmap&>( 184 SkBitmap& bitmap_device = const_cast<SkBitmap&>(
191 scale_canvas.getTopPlatformDevice().accessBitmap(true)); 185 scale_canvas.getTopPlatformDevice().accessBitmap(true));
192 bitmap_device.eraseARGB(0, 0, 0, 0); 186 bitmap_device.eraseARGB(0, 0, 0, 0);
193 187
194 scale_canvas.FillRectInt(kDraggedTabBorderColor, 0, 188 scale_canvas.FillRectInt(kDraggedTabBorderColor, 0,
195 attached_tab_size_.height() - kDragFrameBorderSize, 189 attached_tab_size_.height() - kDragFrameBorderSize,
196 ps.cx, ps.cy - attached_tab_size_.height()); 190 ps.width(), ps.height() - attached_tab_size_.height());
197 int image_x = kDragFrameBorderSize; 191 int image_x = kDragFrameBorderSize;
198 int image_y = attached_tab_size_.height(); 192 int image_y = attached_tab_size_.height();
199 int image_w = ps.cx - kTwiceDragFrameBorderSize; 193 int image_w = ps.width() - kTwiceDragFrameBorderSize;
200 int image_h = 194 int image_h =
201 ps.cy - kTwiceDragFrameBorderSize - attached_tab_size_.height(); 195 ps.height() - kTwiceDragFrameBorderSize - attached_tab_size_.height();
202 scale_canvas.FillRectInt(SK_ColorBLACK, image_x, image_y, image_w, image_h); 196 scale_canvas.FillRectInt(SK_ColorBLACK, image_x, image_y, image_w, image_h);
203 photobooth_->PaintScreenshotIntoCanvas( 197 photobooth_->PaintScreenshotIntoCanvas(
204 &scale_canvas, 198 &scale_canvas,
205 gfx::Rect(image_x, image_y, image_w, image_h)); 199 gfx::Rect(image_x, image_y, image_w, image_h));
206 renderer_->ProcessPaint(&scale_canvas); 200 renderer_->ProcessPaint(&scale_canvas);
207 201
208 SkIRect subset; 202 SkIRect subset;
209 subset.set(0, 0, ps.cx, ps.cy); 203 subset.set(0, 0, ps.width(), ps.height());
210 SkBitmap mipmap = scale_canvas.ExtractBitmap(); 204 SkBitmap mipmap = scale_canvas.ExtractBitmap();
211 mipmap.buildMipMap(true); 205 mipmap.buildMipMap(true);
212 206
213 SkShader* bitmap_shader = 207 SkShader* bitmap_shader =
214 SkShader::CreateBitmapShader(mipmap, SkShader::kClamp_TileMode, 208 SkShader::CreateBitmapShader(mipmap, SkShader::kClamp_TileMode,
215 SkShader::kClamp_TileMode); 209 SkShader::kClamp_TileMode);
216 210
217 SkMatrix shader_scale; 211 SkMatrix shader_scale;
218 shader_scale.setScale(kScalingFactor, kScalingFactor); 212 shader_scale.setScale(kScalingFactor, kScalingFactor);
219 bitmap_shader->setLocalMatrix(shader_scale); 213 bitmap_shader->setLocalMatrix(shader_scale);
220 214
221 SkPaint paint; 215 SkPaint paint;
222 paint.setShader(bitmap_shader); 216 paint.setShader(bitmap_shader);
223 paint.setAntiAlias(true); 217 paint.setAntiAlias(true);
224 bitmap_shader->unref(); 218 bitmap_shader->unref();
225 219
226 SkRect rc; 220 SkRect rc;
227 rc.fLeft = 0; 221 rc.fLeft = 0;
228 rc.fTop = 0; 222 rc.fTop = 0;
229 rc.fRight = SkIntToScalar(ps.cx); 223 rc.fRight = SkIntToScalar(ps.width());
230 rc.fBottom = SkIntToScalar(ps.cy); 224 rc.fBottom = SkIntToScalar(ps.height());
231 canvas->drawRect(rc, paint); 225 canvas->drawRect(rc, paint);
232 } 226 }
233 227
234 void DraggedTabView::ResizeContainer() { 228 void DraggedTabView::ResizeContainer() {
235 CSize ps; 229 gfx::Size ps = GetPreferredSize();
236 GetPreferredSize(&ps); 230 SetWindowPos(container_->GetHWND(), HWND_TOPMOST, 0, 0,
237 SetWindowPos(container_->GetHWND(), HWND_TOPMOST, 0, 0, ScaleValue(ps.cx), 231 ScaleValue(ps.width()), ScaleValue(ps.height()),
238 ScaleValue(ps.cy), SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE); 232 SWP_NOMOVE | SWP_NOZORDER | SWP_NOACTIVATE);
239 } 233 }
240 234
241 int DraggedTabView::ScaleValue(int value) { 235 int DraggedTabView::ScaleValue(int value) {
242 return attached_ ? value : static_cast<int>(value * kScalingFactor); 236 return attached_ ? value : static_cast<int>(value * kScalingFactor);
243 } 237 }
244 238
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698