OLD | NEW |
1 /* | 1 /* |
2 * Copyright (C) 2009 Apple Inc. | 2 * Copyright (C) 2009 Apple Inc. |
3 * Copyright (C) 2009 Google Inc. | 3 * Copyright (C) 2009 Google Inc. |
4 * All rights reserved. | 4 * All rights reserved. |
5 * | 5 * |
6 * Redistribution and use in source and binary forms, with or without | 6 * Redistribution and use in source and binary forms, with or without |
7 * modification, are permitted provided that the following conditions | 7 * modification, are permitted provided that the following conditions |
8 * are met: | 8 * are met: |
9 * 1. Redistributions of source code must retain the above copyright | 9 * 1. Redistributions of source code must retain the above copyright |
10 * notice, this list of conditions and the following disclaimer. | 10 * notice, this list of conditions and the following disclaimer. |
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
122 static Image* mediaOverlayPlay = platformResource("mediaplayerOverlayPlay"); | 122 static Image* mediaOverlayPlay = platformResource("mediaplayerOverlayPlay"); |
123 return paintMediaButton(paintInfo.context, rect, mediaOverlayPlay); | 123 return paintMediaButton(paintInfo.context, rect, mediaOverlayPlay); |
124 } | 124 } |
125 | 125 |
126 static Image* getMediaSliderThumb() | 126 static Image* getMediaSliderThumb() |
127 { | 127 { |
128 static Image* mediaSliderThumb = platformResource("mediaplayerSliderThumb"); | 128 static Image* mediaSliderThumb = platformResource("mediaplayerSliderThumb"); |
129 return mediaSliderThumb; | 129 return mediaSliderThumb; |
130 } | 130 } |
131 | 131 |
132 static void paintRoundedSliderBackground(const IntRect& rect, const RenderStyle*
style, GraphicsContext* context) | 132 static void paintRoundedSliderBackground(const IntRect& rect, const RenderStyle&
, GraphicsContext* context) |
133 { | 133 { |
134 int borderRadius = rect.height() / 2; | 134 int borderRadius = rect.height() / 2; |
135 IntSize radii(borderRadius, borderRadius); | 135 IntSize radii(borderRadius, borderRadius); |
136 Color sliderBackgroundColor = Color(11, 11, 11); | 136 Color sliderBackgroundColor = Color(11, 11, 11); |
137 context->fillRoundedRect(rect, radii, radii, radii, radii, sliderBackgroundC
olor); | 137 context->fillRoundedRect(rect, radii, radii, radii, radii, sliderBackgroundC
olor); |
138 } | 138 } |
139 | 139 |
140 static void paintSliderRangeHighlight(const IntRect& rect, const RenderStyle* st
yle, GraphicsContext* context, int startPosition, int endPosition, Color startCo
lor, Color endColor) | 140 static void paintSliderRangeHighlight(const IntRect& rect, const RenderStyle& st
yle, GraphicsContext* context, int startPosition, int endPosition, Color startCo
lor, Color endColor) |
141 { | 141 { |
142 // Calculate border radius; need to avoid being smaller than half the slider
height | 142 // Calculate border radius; need to avoid being smaller than half the slider
height |
143 // because of https://bugs.webkit.org/show_bug.cgi?id=30143. | 143 // because of https://bugs.webkit.org/show_bug.cgi?id=30143. |
144 int borderRadius = rect.height() / 2; | 144 int borderRadius = rect.height() / 2; |
145 IntSize radii(borderRadius, borderRadius); | 145 IntSize radii(borderRadius, borderRadius); |
146 | 146 |
147 // Calculate highlight rectangle and edge dimensions. | 147 // Calculate highlight rectangle and edge dimensions. |
148 int startOffset = startPosition; | 148 int startOffset = startPosition; |
149 int endOffset = rect.width() - endPosition; | 149 int endOffset = rect.width() - endPosition; |
150 int rangeWidth = endPosition - startPosition; | 150 int rangeWidth = endPosition - startPosition; |
(...skipping 41 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
192 } | 192 } |
193 | 193 |
194 const int mediaSliderThumbWidth = 32; | 194 const int mediaSliderThumbWidth = 32; |
195 | 195 |
196 static bool paintMediaSlider(RenderObject* object, const PaintInfo& paintInfo, c
onst IntRect& rect) | 196 static bool paintMediaSlider(RenderObject* object, const PaintInfo& paintInfo, c
onst IntRect& rect) |
197 { | 197 { |
198 HTMLMediaElement* mediaElement = toParentMediaElement(object); | 198 HTMLMediaElement* mediaElement = toParentMediaElement(object); |
199 if (!mediaElement) | 199 if (!mediaElement) |
200 return false; | 200 return false; |
201 | 201 |
202 RenderStyle* style = object->style(); | 202 const RenderStyle& style = object->styleRef(); |
203 GraphicsContext* context = paintInfo.context; | 203 GraphicsContext* context = paintInfo.context; |
204 | 204 |
205 paintRoundedSliderBackground(rect, style, context); | 205 paintRoundedSliderBackground(rect, style, context); |
206 | 206 |
207 // Draw the buffered range. Since the element may have multiple buffered ran
ges and it'd be | 207 // Draw the buffered range. Since the element may have multiple buffered ran
ges and it'd be |
208 // distracting/'busy' to show all of them, show only the buffered range cont
aining the current play head. | 208 // distracting/'busy' to show all of them, show only the buffered range cont
aining the current play head. |
209 RefPtrWillBeRawPtr<TimeRanges> bufferedTimeRanges = mediaElement->buffered()
; | 209 RefPtrWillBeRawPtr<TimeRanges> bufferedTimeRanges = mediaElement->buffered()
; |
210 float duration = mediaElement->duration(); | 210 float duration = mediaElement->duration(); |
211 float currentTime = mediaElement->currentTime(); | 211 float currentTime = mediaElement->currentTime(); |
212 if (std::isnan(duration) || std::isinf(duration) || !duration || std::isnan(
currentTime)) | 212 if (std::isnan(duration) || std::isinf(duration) || !duration || std::isnan(
currentTime)) |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
263 | 263 |
264 const int mediaVolumeSliderThumbWidth = 24; | 264 const int mediaVolumeSliderThumbWidth = 24; |
265 | 265 |
266 static bool paintMediaVolumeSlider(RenderObject* object, const PaintInfo& paintI
nfo, const IntRect& rect) | 266 static bool paintMediaVolumeSlider(RenderObject* object, const PaintInfo& paintI
nfo, const IntRect& rect) |
267 { | 267 { |
268 HTMLMediaElement* mediaElement = toParentMediaElement(object); | 268 HTMLMediaElement* mediaElement = toParentMediaElement(object); |
269 if (!mediaElement) | 269 if (!mediaElement) |
270 return false; | 270 return false; |
271 | 271 |
272 GraphicsContext* context = paintInfo.context; | 272 GraphicsContext* context = paintInfo.context; |
273 RenderStyle* style = object->style(); | 273 const RenderStyle& style = object->styleRef(); |
274 | 274 |
275 paintRoundedSliderBackground(rect, style, context); | 275 paintRoundedSliderBackground(rect, style, context); |
276 | 276 |
277 // Calculate volume position for white background rectangle. | 277 // Calculate volume position for white background rectangle. |
278 float volume = mediaElement->volume(); | 278 float volume = mediaElement->volume(); |
279 if (std::isnan(volume) || volume < 0) | 279 if (std::isnan(volume) || volume < 0) |
280 return true; | 280 return true; |
281 if (volume > 1) | 281 if (volume > 1) |
282 volume = 1; | 282 volume = 1; |
283 if (!hasSource(mediaElement) || !mediaElement->hasAudio() || mediaElement->m
uted()) | 283 if (!hasSource(mediaElement) || !mediaElement->hasAudio() || mediaElement->m
uted()) |
284 volume = 0; | 284 volume = 0; |
285 | 285 |
286 // Calculate the position relative to the center of the thumb. | 286 // Calculate the position relative to the center of the thumb. |
287 float fillWidth = 0; | 287 float fillWidth = 0; |
288 if (volume > 0) { | 288 if (volume > 0) { |
289 float thumbCenter = mediaVolumeSliderThumbWidth / 2; | 289 float thumbCenter = mediaVolumeSliderThumbWidth / 2; |
290 float zoomLevel = style->effectiveZoom(); | 290 float zoomLevel = style.effectiveZoom(); |
291 float positionWidth = volume * (rect.width() - (zoomLevel * thumbCenter)
); | 291 float positionWidth = volume * (rect.width() - (zoomLevel * thumbCenter)
); |
292 fillWidth = positionWidth + (zoomLevel * thumbCenter / 2); | 292 fillWidth = positionWidth + (zoomLevel * thumbCenter / 2); |
293 } | 293 } |
294 | 294 |
295 Color startColor = Color(195, 195, 195); | 295 Color startColor = Color(195, 195, 195); |
296 Color endColor = Color(217, 217, 217); | 296 Color endColor = Color(217, 217, 217); |
297 | 297 |
298 paintSliderRangeHighlight(rect, style, context, 0.0, fillWidth, startColor,
endColor); | 298 paintSliderRangeHighlight(rect, style, context, 0.0, fillWidth, startColor,
endColor); |
299 | 299 |
300 return true; | 300 return true; |
(...skipping 107 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
408 case MediaFullScreenVolumeSliderThumb: | 408 case MediaFullScreenVolumeSliderThumb: |
409 ASSERT_NOT_REACHED(); | 409 ASSERT_NOT_REACHED(); |
410 break; | 410 break; |
411 } | 411 } |
412 return false; | 412 return false; |
413 } | 413 } |
414 | 414 |
415 const int mediaSliderThumbHeight = 24; | 415 const int mediaSliderThumbHeight = 24; |
416 const int mediaVolumeSliderThumbHeight = 24; | 416 const int mediaVolumeSliderThumbHeight = 24; |
417 | 417 |
418 void RenderMediaControls::adjustMediaSliderThumbSize(RenderStyle* style) | 418 void RenderMediaControls::adjustMediaSliderThumbSize(RenderStyle& style) |
419 { | 419 { |
420 static Image* mediaSliderThumb = platformResource("mediaplayerSliderThumb"); | 420 static Image* mediaSliderThumb = platformResource("mediaplayerSliderThumb"); |
421 static Image* mediaVolumeSliderThumb = platformResource("mediaplayerVolumeSl
iderThumb"); | 421 static Image* mediaVolumeSliderThumb = platformResource("mediaplayerVolumeSl
iderThumb"); |
422 int width = 0; | 422 int width = 0; |
423 int height = 0; | 423 int height = 0; |
424 | 424 |
425 Image* thumbImage = 0; | 425 Image* thumbImage = 0; |
426 if (style->appearance() == MediaSliderThumbPart) { | 426 if (style.appearance() == MediaSliderThumbPart) { |
427 thumbImage = mediaSliderThumb; | 427 thumbImage = mediaSliderThumb; |
428 width = mediaSliderThumbWidth; | 428 width = mediaSliderThumbWidth; |
429 height = mediaSliderThumbHeight; | 429 height = mediaSliderThumbHeight; |
430 } else if (style->appearance() == MediaVolumeSliderThumbPart) { | 430 } else if (style.appearance() == MediaVolumeSliderThumbPart) { |
431 thumbImage = mediaVolumeSliderThumb; | 431 thumbImage = mediaVolumeSliderThumb; |
432 width = mediaVolumeSliderThumbWidth; | 432 width = mediaVolumeSliderThumbWidth; |
433 height = mediaVolumeSliderThumbHeight; | 433 height = mediaVolumeSliderThumbHeight; |
434 } | 434 } |
435 | 435 |
436 float zoomLevel = style->effectiveZoom(); | 436 float zoomLevel = style.effectiveZoom(); |
437 if (thumbImage) { | 437 if (thumbImage) { |
438 style->setWidth(Length(static_cast<int>(width * zoomLevel), Fixed)); | 438 style.setWidth(Length(static_cast<int>(width * zoomLevel), Fixed)); |
439 style->setHeight(Length(static_cast<int>(height * zoomLevel), Fixed)); | 439 style.setHeight(Length(static_cast<int>(height * zoomLevel), Fixed)); |
440 } | 440 } |
441 } | 441 } |
442 | 442 |
443 static String formatChromiumMediaControlsTime(float time, float duration) | 443 static String formatChromiumMediaControlsTime(float time, float duration) |
444 { | 444 { |
445 if (!std::isfinite(time)) | 445 if (!std::isfinite(time)) |
446 time = 0; | 446 time = 0; |
447 if (!std::isfinite(duration)) | 447 if (!std::isfinite(duration)) |
448 duration = 0; | 448 duration = 0; |
449 int seconds = static_cast<int>(fabsf(time)); | 449 int seconds = static_cast<int>(fabsf(time)); |
(...skipping 18 matching lines...) Expand all Loading... |
468 { | 468 { |
469 return formatChromiumMediaControlsTime(time, time); | 469 return formatChromiumMediaControlsTime(time, time); |
470 } | 470 } |
471 | 471 |
472 String RenderMediaControls::formatMediaControlsCurrentTime(float currentTime, fl
oat duration) | 472 String RenderMediaControls::formatMediaControlsCurrentTime(float currentTime, fl
oat duration) |
473 { | 473 { |
474 return formatChromiumMediaControlsTime(currentTime, duration); | 474 return formatChromiumMediaControlsTime(currentTime, duration); |
475 } | 475 } |
476 | 476 |
477 } // namespace blink | 477 } // namespace blink |
OLD | NEW |