diff options
author | Andras Becsi <andras.becsi@digia.com> | 2014-03-18 13:16:26 +0100 |
---|---|---|
committer | Frederik Gladhorn <frederik.gladhorn@digia.com> | 2014-03-20 15:55:39 +0100 |
commit | 3f0f86b0caed75241fa71c95a5d73bc0164348c5 (patch) | |
tree | 92b9fb00f2e9e90b0be2262093876d4f43b6cd13 /chromium/third_party/WebKit/Source/platform/graphics/DecodingImageGenerator.cpp | |
parent | e90d7c4b152c56919d963987e2503f9909a666d2 (diff) |
Update to new stable branch 1750
This also includes an updated ninja and chromium dependencies
needed on Windows.
Change-Id: Icd597d80ed3fa4425933c9f1334c3c2e31291c42
Reviewed-by: Zoltan Arvai <zarvai@inf.u-szeged.hu>
Reviewed-by: Zeno Albisser <zeno.albisser@digia.com>
Diffstat (limited to 'chromium/third_party/WebKit/Source/platform/graphics/DecodingImageGenerator.cpp')
-rw-r--r-- | chromium/third_party/WebKit/Source/platform/graphics/DecodingImageGenerator.cpp | 86 |
1 files changed, 86 insertions, 0 deletions
diff --git a/chromium/third_party/WebKit/Source/platform/graphics/DecodingImageGenerator.cpp b/chromium/third_party/WebKit/Source/platform/graphics/DecodingImageGenerator.cpp new file mode 100644 index 00000000000..55ff319432f --- /dev/null +++ b/chromium/third_party/WebKit/Source/platform/graphics/DecodingImageGenerator.cpp @@ -0,0 +1,86 @@ +/* + * Copyright (C) 2012 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 AND ITS CONTRIBUTORS "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 OR ITS 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 "platform/graphics/DecodingImageGenerator.h" + +#include "SkData.h" +#include "SkImageInfo.h" +#include "platform/PlatformInstrumentation.h" +#include "platform/SharedBuffer.h" +#include "platform/TraceEvent.h" +#include "platform/graphics/ImageFrameGenerator.h" + +namespace WebCore { + +DecodingImageGenerator::DecodingImageGenerator(PassRefPtr<ImageFrameGenerator> frameGenerator, const SkImageInfo& info, size_t index) + : m_frameGenerator(frameGenerator) + , m_imageInfo(info) + , m_frameIndex(index) + , m_generationId(0) +{ +} + +DecodingImageGenerator::~DecodingImageGenerator() +{ +} + +SkData* DecodingImageGenerator::refEncodedData() +{ + // FIXME: If the image has been clipped or scaled, do not return the original + // encoded data, since on playback it will not be known how the clipping/scaling + // was done. + RefPtr<SharedBuffer> buffer = 0; + bool allDataReceived = false; + m_frameGenerator->copyData(&buffer, &allDataReceived); + if (buffer && allDataReceived) { + return SkData::NewWithCopy(buffer->data(), buffer->size()); + } + return 0; +} + +bool DecodingImageGenerator::getInfo(SkImageInfo* info) +{ + *info = m_imageInfo; + return true; +} + +bool DecodingImageGenerator::getPixels(const SkImageInfo& info, void* pixels, size_t rowBytes) +{ + TRACE_EVENT1("webkit", "DecodingImageGenerator::getPixels", "index", static_cast<int>(m_frameIndex)); + + // Implementation doesn't support scaling yet so make sure we're not given + // a different size. + ASSERT(info.fWidth == m_imageInfo.fWidth); + ASSERT(info.fHeight == m_imageInfo.fHeight); + ASSERT(info.fColorType == m_imageInfo.fColorType); + ASSERT(info.fAlphaType == m_imageInfo.fAlphaType); + PlatformInstrumentation::willDecodeLazyPixelRef(m_generationId); + bool decoded = m_frameGenerator->decodeAndScale(m_imageInfo, m_frameIndex, pixels, rowBytes); + PlatformInstrumentation::didDecodeLazyPixelRef(m_generationId); + return decoded; +} + +} // namespace blink |