summaryrefslogtreecommitdiffstats
path: root/src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.cpp')
-rw-r--r--src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.cpp306
1 files changed, 0 insertions, 306 deletions
diff --git a/src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.cpp b/src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.cpp
deleted file mode 100644
index 50feb46..0000000
--- a/src/3rdparty/webkit/WebCore/rendering/RenderMediaControlsChromium.cpp
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (C) 2009 Apple Inc.
- * Copyright (C) 2009 Google Inc.
- * All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
- *
- * THIS SOFTWARE IS PROVIDED BY APPLE INC. ``AS IS'' AND ANY
- * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
- * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR
- * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
- * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
- * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
- * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
- * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
- * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
- * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
- */
-
-#include "config.h"
-#include "RenderMediaControlsChromium.h"
-
-#include "Gradient.h"
-#include "GraphicsContext.h"
-#include "HTMLMediaElement.h"
-#include "HTMLNames.h"
-
-namespace WebCore {
-
-#if ENABLE(VIDEO)
-
-typedef WTF::HashMap<const char*, Image*> MediaControlImageMap;
-static MediaControlImageMap* gMediaControlImageMap = 0;
-
-static Image* platformResource(const char* name)
-{
- if (!gMediaControlImageMap)
- gMediaControlImageMap = new MediaControlImageMap();
- if (Image* image = gMediaControlImageMap->get(name))
- return image;
- if (Image* image = Image::loadPlatformResource(name).releaseRef()) {
- gMediaControlImageMap->set(name, image);
- return image;
- }
- ASSERT_NOT_REACHED();
- return 0;
-}
-
-static bool hasSource(const HTMLMediaElement* mediaElement)
-{
- return mediaElement->networkState() != HTMLMediaElement::NETWORK_EMPTY
- && mediaElement->networkState() != HTMLMediaElement::NETWORK_NO_SOURCE;
-}
-
-static bool paintMediaButton(GraphicsContext* context, const IntRect& rect, Image* image)
-{
- IntRect imageRect = image->rect();
- context->drawImage(image, DeviceColorSpace, rect);
- return true;
-}
-
-static bool paintMediaMuteButton(RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- HTMLMediaElement* mediaElement = toParentMediaElement(object);
- if (!mediaElement)
- return false;
-
- static Image* soundFull = platformResource("mediaSoundFull");
- static Image* soundNone = platformResource("mediaSoundNone");
- static Image* soundDisabled = platformResource("mediaSoundDisabled");
-
- if (!hasSource(mediaElement) || !mediaElement->hasAudio())
- return paintMediaButton(paintInfo.context, rect, soundDisabled);
-
- return paintMediaButton(paintInfo.context, rect, mediaElement->muted() ? soundNone: soundFull);
-}
-
-static bool paintMediaPlayButton(RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- HTMLMediaElement* mediaElement = toParentMediaElement(object);
- if (!mediaElement)
- return false;
-
- static Image* mediaPlay = platformResource("mediaPlay");
- static Image* mediaPause = platformResource("mediaPause");
- static Image* mediaPlayDisabled = platformResource("mediaPlayDisabled");
-
- if (!hasSource(mediaElement))
- return paintMediaButton(paintInfo.context, rect, mediaPlayDisabled);
-
- return paintMediaButton(paintInfo.context, rect, mediaElement->paused() ? mediaPlay : mediaPause);
-}
-
-static bool paintMediaSlider(RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- HTMLMediaElement* mediaElement = toParentMediaElement(object);
- if (!mediaElement)
- return false;
-
- RenderStyle* style = object->style();
- GraphicsContext* context = paintInfo.context;
-
- // Draw the border of the time bar.
- // FIXME: this should be a rounded rect but need to fix GraphicsContextSkia first.
- // https://bugs.webkit.org/show_bug.cgi?id=30143
- context->save();
- context->setShouldAntialias(true);
- context->setStrokeStyle(SolidStroke);
- context->setStrokeColor(style->borderLeftColor(), DeviceColorSpace);
- context->setStrokeThickness(style->borderLeftWidth());
- context->setFillColor(style->backgroundColor(), DeviceColorSpace);
- context->drawRect(rect);
- context->restore();
-
- // Draw the buffered ranges.
- // FIXME: Draw multiple ranges if there are multiple buffered ranges.
- IntRect bufferedRect = rect;
- bufferedRect.inflate(-style->borderLeftWidth());
- bufferedRect.setWidth((bufferedRect.width() * mediaElement->percentLoaded()));
-
- // Don't bother drawing an empty area.
- if (!bufferedRect.isEmpty()) {
- IntPoint sliderTopLeft = bufferedRect.location();
- IntPoint sliderTopRight = sliderTopLeft;
- sliderTopRight.move(0, bufferedRect.height());
-
- RefPtr<Gradient> gradient = Gradient::create(sliderTopLeft, sliderTopRight);
- Color startColor = object->style()->color();
- gradient->addColorStop(0.0, startColor);
- gradient->addColorStop(1.0, Color(startColor.red() / 2, startColor.green() / 2, startColor.blue() / 2, startColor.alpha()));
-
- context->save();
- context->setStrokeStyle(NoStroke);
- context->setFillGradient(gradient);
- context->fillRect(bufferedRect);
- context->restore();
- }
-
- return true;
-}
-
-static bool paintMediaSliderThumb(RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- if (!object->parent()->isSlider())
- return false;
-
- HTMLMediaElement* mediaElement = toParentMediaElement(object->parent());
- if (!mediaElement)
- return false;
-
- if (!hasSource(mediaElement))
- return true;
-
- static Image* mediaSliderThumb = platformResource("mediaSliderThumb");
- return paintMediaButton(paintInfo.context, rect, mediaSliderThumb);
-}
-
-static bool paintMediaVolumeSlider(RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- HTMLMediaElement* mediaElement = toParentMediaElement(object);
- if (!mediaElement)
- return false;
-
- GraphicsContext* context = paintInfo.context;
- Color originalColor = context->strokeColor();
- if (originalColor != Color::white)
- context->setStrokeColor(Color::white, DeviceColorSpace);
-
- int x = rect.x() + rect.width() / 2;
- context->drawLine(IntPoint(x, rect.y()), IntPoint(x, rect.y() + rect.height()));
-
- if (originalColor != Color::white)
- context->setStrokeColor(originalColor, DeviceColorSpace);
- return true;
-}
-
-static bool paintMediaVolumeSliderThumb(RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- if (!object->parent()->isSlider())
- return false;
-
- static Image* mediaVolumeSliderThumb = platformResource("mediaVolumeSliderThumb");
- return paintMediaButton(paintInfo.context, rect, mediaVolumeSliderThumb);
-}
-
-static bool paintMediaTimelineContainer(RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- HTMLMediaElement* mediaElement = toParentMediaElement(object);
- if (!mediaElement)
- return false;
-
- if (!rect.isEmpty()) {
- GraphicsContext* context = paintInfo.context;
- Color originalColor = context->strokeColor();
- float originalThickness = context->strokeThickness();
- StrokeStyle originalStyle = context->strokeStyle();
-
- context->setStrokeStyle(SolidStroke);
-
- // Draw the left border using CSS defined width and color.
- context->setStrokeThickness(object->style()->borderLeftWidth());
- context->setStrokeColor(object->style()->borderLeftColor().rgb(), DeviceColorSpace);
- context->drawLine(IntPoint(rect.x() + 1, rect.y()),
- IntPoint(rect.x() + 1, rect.y() + rect.height()));
-
- // Draw the right border using CSS defined width and color.
- context->setStrokeThickness(object->style()->borderRightWidth());
- context->setStrokeColor(object->style()->borderRightColor().rgb(), DeviceColorSpace);
- context->drawLine(IntPoint(rect.x() + rect.width() - 1, rect.y()),
- IntPoint(rect.x() + rect.width() - 1, rect.y() + rect.height()));
-
- context->setStrokeColor(originalColor, DeviceColorSpace);
- context->setStrokeThickness(originalThickness);
- context->setStrokeStyle(originalStyle);
- }
- return true;
-}
-
-bool RenderMediaControlsChromium::shouldRenderMediaControlPart(ControlPart part, Element* e)
-{
- UNUSED_PARAM(e);
-
- switch (part) {
- case MediaMuteButtonPart:
- case MediaPlayButtonPart:
- case MediaSliderPart:
- case MediaSliderThumbPart:
- case MediaVolumeSliderContainerPart:
- case MediaVolumeSliderPart:
- case MediaVolumeSliderThumbPart:
- case MediaControlsBackgroundPart:
- case MediaCurrentTimePart:
- case MediaTimeRemainingPart:
- return true;
- default:
- ;
- }
- return false;
-}
-
-bool RenderMediaControlsChromium::paintMediaControlsPart(MediaControlElementType part, RenderObject* object, const RenderObject::PaintInfo& paintInfo, const IntRect& rect)
-{
- switch (part) {
- case MediaMuteButton:
- case MediaUnMuteButton:
- return paintMediaMuteButton(object, paintInfo, rect);
- case MediaPauseButton:
- case MediaPlayButton:
- return paintMediaPlayButton(object, paintInfo, rect);
- case MediaSlider:
- return paintMediaSlider(object, paintInfo, rect);
- case MediaSliderThumb:
- return paintMediaSliderThumb(object, paintInfo, rect);
- case MediaVolumeSlider:
- return paintMediaVolumeSlider(object, paintInfo, rect);
- case MediaVolumeSliderThumb:
- return paintMediaVolumeSliderThumb(object, paintInfo, rect);
- case MediaTimelineContainer:
- return paintMediaTimelineContainer(object, paintInfo, rect);
- case MediaFullscreenButton:
- case MediaSeekBackButton:
- case MediaSeekForwardButton:
- case MediaVolumeSliderContainer:
- case MediaCurrentTimeDisplay:
- case MediaTimeRemainingDisplay:
- case MediaControlsPanel:
- case MediaRewindButton:
- case MediaReturnToRealtimeButton:
- case MediaStatusDisplay:
- case MediaShowClosedCaptionsButton:
- case MediaHideClosedCaptionsButton:
- ASSERT_NOT_REACHED();
- break;
- }
- return false;
-}
-
-void RenderMediaControlsChromium::adjustMediaSliderThumbSize(RenderObject* object)
-{
- static Image* mediaSliderThumb = platformResource("mediaSliderThumb");
- static Image* mediaVolumeSliderThumb = platformResource("mediaVolumeSliderThumb");
-
- Image* thumbImage = 0;
- if (object->style()->appearance() == MediaSliderThumbPart)
- thumbImage = mediaSliderThumb;
- else if (object->style()->appearance() == MediaVolumeSliderThumbPart)
- thumbImage = mediaVolumeSliderThumb;
-
- float zoomLevel = object->style()->effectiveZoom();
- if (thumbImage) {
- object->style()->setWidth(Length(static_cast<int>(thumbImage->width() * zoomLevel), Fixed));
- object->style()->setHeight(Length(static_cast<int>(thumbImage->height() * zoomLevel), Fixed));
- }
-}
-
-#endif // #if ENABLE(VIDEO)
-
-} // namespace WebCore