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

Side by Side Diff: Source/core/rendering/RenderThemeChromiumSkia.cpp

Issue 21430003: Implement interfaces in PaintInfo and make it a class. (Closed) Base URL: https://chromium.googlesource.com/chromium/blink.git@getterPaintInfo01
Patch Set: Fixed Linux compilation (hopefuly Windows too), addressing some reviewer's suggestions. Created 7 years, 4 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
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2007 Apple Inc. 2 * Copyright (C) 2007 Apple Inc.
3 * Copyright (C) 2007 Alp Toker <alp@atoker.com> 3 * Copyright (C) 2007 Alp Toker <alp@atoker.com>
4 * Copyright (C) 2008 Collabora Ltd. 4 * Copyright (C) 2008 Collabora Ltd.
5 * Copyright (C) 2008, 2009 Google Inc. 5 * Copyright (C) 2008, 2009 Google Inc.
6 * 6 *
7 * This library is free software; you can redistribute it and/or 7 * This library is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU Library General Public 8 * modify it under the terms of the GNU Library General Public
9 * License as published by the Free Software Foundation; either 9 * License as published by the Free Software Foundation; either
10 * version 2 of the License, or (at your option) any later version. 10 * version 2 of the License, or (at your option) any later version.
(...skipping 205 matching lines...) Expand 10 before | Expand all | Expand 10 after
216 // Compute an offset between the part renderer and the input renderer. 216 // Compute an offset between the part renderer and the input renderer.
217 LayoutSize offsetFromInputRenderer = -partRenderer->offsetFromAncestorContai ner(inputRenderer); 217 LayoutSize offsetFromInputRenderer = -partRenderer->offsetFromAncestorContai ner(inputRenderer);
218 // Move the rect into partRenderer's coords. 218 // Move the rect into partRenderer's coords.
219 partRect.move(offsetFromInputRenderer); 219 partRect.move(offsetFromInputRenderer);
220 // Account for the local drawing offset. 220 // Account for the local drawing offset.
221 partRect.move(localOffset.x(), localOffset.y()); 221 partRect.move(localOffset.x(), localOffset.y());
222 222
223 return pixelSnappedIntRect(partRect); 223 return pixelSnappedIntRect(partRect);
224 } 224 }
225 225
226 bool RenderThemeChromiumSkia::paintSearchFieldCancelButton(RenderObject* cancelB uttonObject, const PaintInfo& paintInfo, const IntRect& r) 226 bool RenderThemeChromiumSkia::paintSearchFieldCancelButton(RenderObject* cancelB uttonObject, PaintInfo& paintInfo, const IntRect& r)
227 { 227 {
228 // Get the renderer of <input> element. 228 // Get the renderer of <input> element.
229 Node* input = cancelButtonObject->node()->shadowHost(); 229 Node* input = cancelButtonObject->node()->shadowHost();
230 RenderObject* baseRenderer = input ? input->renderer() : cancelButtonObject; 230 RenderObject* baseRenderer = input ? input->renderer() : cancelButtonObject;
231 if (!baseRenderer->isBox()) 231 if (!baseRenderer->isBox())
232 return false; 232 return false;
233 RenderBox* inputRenderBox = toRenderBox(baseRenderer); 233 RenderBox* inputRenderBox = toRenderBox(baseRenderer);
234 LayoutRect inputContentBox = inputRenderBox->contentBoxRect(); 234 LayoutRect inputContentBox = inputRenderBox->contentBoxRect();
235 235
236 // Make sure the scaled button stays square and will fit in its parent's box . 236 // Make sure the scaled button stays square and will fit in its parent's box .
237 LayoutUnit cancelButtonSize = std::min(inputContentBox.width(), std::min<Lay outUnit>(inputContentBox.height(), r.height())); 237 LayoutUnit cancelButtonSize = std::min(inputContentBox.width(), std::min<Lay outUnit>(inputContentBox.height(), r.height()));
238 // Calculate cancel button's coordinates relative to the input element. 238 // Calculate cancel button's coordinates relative to the input element.
239 // Center the button vertically. Round up though, so if it has to be one pi xel off-center, it will 239 // Center the button vertically. Round up though, so if it has to be one pi xel off-center, it will
240 // be one pixel closer to the bottom of the field. This tends to look bette r with the text. 240 // be one pixel closer to the bottom of the field. This tends to look bette r with the text.
241 LayoutRect cancelButtonRect(cancelButtonObject->offsetFromAncestorContainer( inputRenderBox).width(), 241 LayoutRect cancelButtonRect(cancelButtonObject->offsetFromAncestorContainer( inputRenderBox).width(),
242 inputContentBox.y() + (inputContentBox.height() - cancelButtonSize + 1) / 2, 242 inputContentBox.y() + (inputContentBox.height() - cancelButtonSize + 1) / 2,
243 cancelButtonSize, cancelButtonSize); 243 cancelButtonSize, cancelButtonSize);
244 IntRect paintingRect = convertToPaintingRect(inputRenderBox, cancelButtonObj ect, cancelButtonRect, r); 244 IntRect paintingRect = convertToPaintingRect(inputRenderBox, cancelButtonObj ect, cancelButtonRect, r);
245 245
246 static Image* cancelImage = Image::loadPlatformResource("searchCancel").leak Ref(); 246 static Image* cancelImage = Image::loadPlatformResource("searchCancel").leak Ref();
247 static Image* cancelPressedImage = Image::loadPlatformResource("searchCancel Pressed").leakRef(); 247 static Image* cancelPressedImage = Image::loadPlatformResource("searchCancel Pressed").leakRef();
248 paintInfo.context->drawImage(isPressed(cancelButtonObject) ? cancelPressedIm age : cancelImage, paintingRect); 248 paintInfo.getContext()->drawImage(isPressed(cancelButtonObject) ? cancelPres sedImage : cancelImage, paintingRect);
249 return false; 249 return false;
250 } 250 }
251 251
252 void RenderThemeChromiumSkia::adjustSearchFieldDecorationStyle(RenderStyle* styl e, Element*) const 252 void RenderThemeChromiumSkia::adjustSearchFieldDecorationStyle(RenderStyle* styl e, Element*) const
253 { 253 {
254 IntSize emptySize(1, 11); 254 IntSize emptySize(1, 11);
255 style->setWidth(Length(emptySize.width(), Fixed)); 255 style->setWidth(Length(emptySize.width(), Fixed));
256 style->setHeight(Length(emptySize.height(), Fixed)); 256 style->setHeight(Length(emptySize.height(), Fixed));
257 } 257 }
258 258
259 void RenderThemeChromiumSkia::adjustSearchFieldResultsDecorationStyle(RenderStyl e* style, Element*) const 259 void RenderThemeChromiumSkia::adjustSearchFieldResultsDecorationStyle(RenderStyl e* style, Element*) const
260 { 260 {
261 // Scale the decoration size based on the font size 261 // Scale the decoration size based on the font size
262 float fontScale = style->fontSize() / defaultControlFontPixelSize; 262 float fontScale = style->fontSize() / defaultControlFontPixelSize;
263 int magnifierSize = lroundf(std::min(std::max(minSearchFieldResultsDecoratio nSize, defaultSearchFieldResultsDecorationSize * fontScale), 263 int magnifierSize = lroundf(std::min(std::max(minSearchFieldResultsDecoratio nSize, defaultSearchFieldResultsDecorationSize * fontScale),
264 maxSearchFieldResultsDecorationSize)); 264 maxSearchFieldResultsDecorationSize));
265 style->setWidth(Length(magnifierSize, Fixed)); 265 style->setWidth(Length(magnifierSize, Fixed));
266 style->setHeight(Length(magnifierSize, Fixed)); 266 style->setHeight(Length(magnifierSize, Fixed));
267 } 267 }
268 268
269 bool RenderThemeChromiumSkia::paintSearchFieldResultsDecoration(RenderObject* ma gnifierObject, const PaintInfo& paintInfo, const IntRect& r) 269 bool RenderThemeChromiumSkia::paintSearchFieldResultsDecoration(RenderObject* ma gnifierObject, PaintInfo& paintInfo, const IntRect& r)
270 { 270 {
271 // Get the renderer of <input> element. 271 // Get the renderer of <input> element.
272 Node* input = magnifierObject->node()->shadowHost(); 272 Node* input = magnifierObject->node()->shadowHost();
273 RenderObject* baseRenderer = input ? input->renderer() : magnifierObject; 273 RenderObject* baseRenderer = input ? input->renderer() : magnifierObject;
274 if (!baseRenderer->isBox()) 274 if (!baseRenderer->isBox())
275 return false; 275 return false;
276 RenderBox* inputRenderBox = toRenderBox(baseRenderer); 276 RenderBox* inputRenderBox = toRenderBox(baseRenderer);
277 LayoutRect inputContentBox = inputRenderBox->contentBoxRect(); 277 LayoutRect inputContentBox = inputRenderBox->contentBoxRect();
278 278
279 // Make sure the scaled decoration stays square and will fit in its parent's box. 279 // Make sure the scaled decoration stays square and will fit in its parent's box.
280 LayoutUnit magnifierSize = std::min(inputContentBox.width(), std::min<Layout Unit>(inputContentBox.height(), r.height())); 280 LayoutUnit magnifierSize = std::min(inputContentBox.width(), std::min<Layout Unit>(inputContentBox.height(), r.height()));
281 // Calculate decoration's coordinates relative to the input element. 281 // Calculate decoration's coordinates relative to the input element.
282 // Center the decoration vertically. Round up though, so if it has to be on e pixel off-center, it will 282 // Center the decoration vertically. Round up though, so if it has to be on e pixel off-center, it will
283 // be one pixel closer to the bottom of the field. This tends to look bette r with the text. 283 // be one pixel closer to the bottom of the field. This tends to look bette r with the text.
284 LayoutRect magnifierRect(magnifierObject->offsetFromAncestorContainer(inputR enderBox).width(), 284 LayoutRect magnifierRect(magnifierObject->offsetFromAncestorContainer(inputR enderBox).width(),
285 inputContentBox.y() + (inputContentBox.height() - m agnifierSize + 1) / 2, 285 inputContentBox.y() + (inputContentBox.height() - m agnifierSize + 1) / 2,
286 magnifierSize, magnifierSize); 286 magnifierSize, magnifierSize);
287 IntRect paintingRect = convertToPaintingRect(inputRenderBox, magnifierObject , magnifierRect, r); 287 IntRect paintingRect = convertToPaintingRect(inputRenderBox, magnifierObject , magnifierRect, r);
288 288
289 static Image* magnifierImage = Image::loadPlatformResource("searchMagnifier" ).leakRef(); 289 static Image* magnifierImage = Image::loadPlatformResource("searchMagnifier" ).leakRef();
290 paintInfo.context->drawImage(magnifierImage, paintingRect); 290 paintInfo.getContext()->drawImage(magnifierImage, paintingRect);
291 return false; 291 return false;
292 } 292 }
293 293
294 bool RenderThemeChromiumSkia::paintMediaSliderTrack(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect) 294 bool RenderThemeChromiumSkia::paintMediaSliderTrack(RenderObject* object, PaintI nfo& paintInfo, const IntRect& rect)
295 { 295 {
296 return RenderMediaControlsChromium::paintMediaControlsPart(MediaSlider, obje ct, paintInfo, rect); 296 return RenderMediaControlsChromium::paintMediaControlsPart(MediaSlider, obje ct, paintInfo, rect);
297 } 297 }
298 298
299 bool RenderThemeChromiumSkia::paintMediaVolumeSliderTrack(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect) 299 bool RenderThemeChromiumSkia::paintMediaVolumeSliderTrack(RenderObject* object, PaintInfo& paintInfo, const IntRect& rect)
300 { 300 {
301 return RenderMediaControlsChromium::paintMediaControlsPart(MediaVolumeSlider , object, paintInfo, rect); 301 return RenderMediaControlsChromium::paintMediaControlsPart(MediaVolumeSlider , object, paintInfo, rect);
302 } 302 }
303 303
304 void RenderThemeChromiumSkia::adjustSliderThumbSize(RenderStyle* style, Element* ) const 304 void RenderThemeChromiumSkia::adjustSliderThumbSize(RenderStyle* style, Element* ) const
305 { 305 {
306 RenderMediaControlsChromium::adjustMediaSliderThumbSize(style); 306 RenderMediaControlsChromium::adjustMediaSliderThumbSize(style);
307 } 307 }
308 308
309 bool RenderThemeChromiumSkia::paintMediaSliderThumb(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect) 309 bool RenderThemeChromiumSkia::paintMediaSliderThumb(RenderObject* object, PaintI nfo& paintInfo, const IntRect& rect)
310 { 310 {
311 return RenderMediaControlsChromium::paintMediaControlsPart(MediaSliderThumb, object, paintInfo, rect); 311 return RenderMediaControlsChromium::paintMediaControlsPart(MediaSliderThumb, object, paintInfo, rect);
312 } 312 }
313 313
314 bool RenderThemeChromiumSkia::paintMediaToggleClosedCaptionsButton(RenderObject* o, const PaintInfo& paintInfo, const IntRect& r) 314 bool RenderThemeChromiumSkia::paintMediaToggleClosedCaptionsButton(RenderObject* o, PaintInfo& paintInfo, const IntRect& r)
315 { 315 {
316 return RenderMediaControlsChromium::paintMediaControlsPart(MediaShowClosedCa ptionsButton, o, paintInfo, r); 316 return RenderMediaControlsChromium::paintMediaControlsPart(MediaShowClosedCa ptionsButton, o, paintInfo, r);
317 } 317 }
318 318
319 bool RenderThemeChromiumSkia::paintMediaVolumeSliderThumb(RenderObject* object, const PaintInfo& paintInfo, const IntRect& rect) 319 bool RenderThemeChromiumSkia::paintMediaVolumeSliderThumb(RenderObject* object, PaintInfo& paintInfo, const IntRect& rect)
320 { 320 {
321 return RenderMediaControlsChromium::paintMediaControlsPart(MediaVolumeSlider Thumb, object, paintInfo, rect); 321 return RenderMediaControlsChromium::paintMediaControlsPart(MediaVolumeSlider Thumb, object, paintInfo, rect);
322 } 322 }
323 323
324 bool RenderThemeChromiumSkia::paintMediaPlayButton(RenderObject* object, const P aintInfo& paintInfo, const IntRect& rect) 324 bool RenderThemeChromiumSkia::paintMediaPlayButton(RenderObject* object, PaintIn fo& paintInfo, const IntRect& rect)
325 { 325 {
326 return RenderMediaControlsChromium::paintMediaControlsPart(MediaPlayButton, object, paintInfo, rect); 326 return RenderMediaControlsChromium::paintMediaControlsPart(MediaPlayButton, object, paintInfo, rect);
327 } 327 }
328 328
329 bool RenderThemeChromiumSkia::paintMediaMuteButton(RenderObject* object, const P aintInfo& paintInfo, const IntRect& rect) 329 bool RenderThemeChromiumSkia::paintMediaMuteButton(RenderObject* object, PaintIn fo& paintInfo, const IntRect& rect)
330 { 330 {
331 return RenderMediaControlsChromium::paintMediaControlsPart(MediaMuteButton, object, paintInfo, rect); 331 return RenderMediaControlsChromium::paintMediaControlsPart(MediaMuteButton, object, paintInfo, rect);
332 } 332 }
333 333
334 String RenderThemeChromiumSkia::formatMediaControlsTime(float time) const 334 String RenderThemeChromiumSkia::formatMediaControlsTime(float time) const
335 { 335 {
336 return RenderMediaControlsChromium::formatMediaControlsTime(time); 336 return RenderMediaControlsChromium::formatMediaControlsTime(time);
337 } 337 }
338 338
339 String RenderThemeChromiumSkia::formatMediaControlsCurrentTime(float currentTime , float duration) const 339 String RenderThemeChromiumSkia::formatMediaControlsCurrentTime(float currentTime , float duration) const
340 { 340 {
341 return RenderMediaControlsChromium::formatMediaControlsCurrentTime(currentTi me, duration); 341 return RenderMediaControlsChromium::formatMediaControlsCurrentTime(currentTi me, duration);
342 } 342 }
343 343
344 bool RenderThemeChromiumSkia::paintMediaFullscreenButton(RenderObject* object, c onst PaintInfo& paintInfo, const IntRect& rect) 344 bool RenderThemeChromiumSkia::paintMediaFullscreenButton(RenderObject* object, P aintInfo& paintInfo, const IntRect& rect)
345 { 345 {
346 return RenderMediaControlsChromium::paintMediaControlsPart(MediaEnterFullscr eenButton, object, paintInfo, rect); 346 return RenderMediaControlsChromium::paintMediaControlsPart(MediaEnterFullscr eenButton, object, paintInfo, rect);
347 } 347 }
348 348
349 void RenderThemeChromiumSkia::adjustMenuListStyle(RenderStyle* style, WebCore::E lement*) const 349 void RenderThemeChromiumSkia::adjustMenuListStyle(RenderStyle* style, WebCore::E lement*) const
350 { 350 {
351 // Height is locked to auto on all browsers. 351 // Height is locked to auto on all browsers.
352 style->setLineHeight(RenderStyle::initialLineHeight()); 352 style->setLineHeight(RenderStyle::initialLineHeight());
353 } 353 }
354 354
(...skipping 103 matching lines...) Expand 10 before | Expand all | Expand 10 after
458 double RenderThemeChromiumSkia::animationDurationForProgressBar(RenderProgress* renderProgress) const 458 double RenderThemeChromiumSkia::animationDurationForProgressBar(RenderProgress* renderProgress) const
459 { 459 {
460 return progressAnimationInterval * progressAnimationFrmaes * 2; // "2" for b ack and forth 460 return progressAnimationInterval * progressAnimationFrmaes * 2; // "2" for b ack and forth
461 } 461 }
462 462
463 IntRect RenderThemeChromiumSkia::progressValueRectFor(RenderProgress* renderProg ress, const IntRect& rect) const 463 IntRect RenderThemeChromiumSkia::progressValueRectFor(RenderProgress* renderProg ress, const IntRect& rect) const
464 { 464 {
465 return renderProgress->isDeterminate() ? determinateProgressValueRectFor(ren derProgress, rect) : indeterminateProgressValueRectFor(renderProgress, rect); 465 return renderProgress->isDeterminate() ? determinateProgressValueRectFor(ren derProgress, rect) : indeterminateProgressValueRectFor(renderProgress, rect);
466 } 466 }
467 467
468 RenderThemeChromiumSkia::DirectionFlippingScope::DirectionFlippingScope(RenderOb ject* renderer, const PaintInfo& paintInfo, const IntRect& rect) 468 RenderThemeChromiumSkia::DirectionFlippingScope::DirectionFlippingScope(RenderOb ject* renderer, PaintInfo& paintInfo, const IntRect& rect)
469 : m_needsFlipping(!renderer->style()->isLeftToRightDirection()) 469 : m_needsFlipping(!renderer->style()->isLeftToRightDirection())
470 , m_paintInfo(paintInfo) 470 , m_paintInfo(paintInfo)
471 { 471 {
472 if (!m_needsFlipping) 472 if (!m_needsFlipping)
473 return; 473 return;
474 m_paintInfo.context->save(); 474 m_paintInfo.getContext()->save();
475 m_paintInfo.context->translate(2 * rect.x() + rect.width(), 0); 475 m_paintInfo.getContext()->translate(2 * rect.x() + rect.width(), 0);
476 m_paintInfo.context->scale(FloatSize(-1, 1)); 476 m_paintInfo.getContext()->scale(FloatSize(-1, 1));
477 } 477 }
478 478
479 RenderThemeChromiumSkia::DirectionFlippingScope::~DirectionFlippingScope() 479 RenderThemeChromiumSkia::DirectionFlippingScope::~DirectionFlippingScope()
480 { 480 {
481 if (!m_needsFlipping) 481 if (!m_needsFlipping)
482 return; 482 return;
483 m_paintInfo.context->restore(); 483 m_paintInfo.getContext()->restore();
484 } 484 }
485 485
486 } // namespace WebCore 486 } // namespace WebCore
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698