Get rid of skia
authorbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 7 Apr 2013 01:32:53 +0000 (01:32 +0000)
committerbenjamin@webkit.org <benjamin@webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Sun, 7 Apr 2013 01:32:53 +0000 (01:32 +0000)
https://bugs.webkit.org/show_bug.cgi?id=114108

Reviewed by Anders Carlsson.

* platform/graphics/filters/skia/*: Removed.
* platform/graphics/skia/*: Removed.
* platform/image-decoders/skia/*: Removed.
* platform/image-encoders/skia/*: Removed.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@147864 268f45cc-cd09-0410-ab3c-d52691b4dbfc

53 files changed:
Source/WebCore/ChangeLog
Source/WebCore/platform/graphics/filters/skia/DropShadowImageFilter.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/DropShadowImageFilter.h [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEBlendSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEColorMatrixSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEComponentTransferSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FECompositeSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEConvolveMatrixSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEDisplacementMapSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEGaussianBlurSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FELightingSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEMorphologySkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/FEOffsetSkia.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp [deleted file]
Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.h [deleted file]
Source/WebCore/platform/graphics/skia/FloatPointSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/FloatRectSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/FontCustomPlatformData.cpp [deleted file]
Source/WebCore/platform/graphics/skia/FontCustomPlatformData.h [deleted file]
Source/WebCore/platform/graphics/skia/FontSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/GlyphPageTreeNodeSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/GradientSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/GraphicsContext3DSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/ImageSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/IntPointSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/IntRectSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/MemoryInstrumentationSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/MemoryInstrumentationSkia.h [deleted file]
Source/WebCore/platform/graphics/skia/NativeImageSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/NativeImageSkia.h [deleted file]
Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.h [deleted file]
Source/WebCore/platform/graphics/skia/PathSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/PatternSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/PlatformContextSkia.h [deleted file]
Source/WebCore/platform/graphics/skia/PlatformGraphics.h [deleted file]
Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp [deleted file]
Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp [deleted file]
Source/WebCore/platform/graphics/skia/SkiaFontWin.h [deleted file]
Source/WebCore/platform/graphics/skia/SkiaUtils.cpp [deleted file]
Source/WebCore/platform/graphics/skia/SkiaUtils.h [deleted file]
Source/WebCore/platform/graphics/skia/TransformationMatrixSkia.cpp [deleted file]
Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp [deleted file]
Source/WebCore/platform/image-encoders/skia/JPEGImageEncoder.cpp [deleted file]
Source/WebCore/platform/image-encoders/skia/JPEGImageEncoder.h [deleted file]
Source/WebCore/platform/image-encoders/skia/PNGImageEncoder.cpp [deleted file]
Source/WebCore/platform/image-encoders/skia/PNGImageEncoder.h [deleted file]
Source/WebCore/platform/image-encoders/skia/WEBPImageEncoder.cpp [deleted file]
Source/WebCore/platform/image-encoders/skia/WEBPImageEncoder.h [deleted file]

index a2fd99c..1c138c0 100644 (file)
@@ -1,5 +1,17 @@
 2013-04-06  Benjamin Poulain  <benjamin@webkit.org>
 
+        Get rid of skia
+        https://bugs.webkit.org/show_bug.cgi?id=114108
+
+        Reviewed by Anders Carlsson.
+
+        * platform/graphics/filters/skia/*: Removed.
+        * platform/graphics/skia/*: Removed.
+        * platform/image-decoders/skia/*: Removed.
+        * platform/image-encoders/skia/*: Removed.
+
+2013-04-06  Benjamin Poulain  <benjamin@webkit.org>
+
         Remove the chromium code from platform/graphics/mac
         https://bugs.webkit.org/show_bug.cgi?id=114107
 
diff --git a/Source/WebCore/platform/graphics/filters/skia/DropShadowImageFilter.cpp b/Source/WebCore/platform/graphics/filters/skia/DropShadowImageFilter.cpp
deleted file mode 100644 (file)
index 45e2bdb..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * 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 "DropShadowImageFilter.h"
-
-#include "SkBitmap.h"
-#include "SkBlurImageFilter.h"
-#include "SkCanvas.h"
-#include "SkColorMatrixFilter.h"
-#include "SkDevice.h"
-#include "SkFlattenableBuffers.h"
-
-namespace WebCore {
-
-DropShadowImageFilter::DropShadowImageFilter(SkScalar dx, SkScalar dy, SkScalar sigma, SkColor color, SkImageFilter* input)
-    : SkImageFilter(input)
-    , m_dx(dx)
-    , m_dy(dy)
-    , m_sigma(sigma)
-    , m_color(color)
-{
-}
-
-DropShadowImageFilter::DropShadowImageFilter(SkFlattenableReadBuffer& buffer) : SkImageFilter(buffer)
-{
-    m_dx = buffer.readScalar();
-    m_dy = buffer.readScalar();
-    m_sigma = buffer.readScalar();
-    m_color = buffer.readColor();
-}
-
-void DropShadowImageFilter::flatten(SkFlattenableWriteBuffer& buffer) const
-{
-    buffer.writeScalar(m_dx);
-    buffer.writeScalar(m_dy);
-    buffer.writeScalar(m_sigma);
-    buffer.writeColor(m_color);
-}
-
-bool DropShadowImageFilter::onFilterImage(Proxy* proxy, const SkBitmap& source, const SkMatrix& matrix, SkBitmap* result, SkIPoint* loc)
-{
-    SkBitmap src = this->getInputResult(0, proxy, source, matrix, loc);
-    SkAutoTUnref<SkDevice> device(proxy->createDevice(src.width(), src.height()));
-    SkCanvas canvas(device.get());
-
-    SkAutoTUnref<SkImageFilter> blurFilter(new SkBlurImageFilter(m_sigma, m_sigma));
-    SkAutoTUnref<SkColorFilter> colorFilter(SkColorFilter::CreateModeFilter(m_color, SkXfermode::kSrcIn_Mode));
-    SkPaint paint;
-    paint.setImageFilter(blurFilter.get());
-    paint.setColorFilter(colorFilter.get());
-    paint.setXfermodeMode(SkXfermode::kSrcOver_Mode);
-    canvas.saveLayer(0, &paint);
-    canvas.drawBitmap(src, m_dx, -m_dy);
-    canvas.restore();
-    canvas.drawBitmap(src, 0, 0);
-    *result = device.get()->accessBitmap(false);
-    return true;
-}
-
-};
diff --git a/Source/WebCore/platform/graphics/filters/skia/DropShadowImageFilter.h b/Source/WebCore/platform/graphics/filters/skia/DropShadowImageFilter.h
deleted file mode 100644 (file)
index 45b117b..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * 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 "SkColor.h"
-#include "SkImageFilter.h"
-#include "SkScalar.h"
-
-namespace WebCore {
-
-class DropShadowImageFilter : public SkImageFilter {
-public:
-    DropShadowImageFilter(SkScalar dx, SkScalar dy, SkScalar sigma, SkColor, SkImageFilter* input = 0);
-    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(DropShadowImageFilter)
-
-protected:
-    explicit DropShadowImageFilter(SkFlattenableReadBuffer&);
-    virtual void flatten(SkFlattenableWriteBuffer&) const OVERRIDE;
-    virtual bool onFilterImage(Proxy*, const SkBitmap& source, const SkMatrix&, SkBitmap* result, SkIPoint* loc) OVERRIDE;
-
-private:
-    SkScalar m_dx, m_dy, m_sigma;
-    SkColor m_color;
-};
-
-};
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEBlendSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEBlendSkia.cpp
deleted file mode 100644 (file)
index 2e9d828..0000000
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- * 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"
-
-#if ENABLE(FILTERS)
-#include "FEBlend.h"
-
-#include "NativeImageSkia.h"
-#include "SkBitmapSource.h"
-#include "SkBlendImageFilter.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace WebCore {
-
-static SkBlendImageFilter::Mode toSkiaMode(BlendModeType mode)
-{
-    switch (mode) {
-    case FEBLEND_MODE_NORMAL:
-        return SkBlendImageFilter::kNormal_Mode;
-    case FEBLEND_MODE_MULTIPLY:
-        return SkBlendImageFilter::kMultiply_Mode;
-    case FEBLEND_MODE_SCREEN:
-        return SkBlendImageFilter::kScreen_Mode;
-    case FEBLEND_MODE_DARKEN:
-        return SkBlendImageFilter::kDarken_Mode;
-    case FEBLEND_MODE_LIGHTEN:
-        return SkBlendImageFilter::kLighten_Mode;
-    default:
-        return SkBlendImageFilter::kNormal_Mode;
-    }
-}
-
-bool FEBlend::platformApplySkia()
-{
-    // For now, only use the skia implementation for accelerated rendering.
-    if (filter()->renderingMode() != Accelerated)
-        return false;
-
-    FilterEffect* in = inputEffect(0);
-    FilterEffect* in2 = inputEffect(1);
-
-    if (!in || !in2) 
-        return false;
-
-    ImageBuffer* resultImage = createImageBufferResult();
-    if (!resultImage)
-        return false;
-
-    RefPtr<Image> foreground = in->asImageBuffer()->copyImage(DontCopyBackingStore);
-    RefPtr<Image> background = in2->asImageBuffer()->copyImage(DontCopyBackingStore);
-
-    RefPtr<NativeImageSkia> foregroundNativeImage = foreground->nativeImageForCurrentFrame();
-    RefPtr<NativeImageSkia> backgroundNativeImage = background->nativeImageForCurrentFrame();
-
-    if (!foregroundNativeImage || !backgroundNativeImage)
-        return false;
-
-    SkBitmap foregroundBitmap = foregroundNativeImage->bitmap();
-    SkBitmap backgroundBitmap = backgroundNativeImage->bitmap();
-
-    SkAutoTUnref<SkImageFilter> backgroundSource(new SkBitmapSource(backgroundBitmap));
-    SkBlendImageFilter::Mode mode = toSkiaMode(m_mode);
-    SkAutoTUnref<SkImageFilter> blend(new SkBlendImageFilter(mode, backgroundSource));
-    SkPaint paint;
-    paint.setImageFilter(blend);
-    resultImage->context()->platformContext()->drawBitmap(foregroundBitmap, 0, 0, &paint);
-    return true;
-}
-
-SkImageFilter* FEBlend::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> foreground(builder->build(inputEffect(0)));
-    SkAutoTUnref<SkImageFilter> background(builder->build(inputEffect(1)));
-    SkBlendImageFilter::Mode mode = toSkiaMode(m_mode);
-    return new SkBlendImageFilter(mode, background, foreground);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(FILTERS)
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEColorMatrixSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEColorMatrixSkia.cpp
deleted file mode 100644 (file)
index 2919d0c..0000000
+++ /dev/null
@@ -1,146 +0,0 @@
-/*
- * 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"
-#if ENABLE(FILTERS) && USE(SKIA)
-#include "FEColorMatrix.h"
-
-#include "NativeImageSkia.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace WebCore {
-
-static void saturateMatrix(float s, SkScalar matrix[20])
-{
-    matrix[0] = 0.213f + 0.787f * s;
-    matrix[1] = 0.715f - 0.715f * s;
-    matrix[2] = 0.072f - 0.072f * s;
-    matrix[3] = matrix[4] = 0;
-    matrix[5] = 0.213f - 0.213f * s;
-    matrix[6] = 0.715f + 0.285f * s;
-    matrix[7] = 0.072f - 0.072f * s;
-    matrix[8] = matrix[9] = 0;
-    matrix[10] = 0.213f - 0.213f * s;
-    matrix[11] = 0.715f - 0.715f * s;
-    matrix[12] = 0.072f + 0.928f * s;
-    matrix[13] = matrix[14] = 0;
-    matrix[15] = matrix[16] = matrix[17] = 0;
-    matrix[18] = 1;
-    matrix[19] = 0;
-}
-
-static void hueRotateMatrix(float hue, SkScalar matrix[20])
-{
-    float cosHue = cosf(hue * piFloat / 180); 
-    float sinHue = sinf(hue * piFloat / 180); 
-    matrix[0] = 0.213f + cosHue * 0.787f - sinHue * 0.213f;
-    matrix[1] = 0.715f - cosHue * 0.715f - sinHue * 0.715f;
-    matrix[2] = 0.072f - cosHue * 0.072f + sinHue * 0.928f;
-    matrix[3] = matrix[4] = 0;
-    matrix[5] = 0.213f - cosHue * 0.213f + sinHue * 0.143f;
-    matrix[6] = 0.715f + cosHue * 0.285f + sinHue * 0.140f;
-    matrix[7] = 0.072f - cosHue * 0.072f - sinHue * 0.283f;
-    matrix[8] = matrix[9] = 0;
-    matrix[10] = 0.213f - cosHue * 0.213f - sinHue * 0.787f;
-    matrix[11] = 0.715f - cosHue * 0.715f + sinHue * 0.715f;
-    matrix[12] = 0.072f + cosHue * 0.928f + sinHue * 0.072f;
-    matrix[13] = matrix[14] = 0;
-    matrix[15] = matrix[16] = matrix[17] = 0;
-    matrix[18] = 1;
-    matrix[19] = 0;
-}
-
-static void luminanceToAlphaMatrix(SkScalar matrix[20])
-{
-    memset(matrix, 0, 20 * sizeof(SkScalar));
-    matrix[15] = 0.2125f;
-    matrix[16] = 0.7154f;
-    matrix[17] = 0.0721f;
-}
-
-static SkColorFilter* createColorFilter(ColorMatrixType type, const float* values)
-{
-    SkScalar matrix[20];
-    switch (type) {
-    case FECOLORMATRIX_TYPE_UNKNOWN:
-        break;
-    case FECOLORMATRIX_TYPE_MATRIX:
-        for (int i = 0; i < 20; ++i)
-            matrix[i] = values[i];
-
-        matrix[4] *= SkScalar(255);
-        matrix[9] *= SkScalar(255);
-        matrix[14] *= SkScalar(255);
-        matrix[19] *= SkScalar(255);
-        break;
-    case FECOLORMATRIX_TYPE_SATURATE: 
-        saturateMatrix(values[0], matrix);
-        break;
-    case FECOLORMATRIX_TYPE_HUEROTATE:
-        hueRotateMatrix(values[0], matrix);
-        break;
-    case FECOLORMATRIX_TYPE_LUMINANCETOALPHA:
-        luminanceToAlphaMatrix(matrix);
-        break;
-    }
-    return new SkColorMatrixFilter(matrix);
-}
-
-bool FEColorMatrix::platformApplySkia()
-{
-    ImageBuffer* resultImage = createImageBufferResult();
-    if (!resultImage)
-        return false;
-
-    FilterEffect* in = inputEffect(0);
-
-    IntRect imageRect(IntPoint(), absolutePaintRect().size());
-
-    SkAutoTUnref<SkColorFilter> filter(createColorFilter(m_type, m_values.data()));
-
-    RefPtr<Image> image = in->asImageBuffer()->copyImage(DontCopyBackingStore);
-    RefPtr<NativeImageSkia> nativeImage = image->nativeImageForCurrentFrame();
-    if (!nativeImage)
-        return false;
-
-    SkPaint paint;
-    paint.setColorFilter(filter);
-    paint.setXfermodeMode(SkXfermode::kSrc_Mode);
-    resultImage->context()->platformContext()->drawBitmap(nativeImage->bitmap(), 0, 0, &paint);
-    return true;
-}
-
-SkImageFilter* FEColorMatrix::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> input(builder->build(inputEffect(0)));
-    SkAutoTUnref<SkColorFilter> filter(createColorFilter(m_type, m_values.data()));
-    return SkColorFilterImageFilter::Create(filter, input);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(FILTERS) && USE(SKIA)
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEComponentTransferSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEComponentTransferSkia.cpp
deleted file mode 100644 (file)
index 4a40bf8..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * 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"
-
-#if ENABLE(FILTERS)
-#include "FEComponentTransfer.h"
-
-#include "NativeImageSkia.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkTableColorFilter.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace WebCore {
-
-bool FEComponentTransfer::platformApplySkia()
-{
-    FilterEffect* in = inputEffect(0);
-    ImageBuffer* resultImage = createImageBufferResult();
-    if (!resultImage)
-        return false;
-
-    RefPtr<Image> image = in->asImageBuffer()->copyImage(DontCopyBackingStore);
-    RefPtr<NativeImageSkia> nativeImage = image->nativeImageForCurrentFrame();
-    if (!nativeImage)
-        return false;
-
-    unsigned char rValues[256], gValues[256], bValues[256], aValues[256];
-    getValues(rValues, gValues, bValues, aValues);
-
-    SkPaint paint;
-    paint.setColorFilter(SkTableColorFilter::CreateARGB(aValues, rValues, gValues, bValues))->unref();
-    paint.setXfermodeMode(SkXfermode::kSrc_Mode);
-    resultImage->context()->platformContext()->drawBitmap(nativeImage->bitmap(), 0, 0, &paint);
-
-    return true;
-}
-
-SkImageFilter* FEComponentTransfer::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> input(builder->build(inputEffect(0)));
-
-    unsigned char rValues[256], gValues[256], bValues[256], aValues[256];
-    getValues(rValues, gValues, bValues, aValues);
-
-    SkAutoTUnref<SkColorFilter> colorFilter(SkTableColorFilter::CreateARGB(aValues, rValues, gValues, bValues));
-
-    return SkColorFilterImageFilter::Create(colorFilter, input);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(FILTERS)
diff --git a/Source/WebCore/platform/graphics/filters/skia/FECompositeSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FECompositeSkia.cpp
deleted file mode 100644 (file)
index 232488f..0000000
+++ /dev/null
@@ -1,117 +0,0 @@
-/*
- * Copyright (C) 2013 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"
-#if USE(SKIA)
-#include "FEComposite.h"
-
-#include "SkFlattenableBuffers.h"
-#include "SkMorphologyImageFilter.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace {
-
-class CompositeImageFilter : public SkImageFilter {
-public:
-    CompositeImageFilter(SkXfermode::Mode mode, SkImageFilter* background, SkImageFilter* foreground) : SkImageFilter(background, foreground), m_mode(mode)
-    {
-    }
-
-    virtual bool onFilterImage(Proxy* proxy, const SkBitmap& src, const SkMatrix& ctm, SkBitmap* dst, SkIPoint* offset)
-    {
-        SkBitmap background, foreground = src;
-        SkImageFilter* backgroundInput = getInput(0);
-        SkImageFilter* foregroundInput = getInput(1);
-        SkIPoint backgroundOffset = SkIPoint::Make(0, 0), foregroundOffset = SkIPoint::Make(0, 0);
-        if (backgroundInput && !backgroundInput->filterImage(proxy, src, ctm, &background, &backgroundOffset))
-            return false;
-
-        if (foregroundInput && !foregroundInput->filterImage(proxy, src, ctm, &foreground, &foregroundOffset))
-            return false;
-
-        dst->setConfig(background.config(), background.width(), background.height());
-        dst->allocPixels();
-        SkCanvas canvas(*dst);
-        SkPaint paint;
-        paint.setXfermodeMode(SkXfermode::kSrc_Mode);
-        canvas.drawBitmap(background, backgroundOffset.fX, backgroundOffset.fY, &paint);
-        paint.setXfermodeMode(m_mode);
-        canvas.drawBitmap(foreground, foregroundOffset.fX, foregroundOffset.fY, &paint);
-        return true;
-    }
-
-    SK_DECLARE_PUBLIC_FLATTENABLE_DESERIALIZATION_PROCS(CompositeImageFilter)
-
-protected:
-    explicit CompositeImageFilter(SkFlattenableReadBuffer& buffer)
-        : SkImageFilter(buffer)
-    {
-        m_mode = (SkXfermode::Mode) buffer.readInt();
-    }
-
-    virtual void flatten(SkFlattenableWriteBuffer& buffer) const
-    {
-        this->SkImageFilter::flatten(buffer);
-        buffer.writeInt((int) m_mode);
-    }
-
-private:
-    SkXfermode::Mode m_mode;
-};
-
-SkXfermode::Mode toXfermode(WebCore::CompositeOperationType mode)
-{
-    switch (mode) {
-    case WebCore::FECOMPOSITE_OPERATOR_OVER:
-        return SkXfermode::kSrcOver_Mode;
-    case WebCore::FECOMPOSITE_OPERATOR_IN:
-        return SkXfermode::kSrcIn_Mode;
-    case WebCore::FECOMPOSITE_OPERATOR_OUT:
-        return SkXfermode::kDstOut_Mode;
-    case WebCore::FECOMPOSITE_OPERATOR_ATOP:
-        return SkXfermode::kSrcATop_Mode;
-    case WebCore::FECOMPOSITE_OPERATOR_XOR:
-        return SkXfermode::kXor_Mode;
-    default:
-        ASSERT_NOT_REACHED();
-        return SkXfermode::kSrcOver_Mode;
-    }
-}
-
-};
-
-namespace WebCore {
-
-SkImageFilter* FEComposite::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> foreground(builder->build(inputEffect(0)));
-    SkAutoTUnref<SkImageFilter> background(builder->build(inputEffect(1)));
-    if (m_type == FECOMPOSITE_OPERATOR_ARITHMETIC)
-        return 0; // FIXME: Implement arithmetic op
-    return new CompositeImageFilter(toXfermode(m_type), foreground, background);
-}
-
-};
-#endif
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEConvolveMatrixSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEConvolveMatrixSkia.cpp
deleted file mode 100644 (file)
index 95dcf9d..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright (C) 2013 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"
-
-#if ENABLE(FILTERS)
-#include "FEConvolveMatrix.h"
-
-#include "SkMatrixConvolutionImageFilter.h"
-#include "SkiaImageFilterBuilder.h"
-#include <wtf/OwnArrayPtr.h>
-
-namespace {
-
-SkMatrixConvolutionImageFilter::TileMode toSkiaTileMode(WebCore::EdgeModeType edgeMode)
-{
-    switch (edgeMode) {
-    case WebCore::EDGEMODE_DUPLICATE:
-        return SkMatrixConvolutionImageFilter::kClamp_TileMode;
-    case WebCore::EDGEMODE_WRAP:
-        return SkMatrixConvolutionImageFilter::kRepeat_TileMode;
-    case WebCore::EDGEMODE_NONE:
-        return SkMatrixConvolutionImageFilter::kClampToBlack_TileMode;
-    default:
-        return SkMatrixConvolutionImageFilter::kClamp_TileMode;
-    }
-}
-
-}; // unnamed namespace
-
-namespace WebCore {
-
-SkImageFilter* FEConvolveMatrix::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> input(builder->build(inputEffect(0)));
-
-    SkISize kernelSize(SkISize::Make(m_kernelSize.width(), m_kernelSize.height()));
-    int numElements = kernelSize.width() * kernelSize.height();
-    SkScalar gain = SkFloatToScalar(1.0f / m_divisor);
-    SkScalar bias = SkFloatToScalar(m_bias);
-    SkIPoint target = SkIPoint::Make(m_targetOffset.x(), m_targetOffset.y());
-    SkMatrixConvolutionImageFilter::TileMode tileMode = toSkiaTileMode(m_edgeMode);
-    bool convolveAlpha = !m_preserveAlpha;
-    OwnArrayPtr<SkScalar> kernel = adoptArrayPtr(new SkScalar[numElements]);
-    for (int i = 0; i < numElements; ++i)
-        kernel[i] = SkFloatToScalar(m_kernelMatrix[numElements - 1 - i]);
-    return new SkMatrixConvolutionImageFilter(kernelSize, kernel.get(), gain, bias, target, tileMode, convolveAlpha, input);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(FILTERS)
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEDisplacementMapSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEDisplacementMapSkia.cpp
deleted file mode 100644 (file)
index 1be4551..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2013 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"
-
-#if ENABLE(FILTERS)
-#include "FEDisplacementMap.h"
-
-#include "NativeImageSkia.h"
-#include "SkBitmapSource.h"
-#include "SkDisplacementMapEffect.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace WebCore {
-
-static SkDisplacementMapEffect::ChannelSelectorType toSkiaMode(ChannelSelectorType type)
-{
-    switch (type) {
-    case CHANNEL_R:
-        return SkDisplacementMapEffect::kR_ChannelSelectorType;
-    case CHANNEL_G:
-        return SkDisplacementMapEffect::kG_ChannelSelectorType;
-    case CHANNEL_B:
-        return SkDisplacementMapEffect::kB_ChannelSelectorType;
-    case CHANNEL_A:
-        return SkDisplacementMapEffect::kA_ChannelSelectorType;
-    case CHANNEL_UNKNOWN:
-    default:
-        return SkDisplacementMapEffect::kUnknown_ChannelSelectorType;
-    }
-}
-
-bool FEDisplacementMap::platformApplySkia()
-{
-    // For now, only use the skia implementation for accelerated rendering.
-    if (filter()->renderingMode() != Accelerated)
-        return false;
-
-    FilterEffect* in = inputEffect(0);
-    FilterEffect* in2 = inputEffect(1);
-
-    if (!in || !in2) 
-        return false;
-
-    ImageBuffer* resultImage = createImageBufferResult();
-    if (!resultImage)
-        return false;
-
-    RefPtr<Image> color = in->asImageBuffer()->copyImage(DontCopyBackingStore);
-    RefPtr<Image> displ = in2->asImageBuffer()->copyImage(DontCopyBackingStore);
-
-    RefPtr<NativeImageSkia> colorNativeImage = color->nativeImageForCurrentFrame();
-    RefPtr<NativeImageSkia> displNativeImage = displ->nativeImageForCurrentFrame();
-
-    if (!colorNativeImage || !displNativeImage)
-        return false;
-
-    SkBitmap colorBitmap = colorNativeImage->bitmap();
-    SkBitmap displBitmap = displNativeImage->bitmap();
-
-    SkAutoTUnref<SkImageFilter> colorSource(new SkBitmapSource(colorBitmap));
-    SkAutoTUnref<SkImageFilter> displSource(new SkBitmapSource(displBitmap));
-    SkDisplacementMapEffect::ChannelSelectorType typeX = toSkiaMode(m_xChannelSelector);
-    SkDisplacementMapEffect::ChannelSelectorType typeY = toSkiaMode(m_yChannelSelector);
-    SkAutoTUnref<SkImageFilter> displEffect(new SkDisplacementMapEffect(
-        typeX, typeY, SkFloatToScalar(m_scale), displSource, colorSource));
-    SkPaint paint;
-    paint.setImageFilter(displEffect);
-    resultImage->context()->platformContext()->drawBitmap(colorBitmap, 0, 0, &paint);
-    return true;
-}
-
-SkImageFilter* FEDisplacementMap::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkImageFilter* color = builder->build(inputEffect(0));
-    SkImageFilter* displ = builder->build(inputEffect(1));
-    SkDisplacementMapEffect::ChannelSelectorType typeX = toSkiaMode(m_xChannelSelector);
-    SkDisplacementMapEffect::ChannelSelectorType typeY = toSkiaMode(m_yChannelSelector);
-    return new SkDisplacementMapEffect(typeX, typeY, SkFloatToScalar(m_scale), displ, color);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(FILTERS)
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEGaussianBlurSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEGaussianBlurSkia.cpp
deleted file mode 100644 (file)
index bc2b2ed..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Copyright (C) 2011 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"
-#if USE(SKIA)
-#include "FEGaussianBlur.h"
-
-#include "SkBlurImageFilter.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace WebCore {
-
-bool FEGaussianBlur::platformApplySkia()
-{
-    ImageBuffer* resultImage = createImageBufferResult();
-    if (!resultImage)
-        return false;
-
-    FilterEffect* in = inputEffect(0);
-
-    IntRect drawingRegion = drawingRegionOfInputImage(in->absolutePaintRect());
-
-    setIsAlphaImage(in->isAlphaImage());
-
-    float stdX = filter()->applyHorizontalScale(m_stdX);
-    float stdY = filter()->applyVerticalScale(m_stdY);
-    
-    RefPtr<Image> image = in->asImageBuffer()->copyImage(DontCopyBackingStore);
-
-    SkPaint paint;
-    GraphicsContext* dstContext = resultImage->context();
-    PlatformContextSkia* platformContext = dstContext->platformContext();
-    paint.setImageFilter(new SkBlurImageFilter(stdX, stdY))->unref();
-
-    platformContext->saveLayer(0, &paint);
-    paint.setColor(0xFFFFFFFF);
-    dstContext->drawImage(image.get(), ColorSpaceDeviceRGB, drawingRegion.location(), CompositeCopy);
-    platformContext->restoreLayer();
-    return true;
-}
-
-SkImageFilter* FEGaussianBlur::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> input(builder->build(inputEffect(0)));
-    return new SkBlurImageFilter(SkFloatToScalar(m_stdX), SkFloatToScalar(m_stdY), input);
-}
-
-};
-#endif
diff --git a/Source/WebCore/platform/graphics/filters/skia/FELightingSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FELightingSkia.cpp
deleted file mode 100644 (file)
index 3a0b779..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * 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"
-#if USE(SKIA)
-#include "FELighting.h"
-
-#include "DistantLightSource.h"
-#include "NativeImageSkia.h"
-#include "PointLightSource.h"
-#include "SkLightingImageFilter.h"
-#include "SkiaImageFilterBuilder.h"
-#include "SpotLightSource.h"
-
-namespace WebCore {
-
-SkImageFilter* FELighting::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> input(builder ? builder->build(inputEffect(0)) : 0);
-    switch (m_lightSource->type()) {
-    case LS_DISTANT: {
-        DistantLightSource* distantLightSource = static_cast<DistantLightSource*>(m_lightSource.get());
-        float azimuthRad = deg2rad(distantLightSource->azimuth());
-        float elevationRad = deg2rad(distantLightSource->elevation());
-        SkPoint3 direction(cosf(azimuthRad) * cosf(elevationRad),
-                           sinf(azimuthRad) * cosf(elevationRad),
-                           sinf(elevationRad));
-        if (m_specularConstant > 0)
-            return SkLightingImageFilter::CreateDistantLitSpecular(direction, m_lightingColor.rgb(), m_surfaceScale, m_specularConstant, m_specularExponent, input);
-        else
-            return SkLightingImageFilter::CreateDistantLitDiffuse(direction, m_lightingColor.rgb(), m_surfaceScale, m_diffuseConstant, input);
-    }
-    case LS_POINT: {
-        PointLightSource* pointLightSource = static_cast<PointLightSource*>(m_lightSource.get());
-        FloatPoint3D position = pointLightSource->position();
-        SkPoint3 skPosition(position.x(), position.y(), position.z());
-        if (m_specularConstant > 0)
-            return SkLightingImageFilter::CreatePointLitSpecular(skPosition, m_lightingColor.rgb(), m_surfaceScale, m_specularConstant, m_specularExponent, input);
-        else
-            return SkLightingImageFilter::CreatePointLitDiffuse(skPosition, m_lightingColor.rgb(), m_surfaceScale, m_diffuseConstant, input);
-    }
-    case LS_SPOT: {
-        SpotLightSource* spotLightSource = static_cast<SpotLightSource*>(m_lightSource.get());
-        SkPoint3 location(spotLightSource->position().x(), spotLightSource->position().y(), spotLightSource->position().z());
-        SkPoint3 target(spotLightSource->direction().x(), spotLightSource->direction().y(), spotLightSource->direction().z());
-        float specularExponent = spotLightSource->specularExponent();
-        float limitingConeAngle = spotLightSource->limitingConeAngle();
-        if (!limitingConeAngle || limitingConeAngle > 90 || limitingConeAngle < -90)
-            limitingConeAngle = 90;
-        if (m_specularConstant > 0)
-            return SkLightingImageFilter::CreateSpotLitSpecular(location, target, specularExponent, limitingConeAngle, m_lightingColor.rgb(), m_surfaceScale, m_specularConstant, m_specularExponent, input);
-        else
-            return SkLightingImageFilter::CreateSpotLitDiffuse(location, target, specularExponent, limitingConeAngle, m_lightingColor.rgb(), m_surfaceScale, m_diffuseConstant, input);
-    }
-    default:
-        ASSERT_NOT_REACHED();
-        return 0;
-    }
-}
-
-bool FELighting::platformApplySkia()
-{
-    // For now, only use the skia implementation for accelerated rendering.
-    if (filter()->renderingMode() != Accelerated)
-        return false;
-
-    ImageBuffer* resultImage = createImageBufferResult();
-    if (!resultImage)
-        return false;
-
-    FilterEffect* in = inputEffect(0);
-
-    IntRect drawingRegion = drawingRegionOfInputImage(in->absolutePaintRect());
-
-    setIsAlphaImage(in->isAlphaImage());
-
-    RefPtr<Image> image = in->asImageBuffer()->copyImage(DontCopyBackingStore);
-    RefPtr<NativeImageSkia> nativeImage = image->nativeImageForCurrentFrame();
-    if (!nativeImage)
-        return false;
-
-    GraphicsContext* dstContext = resultImage->context();
-
-    SkPaint paint;
-    paint.setImageFilter(createImageFilter(0))->unref();
-    dstContext->platformContext()->drawBitmap(nativeImage->bitmap(), drawingRegion.location().x(), drawingRegion.location().y(), &paint);
-    return true;
-}
-
-};
-#endif
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEMorphologySkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEMorphologySkia.cpp
deleted file mode 100644 (file)
index b2e9f4f..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * 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"
-#if USE(SKIA)
-#include "FEMorphology.h"
-
-#include "SkMorphologyImageFilter.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace WebCore {
-
-bool FEMorphology::platformApplySkia()
-{
-    ImageBuffer* resultImage = createImageBufferResult();
-    if (!resultImage)
-        return false;
-
-    FilterEffect* in = inputEffect(0);
-
-    IntRect drawingRegion = drawingRegionOfInputImage(in->absolutePaintRect());
-
-    setIsAlphaImage(in->isAlphaImage());
-
-    float radiusX = filter()->applyHorizontalScale(m_radiusX);
-    float radiusY = filter()->applyVerticalScale(m_radiusY);
-    
-    RefPtr<Image> image = in->asImageBuffer()->copyImage(DontCopyBackingStore);
-
-    SkPaint paint;
-    GraphicsContext* dstContext = resultImage->context();
-    PlatformContextSkia* platformContext = dstContext->platformContext();
-    if (m_type == FEMORPHOLOGY_OPERATOR_DILATE)
-        paint.setImageFilter(new SkDilateImageFilter(radiusX, radiusY))->unref();
-    else if (m_type == FEMORPHOLOGY_OPERATOR_ERODE)
-        paint.setImageFilter(new SkErodeImageFilter(radiusX, radiusY))->unref();
-
-    platformContext->saveLayer(0, &paint);
-    dstContext->drawImage(image.get(), ColorSpaceDeviceRGB, drawingRegion.location(), CompositeCopy);
-    platformContext->restoreLayer();
-    return true;
-}
-
-SkImageFilter* FEMorphology::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> input(builder->build(inputEffect(0)));
-    SkScalar radiusX = SkFloatToScalar(m_radiusX);
-    SkScalar radiusY = SkFloatToScalar(m_radiusY);
-    if (m_type == FEMORPHOLOGY_OPERATOR_DILATE)
-        return new SkDilateImageFilter(radiusX, radiusY, input);
-    return new SkErodeImageFilter(radiusX, radiusY, input);
-}
-
-};
-#endif
diff --git a/Source/WebCore/platform/graphics/filters/skia/FEOffsetSkia.cpp b/Source/WebCore/platform/graphics/filters/skia/FEOffsetSkia.cpp
deleted file mode 100644 (file)
index 01dec6a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright (C) 2013 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"
-
-#if ENABLE(FILTERS)
-#include "FEOffset.h"
-
-#include "SkOffsetImageFilter.h"
-#include "SkiaImageFilterBuilder.h"
-
-namespace WebCore {
-
-SkImageFilter* FEOffset::createImageFilter(SkiaImageFilterBuilder* builder)
-{
-    SkAutoTUnref<SkImageFilter> input(builder->build(inputEffect(0)));
-    return new SkOffsetImageFilter(SkFloatToScalar(m_dx), SkFloatToScalar(m_dy), input);
-}
-
-} // namespace WebCore
-
-#endif // ENABLE(FILTERS)
diff --git a/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp b/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.cpp
deleted file mode 100644 (file)
index 8975db1..0000000
+++ /dev/null
@@ -1,274 +0,0 @@
-/*
- * 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 "SkiaImageFilterBuilder.h"
-
-#include "DropShadowImageFilter.h"
-#include "FilterEffect.h"
-#include "FilterOperations.h"
-#include "SkBlurImageFilter.h"
-#include "SkColorFilterImageFilter.h"
-#include "SkColorMatrixFilter.h"
-#include "SkMatrix.h"
-
-namespace {
-
-void getBrightnessMatrix(float amount, SkScalar matrix[20])
-{
-    memset(matrix, 0, 20 * sizeof(SkScalar));
-    matrix[0] = matrix[6] = matrix[12] = amount;
-    matrix[18] = 1;
-}
-
-void getContrastMatrix(float amount, SkScalar matrix[20])
-{
-    memset(matrix, 0, 20 * sizeof(SkScalar));
-    matrix[0] = matrix[6] = matrix[12] = amount;
-    matrix[4] = matrix[9] = matrix[14] = (-0.5f * amount + 0.5f) * 255;
-    matrix[18] = 1;
-}
-
-void getSaturateMatrix(float amount, SkScalar matrix[20])
-{
-    // Note, these values are computed to ensure matrixNeedsClamping is false
-    // for amount in [0..1]
-    matrix[0] = 0.213f + 0.787f * amount;
-    matrix[1] = 0.715f - 0.715f * amount;
-    matrix[2] = 1.f - (matrix[0] + matrix[1]);
-    matrix[3] = matrix[4] = 0;
-    matrix[5] = 0.213f - 0.213f * amount;
-    matrix[6] = 0.715f + 0.285f * amount;
-    matrix[7] = 1.f - (matrix[5] + matrix[6]);
-    matrix[8] = matrix[9] = 0;
-    matrix[10] = 0.213f - 0.213f * amount;
-    matrix[11] = 0.715f - 0.715f * amount;
-    matrix[12] = 1.f - (matrix[10] + matrix[11]);
-    matrix[13] = matrix[14] = 0;
-    matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
-    matrix[18] = 1;
-}
-
-void getHueRotateMatrix(float hue, SkScalar matrix[20])
-{
-    float cosHue = cosf(hue * piFloat / 180);
-    float sinHue = sinf(hue * piFloat / 180);
-    matrix[0] = 0.213f + cosHue * 0.787f - sinHue * 0.213f;
-    matrix[1] = 0.715f - cosHue * 0.715f - sinHue * 0.715f;
-    matrix[2] = 0.072f - cosHue * 0.072f + sinHue * 0.928f;
-    matrix[3] = matrix[4] = 0;
-    matrix[5] = 0.213f - cosHue * 0.213f + sinHue * 0.143f;
-    matrix[6] = 0.715f + cosHue * 0.285f + sinHue * 0.140f;
-    matrix[7] = 0.072f - cosHue * 0.072f - sinHue * 0.283f;
-    matrix[8] = matrix[9] = 0;
-    matrix[10] = 0.213f - cosHue * 0.213f - sinHue * 0.787f;
-    matrix[11] = 0.715f - cosHue * 0.715f + sinHue * 0.715f;
-    matrix[12] = 0.072f + cosHue * 0.928f + sinHue * 0.072f;
-    matrix[13] = matrix[14] = 0;
-    matrix[15] = matrix[16] = matrix[17] = 0;
-    matrix[18] = 1;
-    matrix[19] = 0;
-}
-
-void getInvertMatrix(float amount, SkScalar matrix[20])
-{
-    memset(matrix, 0, 20 * sizeof(SkScalar));
-    matrix[0] = matrix[6] = matrix[12] = 1 - 2 * amount;
-    matrix[4] = matrix[9] = matrix[14] = amount * 255;
-    matrix[18] = 1;
-}
-
-void getOpacityMatrix(float amount, SkScalar matrix[20])
-{
-    memset(matrix, 0, 20 * sizeof(SkScalar));
-    matrix[0] = matrix[6] = matrix[12] = 1;
-    matrix[18] = amount;
-}
-
-void getGrayscaleMatrix(float amount, SkScalar matrix[20])
-{
-    // Note, these values are computed to ensure matrixNeedsClamping is false
-    // for amount in [0..1]
-    matrix[0] = 0.2126f + 0.7874f * amount;
-    matrix[1] = 0.7152f - 0.7152f * amount;
-    matrix[2] = 1.f - (matrix[0] + matrix[1]);
-    matrix[3] = matrix[4] = 0;
-
-    matrix[5] = 0.2126f - 0.2126f * amount;
-    matrix[6] = 0.7152f + 0.2848f * amount;
-    matrix[7] = 1.f - (matrix[5] + matrix[6]);
-    matrix[8] = matrix[9] = 0;
-
-    matrix[10] = 0.2126f - 0.2126f * amount;
-    matrix[11] = 0.7152f - 0.7152f * amount;
-    matrix[12] = 1.f - (matrix[10] + matrix[11]);
-    matrix[13] = matrix[14] = 0;
-
-    matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
-    matrix[18] = 1;
-}
-
-void getSepiaMatrix(float amount, SkScalar matrix[20])
-{
-    matrix[0] = 0.393f + 0.607f * amount;
-    matrix[1] = 0.769f - 0.769f * amount;
-    matrix[2] = 0.189f - 0.189f * amount;
-    matrix[3] = matrix[4] = 0;
-
-    matrix[5] = 0.349f - 0.349f * amount;
-    matrix[6] = 0.686f + 0.314f * amount;
-    matrix[7] = 0.168f - 0.168f * amount;
-    matrix[8] = matrix[9] = 0;
-
-    matrix[10] = 0.272f - 0.272f * amount;
-    matrix[11] = 0.534f - 0.534f * amount;
-    matrix[12] = 0.131f + 0.869f * amount;
-    matrix[13] = matrix[14] = 0;
-
-    matrix[15] = matrix[16] = matrix[17] = matrix[19] = 0;
-    matrix[18] = 1;
-}
-
-SkImageFilter* createMatrixImageFilter(SkScalar matrix[20], SkImageFilter* input)
-{
-    SkAutoTUnref<SkColorFilter> colorFilter(new SkColorMatrixFilter(matrix));
-    return SkColorFilterImageFilter::Create(colorFilter, input);
-}
-
-};
-
-namespace WebCore {
-
-SkiaImageFilterBuilder::SkiaImageFilterBuilder()
-{
-}
-
-SkiaImageFilterBuilder::~SkiaImageFilterBuilder()
-{
-    for (FilterBuilderHashMap::iterator it = m_map.begin(); it != m_map.end(); ++it)
-        SkSafeUnref(it->value);
-}
-
-SkImageFilter* SkiaImageFilterBuilder::build(FilterEffect* effect)
-{
-    if (!effect)
-        return 0;
-
-    SkImageFilter* filter = 0;
-    FilterBuilderHashMap::iterator it = m_map.find(effect);
-    if (it != m_map.end())
-        filter = it->value;
-    else if ((filter = effect->createImageFilter(this)))
-        m_map.set(effect, filter);
-    // The hash map has a ref, so we return a new ref for the caller.
-    SkSafeRef(filter);
-    return filter;
-}
-
-SkImageFilter* SkiaImageFilterBuilder::build(const FilterOperations& operations)
-{
-    SkAutoTUnref<SkImageFilter> filter;
-    SkScalar matrix[20];
-    for (size_t i = 0; i < operations.size(); ++i) {
-        const FilterOperation& op = *operations.at(i);
-        switch (op.getOperationType()) {
-        case FilterOperation::REFERENCE: {
-            FilterEffect* filterEffect = static_cast<const ReferenceFilterOperation*>(&op)->filterEffect();
-            // FIXME: hook up parent filter to image source
-            filter.reset(SkiaImageFilterBuilder::build(filterEffect));
-            break;
-        }
-        case FilterOperation::GRAYSCALE: {
-            float amount = static_cast<const BasicColorMatrixFilterOperation*>(&op)->amount();
-            getGrayscaleMatrix(1 - amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::SEPIA: {
-            float amount = static_cast<const BasicColorMatrixFilterOperation*>(&op)->amount();
-            getSepiaMatrix(1 - amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::SATURATE: {
-            float amount = static_cast<const BasicColorMatrixFilterOperation*>(&op)->amount();
-            getSaturateMatrix(amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::HUE_ROTATE: {
-            float amount = static_cast<const BasicColorMatrixFilterOperation*>(&op)->amount();
-            getHueRotateMatrix(amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::INVERT: {
-            float amount = static_cast<const BasicComponentTransferFilterOperation*>(&op)->amount();
-            getInvertMatrix(amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::OPACITY: {
-            float amount = static_cast<const BasicComponentTransferFilterOperation*>(&op)->amount();
-            getOpacityMatrix(amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::BRIGHTNESS: {
-            float amount = static_cast<const BasicComponentTransferFilterOperation*>(&op)->amount();
-            getBrightnessMatrix(amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::CONTRAST: {
-            float amount = static_cast<const BasicComponentTransferFilterOperation*>(&op)->amount();
-            getContrastMatrix(amount, matrix);
-            filter.reset(createMatrixImageFilter(matrix, filter));
-            break;
-        }
-        case FilterOperation::BLUR: {
-            float pixelRadius = static_cast<const BlurFilterOperation*>(&op)->stdDeviation().getFloatValue();
-            filter.reset(new SkBlurImageFilter(pixelRadius, pixelRadius, filter));
-            break;
-        }
-        case FilterOperation::DROP_SHADOW: {
-            const DropShadowFilterOperation* drop = static_cast<const DropShadowFilterOperation*>(&op);
-            filter.reset(new DropShadowImageFilter(SkIntToScalar(drop->x()), SkIntToScalar(drop->y()), SkIntToScalar(drop->stdDeviation()), drop->color().rgb(), filter));
-            break;
-        }
-#if ENABLE(CSS_SHADERS)
-        case FilterOperation::VALIDATED_CUSTOM:
-        case FilterOperation::CUSTOM:
-            // Not supported.
-#endif
-        case FilterOperation::PASSTHROUGH:
-        case FilterOperation::NONE:
-            break;
-        }
-    }
-    return filter.detach();
-}
-
-};
diff --git a/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.h b/Source/WebCore/platform/graphics/filters/skia/SkiaImageFilterBuilder.h
deleted file mode 100644 (file)
index 1c1ca22..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * 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.
- */
-
-#ifndef SkiaImageFilterBuilder_h
-#define SkiaImageFilterBuilder_h
-
-#include <wtf/HashMap.h>
-
-class SkImageFilter;
-
-namespace WebCore {
-class FilterEffect;
-class FilterOperations;
-
-class SkiaImageFilterBuilder {
-public:
-    SkiaImageFilterBuilder();
-    ~SkiaImageFilterBuilder();
-
-    SkImageFilter* build(FilterEffect*);
-    SkImageFilter* build(const FilterOperations&);
-private:
-    typedef HashMap<FilterEffect*, SkImageFilter*> FilterBuilderHashMap;
-    FilterBuilderHashMap m_map;
-};
-
-};
-
-#endif
diff --git a/Source/WebCore/platform/graphics/skia/FloatPointSkia.cpp b/Source/WebCore/platform/graphics/skia/FloatPointSkia.cpp
deleted file mode 100644 (file)
index 054a772..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "FloatPoint.h"
-
-#include "SkPoint.h"
-#include "SkiaUtils.h"
-
-namespace WebCore {
-
-FloatPoint::FloatPoint(const SkPoint& p)
-    : m_x(p.fX)
-    , m_y(p.fY)
-{
-}
-
-FloatPoint::operator SkPoint() const
-{
-    SkPoint p = { WebCoreFloatToSkScalar(m_x), WebCoreFloatToSkScalar(m_y) };
-    return p;
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/FloatRectSkia.cpp b/Source/WebCore/platform/graphics/skia/FloatRectSkia.cpp
deleted file mode 100644 (file)
index 23045ba..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "FloatRect.h"
-
-#include "SkRect.h"
-
-namespace WebCore {
-
-FloatRect::FloatRect(const SkRect& r)
-    : m_location(r.fLeft, r.fTop)
-    , m_size(r.width(), r.height())
-{
-}
-
-FloatRect::operator SkRect() const
-{
-    SkRect rect = { x(), y(), maxX(), maxY() };
-    return rect;
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp b/Source/WebCore/platform/graphics/skia/FontCacheSkia.cpp
deleted file mode 100644 (file)
index a45839a..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (c) 2006, 2007, 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "FontCache.h"
-#include "Font.h"
-#include "FontDescription.h"
-#include "FontFamily.h"
-#include "FontPlatformData.h"
-#include "Logging.h"
-#include "NotImplemented.h"
-#include "SimpleFontData.h"
-#include "SkPaint.h"
-#include "SkTypeface.h"
-#include "SkUtils.h"
-#include <unicode/locid.h>
-#include <wtf/Assertions.h>
-#include <wtf/text/AtomicString.h>
-#include <wtf/text/CString.h>
-
-namespace WebCore {
-
-void FontCache::platformInit()
-{
-}
-
-PassRefPtr<SimpleFontData> FontCache::getFontDataForCharacters(const Font& font, const UChar* characters, int length)
-{
-    icu::Locale locale = icu::Locale::getDefault();
-    FontCache::SimpleFontFamily family;
-    FontCache::getFontFamilyForCharacters(characters, length, locale.getLanguage(), &family);
-    if (family.name.isEmpty())
-        return 0;
-
-    AtomicString atomicFamily(family.name);
-    // Changes weight and/or italic of given FontDescription depends on
-    // the result of fontconfig so that keeping the correct font mapping
-    // of the given characters. See http://crbug.com/32109 for details.
-    bool shouldSetFakeBold = false;
-    bool shouldSetFakeItalic = false;
-    FontDescription description(font.fontDescription());
-    if (family.isBold && description.weight() < FontWeightBold)
-        description.setWeight(FontWeightBold);
-    if (!family.isBold && description.weight() >= FontWeightBold) {
-        shouldSetFakeBold = true;
-        description.setWeight(FontWeightNormal);
-    }
-    if (family.isItalic && description.italic() == FontItalicOff)
-        description.setItalic(FontItalicOn);
-    if (!family.isItalic && description.italic() == FontItalicOn) {
-        shouldSetFakeItalic = true;
-        description.setItalic(FontItalicOff);
-    }
-
-    FontPlatformData* substitutePlatformData = getCachedFontPlatformData(description, atomicFamily, DoNotRetain);
-    if (!substitutePlatformData)
-        return 0;
-    FontPlatformData platformData = FontPlatformData(*substitutePlatformData);
-    platformData.setFakeBold(shouldSetFakeBold);
-    platformData.setFakeItalic(shouldSetFakeItalic);
-    return getCachedFontData(&platformData, DoNotRetain);
-}
-
-PassRefPtr<SimpleFontData> FontCache::getSimilarFontPlatformData(const Font& font)
-{
-    return 0;
-}
-
-PassRefPtr<SimpleFontData> FontCache::getLastResortFallbackFont(const FontDescription& description, ShouldRetain shouldRetain)
-{
-    DEFINE_STATIC_LOCAL(const AtomicString, sansStr, ("Sans", AtomicString::ConstructFromLiteral));
-    DEFINE_STATIC_LOCAL(const AtomicString, serifStr, ("Serif", AtomicString::ConstructFromLiteral));
-    DEFINE_STATIC_LOCAL(const AtomicString, monospaceStr, ("Monospace", AtomicString::ConstructFromLiteral));
-
-    FontPlatformData* fontPlatformData = 0;
-    switch (description.genericFamily()) {
-    case FontDescription::SerifFamily:
-        fontPlatformData = getCachedFontPlatformData(description, serifStr);
-        break;
-    case FontDescription::MonospaceFamily:
-        fontPlatformData = getCachedFontPlatformData(description, monospaceStr);
-        break;
-    case FontDescription::SansSerifFamily:
-    default:
-        fontPlatformData = getCachedFontPlatformData(description, sansStr);
-        break;
-    }
-
-    if (!fontPlatformData) {
-        // we should at least have Arial; this is the SkFontHost_fontconfig last resort fallback
-        DEFINE_STATIC_LOCAL(const AtomicString, arialStr, ("Arial", AtomicString::ConstructFromLiteral));
-        fontPlatformData = getCachedFontPlatformData(description, arialStr);
-    }
-
-    ASSERT(fontPlatformData);
-    return getCachedFontData(fontPlatformData, shouldRetain);
-}
-
-void FontCache::getTraitsInFamily(const AtomicString& familyName,
-                                  Vector<unsigned>& traitsMasks)
-{
-    notImplemented();
-}
-
-PassOwnPtr<FontPlatformData> FontCache::createFontPlatformData(const FontDescription& fontDescription, const AtomicString& family)
-{
-    const char* name = 0;
-    CString s;
-
-    // If we're creating a fallback font (e.g. "-webkit-monospace"), convert the name into
-    // the fallback name (like "monospace") that fontconfig understands.
-    if (!family.length() || family.startsWith("-webkit-")) {
-        static const struct {
-            FontDescription::GenericFamilyType mType;
-            const char* mName;
-        } fontDescriptions[] = {
-            { FontDescription::SerifFamily, "serif" },
-            { FontDescription::SansSerifFamily, "sans-serif" },
-            { FontDescription::MonospaceFamily, "monospace" },
-            { FontDescription::CursiveFamily, "cursive" },
-            { FontDescription::FantasyFamily, "fantasy" }
-        };
-
-        FontDescription::GenericFamilyType type = fontDescription.genericFamily();
-        for (unsigned i = 0; i < SK_ARRAY_COUNT(fontDescriptions); i++) {
-            if (type == fontDescriptions[i].mType) {
-                name = fontDescriptions[i].mName;
-                break;
-            }
-        }
-        if (!name)
-            name = "";
-    } else {
-        // convert the name to utf8
-        s = family.string().utf8();
-        name = s.data();
-    }
-
-    int style = SkTypeface::kNormal;
-    if (fontDescription.weight() >= FontWeightBold)
-        style |= SkTypeface::kBold;
-    if (fontDescription.italic())
-        style |= SkTypeface::kItalic;
-
-    SkTypeface* tf = SkTypeface::CreateFromName(name, static_cast<SkTypeface::Style>(style));
-    if (!tf)
-        return nullptr;
-
-    FontPlatformData* result =
-        new FontPlatformData(tf,
-                             name,
-                             fontDescription.computedSize(),
-                             (style & SkTypeface::kBold) && !tf->isBold(),
-                             (style & SkTypeface::kItalic) && !tf->isItalic(),
-                             fontDescription.orientation());
-    tf->unref();
-    return adoptPtr(result);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/FontCustomPlatformData.cpp b/Source/WebCore/platform/graphics/skia/FontCustomPlatformData.cpp
deleted file mode 100644 (file)
index c2c1b64..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Computer, Inc.
- * Copyright (c) 2007, 2008, 2009, Google Inc. All rights reserved.
- * Copyright (C) 2010 Company 100, Inc.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "FontCustomPlatformData.h"
-
-#if OS(WINDOWS)
-#include "OpenTypeUtilities.h"
-#elif OS(UNIX)
-#include "SkStream.h"
-#endif
-
-#include "FontPlatformData.h"
-#include "LayoutTestSupport.h"
-#include "NotImplemented.h"
-#include "OpenTypeSanitizer.h"
-#include "SharedBuffer.h"
-
-#if OS(WINDOWS)
-#include <objbase.h>
-#include <wtf/text/Base64.h>
-#elif OS(UNIX)
-#include <cstring>
-#endif
-
-namespace WebCore {
-
-FontCustomPlatformData::~FontCustomPlatformData()
-{
-#if OS(WINDOWS)
-    if (m_fontReference)
-        RemoveFontMemResourceEx(m_fontReference);
-#elif OS(UNIX)
-    if (m_fontReference)
-        m_fontReference->unref();
-#endif
-}
-
-FontPlatformData FontCustomPlatformData::fontPlatformData(int size, bool bold, bool italic, FontOrientation orientation,
-                                                          FontWidthVariant, FontRenderingMode mode)
-{
-#if OS(WINDOWS)
-    ASSERT(m_fontReference);
-
-    LOGFONT logFont;
-    // m_name comes from createUniqueFontName, which, in turn, gets
-    // it from base64-encoded uuid (128-bit). So, m_name
-    // can never be longer than LF_FACESIZE (32).
-    if (m_name.length() + 1 >= LF_FACESIZE) {
-        ASSERT_NOT_REACHED();
-        return FontPlatformData();
-    }
-    memcpy(logFont.lfFaceName, m_name.charactersWithNullTermination(),
-           sizeof(logFont.lfFaceName[0]) * (1 + m_name.length()));
-
-    // FIXME: almost identical to FillLogFont in FontCacheWin.cpp.
-    // Need to refactor.
-    logFont.lfHeight = -size;
-    logFont.lfWidth = 0;
-    logFont.lfEscapement = 0;
-    logFont.lfOrientation = 0;
-    logFont.lfUnderline = false;
-    logFont.lfStrikeOut = false;
-    logFont.lfCharSet = DEFAULT_CHARSET;
-    logFont.lfOutPrecision = OUT_TT_ONLY_PRECIS;
-    logFont.lfQuality = isRunningLayoutTest() ?
-                        NONANTIALIASED_QUALITY :
-                        DEFAULT_QUALITY; // Honor user's desktop settings.
-    logFont.lfPitchAndFamily = DEFAULT_PITCH | FF_DONTCARE;
-    logFont.lfItalic = italic;
-    logFont.lfWeight = bold ? FW_BOLD : FW_DONTCARE;
-
-    HFONT hfont = CreateFontIndirect(&logFont);
-    return FontPlatformData(hfont, size, orientation);
-#elif OS(UNIX)
-    ASSERT(m_fontReference);
-    return FontPlatformData(m_fontReference, "", size, bold && !m_fontReference->isBold(), italic && !m_fontReference->isItalic(), orientation);
-#else
-    notImplemented();
-    return FontPlatformData();
-#endif
-}
-
-#if OS(WINDOWS)
-// Creates a unique and unpredictable font name, in order to avoid collisions and to
-// not allow access from CSS.
-static String createUniqueFontName()
-{
-    GUID fontUuid;
-    CoCreateGuid(&fontUuid);
-
-    String fontName = base64Encode(reinterpret_cast<char*>(&fontUuid), sizeof(fontUuid));
-    ASSERT(fontName.length() < LF_FACESIZE);
-    return fontName;
-}
-#endif
-
-#if OS(UNIX)
-class RemoteFontStream : public SkStream {
-public:
-    explicit RemoteFontStream(PassRefPtr<SharedBuffer> buffer)
-        : m_buffer(buffer)
-        , m_offset(0)
-    {
-    }
-
-    virtual ~RemoteFontStream()
-    {
-    }
-
-    virtual bool rewind()
-    {
-        m_offset = 0;
-        return true;
-    }
-
-    virtual size_t read(void* buffer, size_t size)
-    {
-        if (!buffer && !size) {
-            // This is request for the length of the stream.
-            return m_buffer->size();
-        }
-        // This is a request to read bytes or skip bytes (when buffer is 0).
-        if (!m_buffer->data() || !m_buffer->size())
-            return 0;
-        size_t left = m_buffer->size() - m_offset;
-        size_t bytesToConsume = std::min(left, size);
-        if (buffer)
-            std::memcpy(buffer, m_buffer->data() + m_offset, bytesToConsume);
-        m_offset += bytesToConsume;
-        return bytesToConsume;
-    }
-
-private:
-    RefPtr<SharedBuffer> m_buffer;
-    size_t m_offset;
-};
-#endif
-
-FontCustomPlatformData* createFontCustomPlatformData(SharedBuffer* buffer)
-{
-    ASSERT_ARG(buffer, buffer);
-
-#if USE(OPENTYPE_SANITIZER)
-    OpenTypeSanitizer sanitizer(buffer);
-    RefPtr<SharedBuffer> transcodeBuffer = sanitizer.sanitize();
-    if (!transcodeBuffer)
-        return 0; // validation failed.
-    buffer = transcodeBuffer.get();
-#endif
-
-#if OS(WINDOWS)
-    // Introduce the font to GDI. AddFontMemResourceEx should be used with care, because it will pollute the process's
-    // font namespace (Windows has no API for creating an HFONT from data without exposing the font to the
-    // entire process first).
-    String fontName = createUniqueFontName();
-    HANDLE fontReference = renameAndActivateFont(buffer, fontName);
-    if (!fontReference)
-        return 0;
-    return new FontCustomPlatformData(fontReference, fontName);
-#elif OS(UNIX)
-    RemoteFontStream* stream = new RemoteFontStream(buffer);
-    SkTypeface* typeface = SkTypeface::CreateFromStream(stream);
-    stream->unref();
-    if (!typeface)
-        return 0;
-    return new FontCustomPlatformData(typeface);
-#else
-    notImplemented();
-    return 0;
-#endif
-}
-
-bool FontCustomPlatformData::supportsFormat(const String& format)
-{
-    return equalIgnoringCase(format, "truetype") || equalIgnoringCase(format, "opentype")
-#if USE(OPENTYPE_SANITIZER)
-        || equalIgnoringCase(format, "woff")
-#endif
-    ;
-}
-
-}
diff --git a/Source/WebCore/platform/graphics/skia/FontCustomPlatformData.h b/Source/WebCore/platform/graphics/skia/FontCustomPlatformData.h
deleted file mode 100644 (file)
index bf5a098..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2007 Apple Computer, Inc.
- * Copyright (c) 2007, 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef FontCustomPlatformData_h
-#define FontCustomPlatformData_h
-
-#include "FontOrientation.h"
-#include "FontRenderingMode.h"
-#include "FontWidthVariant.h"
-#include <wtf/Forward.h>
-#include <wtf/Noncopyable.h>
-
-#if OS(WINDOWS)
-#include <windows.h>
-#include <wtf/text/WTFString.h>
-#elif OS(UNIX)
-#include "SkTypeface.h"
-#endif
-
-namespace WebCore {
-
-class FontPlatformData;
-class SharedBuffer;
-
-struct FontCustomPlatformData {
-    WTF_MAKE_NONCOPYABLE(FontCustomPlatformData);
-public:
-#if OS(WINDOWS)
-    FontCustomPlatformData(HANDLE fontReference, const String& name)
-        : m_fontReference(fontReference)
-        , m_name(name)
-    {}
-#elif OS(UNIX)
-    explicit FontCustomPlatformData(SkTypeface* typeface)
-        : m_fontReference(typeface)
-    {}
-#endif
-
-    ~FontCustomPlatformData();
-
-    FontPlatformData fontPlatformData(int size, bool bold, bool italic, FontOrientation = Horizontal,
-                                      FontWidthVariant = RegularWidth, FontRenderingMode = NormalRenderingMode);
-
-    static bool supportsFormat(const String&);
-
-#if OS(WINDOWS)
-    HANDLE m_fontReference;
-    String m_name;
-#elif OS(UNIX)
-    SkTypeface* m_fontReference;
-#endif
-};
-
-FontCustomPlatformData* createFontCustomPlatformData(SharedBuffer*);
-}
-
-#endif // FontCustomPlatformData_h
diff --git a/Source/WebCore/platform/graphics/skia/FontSkia.cpp b/Source/WebCore/platform/graphics/skia/FontSkia.cpp
deleted file mode 100644 (file)
index 655a74b..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * Copyright (c) 2011 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "Font.h"
-
-#include "FontSmoothingMode.h"
-#include "GlyphBuffer.h"
-#include "GraphicsContext.h"
-#include "LayoutTestSupport.h"
-#include "PlatformContextSkia.h"
-#include "SimpleFontData.h"
-
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkTypeface.h"
-#include "SkTypeface_mac.h"
-
-namespace WebCore {
-
-bool Font::canReturnFallbackFontsForComplexText()
-{
-    return true;
-}
-
-bool Font::canExpandAroundIdeographsInComplexText()
-{
-    return true;
-}
-
-static void setupPaint(SkPaint* paint, const SimpleFontData* fontData, const Font* font, bool shouldAntialias, bool shouldSmoothFonts)
-{
-    const FontPlatformData& platformData = fontData->platformData();
-    const float textSize = platformData.m_size >= 0 ? platformData.m_size : 12;
-
-    paint->setAntiAlias(shouldAntialias);
-    paint->setEmbeddedBitmapText(false);
-    paint->setTextSize(SkFloatToScalar(textSize));
-    paint->setVerticalText(platformData.orientation() == Vertical);
-    SkTypeface* typeface = SkCreateTypefaceFromCTFont(platformData.ctFont());
-    SkAutoUnref autoUnref(typeface);
-    paint->setTypeface(typeface);
-    paint->setFakeBoldText(platformData.m_syntheticBold);
-    paint->setTextSkewX(platformData.m_syntheticOblique ? -SK_Scalar1 / 4 : 0);
-    paint->setAutohinted(false); // freetype specific
-    paint->setLCDRenderText(shouldSmoothFonts);
-    paint->setSubpixelText(true);
-
-#if OS(DARWIN)
-    // When using CoreGraphics, disable hinting when webkit-font-smoothing:antialiased is used.
-    // See crbug.com/152304
-    if (font->fontDescription().fontSmoothing() == Antialiased)
-        paint->setHinting(SkPaint::kNo_Hinting);
-#endif
-    
-    if (font->fontDescription().textRenderingMode() == GeometricPrecision)
-        paint->setHinting(SkPaint::kNo_Hinting);
-}
-
-// TODO: This needs to be split into helper functions to better scope the
-// inputs/outputs, and reduce duplicate code.
-// This issue is tracked in https://bugs.webkit.org/show_bug.cgi?id=62989
-void Font::drawGlyphs(GraphicsContext* gc, const SimpleFontData* font,
-                      const GlyphBuffer& glyphBuffer,  int from, int numGlyphs,
-                      const FloatPoint& point) const {
-    COMPILE_ASSERT(sizeof(GlyphBufferGlyph) == sizeof(uint16_t), GlyphBufferGlyphSize_equals_uint16_t);
-
-    bool shouldSmoothFonts = true;
-    bool shouldAntialias = true;
-
-    switch (fontDescription().fontSmoothing()) {
-    case Antialiased:
-        shouldSmoothFonts = false;
-        break;
-    case SubpixelAntialiased:
-        break;
-    case NoSmoothing:
-        shouldAntialias = false;
-        shouldSmoothFonts = false;
-        break;
-    case AutoSmoothing:
-        // For the AutoSmooth case, don't do anything! Keep the default settings.
-        break;
-    }
-
-    if (!shouldUseSmoothing() || isRunningLayoutTest())
-        shouldSmoothFonts = false;
-
-    const GlyphBufferGlyph* glyphs = glyphBuffer.glyphs(from);
-    SkScalar x = SkFloatToScalar(point.x());
-    SkScalar y = SkFloatToScalar(point.y());
-
-    if (font->platformData().orientation() == Vertical)
-        y += SkFloatToScalar(font->fontMetrics().floatAscent(IdeographicBaseline) - font->fontMetrics().floatAscent());
-    // FIXME: text rendering speed:
-    // Android has code in their WebCore fork to special case when the
-    // GlyphBuffer has no advances other than the defaults. In that case the
-    // text drawing can proceed faster. However, it's unclear when those
-    // patches may be upstreamed to WebKit so we always use the slower path
-    // here.
-    const GlyphBufferAdvance* adv = glyphBuffer.advances(from);
-    SkAutoSTMalloc<32, SkPoint> storage(numGlyphs);
-    SkPoint* pos = storage.get();
-
-    for (int i = 0; i < numGlyphs; i++) {
-        pos[i].set(x, y);
-        x += SkFloatToScalar(adv[i].width());
-        y += SkFloatToScalar(adv[i].height());
-    }
-
-    PlatformContextSkia* platformContext = gc->platformContext();
-    if (font->platformData().orientation() == Vertical) {
-        platformContext->save();
-        platformContext->rotate(-90);
-        SkMatrix rotator;
-        rotator.reset();
-        rotator.setRotate(90);
-        rotator.mapPoints(pos, numGlyphs);
-    }
-    TextDrawingModeFlags textMode = gc->platformContext()->getTextDrawingMode();
-
-    // We draw text up to two times (once for fill, once for stroke).
-    if (textMode & TextModeFill) {
-        SkPaint paint;
-        gc->platformContext()->setupPaintForFilling(&paint);
-        setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts);
-        gc->platformContext()->adjustTextRenderMode(&paint);
-        paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
-
-        platformContext->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, paint);
-    }
-
-    if ((textMode & TextModeStroke)
-        && gc->platformContext()->getStrokeStyle() != NoStroke
-        && gc->platformContext()->getStrokeThickness() > 0) {
-
-        SkPaint paint;
-        gc->platformContext()->setupPaintForStroking(&paint, 0, 0);
-        setupPaint(&paint, font, this, shouldAntialias, shouldSmoothFonts);
-        gc->platformContext()->adjustTextRenderMode(&paint);
-        paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
-
-        if (textMode & TextModeFill) {
-            // If we also filled, we don't want to draw shadows twice.
-            // See comment in FontChromiumWin.cpp::paintSkiaText() for more details.
-            paint.setLooper(0);
-        }
-
-        platformContext->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, paint);
-    }
-    if (font->platformData().orientation() == Vertical)
-        platformContext->restore();
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/GlyphPageTreeNodeSkia.cpp b/Source/WebCore/platform/graphics/skia/GlyphPageTreeNodeSkia.cpp
deleted file mode 100644 (file)
index 6024d43..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "GlyphPageTreeNode.h"
-
-#include "Font.h"
-#include "SimpleFontData.h"
-
-#include "SkTemplates.h"
-#include "SkPaint.h"
-#include "SkUtils.h"
-
-namespace WebCore {
-
-bool GlyphPage::fill(unsigned offset, unsigned length, UChar* buffer, unsigned bufferLength, const SimpleFontData* fontData)
-{
-    if (SkUTF16_IsHighSurrogate(buffer[bufferLength-1])) {
-        SkDebugf("%s last char is high-surrogate", __FUNCTION__);
-        return false;
-    }
-    
-    SkPaint paint;
-    fontData->platformData().setupPaint(&paint);
-    paint.setTextEncoding(SkPaint::kUTF16_TextEncoding);
-    
-    SkAutoSTMalloc <GlyphPage::size, uint16_t> glyphStorage(length);
-    uint16_t* glyphs = glyphStorage.get();
-    // textToGlyphs takes a byte count, not a glyph count so we multiply by two.
-    unsigned count = paint.textToGlyphs(buffer, bufferLength * 2, glyphs);
-    if (count != length) {
-        SkDebugf("%s count != length\n", __FUNCTION__);
-        return false;
-    }
-
-    unsigned allGlyphs = 0; // track if any of the glyphIDs are non-zero
-    for (unsigned i = 0; i < length; i++) {
-        setGlyphDataForIndex(offset + i, glyphs[i], glyphs[i] ? fontData : NULL);
-        allGlyphs |= glyphs[i];
-    }
-
-    return allGlyphs != 0;
-}
-
-}  // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/GradientSkia.cpp b/Source/WebCore/platform/graphics/skia/GradientSkia.cpp
deleted file mode 100644 (file)
index e7008e0..0000000
+++ /dev/null
@@ -1,191 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "Gradient.h"
-
-#include "CSSParser.h"
-#include "GraphicsContext.h"
-
-#include "SkColorShader.h"
-#include "SkGradientShader.h"
-#include "SkiaUtils.h"
-
-namespace WebCore {
-
-void Gradient::platformDestroy()
-{
-    SkSafeUnref(m_gradient);
-    m_gradient = 0;
-}
-
-static inline U8CPU F2B(float x)
-{
-    return static_cast<int>(x * 255);
-}
-
-static SkColor makeSkColor(float a, float r, float g, float b)
-{
-    return SkColorSetARGB(F2B(a), F2B(r), F2B(g), F2B(b));
-}
-
-// Determine the total number of stops needed, including pseudo-stops at the
-// ends as necessary.
-static size_t totalStopsNeeded(const Gradient::ColorStop* stopData, size_t count)
-{
-    // N.B.:  The tests in this function should kept in sync with the ones in
-    // fillStops(), or badness happens.
-    const Gradient::ColorStop* stop = stopData;
-    size_t countUsed = count;
-    if (count < 1 || stop->stop > 0.0)
-        countUsed++;
-    stop += count - 1;
-    if (count < 1 || stop->stop < 1.0)
-        countUsed++;
-    return countUsed;
-}
-
-// Collect sorted stop position and color information into the pos and colors 
-// buffers, ensuring stops at both 0.0 and 1.0.  The buffers must be large
-// enough to hold information for all stops, including the new endpoints if
-// stops at 0.0 and 1.0 aren't already included.
-static void fillStops(const Gradient::ColorStop* stopData,
-                       size_t count, SkScalar* pos, SkColor* colors)
-{ 
-    const Gradient::ColorStop* stop = stopData;
-    size_t start = 0;
-    if (count < 1) {
-        // A gradient with no stops must be transparent black.
-        pos[0] = WebCoreFloatToSkScalar(0.0);
-        colors[0] = makeSkColor(0.0, 0.0, 0.0, 0.0);
-        start = 1;
-    } else if (stop->stop > 0.0) {
-        // Copy the first stop to 0.0. The first stop position may have a slight
-        // rounding error, but we don't care in this float comparison, since
-        // 0.0 comes through cleanly and people aren't likely to want a gradient
-        // with a stop at (0 + epsilon).
-        pos[0] = WebCoreFloatToSkScalar(0.0);
-        colors[0] = makeSkColor(stop->alpha, stop->red, stop->green, stop->blue);
-        start = 1;
-    }
-
-    for (size_t i = start; i < start + count; i++) {
-        pos[i] = WebCoreFloatToSkScalar(stop->stop);
-        colors[i] = makeSkColor(stop->alpha, stop->red, stop->green, stop->blue);
-        ++stop;
-    }
-
-    // Copy the last stop to 1.0 if needed.  See comment above about this float
-    // comparison.
-    if (count < 1 || (--stop)->stop < 1.0) {
-        pos[start + count] = WebCoreFloatToSkScalar(1.0);
-        colors[start + count] = colors[start + count - 1];
-    }
-}
-
-SkShader* Gradient::platformGradient()
-{
-    if (m_gradient)
-        return m_gradient;
-
-    sortStopsIfNecessary();
-    ASSERT(m_stopsSorted);
-
-    size_t countUsed = totalStopsNeeded(m_stops.data(), m_stops.size());
-    ASSERT(countUsed >= 2);
-    ASSERT(countUsed >= m_stops.size());
-
-    // FIXME: Why is all this manual pointer math needed?!
-    SkAutoMalloc storage(countUsed * (sizeof(SkColor) + sizeof(SkScalar)));
-    SkColor* colors = (SkColor*)storage.get();
-    SkScalar* pos = (SkScalar*)(colors + countUsed);
-
-    fillStops(m_stops.data(), m_stops.size(), pos, colors);
-
-    SkShader::TileMode tile = SkShader::kClamp_TileMode;
-    switch (m_spreadMethod) {
-    case SpreadMethodReflect:
-        tile = SkShader::kMirror_TileMode;
-        break;
-    case SpreadMethodRepeat:
-        tile = SkShader::kRepeat_TileMode;
-        break;
-    case SpreadMethodPad:
-        tile = SkShader::kClamp_TileMode;
-        break;
-    }
-
-    if (m_radial) {
-        // Since the two-point radial gradient is slower than the plain radial,
-        // only use it if we have to.
-        if (m_p0 == m_p1 && m_r0 <= 0.0f) {
-            m_gradient = SkGradientShader::CreateRadial(m_p1, m_r1, colors, pos, static_cast<int>(countUsed), tile);
-        } else {
-            // The radii we give to Skia must be positive.  If we're given a 
-            // negative radius, ask for zero instead.
-            SkScalar radius0 = m_r0 >= 0.0f ? WebCoreFloatToSkScalar(m_r0) : 0;
-            SkScalar radius1 = m_r1 >= 0.0f ? WebCoreFloatToSkScalar(m_r1) : 0;
-            m_gradient = SkGradientShader::CreateTwoPointConical(m_p0, radius0, m_p1, radius1, colors, pos, static_cast<int>(countUsed), tile);
-        }
-
-        if (aspectRatio() != 1) {
-            // CSS3 elliptical gradients: apply the elliptical scaling at the
-            // gradient center point.
-            m_gradientSpaceTransformation.translate(m_p0.x(), m_p0.y());
-            m_gradientSpaceTransformation.scale(1, 1 / aspectRatio());
-            m_gradientSpaceTransformation.translate(-m_p0.x(), -m_p0.y());
-            ASSERT(m_p0 == m_p1);
-        }
-    } else {
-        SkPoint pts[2] = { m_p0, m_p1 };
-        m_gradient = SkGradientShader::CreateLinear(pts, colors, pos, static_cast<int>(countUsed), tile);
-    }
-
-    if (!m_gradient)
-        // use last color, since our "geometry" was degenerate (e.g. radius==0)
-        m_gradient = new SkColorShader(colors[countUsed - 1]);
-    else
-        m_gradient->setLocalMatrix(m_gradientSpaceTransformation);
-    return m_gradient;
-}
-
-void Gradient::fill(GraphicsContext* context, const FloatRect& rect)
-{
-    context->setFillGradient(this);
-    context->fillRect(rect);
-}
-
-void Gradient::setPlatformGradientSpaceTransform(const AffineTransform& matrix)
-{
-    if (m_gradient)
-        m_gradient->setLocalMatrix(m_gradientSpaceTransformation);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/GraphicsContext3DSkia.cpp b/Source/WebCore/platform/graphics/skia/GraphicsContext3DSkia.cpp
deleted file mode 100644 (file)
index 8ac6d06..0000000
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- * Copyright (C) 2010 Apple Inc. All rights reserved.
- * Copyright (C) 2010 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 COMPUTER, 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 COMPUTER, 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"
-
-#if USE(3D_GRAPHICS)
-
-#include "GraphicsContext3D.h"
-
-#include "BitmapImage.h"
-#include "Image.h"
-#include "ImageDecoder.h"
-#include "NativeImageSkia.h"
-#include "SkColorPriv.h"
-#include <wtf/OwnPtr.h>
-#include <wtf/PassOwnPtr.h>
-
-#include <algorithm>
-
-namespace WebCore {
-
-GraphicsContext3D::ImageExtractor::~ImageExtractor()
-{
-    if (m_skiaImage)
-        m_skiaImage->bitmap().unlockPixels();
-}
-
-bool GraphicsContext3D::ImageExtractor::extractImage(bool premultiplyAlpha, bool ignoreGammaAndColorProfile)
-{
-    if (!m_image)
-        return false;
-    m_skiaImage = m_image->nativeImageForCurrentFrame();
-    m_alphaOp = AlphaDoNothing;
-    bool hasAlpha = m_skiaImage ? !m_skiaImage->bitmap().isOpaque() : true;
-    if ((!m_skiaImage || ignoreGammaAndColorProfile || (hasAlpha && !premultiplyAlpha)) && m_image->data()) {
-        // Attempt to get raw unpremultiplied image data.
-        OwnPtr<ImageDecoder> decoder(adoptPtr(ImageDecoder::create(
-            *(m_image->data()), ImageSource::AlphaNotPremultiplied,
-            ignoreGammaAndColorProfile ? ImageSource::GammaAndColorProfileIgnored : ImageSource::GammaAndColorProfileApplied)));
-        if (!decoder)
-            return false;
-        decoder->setData(m_image->data(), true);
-        if (!decoder->frameCount())
-            return false;
-        ImageFrame* frame = decoder->frameBufferAtIndex(0);
-        if (!frame || frame->status() != ImageFrame::FrameComplete)
-            return false;
-        hasAlpha = frame->hasAlpha();
-        m_nativeImage = frame->asNewNativeImage();
-        if (!m_nativeImage.get() || !m_nativeImage->isDataComplete() || !m_nativeImage->bitmap().width() || !m_nativeImage->bitmap().height())
-            return false;
-        SkBitmap::Config skiaConfig = m_nativeImage->bitmap().config();
-        if (skiaConfig != SkBitmap::kARGB_8888_Config)
-            return false;
-        m_skiaImage = m_nativeImage.get();
-        if (hasAlpha && premultiplyAlpha)
-            m_alphaOp = AlphaDoPremultiply;
-    } else if (!premultiplyAlpha && hasAlpha) {
-        // 1. For texImage2D with HTMLVideoElment input, assume no PremultiplyAlpha had been applied and the alpha value for each pixel is 0xFF
-        // which is true at present and may be changed in the future and needs adjustment accordingly.
-        // 2. For texImage2D with HTMLCanvasElement input in which Alpha is already Premultiplied in this port,
-        // do AlphaDoUnmultiply if UNPACK_PREMULTIPLY_ALPHA_WEBGL is set to false.
-        if (m_imageHtmlDomSource != HtmlDomVideo)
-            m_alphaOp = AlphaDoUnmultiply;
-    }
-    if (!m_skiaImage)
-        return false;
-
-    m_imageSourceFormat = SK_B32_SHIFT ? DataFormatRGBA8 : DataFormatBGRA8;
-    m_imageWidth = m_skiaImage->bitmap().width();
-    m_imageHeight = m_skiaImage->bitmap().height();
-    if (!m_imageWidth || !m_imageHeight)
-        return false;
-    m_imageSourceUnpackAlignment = 0;
-    m_skiaImage->bitmap().lockPixels();
-    m_imagePixelData = m_skiaImage->bitmap().getPixels();
-    return true;
-}
-
-} // namespace WebCore
-
-#endif // USE(3D_GRAPHICS)
diff --git a/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp b/Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp
deleted file mode 100644 (file)
index 6a56ccb..0000000
+++ /dev/null
@@ -1,1233 +0,0 @@
-/*
- * Copyright (c) 2006, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "GraphicsContext.h"
-
-#include "AffineTransform.h"
-#include "Color.h"
-#include "FloatRect.h"
-#include "Gradient.h"
-#include "ImageBuffer.h"
-#include "IntRect.h"
-#include "KURL.h"
-#include "NativeImageSkia.h"
-#include "NotImplemented.h"
-#include "PlatformContextSkia.h"
-
-#include "SkAnnotation.h"
-#include "SkBitmap.h"
-#include "SkBlurMaskFilter.h"
-#include "SkColorFilter.h"
-#include "SkCornerPathEffect.h"
-#include "SkData.h"
-#include "SkLayerDrawLooper.h"
-#include "SkRRect.h"
-#include "SkShader.h"
-#include "SkiaUtils.h"
-#include "skia/ext/platform_canvas.h"
-
-#include <math.h>
-#include <wtf/Assertions.h>
-#include <wtf/MathExtras.h>
-#include <wtf/UnusedParam.h>
-
-#if PLATFORM(CHROMIUM) && OS(DARWIN)
-#include <ApplicationServices/ApplicationServices.h>
-#endif
-
-using namespace std;
-
-namespace WebCore {
-
-namespace {
-// Local helper functions ------------------------------------------------------
-
-// Return value % max, but account for value possibly being negative.
-inline int fastMod(int value, int max)
-{
-    bool isNeg = false;
-    if (value < 0) {
-        value = -value;
-        isNeg = true;
-    }
-    if (value >= max)
-        value %= max;
-    if (isNeg)
-        value = -value;
-    return value;
-}
-
-void addCornerArc(SkPath* path, const SkRect& rect, const IntSize& size, int startAngle)
-{
-    SkIRect ir;
-    int rx = SkMin32(SkScalarRound(rect.width()), size.width());
-    int ry = SkMin32(SkScalarRound(rect.height()), size.height());
-
-    ir.set(-rx, -ry, rx, ry);
-    switch (startAngle) {
-    case 0:
-        ir.offset(rect.fRight - ir.fRight, rect.fBottom - ir.fBottom);
-        break;
-    case 90:
-        ir.offset(rect.fLeft - ir.fLeft, rect.fBottom - ir.fBottom);
-        break;
-    case 180:
-        ir.offset(rect.fLeft - ir.fLeft, rect.fTop - ir.fTop);
-        break;
-    case 270:
-        ir.offset(rect.fRight - ir.fRight, rect.fTop - ir.fTop);
-        break;
-    default:
-        ASSERT(0);
-    }
-
-    SkRect r;
-    r.set(ir);
-    path->arcTo(r, SkIntToScalar(startAngle), SkIntToScalar(90), false);
-}
-
-void draw2xMarker(SkBitmap* bitmap, int index)
-{
-
-    static const SkPMColor lineColors[2] = {
-        SkPreMultiplyARGB(0xFF, 0xFF, 0x00, 0x00), // Opaque red.
-        SkPreMultiplyARGB(0xFF, 0xC0, 0xC0, 0xC0), // Opaque gray.
-    };
-    static const SkPMColor antiColors1[2] = {
-        SkPreMultiplyARGB(0xB0, 0xFF, 0x00, 0x00), // Semitransparent red
-        SkPreMultiplyARGB(0xB0, 0xC0, 0xC0, 0xC0), // Semitransparent gray
-    };
-    static const SkPMColor antiColors2[2] = {
-        SkPreMultiplyARGB(0x60, 0xFF, 0x00, 0x00), // More transparent red
-        SkPreMultiplyARGB(0x60, 0xC0, 0xC0, 0xC0), // More transparent gray
-    };
-
-    const SkPMColor lineColor = lineColors[index];
-    const SkPMColor antiColor1 = antiColors1[index];
-    const SkPMColor antiColor2 = antiColors2[index];
-
-    uint32_t* row1 = bitmap->getAddr32(0, 0);
-    uint32_t* row2 = bitmap->getAddr32(0, 1);
-    uint32_t* row3 = bitmap->getAddr32(0, 2);
-    uint32_t* row4 = bitmap->getAddr32(0, 3);
-
-    // Pattern: X0o   o0X0o   o0
-    //          XX0o o0XXX0o o0X
-    //           o0XXX0o o0XXX0o
-    //            o0X0o   o0X0o
-    const SkPMColor row1Color[] = { lineColor, antiColor1, antiColor2, 0,          0,         0,          antiColor2, antiColor1 };
-    const SkPMColor row2Color[] = { lineColor, lineColor,  antiColor1, antiColor2, 0,         antiColor2, antiColor1, lineColor };
-    const SkPMColor row3Color[] = { 0,         antiColor2, antiColor1, lineColor,  lineColor, lineColor,  antiColor1, antiColor2 };
-    const SkPMColor row4Color[] = { 0,         0,          antiColor2, antiColor1, lineColor, antiColor1, antiColor2, 0 };
-
-    for (int x = 0; x < bitmap->width() + 8; x += 8) {
-        int count = min(bitmap->width() - x, 8);
-        if (count > 0) {
-            memcpy(row1 + x, row1Color, count * sizeof(SkPMColor));
-            memcpy(row2 + x, row2Color, count * sizeof(SkPMColor));
-            memcpy(row3 + x, row3Color, count * sizeof(SkPMColor));
-            memcpy(row4 + x, row4Color, count * sizeof(SkPMColor));
-        }
-    }
-}
-
-void draw1xMarker(SkBitmap* bitmap, int index)
-{
-    static const uint32_t lineColors[2] = {
-        0xFF << SK_A32_SHIFT | 0xFF << SK_R32_SHIFT, // Opaque red.
-        0xFF << SK_A32_SHIFT | 0xC0 << SK_R32_SHIFT | 0xC0 << SK_G32_SHIFT | 0xC0 << SK_B32_SHIFT, // Opaque gray.
-    };
-    static const uint32_t antiColors[2] = {
-        0x60 << SK_A32_SHIFT | 0x60 << SK_R32_SHIFT, // Semitransparent red
-        0xFF << SK_A32_SHIFT | 0xC0 << SK_R32_SHIFT | 0xC0 << SK_G32_SHIFT | 0xC0 << SK_B32_SHIFT, // Semitransparent gray
-    };
-
-    const uint32_t lineColor = lineColors[index];
-    const uint32_t antiColor = antiColors[index];
-
-    // Pattern: X o   o X o   o X
-    //            o X o   o X o
-    uint32_t* row1 = bitmap->getAddr32(0, 0);
-    uint32_t* row2 = bitmap->getAddr32(0, 1);
-    for (int x = 0; x < bitmap->width(); x++) {
-        switch (x % 4) {
-        case 0:
-            row1[x] = lineColor;
-            break;
-        case 1:
-            row1[x] = antiColor;
-            row2[x] = antiColor;
-            break;
-        case 2:
-            row2[x] = lineColor;
-            break;
-        case 3:
-            row1[x] = antiColor;
-            row2[x] = antiColor;
-            break;
-        }
-    }
-}
-
-inline void setRadii(SkVector* radii, IntSize topLeft, IntSize topRight, IntSize bottomRight, IntSize bottomLeft)
-{
-    radii[SkRRect::kUpperLeft_Corner].set(SkIntToScalar(topLeft.width()),
-        SkIntToScalar(topLeft.height()));
-    radii[SkRRect::kUpperRight_Corner].set(SkIntToScalar(topRight.width()),
-        SkIntToScalar(topRight.height()));
-    radii[SkRRect::kLowerRight_Corner].set(SkIntToScalar(bottomRight.width()),
-        SkIntToScalar(bottomRight.height()));
-    radii[SkRRect::kLowerLeft_Corner].set(SkIntToScalar(bottomLeft.width()),
-        SkIntToScalar(bottomLeft.height()));
-}
-
-} // namespace
-
-// -----------------------------------------------------------------------------
-
-// This may be called with a NULL pointer to create a graphics context that has
-// no painting.
-void GraphicsContext::platformInit(PlatformGraphicsContext* gc)
-{
-    if (gc)
-        gc->setGraphicsContext(this);
-
-    // the caller owns the gc
-    m_data = gc;
-    setPaintingDisabled(!gc || !gc->canvas());
-}
-
-void GraphicsContext::platformDestroy()
-{
-}
-
-PlatformGraphicsContext* GraphicsContext::platformContext() const
-{
-    ASSERT(!paintingDisabled());
-    return m_data;
-}
-
-// State saving ----------------------------------------------------------------
-
-void GraphicsContext::savePlatformState()
-{
-    if (paintingDisabled())
-        return;
-
-    // Save our private State.
-    platformContext()->save();
-}
-
-void GraphicsContext::restorePlatformState()
-{
-    if (paintingDisabled())
-        return;
-
-    // Restore our private State.
-    platformContext()->restore();
-}
-
-void GraphicsContext::beginPlatformTransparencyLayer(float opacity)
-{
-    if (paintingDisabled())
-        return;
-
-    // We need the "alpha" layer flag here because the base layer is opaque
-    // (the surface of the page) but layers on top may have transparent parts.
-    // Without explicitly setting the alpha flag, the layer will inherit the
-    // opaque setting of the base and some things won't work properly.
-    SkCanvas::SaveFlags saveFlags = static_cast<SkCanvas::SaveFlags>(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag);
-
-    SkPaint layerPaint;
-    layerPaint.setAlpha(static_cast<unsigned char>(opacity * 255));
-    layerPaint.setXfermodeMode(platformContext()->getXfermodeMode());
-
-    platformContext()->saveLayer(0, &layerPaint, saveFlags);
-}
-
-void GraphicsContext::endPlatformTransparencyLayer()
-{
-    if (paintingDisabled())
-        return;
-    platformContext()->restoreLayer();
-}
-
-bool GraphicsContext::supportsTransparencyLayers()
-{
-    return true;
-}
-
-// Graphics primitives ---------------------------------------------------------
-
-void GraphicsContext::clearPlatformShadow()
-{
-    if (paintingDisabled())
-        return;
-    platformContext()->setDrawLooper(0);
-}
-
-void GraphicsContext::clearRect(const FloatRect& rect)
-{
-    if (paintingDisabled())
-        return;
-
-    SkRect r = rect;
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-    paint.setXfermodeMode(SkXfermode::kClear_Mode);
-    platformContext()->drawRect(r, paint);
-}
-
-void GraphicsContext::clip(const FloatRect& rect)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->clipRect(rect);
-}
-
-void GraphicsContext::clip(const Path& path, WindRule clipRule)
-{
-    if (paintingDisabled() || path.isEmpty())
-        return;
-
-    clipPath(path, clipRule);
-}
-
-void GraphicsContext::clipRoundedRect(const RoundedRect& rect)
-{
-    if (paintingDisabled())
-        return;
-
-    SkVector radii[4];
-    RoundedRect::Radii wkRadii = rect.radii();
-    setRadii(radii, wkRadii.topLeft(), wkRadii.topRight(), wkRadii.bottomRight(), wkRadii.bottomLeft());
-
-    SkRRect r;
-    r.setRectRadii(rect.rect(), radii);
-
-    platformContext()->clipRRect(r, PlatformContextSkia::AntiAliased);
-}
-
-void GraphicsContext::canvasClip(const Path& pathToClip, WindRule clipRule)
-{
-    if (paintingDisabled())
-        return;
-
-    const SkPath* path = pathToClip.platformPath();
-    SkPath::FillType ftype = (clipRule == RULE_EVENODD) ? SkPath::kEvenOdd_FillType : SkPath::kWinding_FillType;
-    SkPath storage;
-
-    if (path && (path->getFillType() != ftype)) {
-        storage = *path;
-        storage.setFillType(ftype);
-        path = &storage;
-    }
-
-    platformContext()->clipPath(path ? *path : SkPath());
-}
-
-void GraphicsContext::clipOut(const IntRect& rect)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->clipRect(rect, PlatformContextSkia::NotAntiAliased, SkRegion::kDifference_Op);
-}
-
-void GraphicsContext::clipOut(const Path& p)
-{
-    if (paintingDisabled())
-        return;
-
-    // We must make a copy of the path, to mark it as inverse-filled.
-    SkPath path(p.isNull() ? SkPath() : *p.platformPath());
-    path.toggleInverseFillType();
-    platformContext()->clipPath(path, PlatformContextSkia::AntiAliased);
-}
-
-void GraphicsContext::clipPath(const Path& pathToClip, WindRule clipRule)
-{
-    if (paintingDisabled())
-        return;
-
-    const SkPath* path = pathToClip.platformPath();
-    SkPath::FillType ftype = (clipRule == RULE_EVENODD) ? SkPath::kEvenOdd_FillType : SkPath::kWinding_FillType;
-    SkPath storage;
-    if (!path)
-        path = &storage;
-    else if (path->getFillType() != ftype) {
-        storage = *path;
-        storage.setFillType(ftype);
-        path = &storage;
-    }
-    platformContext()->clipPath(*path, PlatformContextSkia::AntiAliased);
-}
-
-void GraphicsContext::concatCTM(const AffineTransform& affine)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->concat(affine);
-}
-
-void GraphicsContext::setCTM(const AffineTransform& affine)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setMatrix(affine);
-}
-
-static void setPathFromConvexPoints(SkPath* path, size_t numPoints, const FloatPoint* points)
-{
-    path->incReserve(numPoints);
-    path->moveTo(WebCoreFloatToSkScalar(points[0].x()),
-                 WebCoreFloatToSkScalar(points[0].y()));
-    for (size_t i = 1; i < numPoints; ++i) {
-        path->lineTo(WebCoreFloatToSkScalar(points[i].x()),
-                     WebCoreFloatToSkScalar(points[i].y()));
-    }
-
-    /*  The code used to just blindly call this
-            path->setIsConvex(true);
-        But webkit can sometimes send us non-convex 4-point values, so we mark the path's
-        convexity as unknown, so it will get computed by skia at draw time.
-        See crbug.com 108605
-    */
-    SkPath::Convexity convexity = SkPath::kConvex_Convexity;
-    if (numPoints == 4)
-        convexity = SkPath::kUnknown_Convexity;
-    path->setConvexity(convexity);
-}
-
-void GraphicsContext::drawConvexPolygon(size_t numPoints,
-                                        const FloatPoint* points,
-                                        bool shouldAntialias)
-{
-    if (paintingDisabled())
-        return;
-
-    if (numPoints <= 1)
-        return;
-
-    SkPath path;
-    setPathFromConvexPoints(&path, numPoints, points);
-
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-    paint.setAntiAlias(shouldAntialias);
-    platformContext()->drawPath(path, paint);
-
-    if (strokeStyle() != NoStroke) {
-        paint.reset();
-        platformContext()->setupPaintForStroking(&paint, 0, 0);
-        platformContext()->drawPath(path, paint);
-    }
-}
-
-void GraphicsContext::clipConvexPolygon(size_t numPoints, const FloatPoint* points, bool antialiased)
-{
-    if (paintingDisabled())
-        return;
-
-    if (numPoints <= 1)
-        return;
-
-    SkPath path;
-    setPathFromConvexPoints(&path, numPoints, points);
-    platformContext()->clipPath(path, antialiased
-        ? PlatformContextSkia::AntiAliased
-        : PlatformContextSkia::NotAntiAliased);
-}
-
-// This method is only used to draw the little circles used in lists.
-void GraphicsContext::drawEllipse(const IntRect& elipseRect)
-{
-    if (paintingDisabled())
-        return;
-
-    SkRect rect = elipseRect;
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-    platformContext()->drawOval(rect, paint);
-
-    if (strokeStyle() != NoStroke) {
-        paint.reset();
-        platformContext()->setupPaintForStroking(&paint, &rect, 0);
-        platformContext()->drawOval(rect, paint);
-    }
-}
-
-void GraphicsContext::drawFocusRing(const Path& path, int width, int offset, const Color& color)
-{
-    // FIXME: implement
-}
-
-static inline void drawOuterPath(PlatformContextSkia* context, const SkPath& path, SkPaint& paint, int width)
-{
-#if PLATFORM(CHROMIUM) && OS(DARWIN)
-    paint.setAlpha(64);
-    paint.setStrokeWidth(width);
-    paint.setPathEffect(new SkCornerPathEffect((width - 1) * 0.5f))->unref();
-#else
-    paint.setStrokeWidth(1);
-    paint.setPathEffect(new SkCornerPathEffect(1))->unref();
-#endif
-    context->drawPath(path, paint);
-}
-
-static inline void drawInnerPath(PlatformContextSkia* context, const SkPath& path, SkPaint& paint, int width)
-{
-#if PLATFORM(CHROMIUM) && OS(DARWIN)
-    paint.setAlpha(128);
-    paint.setStrokeWidth(width * 0.5f);
-    context->drawPath(path, paint);
-#endif
-}
-
-static inline int getFocusRingOutset(int offset)
-{
-#if PLATFORM(CHROMIUM) && OS(DARWIN)
-    return offset + 2;
-#else
-    return 0;
-#endif
-}
-
-void GraphicsContext::drawFocusRing(const Vector<IntRect>& rects, int width, int offset, const Color& color)
-{
-    if (paintingDisabled())
-        return;
-
-    unsigned rectCount = rects.size();
-    if (!rectCount)
-        return;
-
-    SkRegion focusRingRegion;
-    const int focusRingOutset = getFocusRingOutset(offset);
-    for (unsigned i = 0; i < rectCount; i++) {
-        SkIRect r = rects[i];
-        r.inset(-focusRingOutset, -focusRingOutset);
-        focusRingRegion.op(r, SkRegion::kUnion_Op);
-    }
-
-    SkPath path;
-    SkPaint paint;
-    paint.setAntiAlias(true);
-    paint.setStyle(SkPaint::kStroke_Style);
-
-    paint.setColor(color.rgb());
-    focusRingRegion.getBoundaryPath(&path);
-    drawOuterPath(platformContext(), path, paint, width);
-    drawInnerPath(platformContext(), path, paint, width);
-}
-
-// This is only used to draw borders.
-void GraphicsContext::drawLine(const IntPoint& point1, const IntPoint& point2)
-{
-    if (paintingDisabled())
-        return;
-
-    StrokeStyle penStyle = strokeStyle();
-    if (penStyle == NoStroke)
-        return;
-
-    SkPaint paint;
-    FloatPoint p1 = point1;
-    FloatPoint p2 = point2;
-    bool isVerticalLine = (p1.x() == p2.x());
-    int width = roundf(strokeThickness());
-
-    // We know these are vertical or horizontal lines, so the length will just
-    // be the sum of the displacement component vectors give or take 1 -
-    // probably worth the speed up of no square root, which also won't be exact.
-    FloatSize disp = p2 - p1;
-    int length = SkScalarRound(disp.width() + disp.height());
-    platformContext()->setupPaintForStroking(&paint, 0, length);
-
-    if (strokeStyle() == DottedStroke || strokeStyle() == DashedStroke) {
-        // Do a rect fill of our endpoints.  This ensures we always have the
-        // appearance of being a border.  We then draw the actual dotted/dashed line.
-
-        SkRect r1, r2;
-        r1.set(p1.x(), p1.y(), p1.x() + width, p1.y() + width);
-        r2.set(p2.x(), p2.y(), p2.x() + width, p2.y() + width);
-
-        if (isVerticalLine) {
-            r1.offset(-width / 2, 0);
-            r2.offset(-width / 2, -width);
-        } else {
-            r1.offset(0, -width / 2);
-            r2.offset(-width, -width / 2);
-        }
-        SkPaint fillPaint;
-        fillPaint.setColor(paint.getColor());
-        platformContext()->drawRect(r1, fillPaint);
-        platformContext()->drawRect(r2, fillPaint);
-    }
-
-    adjustLineToPixelBoundaries(p1, p2, width, penStyle);
-    SkPoint pts[2] = { (SkPoint)p1, (SkPoint)p2 };
-
-    platformContext()->drawPoints(SkCanvas::kLines_PointMode, 2, pts, paint);
-}
-
-void GraphicsContext::drawLineForDocumentMarker(const FloatPoint& pt, float width, DocumentMarkerLineStyle style)
-{
-    if (paintingDisabled())
-        return;
-
-    int deviceScaleFactor = SkScalarRoundToInt(WebCoreFloatToSkScalar(platformContext()->deviceScaleFactor()));
-    ASSERT(deviceScaleFactor == 1 || deviceScaleFactor == 2);
-
-    // Create the pattern we'll use to draw the underline.
-    int index = style == DocumentMarkerGrammarLineStyle ? 1 : 0;
-    static SkBitmap* misspellBitmap1x[2] = { 0, 0 };
-    static SkBitmap* misspellBitmap2x[2] = { 0, 0 };
-    SkBitmap** misspellBitmap = deviceScaleFactor == 2 ? misspellBitmap2x : misspellBitmap1x;
-    if (!misspellBitmap[index]) {
-#if PLATFORM(CHROMIUM) && OS(DARWIN)
-        // Match the artwork used by the Mac.
-        const int rowPixels = 4 * deviceScaleFactor;
-        const int colPixels = 3 * deviceScaleFactor;
-        misspellBitmap[index] = new SkBitmap;
-        misspellBitmap[index]->setConfig(SkBitmap::kARGB_8888_Config,
-                                         rowPixels, colPixels);
-        misspellBitmap[index]->allocPixels();
-
-        misspellBitmap[index]->eraseARGB(0, 0, 0, 0);
-        const uint32_t transparentColor = 0x00000000;
-
-        if (deviceScaleFactor == 1) {
-            const uint32_t colors[2][6] = {
-                { 0x2A2A0600, 0x57571000,  0xA8A81B00, 0xBFBF1F00,  0x70701200, 0xE0E02400 },
-                { 0x2A001503, 0x57002A08,  0xA800540D, 0xBF005F0F,  0x70003809, 0xE0007012 }
-            };
-
-            // Pattern: a b a   a b a
-            //          c d c   c d c
-            //          e f e   e f e
-            for (int x = 0; x < colPixels; ++x) {
-                uint32_t* row = misspellBitmap[index]->getAddr32(0, x);
-                row[0] = colors[index][x * 2];
-                row[1] = colors[index][x * 2 + 1];
-                row[2] = colors[index][x * 2];
-                row[3] = transparentColor;
-            }
-        } else if (deviceScaleFactor == 2) {
-            const uint32_t colors[2][18] = {
-                { 0x0a090101, 0x33320806, 0x55540f0a,  0x37360906, 0x6e6c120c, 0x6e6c120c,  0x7674140d, 0x8d8b1810, 0x8d8b1810,
-                  0x96941a11, 0xb3b01f15, 0xb3b01f15,  0x6d6b130c, 0xd9d62619, 0xd9d62619,  0x19180402, 0x7c7a150e, 0xcecb2418 },
-                { 0x0a000400, 0x33031b06, 0x55062f0b,  0x37041e06, 0x6e083d0d, 0x6e083d0d,  0x7608410e, 0x8d094e11, 0x8d094e11,
-                  0x960a5313, 0xb30d6417, 0xb30d6417,  0x6d073c0d, 0xd90f781c, 0xd90f781c,  0x19010d03, 0x7c094510, 0xce0f731a }
-            };
-
-            // Pattern: a b c c b a
-            //          d e f f e d
-            //          g h j j h g
-            //          k l m m l k
-            //          n o p p o n
-            //          q r s s r q
-            for (int x = 0; x < colPixels; ++x) {
-                uint32_t* row = misspellBitmap[index]->getAddr32(0, x);
-                row[0] = colors[index][x * 3];
-                row[1] = colors[index][x * 3 + 1];
-                row[2] = colors[index][x * 3 + 2];
-                row[3] = colors[index][x * 3 + 2];
-                row[4] = colors[index][x * 3 + 1];
-                row[5] = colors[index][x * 3];
-                row[6] = transparentColor;
-                row[7] = transparentColor;
-            }
-        } else
-            ASSERT_NOT_REACHED();
-#else
-        // We use a 2-pixel-high misspelling indicator because that seems to be
-        // what WebKit is designed for, and how much room there is in a typical
-        // page for it.
-        const int rowPixels = 32 * deviceScaleFactor; // Must be multiple of 4 for pattern below.
-        const int colPixels = 2 * deviceScaleFactor;
-        misspellBitmap[index] = new SkBitmap;
-        misspellBitmap[index]->setConfig(SkBitmap::kARGB_8888_Config, rowPixels, colPixels);
-        misspellBitmap[index]->allocPixels();
-
-        misspellBitmap[index]->eraseARGB(0, 0, 0, 0);
-        if (deviceScaleFactor == 1)
-            draw1xMarker(misspellBitmap[index], index);
-        else if (deviceScaleFactor == 2)
-            draw2xMarker(misspellBitmap[index], index);
-        else
-            ASSERT_NOT_REACHED();
-#endif
-    }
-
-#if PLATFORM(CHROMIUM) && OS(DARWIN)
-    SkScalar originX = WebCoreFloatToSkScalar(pt.x()) * deviceScaleFactor;
-    SkScalar originY = WebCoreFloatToSkScalar(pt.y()) * deviceScaleFactor;
-
-    // Make sure to draw only complete dots.
-    int rowPixels = misspellBitmap[index]->width();
-    float widthMod = fmodf(width * deviceScaleFactor, rowPixels);
-    if (rowPixels - widthMod > deviceScaleFactor)
-        width -= widthMod / deviceScaleFactor;
-#else
-    SkScalar originX = WebCoreFloatToSkScalar(pt.x());
-
-    // Offset it vertically by 1 so that there's some space under the text.
-    SkScalar originY = WebCoreFloatToSkScalar(pt.y()) + 1;
-    originX *= deviceScaleFactor;
-    originY *= deviceScaleFactor;
-#endif
-
-    // Make a shader for the bitmap with an origin of the box we'll draw. This
-    // shader is refcounted and will have an initial refcount of 1.
-    SkShader* shader = SkShader::CreateBitmapShader(
-        *misspellBitmap[index], SkShader::kRepeat_TileMode,
-        SkShader::kRepeat_TileMode);
-    SkMatrix matrix;
-    matrix.setTranslate(originX, originY);
-    shader->setLocalMatrix(matrix);
-
-    // Assign the shader to the paint & release our reference. The paint will
-    // now own the shader and the shader will be destroyed when the paint goes
-    // out of scope.
-    SkPaint paint;
-    paint.setShader(shader)->unref();
-
-    SkRect rect;
-    rect.set(originX, originY, originX + WebCoreFloatToSkScalar(width) * deviceScaleFactor, originY + SkIntToScalar(misspellBitmap[index]->height()));
-
-    if (deviceScaleFactor == 2) {
-        platformContext()->save();
-        platformContext()->scale(SK_ScalarHalf, SK_ScalarHalf);
-    }
-    platformContext()->drawRect(rect, paint);
-    if (deviceScaleFactor == 2)
-        platformContext()->restore();
-}
-
-void GraphicsContext::drawLineForText(const FloatPoint& pt,
-                                      float width,
-                                      bool printing)
-{
-    if (paintingDisabled())
-        return;
-
-    if (width <= 0)
-        return;
-
-    int thickness = SkMax32(static_cast<int>(strokeThickness()), 1);
-    SkRect r;
-    r.fLeft = WebCoreFloatToSkScalar(pt.x());
-    // Avoid anti-aliasing lines. Currently, these are always horizontal.
-    // Round to nearest pixel to match text and other content.
-    r.fTop = WebCoreFloatToSkScalar(floorf(pt.y() + 0.5f));
-    r.fRight = r.fLeft + WebCoreFloatToSkScalar(width);
-    r.fBottom = r.fTop + SkIntToScalar(thickness);
-
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-    // Text lines are drawn using the stroke color.
-    paint.setColor(platformContext()->effectiveStrokeColor());
-    platformContext()->drawRect(r, paint);
-}
-
-// Draws a filled rectangle with a stroked border.
-void GraphicsContext::drawRect(const IntRect& rect)
-{
-    if (paintingDisabled())
-        return;
-
-    ASSERT(!rect.isEmpty());
-    if (rect.isEmpty())
-        return;
-
-    platformContext()->drawRect(rect);
-}
-
-void GraphicsContext::fillPath(const Path& pathToFill)
-{
-    if (paintingDisabled() || pathToFill.isEmpty())
-        return;
-
-    const GraphicsContextState& state = m_state;
-    SkPath::FillType ftype = state.fillRule == RULE_EVENODD ?
-        SkPath::kEvenOdd_FillType : SkPath::kWinding_FillType;
-
-    const SkPath* path = pathToFill.platformPath();
-    SkPath storage;
-    if (path->getFillType() != ftype) {
-        storage = *path;
-        storage.setFillType(ftype);
-        path = &storage;
-    }
-
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-
-    platformContext()->drawPath(*path, paint);
-}
-
-void GraphicsContext::fillRect(const FloatRect& rect)
-{
-    if (paintingDisabled())
-        return;
-
-    SkRect r = rect;
-
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-    platformContext()->drawRect(r, paint);
-}
-
-void GraphicsContext::fillRect(const FloatRect& rect, const Color& color, ColorSpace colorSpace)
-{
-    if (paintingDisabled())
-        return;
-
-    SkRect r = rect;
-    SkPaint paint;
-    platformContext()->setupPaintCommon(&paint);
-    paint.setColor(color.rgb());
-    platformContext()->drawRect(r, paint);
-}
-
-void GraphicsContext::fillRoundedRect(const IntRect& rect,
-                                      const IntSize& topLeft,
-                                      const IntSize& topRight,
-                                      const IntSize& bottomLeft,
-                                      const IntSize& bottomRight,
-                                      const Color& color,
-                                      ColorSpace colorSpace)
-{
-    if (paintingDisabled())
-        return;
-
-    if (topLeft.width() + topRight.width() > rect.width()
-            || bottomLeft.width() + bottomRight.width() > rect.width()
-            || topLeft.height() + bottomLeft.height() > rect.height()
-            || topRight.height() + bottomRight.height() > rect.height()) {
-        // Not all the radii fit, return a rect. This matches the behavior of
-        // Path::createRoundedRectangle. Without this we attempt to draw a round
-        // shadow for a square box.
-        fillRect(rect, color, colorSpace);
-        return;
-    }
-
-    SkVector radii[4];
-    setRadii(radii, topLeft, topRight, bottomRight, bottomLeft);
-
-    SkRRect rr;
-    rr.setRectRadii(rect, radii);
-
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-    paint.setColor(color.rgb());
-
-    platformContext()->drawRRect(rr, paint);
-}
-
-AffineTransform GraphicsContext::getCTM(IncludeDeviceScale) const
-{
-    if (paintingDisabled())
-        return AffineTransform();
-
-    const SkMatrix& m = platformContext()->getTotalMatrix();
-    return AffineTransform(SkScalarToDouble(m.getScaleX()),
-                           SkScalarToDouble(m.getSkewY()),
-                           SkScalarToDouble(m.getSkewX()),
-                           SkScalarToDouble(m.getScaleY()),
-                           SkScalarToDouble(m.getTranslateX()),
-                           SkScalarToDouble(m.getTranslateY()));
-}
-
-FloatRect GraphicsContext::roundToDevicePixels(const FloatRect& rect, RoundingMode)
-{
-    return rect;
-}
-
-void GraphicsContext::scale(const FloatSize& size)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->scale(WebCoreFloatToSkScalar(size.width()),
-        WebCoreFloatToSkScalar(size.height()));
-}
-
-void GraphicsContext::setAlpha(float alpha)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setAlpha(alpha);
-}
-
-void GraphicsContext::setPlatformCompositeOperation(CompositeOperator op, BlendMode)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setXfermodeMode(WebCoreCompositeToSkiaComposite(op));
-}
-
-InterpolationQuality GraphicsContext::imageInterpolationQuality() const
-{
-    return platformContext()->interpolationQuality();
-}
-
-void GraphicsContext::setImageInterpolationQuality(InterpolationQuality q)
-{
-    platformContext()->setInterpolationQuality(q);
-}
-
-void GraphicsContext::setLineCap(LineCap cap)
-{
-    if (paintingDisabled())
-        return;
-    switch (cap) {
-    case ButtCap:
-        platformContext()->setLineCap(SkPaint::kButt_Cap);
-        break;
-    case RoundCap:
-        platformContext()->setLineCap(SkPaint::kRound_Cap);
-        break;
-    case SquareCap:
-        platformContext()->setLineCap(SkPaint::kSquare_Cap);
-        break;
-    default:
-        ASSERT(0);
-        break;
-    }
-}
-
-void GraphicsContext::setLineDash(const DashArray& dashes, float dashOffset)
-{
-    if (paintingDisabled())
-        return;
-
-    // FIXME: This is lifted directly off SkiaSupport, lines 49-74
-    // so it is not guaranteed to work correctly.
-    size_t dashLength = dashes.size();
-    if (!dashLength) {
-        // If no dash is set, revert to solid stroke
-        // FIXME: do we need to set NoStroke in some cases?
-        platformContext()->setStrokeStyle(SolidStroke);
-        platformContext()->setDashPathEffect(0);
-        return;
-    }
-
-    size_t count = !(dashLength % 2) ? dashLength : dashLength * 2;
-    SkScalar* intervals = new SkScalar[count];
-
-    for (unsigned int i = 0; i < count; i++)
-        intervals[i] = dashes[i % dashLength];
-
-    platformContext()->setDashPathEffect(new SkDashPathEffect(intervals, count, dashOffset));
-
-    delete[] intervals;
-}
-
-void GraphicsContext::setLineJoin(LineJoin join)
-{
-    if (paintingDisabled())
-        return;
-    switch (join) {
-    case MiterJoin:
-        platformContext()->setLineJoin(SkPaint::kMiter_Join);
-        break;
-    case RoundJoin:
-        platformContext()->setLineJoin(SkPaint::kRound_Join);
-        break;
-    case BevelJoin:
-        platformContext()->setLineJoin(SkPaint::kBevel_Join);
-        break;
-    default:
-        ASSERT(0);
-        break;
-    }
-}
-
-void GraphicsContext::setMiterLimit(float limit)
-{
-    if (paintingDisabled())
-        return;
-    platformContext()->setMiterLimit(limit);
-}
-
-void GraphicsContext::setPlatformFillColor(const Color& color, ColorSpace colorSpace)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setFillColor(color.rgb());
-}
-
-void GraphicsContext::setPlatformShadow(const FloatSize& size,
-                                        float blurFloat,
-                                        const Color& color,
-                                        ColorSpace colorSpace)
-{
-    if (paintingDisabled())
-        return;
-
-    // Detect when there's no effective shadow and clear the looper.
-    if (!size.width() && !size.height() && !blurFloat) {
-        platformContext()->setDrawLooper(0);
-        return;
-    }
-
-    double width = size.width();
-    double height = size.height();
-    double blur = blurFloat;
-
-    uint32_t mfFlags = SkBlurMaskFilter::kHighQuality_BlurFlag;
-
-    if (m_state.shadowsIgnoreTransforms)  {
-        // Currently only the GraphicsContext associated with the
-        // CanvasRenderingContext for HTMLCanvasElement have shadows ignore
-        // Transforms. So with this flag set, we know this state is associated
-        // with a CanvasRenderingContext.
-        mfFlags |= SkBlurMaskFilter::kIgnoreTransform_BlurFlag;
-
-        // CG uses natural orientation for Y axis, but the HTML5 canvas spec
-        // does not.
-        // So we now flip the height since it was flipped in
-        // CanvasRenderingContext in order to work with CG.
-        height = -height;
-    }
-
-    SkColor c;
-    if (color.isValid())
-        c = color.rgb();
-    else
-        c = SkColorSetARGB(0xFF/3, 0, 0, 0);    // "std" apple shadow color.
-
-    // TODO(tc): Should we have a max value for the blur?  CG clamps at 1000.0
-    // for perf reasons.
-
-    SkLayerDrawLooper* dl = new SkLayerDrawLooper;
-    SkAutoUnref aur(dl);
-
-    // top layer, we just draw unchanged
-    dl->addLayer();
-
-    // lower layer contains our offset, blur, and colorfilter
-    SkLayerDrawLooper::LayerInfo info;
-
-    // Since CSS box-shadow ignores the original alpha, we used to default to kSrc_Mode here and
-    // only switch to kDst_Mode for Canvas. But that precaution is not really necessary because
-    // RenderBoxModelObject performs a dedicated shadow fill with opaque black to ensure
-    // cross-platform consistent results.
-    info.fColorMode = SkXfermode::kDst_Mode;
-    info.fPaintBits |= SkLayerDrawLooper::kMaskFilter_Bit; // our blur
-    info.fPaintBits |= SkLayerDrawLooper::kColorFilter_Bit;
-    info.fOffset.set(width, height);
-    info.fPostTranslate = m_state.shadowsIgnoreTransforms;
-
-    SkMaskFilter* mf = SkBlurMaskFilter::Create(blur / 2, SkBlurMaskFilter::kNormal_BlurStyle, mfFlags);
-
-    SkColorFilter* cf = SkColorFilter::CreateModeFilter(c, SkXfermode::kSrcIn_Mode);
-
-    SkPaint* paint = dl->addLayer(info);
-    SkSafeUnref(paint->setMaskFilter(mf));
-    SkSafeUnref(paint->setColorFilter(cf));
-
-    // dl is now built, just install it
-    platformContext()->setDrawLooper(dl);
-}
-
-void GraphicsContext::setPlatformStrokeColor(const Color& strokecolor, ColorSpace colorSpace)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setStrokeColor(strokecolor.rgb());
-}
-
-void GraphicsContext::setPlatformStrokeStyle(StrokeStyle stroke)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setStrokeStyle(stroke);
-}
-
-void GraphicsContext::setPlatformStrokeThickness(float thickness)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setStrokeThickness(thickness);
-}
-
-void GraphicsContext::setPlatformTextDrawingMode(TextDrawingModeFlags mode)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setTextDrawingMode(mode);
-}
-
-void GraphicsContext::setURLForRect(const KURL& link, const IntRect& destRect)
-{
-    if (paintingDisabled())
-        return;
-
-    SkAutoDataUnref url(SkData::NewWithCString(link.string().utf8().data()));
-    SkAnnotateRectWithURL(platformContext()->canvas(), destRect, url.get());
-}
-
-void GraphicsContext::setPlatformShouldAntialias(bool enable)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->setUseAntialiasing(enable);
-}
-
-void GraphicsContext::strokeArc(const IntRect& r, int startAngle, int angleSpan)
-{
-    if (paintingDisabled())
-        return;
-
-    SkPaint paint;
-    SkRect oval = r;
-    if (strokeStyle() == NoStroke) {
-        // Stroke using the fill color.
-        // TODO(brettw) is this really correct? It seems unreasonable.
-        platformContext()->setupPaintForFilling(&paint);
-        paint.setStyle(SkPaint::kStroke_Style);
-        paint.setStrokeWidth(WebCoreFloatToSkScalar(strokeThickness()));
-    } else
-        platformContext()->setupPaintForStroking(&paint, 0, 0);
-
-    // We do this before converting to scalar, so we don't overflow SkFixed.
-    startAngle = fastMod(startAngle, 360);
-    angleSpan = fastMod(angleSpan, 360);
-
-    SkPath path;
-    path.addArc(oval, SkIntToScalar(-startAngle), SkIntToScalar(-angleSpan));
-    platformContext()->drawPath(path, paint);
-}
-
-void GraphicsContext::strokePath(const Path& pathToStroke)
-{
-    if (paintingDisabled() || pathToStroke.isEmpty())
-        return;
-
-    const SkPath& path = *pathToStroke.platformPath();
-    SkPaint paint;
-    platformContext()->setupPaintForStroking(&paint, 0, 0);
-    platformContext()->drawPath(path, paint);
-}
-
-void GraphicsContext::strokeRect(const FloatRect& rect, float lineWidth)
-{
-    if (paintingDisabled())
-        return;
-
-    SkPaint paint;
-    platformContext()->setupPaintForStroking(&paint, 0, 0);
-    paint.setStrokeWidth(WebCoreFloatToSkScalar(lineWidth));
-    // strokerect has special rules for CSS when the rect is degenerate:
-    // if width==0 && height==0, do nothing
-    // if width==0 || height==0, then just draw line for the other dimension
-    SkRect r(rect);
-    bool validW = r.width() > 0;
-    bool validH = r.height() > 0;
-    if (validW && validH) {
-        platformContext()->drawRect(r, paint);
-    } else if (validW || validH) {
-        // we are expected to respect the lineJoin, so we can't just call
-        // drawLine -- we have to create a path that doubles back on itself.
-        SkPath path;
-        path.moveTo(r.fLeft, r.fTop);
-        path.lineTo(r.fRight, r.fBottom);
-        path.close();
-        platformContext()->drawPath(path, paint);
-    }
-}
-
-void GraphicsContext::rotate(float angleInRadians)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->rotate(WebCoreFloatToSkScalar(angleInRadians * (180.0f / 3.14159265f)));
-}
-
-void GraphicsContext::translate(float w, float h)
-{
-    if (paintingDisabled())
-        return;
-
-    platformContext()->translate(WebCoreFloatToSkScalar(w), WebCoreFloatToSkScalar(h));
-}
-
-bool GraphicsContext::isAcceleratedContext() const
-{
-    return platformContext()->isAccelerated();
-}
-
-#if PLATFORM(CHROMIUM) && OS(DARWIN)
-CGColorSpaceRef deviceRGBColorSpaceRef()
-{
-    static CGColorSpaceRef deviceSpace = CGColorSpaceCreateDeviceRGB();
-    return deviceSpace;
-}
-#endif
-
-void GraphicsContext::platformFillEllipse(const FloatRect& ellipse)
-{
-    if (paintingDisabled())
-        return;
-
-    SkRect rect = ellipse;
-    SkPaint paint;
-    platformContext()->setupPaintForFilling(&paint);
-    platformContext()->drawOval(rect, paint);
-}
-
-void GraphicsContext::platformStrokeEllipse(const FloatRect& ellipse)
-{
-    if (paintingDisabled())
-        return;
-
-    SkRect rect(ellipse);
-    SkPaint paint;
-    platformContext()->setupPaintForStroking(&paint, 0, 0);
-    platformContext()->drawOval(rect, paint);
-}
-
-}  // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp b/Source/WebCore/platform/graphics/skia/ImageBufferSkia.cpp
deleted file mode 100644 (file)
index c64d8db..0000000
+++ /dev/null
@@ -1,460 +0,0 @@
-/*
- * Copyright (c) 2008, Google Inc. All rights reserved.
- * Copyright (C) 2009 Dirk Schulze <krit@webkit.org>
- * Copyright (C) 2010 Torch Mobile (Beijing) Co. Ltd. All rights reserved.
- *
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions are
- * met:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "ImageBuffer.h"
-
-#include "BitmapImage.h"
-#include "Extensions3D.h"
-#include "GrContext.h"
-#include "GraphicsContext.h"
-#include "GraphicsContext3D.h"
-#include "ImageData.h"
-#include "JPEGImageEncoder.h"
-#include "MIMETypeRegistry.h"
-#include "MemoryInstrumentationSkia.h"
-#include "NativeImageSkia.h"
-#include "PNGImageEncoder.h"
-#include "PlatformContextSkia.h"
-#include "SharedGraphicsContext3D.h"
-#include "SkColorPriv.h"
-#include "SkGpuDevice.h"
-#include "SkiaUtils.h"
-#include "WEBPImageEncoder.h"
-#include <public/Platform.h>
-
-#if USE(ACCELERATED_COMPOSITING)
-#include "Canvas2DLayerBridge.h"
-#endif
-
-#include <wtf/text/Base64.h>
-#include <wtf/text/WTFString.h>
-
-using namespace std;
-
-namespace WebCore {
-
-// We pass a technically-uninitialized canvas to the platform context here since
-// the canvas initialization completes in ImageBuffer::ImageBuffer. But
-// PlatformContext doesn't actually need to use the object, and this makes all
-// the ownership easier to manage.
-ImageBufferData::ImageBufferData(const IntSize& size)
-    : m_platformContext(0)  // Canvas is set in ImageBuffer constructor.
-{
-}
-
-static SkCanvas* createAcceleratedCanvas(const IntSize& size, ImageBufferData* data)
-{
-    RefPtr<GraphicsContext3D> context3D = SharedGraphicsContext3D::get();
-    if (!context3D)
-        return 0;
-    GrContext* gr = context3D->grContext();
-    if (!gr)
-        return 0;
-    gr->resetContext();
-    GrTextureDesc desc;
-    desc.fFlags = kRenderTarget_GrTextureFlagBit;
-    desc.fSampleCnt = 0;
-    desc.fWidth = size.width();
-    desc.fHeight = size.height();
-    desc.fConfig = kSkia8888_GrPixelConfig;
-    SkAutoTUnref<GrTexture> texture(gr->createUncachedTexture(desc, 0, 0));
-    if (!texture.get())
-        return 0;
-    SkCanvas* canvas;
-    SkAutoTUnref<SkDevice> device(new SkGpuDevice(gr, texture.get()));
-#if USE(ACCELERATED_COMPOSITING)
-    Canvas2DLayerBridge::ThreadMode threadMode = WebKit::Platform::current()->isThreadedCompositingEnabled() ? Canvas2DLayerBridge::Threaded : Canvas2DLayerBridge::SingleThread;
-    data->m_layerBridge = Canvas2DLayerBridge::create(context3D.release(), size, threadMode, texture.get()->getTextureHandle());
-    canvas = data->m_layerBridge->skCanvas(device.get());
-#else
-    canvas = new SkCanvas(device.get());
-#endif
-    data->m_platformContext.setAccelerated(true);
-    return canvas;
-}
-
-static SkCanvas* createNonPlatformCanvas(const IntSize& size)
-{
-    SkAutoTUnref<SkDevice> device(new SkDevice(SkBitmap::kARGB_8888_Config, size.width(), size.height()));
-    SkPixelRef* pixelRef = device->accessBitmap(false).pixelRef();
-    return pixelRef ? new SkCanvas(device) : 0;
-}
-
-PassOwnPtr<ImageBuffer> ImageBuffer::createCompatibleBuffer(const IntSize& size, float resolutionScale, ColorSpace colorSpace, const GraphicsContext* context, bool hasAlpha)
-{
-    bool success = false;
-    OwnPtr<ImageBuffer> buf = adoptPtr(new ImageBuffer(size, resolutionScale, colorSpace, context, hasAlpha, success));
-    if (!success)
-        return nullptr;
-    return buf.release();
-}
-
-ImageBuffer::ImageBuffer(const IntSize& size, float resolutionScale, ColorSpace, const GraphicsContext* compatibleContext, bool hasAlpha, bool& success)
-    : m_data(size)
-    , m_size(size)
-    , m_logicalSize(size)
-    , m_resolutionScale(resolutionScale)
-{
-    if (!compatibleContext) {
-        success = false;
-        return;
-    }
-
-    SkAutoTUnref<SkDevice> device(compatibleContext->platformContext()->createCompatibleDevice(size, hasAlpha));
-    if (!device.get()) {
-        success = false;
-        return;
-    }
-
-    SkPixelRef* pixelRef = device->accessBitmap(false).pixelRef();
-    if (!pixelRef) {
-        success = false;
-        return;
-    }
-
-    m_data.m_canvas = adoptPtr(new SkCanvas(device));
-    m_data.m_platformContext.setCanvas(m_data.m_canvas.get());
-    m_context = adoptPtr(new GraphicsContext(&m_data.m_platformContext));
-    m_context->setShouldSmoothFonts(false);
-    m_context->scale(FloatSize(m_resolutionScale, m_resolutionScale));
-
-    success = true;
-}
-
-ImageBuffer::ImageBuffer(const IntSize& size, float resolutionScale, ColorSpace, RenderingMode renderingMode, bool& success)
-    : m_data(size)
-    , m_size(size)
-    , m_logicalSize(size)
-    , m_resolutionScale(resolutionScale)
-{
-    OwnPtr<SkCanvas> canvas;
-
-    if (renderingMode == Accelerated)
-        canvas = adoptPtr(createAcceleratedCanvas(size, &m_data));
-    else if (renderingMode == UnacceleratedNonPlatformBuffer)
-        canvas = adoptPtr(createNonPlatformCanvas(size));
-
-    if (!canvas)
-        canvas = adoptPtr(skia::TryCreateBitmapCanvas(size.width(), size.height(), false));
-
-    if (!canvas) {
-        success = false;
-        return;
-    }
-
-    m_data.m_canvas = canvas.release();
-    m_data.m_platformContext.setCanvas(m_data.m_canvas.get());
-    m_context = adoptPtr(new GraphicsContext(&m_data.m_platformContext));
-    m_context->setShouldSmoothFonts(false);
-    m_context->scale(FloatSize(m_resolutionScale, m_resolutionScale));
-
-    // Make the background transparent. It would be nice if this wasn't
-    // required, but the canvas is currently filled with the magic transparency
-    // color. Can we have another way to manage this?
-    m_data.m_canvas->drawARGB(0, 0, 0, 0, SkXfermode::kClear_Mode);
-
-    success = true;
-}
-
-ImageBuffer::~ImageBuffer()
-{
-}
-
-GraphicsContext* ImageBuffer::context() const
-{
-#if USE(ACCELERATED_COMPOSITING)
-    if (m_data.m_layerBridge) {
-        // We're using context acquisition as a signal that someone is about to render into our buffer and we need
-        // to be ready. This isn't logically const-correct, hence the cast.
-        const_cast<Canvas2DLayerBridge*>(m_data.m_layerBridge.get())->contextAcquired();
-    }
-#endif
-    return m_context.get();
-}
-
-static SkBitmap deepSkBitmapCopy(const SkBitmap& bitmap)
-{
-    SkBitmap tmp;
-    if (!bitmap.deepCopyTo(&tmp, bitmap.config()))
-        bitmap.copyTo(&tmp, bitmap.config());
-
-    return tmp;
-}
-
-PassRefPtr<Image> ImageBuffer::copyImage(BackingStoreCopy copyBehavior, ScaleBehavior) const
-{
-    const SkBitmap& bitmap = *m_data.m_platformContext.bitmap();
-    // FIXME: Start honoring ScaleBehavior to scale 2x buffers down to 1x.
-    return BitmapImage::create(NativeImageSkia::create(copyBehavior == CopyBackingStore ? deepSkBitmapCopy(bitmap) : bitmap, m_resolutionScale));
-}
-
-BackingStoreCopy ImageBuffer::fastCopyImageMode()
-{
-    return DontCopyBackingStore;
-}
-
-PlatformLayer* ImageBuffer::platformLayer() const
-{
-    return m_data.m_layerBridge ? m_data.m_layerBridge->layer() : 0;
-}
-
-bool ImageBuffer::copyToPlatformTexture(GraphicsContext3D& context, Platform3DObject texture, GC3Denum internalFormat, bool premultiplyAlpha, bool flipY)
-{
-    if (!m_data.m_layerBridge || !platformLayer())
-        return false;
-
-    Platform3DObject sourceTexture = m_data.m_layerBridge->backBufferTexture();
-
-    if (!context.makeContextCurrent())
-        return false;
-
-    Extensions3D* extensions = context.getExtensions();
-    if (!extensions->supports("GL_CHROMIUM_copy_texture") || !extensions->supports("GL_CHROMIUM_flipy"))
-        return false;
-
-    // The canvas is stored in a premultiplied format, so unpremultiply if necessary.
-    context.pixelStorei(Extensions3D::UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, !premultiplyAlpha);
-
-    // The canvas is stored in an inverted position, so the flip semantics are reversed.
-    context.pixelStorei(Extensions3D::UNPACK_FLIP_Y_CHROMIUM, !flipY);
-
-    extensions->copyTextureCHROMIUM(GraphicsContext3D::TEXTURE_2D, sourceTexture, texture, 0, internalFormat);
-
-    context.pixelStorei(Extensions3D::UNPACK_FLIP_Y_CHROMIUM, false);
-    context.pixelStorei(Extensions3D::UNPACK_UNPREMULTIPLY_ALPHA_CHROMIUM, false);
-    context.flush();
-    return true;
-}
-
-void ImageBuffer::clip(GraphicsContext* context, const FloatRect& rect) const
-{
-    context->platformContext()->beginLayerClippedToImage(rect, this);
-}
-
-static bool drawNeedsCopy(GraphicsContext* src, GraphicsContext* dst)
-{
-    return (dst->platformContext()->isDeferred() || src == dst);
-}
-
-void ImageBuffer::draw(GraphicsContext* context, ColorSpace styleColorSpace, const FloatRect& destRect, const FloatRect& srcRect,
-    CompositeOperator op, BlendMode, bool useLowQualityScale)
-{
-    const SkBitmap& bitmap = *m_data.m_platformContext.bitmap();
-    RefPtr<Image> image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap));
-    context->drawImage(image.get(), styleColorSpace, destRect, srcRect, op, DoNotRespectImageOrientation, useLowQualityScale);
-}
-
-void ImageBuffer::drawPattern(GraphicsContext* context, const FloatRect& srcRect, const AffineTransform& patternTransform,
-                              const FloatPoint& phase, ColorSpace styleColorSpace, CompositeOperator op, const FloatRect& destRect)
-{
-    const SkBitmap& bitmap = *m_data.m_platformContext.bitmap();
-    RefPtr<Image> image = BitmapImage::create(NativeImageSkia::create(drawNeedsCopy(m_context.get(), context) ? deepSkBitmapCopy(bitmap) : bitmap));
-    image->drawPattern(context, srcRect, patternTransform, phase, styleColorSpace, op, destRect);
-}
-
-void ImageBuffer::platformTransformColorSpace(const Vector<int>& lookUpTable)
-{
-    // FIXME: Disable color space conversions on accelerated canvases (for now).
-    if (m_data.m_platformContext.isAccelerated()) 
-        return;
-
-    const SkBitmap& bitmap = *context()->platformContext()->bitmap();
-    if (bitmap.isNull())
-        return;
-
-    ASSERT(bitmap.config() == SkBitmap::kARGB_8888_Config);
-    SkAutoLockPixels bitmapLock(bitmap);
-    for (int y = 0; y < m_size.height(); ++y) {
-        uint32_t* srcRow = bitmap.getAddr32(0, y);
-        for (int x = 0; x < m_size.width(); ++x) {
-            SkColor color = SkPMColorToColor(srcRow[x]);
-            srcRow[x] = SkPreMultiplyARGB(SkColorGetA(color),
-                                          lookUpTable[SkColorGetR(color)],
-                                          lookUpTable[SkColorGetG(color)],
-                                          lookUpTable[SkColorGetB(color)]);
-        }
-    }
-}
-
-template <Multiply multiplied>
-PassRefPtr<Uint8ClampedArray> getImageData(const IntRect& rect, PlatformContextSkia* context,
-                                   const IntSize& size)
-{
-    float area = 4.0f * rect.width() * rect.height();
-    if (area > static_cast<float>(std::numeric_limits<int>::max()))
-        return 0;
-
-    RefPtr<Uint8ClampedArray> result = Uint8ClampedArray::createUninitialized(rect.width() * rect.height() * 4);
-
-    unsigned char* data = result->data();
-
-    if (rect.x() < 0
-        || rect.y() < 0
-        || rect.maxX() > size.width()
-        || rect.maxY() > size.height())
-        result->zeroFill();
-
-    unsigned destBytesPerRow = 4 * rect.width();
-    SkBitmap destBitmap;
-    destBitmap.setConfig(SkBitmap::kARGB_8888_Config, rect.width(), rect.height(), destBytesPerRow);
-    destBitmap.setPixels(data);
-
-    SkCanvas::Config8888 config8888;
-    if (multiplied == Premultiplied)
-        config8888 = SkCanvas::kRGBA_Premul_Config8888;
-    else
-        config8888 = SkCanvas::kRGBA_Unpremul_Config8888;
-
-    context->readPixels(&destBitmap, rect.x(), rect.y(), config8888);
-    return result.release();
-}
-
-PassRefPtr<Uint8ClampedArray> ImageBuffer::getUnmultipliedImageData(const IntRect& rect, CoordinateSystem) const
-{
-    return getImageData<Unmultiplied>(rect, context()->platformContext(), m_size);
-}
-
-PassRefPtr<Uint8ClampedArray> ImageBuffer::getPremultipliedImageData(const IntRect& rect, CoordinateSystem) const
-{
-    return getImageData<Premultiplied>(rect, context()->platformContext(), m_size);
-}
-
-void ImageBuffer::putByteArray(Multiply multiplied, Uint8ClampedArray* source, const IntSize& sourceSize, const IntRect& sourceRect, const IntPoint& destPoint, CoordinateSystem)
-{
-    ASSERT(sourceRect.width() > 0);
-    ASSERT(sourceRect.height() > 0);
-
-    int originX = sourceRect.x();
-    int destX = destPoint.x() + sourceRect.x();
-    ASSERT(destX >= 0);
-    ASSERT(destX < m_size.width());
-    ASSERT(originX >= 0);
-    ASSERT(originX < sourceRect.maxX());
-
-    int endX = destPoint.x() + sourceRect.maxX();
-    ASSERT(endX <= m_size.width());
-
-    int numColumns = endX - destX;
-
-    int originY = sourceRect.y();
-    int destY = destPoint.y() + sourceRect.y();
-    ASSERT(destY >= 0);
-    ASSERT(destY < m_size.height());
-    ASSERT(originY >= 0);
-    ASSERT(originY < sourceRect.maxY());
-
-    int endY = destPoint.y() + sourceRect.maxY();
-    ASSERT(endY <= m_size.height());
-    int numRows = endY - destY;
-
-    unsigned srcBytesPerRow = 4 * sourceSize.width();
-    SkBitmap srcBitmap;
-    srcBitmap.setConfig(SkBitmap::kARGB_8888_Config, numColumns, numRows, srcBytesPerRow);
-    srcBitmap.setPixels(source->data() + originY * srcBytesPerRow + originX * 4);
-
-    SkCanvas::Config8888 config8888;
-    if (multiplied == Premultiplied)
-        config8888 = SkCanvas::kRGBA_Premul_Config8888;
-    else
-        config8888 = SkCanvas::kRGBA_Unpremul_Config8888;
-
-    context()->platformContext()->writePixels(srcBitmap, destX, destY, config8888);
-}
-
-template <typename T>
-static bool encodeImage(T& source, const String& mimeType, const double* quality, Vector<char>* output)
-{
-    Vector<unsigned char>* encodedImage = reinterpret_cast<Vector<unsigned char>*>(output);
-
-    if (mimeType == "image/jpeg") {
-        int compressionQuality = JPEGImageEncoder::DefaultCompressionQuality;
-        if (quality && *quality >= 0.0 && *quality <= 1.0)
-            compressionQuality = static_cast<int>(*quality * 100 + 0.5);
-        if (!JPEGImageEncoder::encode(source, compressionQuality, encodedImage))
-            return false;
-#if USE(WEBP)
-    } else if (mimeType == "image/webp") {
-        int compressionQuality = WEBPImageEncoder::DefaultCompressionQuality;
-        if (quality && *quality >= 0.0 && *quality <= 1.0)
-            compressionQuality = static_cast<int>(*quality * 100 + 0.5);
-        if (!WEBPImageEncoder::encode(source, compressionQuality, encodedImage))
-            return false;
-#endif
-    } else {
-        if (!PNGImageEncoder::encode(source, encodedImage))
-            return false;
-        ASSERT(mimeType == "image/png");
-    }
-
-    return true;
-}
-
-String ImageBuffer::toDataURL(const String& mimeType, const double* quality, CoordinateSystem) const
-{
-    ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
-
-    Vector<char> encodedImage;
-    if (!encodeImage(*context()->platformContext()->bitmap(), mimeType, quality, &encodedImage))
-        return "data:,";
-
-    Vector<char> base64Data;
-    base64Encode(encodedImage, base64Data);
-
-    return "data:" + mimeType + ";base64," + base64Data;
-}
-
-void ImageBufferData::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
-{
-    MemoryClassInfo info(memoryObjectInfo, this);
-    info.addMember(m_canvas, "canvas");
-    info.addMember(m_platformContext, "platformContext");
-#if USE(ACCELERATED_COMPOSITING)
-    info.addMember(m_layerBridge, "layerBridge");
-#endif
-}
-
-String ImageDataToDataURL(const ImageData& imageData, const String& mimeType, const double* quality)
-{
-    ASSERT(MIMETypeRegistry::isSupportedImageMIMETypeForEncoding(mimeType));
-
-    Vector<char> encodedImage;
-    if (!encodeImage(imageData, mimeType, quality, &encodedImage))
-        return "data:,";
-
-    Vector<char> base64Data;
-    base64Encode(encodedImage, base64Data);
-
-    return "data:" + mimeType + ";base64," + base64Data;
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/ImageSkia.cpp b/Source/WebCore/platform/graphics/skia/ImageSkia.cpp
deleted file mode 100644 (file)
index 13ccf11..0000000
+++ /dev/null
@@ -1,670 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "AffineTransform.h"
-#include "BitmapImage.h"
-#include "FloatConversion.h"
-#include "FloatRect.h"
-#include "GraphicsContext.h"
-#include "ImageObserver.h"
-#include "Logging.h"
-#include "NativeImageSkia.h"
-#include "PlatformContextSkia.h"
-#include "SkBitmap.h"
-#include "SkPixelRef.h"
-#include "SkRect.h"
-#include "SkShader.h"
-#include "SkiaUtils.h"
-#include "Texture.h"
-#include <wtf/text/WTFString.h>
-
-#include "skia/ext/image_operations.h"
-#include "skia/ext/platform_canvas.h"
-
-#include <limits>
-#include <math.h>
-
-#if PLATFORM(CHROMIUM)
-#include "TraceEvent.h"
-#endif
-
-namespace WebCore {
-
-// Used by computeResamplingMode to tell how bitmaps should be resampled.
-enum ResamplingMode {
-    // Nearest neighbor resampling. Used when we detect that the page is
-    // trying to make a pattern by stretching a small bitmap very large.
-    RESAMPLE_NONE,
-
-    // Default skia resampling. Used for large growing of images where high
-    // quality resampling doesn't get us very much except a slowdown.
-    RESAMPLE_LINEAR,
-
-    // High quality resampling.
-    RESAMPLE_AWESOME,
-};
-
-static ResamplingMode computeResamplingMode(const SkMatrix& matrix, const NativeImageSkia& bitmap, float srcWidth, float srcHeight, float destWidth, float destHeight)
-{
-    // The percent change below which we will not resample. This usually means
-    // an off-by-one error on the web page, and just doing nearest neighbor
-    // sampling is usually good enough.
-    const float kFractionalChangeThreshold = 0.025f;
-
-    // Images smaller than this in either direction are considered "small" and
-    // are not resampled ever (see below).
-    const int kSmallImageSizeThreshold = 8;
-
-    // The amount an image can be stretched in a single direction before we
-    // say that it is being stretched so much that it must be a line or
-    // background that doesn't need resampling.
-    const float kLargeStretch = 3.0f;
-
-    // Figure out if we should resample this image. We try to prune out some
-    // common cases where resampling won't give us anything, since it is much
-    // slower than drawing stretched.
-    float diffWidth = fabs(destWidth - srcWidth);
-    float diffHeight = fabs(destHeight - srcHeight);
-    bool widthNearlyEqual = diffWidth < std::numeric_limits<float>::epsilon();
-    bool heightNearlyEqual = diffHeight < std::numeric_limits<float>::epsilon();
-    // We don't need to resample if the source and destination are the same.
-    if (widthNearlyEqual && heightNearlyEqual)
-        return RESAMPLE_NONE;
-
-    if (srcWidth <= kSmallImageSizeThreshold
-        || srcHeight <= kSmallImageSizeThreshold
-        || destWidth <= kSmallImageSizeThreshold
-        || destHeight <= kSmallImageSizeThreshold) {
-        // Never resample small images. These are often used for borders and
-        // rules (think 1x1 images used to make lines).
-        return RESAMPLE_NONE;
-    }
-
-    if (srcHeight * kLargeStretch <= destHeight || srcWidth * kLargeStretch <= destWidth) {
-        // Large image detected.
-
-        // Don't resample if it is being stretched a lot in only one direction.
-        // This is trying to catch cases where somebody has created a border
-        // (which might be large) and then is stretching it to fill some part
-        // of the page.
-        if (widthNearlyEqual || heightNearlyEqual)
-            return RESAMPLE_NONE;
-
-        // The image is growing a lot and in more than one direction. Resampling
-        // is slow and doesn't give us very much when growing a lot.
-        return RESAMPLE_LINEAR;
-    }
-
-    if ((diffWidth / srcWidth < kFractionalChangeThreshold)
-        && (diffHeight / srcHeight < kFractionalChangeThreshold)) {
-        // It is disappointingly common on the web for image sizes to be off by
-        // one or two pixels. We don't bother resampling if the size difference
-        // is a small fraction of the original size.
-        return RESAMPLE_NONE;
-    }
-
-    // When the image is not yet done loading, use linear. We don't cache the
-    // partially resampled images, and as they come in incrementally, it causes
-    // us to have to resample the whole thing every time.
-    if (!bitmap.isDataComplete())
-        return RESAMPLE_LINEAR;
-
-    // Everything else gets resampled.
-    // High quality interpolation only enabled for scaling and translation.
-    if (!(matrix.getType() & (SkMatrix::kAffine_Mask | SkMatrix::kPerspective_Mask)))
-        return RESAMPLE_AWESOME;
-    
-    return RESAMPLE_LINEAR;
-}
-
-static ResamplingMode limitResamplingMode(PlatformContextSkia* platformContext, ResamplingMode resampling)
-{
-    switch (platformContext->interpolationQuality()) {
-    case InterpolationNone:
-        return RESAMPLE_NONE;
-    case InterpolationMedium:
-        // For now we treat InterpolationMedium and InterpolationLow the same.
-    case InterpolationLow:
-        if (resampling == RESAMPLE_AWESOME)
-            return RESAMPLE_LINEAR;
-        break;
-    case InterpolationHigh:
-    case InterpolationDefault:
-        break;
-    }
-
-    return resampling;
-}
-
-// Return true if the rectangle is aligned to integer boundaries.
-// See comments for computeBitmapDrawRects() for how this is used.
-static bool areBoundariesIntegerAligned(const SkRect& rect)
-{
-    // Value is 1.19209e-007. This is the tolerance threshold.
-    const float epsilon = std::numeric_limits<float>::epsilon();
-    SkIRect roundedRect = roundedIntRect(rect);
-
-    return fabs(rect.x() - roundedRect.x()) < epsilon
-        && fabs(rect.y() - roundedRect.y()) < epsilon
-        && fabs(rect.right() - roundedRect.right()) < epsilon
-        && fabs(rect.bottom() - roundedRect.bottom()) < epsilon;
-}
-
-// FIXME: Remove this code when SkCanvas accepts SkRect as source rectangle.
-// See crbug.com/117597 for background.
-//
-// WebKit wants to draw a sub-rectangle (FloatRect) in a bitmap and scale it to
-// another FloatRect. However Skia only allows bitmap to be addressed by a
-// IntRect. This function computes the appropriate IntRect that encloses the
-// source rectangle and the corresponding enclosing destination rectangle,
-// while maintaining the scale factor.
-//
-// |srcRect| is the source rectangle in the bitmap. Return true if fancy
-// alignment is required. User of this function needs to clip to |dstRect|.
-// Return false if clipping is not needed.
-//
-// |dstRect| is the input rectangle that |srcRect| is scaled to.
-//
-// |outSrcRect| and |outDstRect| are the corresponding output rectangles.
-//
-// ALGORITHM
-//
-// The objective is to (a) find an enclosing IntRect for the source rectangle
-// and (b) the corresponding FloatRect in destination space.
-//
-// These are the steps performed:
-//
-// 1. IntRect enclosingSrcRect = enclosingIntRect(srcRect)
-//
-//    Compute the enclosing IntRect for |srcRect|. This ensures the bitmap
-//    image is addressed with integer boundaries.
-//
-// 2. FloatRect enclosingDestRect = mapSrcToDest(enclosingSrcRect)
-//
-//    Map the enclosing source rectangle to destination coordinate space.
-//
-// The output will be enclosingSrcRect and enclosingDestRect from the
-// algorithm above.
-static bool computeBitmapDrawRects(const SkISize& bitmapSize, const SkRect& srcRect, const SkRect& dstRect, SkIRect* outSrcRect, SkRect* outDstRect)
-{
-    if (areBoundariesIntegerAligned(srcRect)) {
-        *outSrcRect = roundedIntRect(srcRect);
-        *outDstRect = dstRect;
-        return false;
-    }
-
-    SkIRect bitmapRect = SkIRect::MakeSize(bitmapSize);
-    SkIRect enclosingSrcRect = enclosingIntRect(srcRect);
-    enclosingSrcRect.intersect(bitmapRect); // Clip to bitmap rectangle.
-    SkRect enclosingDstRect;
-    enclosingDstRect.set(enclosingSrcRect);
-    SkMatrix transform;
-    transform.setRectToRect(srcRect, dstRect, SkMatrix::kFill_ScaleToFit);
-    transform.mapRect(&enclosingDstRect);
-    *outSrcRect = enclosingSrcRect;
-    *outDstRect = enclosingDstRect;
-    return true;
-}
-
-// This function is used to scale an image and extract a scaled fragment.
-//
-// ALGORITHM
-//
-// Because the scaled image size has to be integers, we approximate the real
-// scale with the following formula (only X direction is shown):
-//
-// scaledImageWidth = round(scaleX * imageRect.width())
-// approximateScaleX = scaledImageWidth / imageRect.width()
-//
-// With this method we maintain a constant scale factor among fragments in
-// the scaled image. This allows fragments to stitch together to form the
-// full scaled image. The downside is there will be a small difference
-// between |scaleX| and |approximateScaleX|.
-//
-// A scaled image fragment is identified by:
-//
-// - Scaled image size
-// - Scaled image fragment rectangle (IntRect)
-//
-// Scaled image size has been determined and the next step is to compute the
-// rectangle for the scaled image fragment which needs to be an IntRect.
-//
-// scaledSrcRect = srcRect * (approximateScaleX, approximateScaleY)
-// enclosingScaledSrcRect = enclosingIntRect(scaledSrcRect)
-//
-// Finally we extract the scaled image fragment using
-// (scaledImageSize, enclosingScaledSrcRect).
-//
-static SkBitmap extractScaledImageFragment(const NativeImageSkia& bitmap, const SkRect& srcRect, float scaleX, float scaleY, SkRect* scaledSrcRect, SkIRect* enclosingScaledSrcRect)
-{
-    SkISize imageSize = SkISize::Make(bitmap.bitmap().width(), bitmap.bitmap().height());
-    SkISize scaledImageSize = SkISize::Make(clampToInteger(roundf(imageSize.width() * scaleX)),
-        clampToInteger(roundf(imageSize.height() * scaleY)));
-
-    SkRect imageRect = SkRect::MakeWH(imageSize.width(), imageSize.height());
-    SkRect scaledImageRect = SkRect::MakeWH(scaledImageSize.width(), scaledImageSize.height());
-
-    SkMatrix scaleTransform;
-    scaleTransform.setRectToRect(imageRect, scaledImageRect, SkMatrix::kFill_ScaleToFit);
-    scaleTransform.mapRect(scaledSrcRect, srcRect);
-
-    scaledSrcRect->intersect(scaledImageRect);
-    *enclosingScaledSrcRect = enclosingIntRect(*scaledSrcRect);
-
-    // |enclosingScaledSrcRect| can be larger than |scaledImageSize| because
-    // of float inaccuracy so clip to get inside.
-    enclosingScaledSrcRect->intersect(SkIRect::MakeSize(scaledImageSize));
-    return bitmap.resizedBitmap(scaledImageSize, *enclosingScaledSrcRect);
-}
-
-// This does a lot of computation to resample only the portion of the bitmap
-// that will only be drawn. This is critical for performance since when we are
-// scrolling, for example, we are only drawing a small strip of the image.
-// Resampling the whole image every time is very slow, so this speeds up things
-// dramatically.
-//
-// Note: this code is only used when the canvas transformation is limited to
-// scaling or translation.
-static void drawResampledBitmap(PlatformContextSkia* context, SkPaint& paint, const NativeImageSkia& bitmap, const SkRect& srcRect, const SkRect& destRect)
-{
-#if PLATFORM(CHROMIUM)
-    TRACE_EVENT0("skia", "drawResampledBitmap");
-#endif
-    // We want to scale |destRect| with transformation in the canvas to obtain
-    // the final scale. The final scale is a combination of scale transform
-    // in canvas and explicit scaling (srcRect and destRect).
-    SkRect screenRect;
-    context->getTotalMatrix().mapRect(&screenRect, destRect);
-    float realScaleX = screenRect.width() / srcRect.width();
-    float realScaleY = screenRect.height() / srcRect.height();
-
-    // This part of code limits scaling only to visible portion in the
-    SkRect destRectVisibleSubset;
-    ClipRectToCanvas(context, destRect, &destRectVisibleSubset);
-
-    // ClipRectToCanvas often overshoots, resulting in a larger region than our
-    // original destRect. Intersecting gets us back inside.
-    if (!destRectVisibleSubset.intersect(destRect))
-        return; // Nothing visible in destRect.
-
-    // Find the corresponding rect in the source image.
-    SkMatrix destToSrcTransform;
-    SkRect srcRectVisibleSubset;
-    destToSrcTransform.setRectToRect(destRect, srcRect, SkMatrix::kFill_ScaleToFit);
-    destToSrcTransform.mapRect(&srcRectVisibleSubset, destRectVisibleSubset);
-
-    SkRect scaledSrcRect;
-    SkIRect enclosingScaledSrcRect;
-    SkBitmap scaledImageFragment = extractScaledImageFragment(bitmap, srcRectVisibleSubset, realScaleX, realScaleY, &scaledSrcRect, &enclosingScaledSrcRect);
-
-    // Expand the destination rectangle because the source rectangle was
-    // expanded to fit to integer boundaries.
-    SkMatrix scaledSrcToDestTransform;
-    scaledSrcToDestTransform.setRectToRect(scaledSrcRect, destRectVisibleSubset, SkMatrix::kFill_ScaleToFit);
-    SkRect enclosingDestRect;
-    enclosingDestRect.set(enclosingScaledSrcRect);
-    scaledSrcToDestTransform.mapRect(&enclosingDestRect);
-
-    // The reason we do clipping is because Skia doesn't support SkRect as
-    // source rect. See http://crbug.com/145540.
-    // When Skia supports then use this as the source rect to replace 0.
-    //
-    // scaledSrcRect.offset(-enclosingScaledSrcRect.x(), -enclosingScaledSrcRect.y());
-    context->save();
-    context->clipRect(destRectVisibleSubset);
-
-    // Because the image fragment is generated with an approxmiated scaling
-    // factor. This draw will perform a close to 1 scaling.
-    //
-    // NOTE: For future optimization. If the difference in scale is so small
-    // that Skia doesn't produce a difference then we can just blit it directly
-    // to enhance performance.
-    context->drawBitmapRect(scaledImageFragment, 0, enclosingDestRect, &paint);
-    context->restore();
-}
-
-static bool hasNon90rotation(PlatformContextSkia* context)
-{
-    return !context->getTotalMatrix().rectStaysRect();
-}
-
-static void paintSkBitmap(PlatformContextSkia* platformContext, const NativeImageSkia& bitmap, const SkRect& srcRect, const SkRect& destRect, const SkXfermode::Mode& compOp)
-{
-#if PLATFORM(CHROMIUM)
-    TRACE_EVENT0("skia", "paintSkBitmap");
-#endif
-    SkPaint paint;
-    paint.setXfermodeMode(compOp);
-    paint.setAlpha(platformContext->getNormalizedAlpha());
-    paint.setLooper(platformContext->getDrawLooper());
-    // only antialias if we're rotated or skewed
-    paint.setAntiAlias(hasNon90rotation(platformContext));
-
-    ResamplingMode resampling;
-    if (platformContext->isAccelerated())
-        resampling = RESAMPLE_LINEAR;
-    else if (platformContext->printing())
-        resampling = RESAMPLE_NONE;
-    else {
-        // Take into account scale applied to the canvas when computing sampling mode (e.g. CSS scale or page scale).
-        SkRect destRectTarget = destRect;
-        if (!(platformContext->getTotalMatrix().getType() & (SkMatrix::kAffine_Mask | SkMatrix::kPerspective_Mask)))
-            platformContext->getTotalMatrix().mapRect(&destRectTarget, destRect);
-
-        resampling = computeResamplingMode(platformContext->getTotalMatrix(), bitmap,
-            SkScalarToFloat(srcRect.width()), SkScalarToFloat(srcRect.height()),
-            SkScalarToFloat(destRectTarget.width()), SkScalarToFloat(destRectTarget.height()));
-    }
-
-    if (resampling == RESAMPLE_NONE) {
-        // FIXME: This is to not break tests (it results in the filter bitmap flag
-        // being set to true). We need to decide if we respect RESAMPLE_NONE
-        // being returned from computeResamplingMode.
-        resampling = RESAMPLE_LINEAR;
-    }
-    resampling = limitResamplingMode(platformContext, resampling);
-    paint.setFilterBitmap(resampling == RESAMPLE_LINEAR);
-    if (resampling == RESAMPLE_AWESOME)
-        drawResampledBitmap(platformContext, paint, bitmap, srcRect, destRect);
-    else {
-        // No resampling necessary, we can just draw the bitmap. We want to
-        // filter it if we decided to do linear interpolation above, or if there
-        // is something interesting going on with the matrix (like a rotation).
-        // Note: for serialization, we will want to subset the bitmap first so
-        // we don't send extra pixels.
-        SkIRect enclosingSrcRect;
-        SkRect enclosingDestRect;
-        SkISize bitmapSize = SkISize::Make(bitmap.bitmap().width(), bitmap.bitmap().height());
-        bool needsClipping = computeBitmapDrawRects(bitmapSize, srcRect, destRect, &enclosingSrcRect, &enclosingDestRect);
-
-        if (enclosingSrcRect.isEmpty() || enclosingDestRect.isEmpty())
-            return;
-
-        // If destination is enlarged because source rectangle didn't align to
-        // integer boundaries then we draw a slightly larger rectangle and clip
-        // to the original destination rectangle.
-        // See http://crbug.com/145540.
-        if (needsClipping) {
-            platformContext->save();
-            platformContext->clipRect(destRect);
-        }
-
-        platformContext->drawBitmapRect(bitmap.bitmap(), &enclosingSrcRect, enclosingDestRect, &paint);
-
-        if (needsClipping)
-            platformContext->restore();
-    }
-    platformContext->didDrawRect(destRect, paint, &bitmap.bitmap());
-}
-
-// A helper method for translating negative width and height values.
-FloatRect normalizeRect(const FloatRect& rect)
-{
-    FloatRect norm = rect;
-    if (norm.width() < 0) {
-        norm.setX(norm.x() + norm.width());
-        norm.setWidth(-norm.width());
-    }
-    if (norm.height() < 0) {
-        norm.setY(norm.y() + norm.height());
-        norm.setHeight(-norm.height());
-    }
-    return norm;
-}
-
-bool FrameData::clear(bool clearMetadata)
-{
-    if (clearMetadata)
-        m_haveMetadata = false;
-
-    m_orientation = DefaultImageOrientation;
-
-    if (m_frame) {
-        m_frame.clear();
-
-        return true;
-    }
-    return false;
-}
-
-void Image::drawPattern(GraphicsContext* context,
-                        const FloatRect& floatSrcRect,
-                        const AffineTransform& patternTransform,
-                        const FloatPoint& phase,
-                        ColorSpace styleColorSpace,
-                        CompositeOperator compositeOp,
-                        const FloatRect& destRect,
-                        BlendMode)
-{
-#if PLATFORM(CHROMIUM)
-    TRACE_EVENT0("skia", "Image::drawPattern");
-#endif
-    RefPtr<NativeImageSkia> bitmap = nativeImageForCurrentFrame();
-    if (!bitmap)
-        return;
-
-    FloatRect normSrcRect = normalizeRect(floatSrcRect);
-    normSrcRect.intersect(FloatRect(0, 0, bitmap->bitmap().width(), bitmap->bitmap().height()));
-    if (destRect.isEmpty() || normSrcRect.isEmpty())
-        return; // nothing to draw
-
-    SkMatrix ctm = context->platformContext()->getTotalMatrix();
-    SkMatrix totalMatrix;
-    totalMatrix.setConcat(ctm, patternTransform);
-
-    // Figure out what size the bitmap will be in the destination. The
-    // destination rect is the bounds of the pattern, we need to use the
-    // matrix to see how big it will be.
-    SkRect destRectTarget;
-    totalMatrix.mapRect(&destRectTarget, normSrcRect);
-
-    float destBitmapWidth = SkScalarToFloat(destRectTarget.width());
-    float destBitmapHeight = SkScalarToFloat(destRectTarget.height());
-
-    // Compute the resampling mode.
-    ResamplingMode resampling;
-    if (context->platformContext()->isAccelerated() || context->platformContext()->printing())
-        resampling = RESAMPLE_LINEAR;
-    else
-        resampling = computeResamplingMode(totalMatrix, *bitmap, normSrcRect.width(), normSrcRect.height(), destBitmapWidth, destBitmapHeight);
-    resampling = limitResamplingMode(context->platformContext(), resampling);
-
-    // Load the transform WebKit requested.
-    SkMatrix matrix(patternTransform);
-
-    SkShader* shader;
-    if (resampling == RESAMPLE_AWESOME) {
-        // Do nice resampling.
-        float scaleX = destBitmapWidth / normSrcRect.width();
-        float scaleY = destBitmapHeight / normSrcRect.height();
-        SkRect scaledSrcRect;
-        SkIRect enclosingScaledSrcRect;
-
-        // The image fragment generated here is not exactly what is
-        // requested. The scale factor used is approximated and image
-        // fragment is slightly larger to align to integer
-        // boundaries.
-        SkBitmap resampled = extractScaledImageFragment(*bitmap, normSrcRect, scaleX, scaleY, &scaledSrcRect, &enclosingScaledSrcRect);
-        shader = SkShader::CreateBitmapShader(resampled, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode);
-
-        // Since we just resized the bitmap, we need to remove the scale
-        // applied to the pixels in the bitmap shader. This means we need
-        // CTM * patternTransform to have identity scale. Since we
-        // can't modify CTM (or the rectangle will be drawn in the wrong
-        // place), we must set patternTransform's scale to the inverse of
-        // CTM scale.
-        matrix.setScaleX(ctm.getScaleX() ? 1 / ctm.getScaleX() : 1);
-        matrix.setScaleY(ctm.getScaleY() ? 1 / ctm.getScaleY() : 1);
-    } else {
-        // No need to do nice resampling.
-        SkBitmap srcSubset;
-        bitmap->bitmap().extractSubset(&srcSubset, enclosingIntRect(normSrcRect));
-        shader = SkShader::CreateBitmapShader(srcSubset, SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode);
-    }
-
-    // We also need to translate it such that the origin of the pattern is the
-    // origin of the destination rect, which is what WebKit expects. Skia uses
-    // the coordinate system origin as the base for the patter. If WebKit wants
-    // a shifted image, it will shift it from there using the patternTransform.
-    float adjustedX = phase.x() + normSrcRect.x() *
-                      narrowPrecisionToFloat(patternTransform.a());
-    float adjustedY = phase.y() + normSrcRect.y() *
-                      narrowPrecisionToFloat(patternTransform.d());
-    matrix.postTranslate(SkFloatToScalar(adjustedX),
-                         SkFloatToScalar(adjustedY));
-    shader->setLocalMatrix(matrix);
-
-    SkPaint paint;
-    paint.setShader(shader)->unref();
-    paint.setXfermodeMode(WebCoreCompositeToSkiaComposite(compositeOp));
-    paint.setFilterBitmap(resampling == RESAMPLE_LINEAR);
-
-    context->platformContext()->drawRect(destRect, paint);
-}
-
-// ================================================
-// BitmapImage Class
-// ================================================
-
-// FIXME: These should go to BitmapImageSkia.cpp
-
-BitmapImage::BitmapImage(PassRefPtr<NativeImageSkia> nativeImage, ImageObserver* observer)
-    : Image(observer)
-    , m_size(nativeImage->bitmap().width(), nativeImage->bitmap().height())
-    , m_currentFrame(0)
-    , m_frames(0)
-    , m_frameTimer(0)
-    , m_repetitionCount(cAnimationNone)
-    , m_repetitionCountStatus(Unknown)
-    , m_repetitionsComplete(0)
-    , m_decodedSize(nativeImage->decodedSize())
-    , m_decodedPropertiesSize(0)
-    , m_frameCount(1)
-    , m_isSolidColor(false)
-    , m_checkedForSolidColor(false)
-    , m_animationFinished(true)
-    , m_allDataReceived(true)
-    , m_haveSize(true)
-    , m_sizeAvailable(true)
-    , m_haveFrameCount(true)
-{
-    // Since we don't have a decoder, we can't figure out the image orientation.
-    // Set m_sizeRespectingOrientation to be the same as m_size so it's not 0x0.
-    m_sizeRespectingOrientation = m_size;
-
-    m_frames.grow(1);
-    m_frames[0].m_hasAlpha = !nativeImage->bitmap().isOpaque();
-    m_frames[0].m_frame = nativeImage;
-    m_frames[0].m_haveMetadata = true;
-
-    checkForSolidColor();
-}
-
-void BitmapImage::invalidatePlatformData()
-{
-}
-
-void BitmapImage::checkForSolidColor()
-{
-    m_isSolidColor = false;
-    m_checkedForSolidColor = true;
-
-    if (frameCount() > 1)
-        return;
-
-    RefPtr<NativeImageSkia> frame = frameAtIndex(0);
-
-    if (frame && size().width() == 1 && size().height() == 1) {
-        SkAutoLockPixels lock(frame->bitmap());
-        if (!frame->bitmap().getPixels())
-            return;
-
-        m_isSolidColor = true;
-        m_solidColor = Color(frame->bitmap().getColor(0, 0));
-    }
-}
-
-void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace colorSpace, CompositeOperator compositeOp, BlendMode blendMode)
-{
-    draw(ctxt, dstRect, srcRect, colorSpace, compositeOp, blendMode, DoNotRespectImageOrientation);
-}
-
-void BitmapImage::draw(GraphicsContext* ctxt, const FloatRect& dstRect, const FloatRect& srcRect, ColorSpace colorSpace, CompositeOperator compositeOp, BlendMode, RespectImageOrientationEnum shouldRespectImageOrientation)
-{
-    // Spin the animation to the correct frame before we try to draw it, so we
-    // don't draw an old frame and then immediately need to draw a newer one,
-    // causing flicker and wasting CPU.
-    startAnimation();
-
-    RefPtr<NativeImageSkia> bm = nativeImageForCurrentFrame();
-    if (!bm)
-        return; // It's too early and we don't have an image yet.
-
-    FloatRect normDstRect = normalizeRect(dstRect);
-    FloatRect normSrcRect = normalizeRect(srcRect);
-    normSrcRect.intersect(FloatRect(0, 0, bm->bitmap().width(), bm->bitmap().height()));
-
-    if (normSrcRect.isEmpty() || normDstRect.isEmpty())
-        return; // Nothing to draw.
-
-    ImageOrientation orientation = DefaultImageOrientation;
-    if (shouldRespectImageOrientation == RespectImageOrientation)
-        orientation = frameOrientationAtIndex(m_currentFrame);
-
-    GraphicsContextStateSaver saveContext(*ctxt, false);
-    if (orientation != DefaultImageOrientation) {
-        saveContext.save();
-
-        // ImageOrientation expects the origin to be at (0, 0)
-        ctxt->translate(normDstRect.x(), normDstRect.y());
-        normDstRect.setLocation(FloatPoint());
-
-        ctxt->concatCTM(orientation.transformFromDefault(normDstRect.size()));
-
-        if (orientation.usesWidthAsHeight()) {
-            // The destination rect will have it's width and height already reversed for the orientation of
-            // the image, as it was needed for page layout, so we need to reverse it back here.
-            normDstRect = FloatRect(normDstRect.x(), normDstRect.y(), normDstRect.height(), normDstRect.width());
-        }
-    }
-
-    paintSkBitmap(ctxt->platformContext(),
-        *bm,
-        normSrcRect,
-        normDstRect,
-        WebCoreCompositeToSkiaComposite(compositeOp));
-
-    if (ImageObserver* observer = imageObserver())
-        observer->didDraw(this);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/IntPointSkia.cpp b/Source/WebCore/platform/graphics/skia/IntPointSkia.cpp
deleted file mode 100644 (file)
index fd9a6fd..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "IntPoint.h"
-
-#include "SkPoint.h"
-
-namespace WebCore {
-
-IntPoint::IntPoint(const SkIPoint& p)
-    : m_x(p.fX)
-    , m_y(p.fY)
-{
-}
-
-IntPoint::operator SkIPoint() const
-{
-    SkIPoint p = { m_x, m_y };
-    return p;
-}
-
-IntPoint::operator SkPoint() const
-{
-    SkPoint p = { SkIntToScalar(m_x), SkIntToScalar(m_y) };
-    return p;
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/IntRectSkia.cpp b/Source/WebCore/platform/graphics/skia/IntRectSkia.cpp
deleted file mode 100644 (file)
index 0024086..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "IntRect.h"
-
-#include "SkRect.h"
-
-namespace WebCore {
-
-IntRect::operator SkIRect() const
-{
-    SkIRect rect = { x(), y(), maxX(), maxY() };
-    return rect;
-}
-
-IntRect::operator SkRect() const
-{
-    SkRect rect;
-    rect.set(SkIntToScalar(x()), SkIntToScalar(y()), SkIntToScalar(maxX()), SkIntToScalar(maxY()));
-    return rect;
-}
-
-IntRect::IntRect(const SkIRect& r)
-    : m_location(r.fLeft, r.fTop)
-    , m_size(r.width(), r.height())
-{
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/MemoryInstrumentationSkia.cpp b/Source/WebCore/platform/graphics/skia/MemoryInstrumentationSkia.cpp
deleted file mode 100644 (file)
index ec7692b..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "MemoryInstrumentationSkia.h"
-
-#include "PlatformMemoryInstrumentation.h"
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkDevice.h"
-#include "SkPixelRef.h"
-#include <wtf/MemoryObjectInfo.h>
-
-void reportMemoryUsage(const SkBitmap* const& image, WTF::MemoryObjectInfo* memoryObjectInfo)
-{
-    WTF::MemoryClassInfo info(memoryObjectInfo, image);
-    memoryObjectInfo->setClassName("SkBitmap");
-    SkPixelRef* pixelRef = image->pixelRef();
-    info.addMember(pixelRef, "pixelRef");
-    if (pixelRef)
-        info.addRawBuffer(pixelRef->pixels(), image->getSize(), "Pixels", "pixelRef");
-}
-
-void reportMemoryUsage(const SkDevice* const& device, WTF::MemoryObjectInfo* memoryObjectInfo)
-{
-    WTF::MemoryClassInfo info(memoryObjectInfo, device);
-    info.addMember(const_cast<SkDevice*>(device)->accessBitmap(false), "bitmap", WTF::RetainingPointer);
-}
-
-void reportMemoryUsage(const SkCanvas* const& canvas, WTF::MemoryObjectInfo* memoryObjectInfo)
-{
-    WTF::MemoryClassInfo info(memoryObjectInfo, canvas);
-    info.addMember(canvas->getDevice(), "canvas", WTF::RetainingPointer);
-}
diff --git a/Source/WebCore/platform/graphics/skia/MemoryInstrumentationSkia.h b/Source/WebCore/platform/graphics/skia/MemoryInstrumentationSkia.h
deleted file mode 100644 (file)
index e6f81b0..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef MemoryInstrumentationSkia_h
-#define MemoryInstrumentationSkia_h
-
-#include "PlatformMemoryInstrumentation.h"
-
-class SkBitmap;
-class SkDevice;
-class SkCanvas;
-
-void reportMemoryUsage(const SkBitmap* const&, WTF::MemoryObjectInfo*);
-void reportMemoryUsage(const SkDevice* const&, WTF::MemoryObjectInfo*);
-void reportMemoryUsage(const SkCanvas* const&, WTF::MemoryObjectInfo*);
-
-#endif // !defined(MemoryInstrumentationSkia_h)
diff --git a/Source/WebCore/platform/graphics/skia/NativeImageSkia.cpp b/Source/WebCore/platform/graphics/skia/NativeImageSkia.cpp
deleted file mode 100644 (file)
index e689d07..0000000
+++ /dev/null
@@ -1,201 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "skia/ext/image_operations.h"
-
-#include "NativeImageSkia.h"
-#include "GraphicsContext3D.h"
-#include "MemoryInstrumentationSkia.h"
-#include "PlatformInstrumentation.h"
-#include "PlatformMemoryInstrumentation.h"
-#include "SkPixelRef.h"
-#include "SkiaUtils.h"
-
-#if PLATFORM(CHROMIUM)
-#include "DeferredImageDecoder.h"
-#include "TraceEvent.h"
-#endif
-
-namespace WebCore {
-
-NativeImageSkia::NativeImageSkia()
-    : m_resolutionScale(1)
-    , m_resizeRequests(0)
-{
-}
-
-NativeImageSkia::NativeImageSkia(const SkBitmap& other, float resolutionScale)
-    : m_image(other)
-    , m_resolutionScale(resolutionScale)
-    , m_resizeRequests(0)
-{
-}
-
-NativeImageSkia::NativeImageSkia(const SkBitmap& image, float resolutionScale, const SkBitmap& resizedImage, const CachedImageInfo& cachedImageInfo, int resizeRequests)
-    : m_image(image)
-    , m_resolutionScale(resolutionScale)
-    , m_resizedImage(resizedImage)
-    , m_cachedImageInfo(cachedImageInfo)
-    , m_resizeRequests(resizeRequests)
-{
-}
-
-NativeImageSkia::~NativeImageSkia()
-{
-}
-
-int NativeImageSkia::decodedSize() const
-{
-    return m_image.getSize() + m_resizedImage.getSize();
-}
-
-bool NativeImageSkia::hasResizedBitmap(const SkISize& scaledImageSize, const SkIRect& scaledImageSubset) const
-{
-    bool imageScaleEqual = m_cachedImageInfo.scaledImageSize == scaledImageSize;
-    bool scaledImageSubsetAvailable = m_cachedImageInfo.scaledImageSubset.contains(scaledImageSubset);
-    return imageScaleEqual && scaledImageSubsetAvailable && !m_resizedImage.empty();
-}
-
-SkBitmap NativeImageSkia::resizedBitmap(const SkISize& scaledImageSize, const SkIRect& scaledImageSubset) const
-{
-#if PLATFORM(CHROMIUM)
-    if (DeferredImageDecoder::isLazyDecoded(m_image))
-        return DeferredImageDecoder::createResizedLazyDecodingBitmap(m_image, scaledImageSize, scaledImageSubset);
-#endif
-
-    if (!hasResizedBitmap(scaledImageSize, scaledImageSubset)) {
-        bool shouldCache = isDataComplete()
-            && shouldCacheResampling(scaledImageSize, scaledImageSubset);
-
-        PlatformInstrumentation::willResizeImage(shouldCache);
-        SkBitmap resizedImage = skia::ImageOperations::Resize(m_image, skia::ImageOperations::RESIZE_LANCZOS3, scaledImageSize.width(), scaledImageSize.height(), scaledImageSubset);
-        resizedImage.setImmutable();
-        PlatformInstrumentation::didResizeImage();
-
-        if (!shouldCache)
-            return resizedImage;
-
-        m_resizedImage = resizedImage;
-    }
-
-    SkBitmap resizedSubset;
-    SkIRect resizedSubsetRect = m_cachedImageInfo.rectInSubset(scaledImageSubset);
-    m_resizedImage.extractSubset(&resizedSubset, resizedSubsetRect);
-    return resizedSubset;
-}
-
-bool NativeImageSkia::shouldCacheResampling(const SkISize& scaledImageSize, const SkIRect& scaledImageSubset) const
-{
-    // Check whether the requested dimensions match previous request.
-    bool matchesPreviousRequest = m_cachedImageInfo.isEqual(scaledImageSize, scaledImageSubset);
-    if (matchesPreviousRequest)
-        ++m_resizeRequests;
-    else {
-        m_cachedImageInfo.set(scaledImageSize, scaledImageSubset);
-        m_resizeRequests = 0;
-        // Reset m_resizedImage now, because we don't distinguish
-        // between the last requested resize info and m_resizedImage's
-        // resize info.
-        m_resizedImage.reset();
-    }
-
-    // We can not cache incomplete frames. This might be a good optimization in
-    // the future, were we know how much of the frame has been decoded, so when
-    // we incrementally draw more of the image, we only have to resample the
-    // parts that are changed.
-    if (!isDataComplete())
-        return false;
-
-    // If the destination bitmap is excessively large, we'll never allow caching.
-    static const unsigned long long kLargeBitmapSize = 4096ULL * 4096ULL;
-    unsigned long long fullSize = static_cast<unsigned long long>(scaledImageSize.width()) * static_cast<unsigned long long>(scaledImageSize.height());
-    unsigned long long fragmentSize = static_cast<unsigned long long>(scaledImageSubset.width()) * static_cast<unsigned long long>(scaledImageSubset.height());
-
-    if (fragmentSize > kLargeBitmapSize)
-        return false;
-
-    // If the destination bitmap is small, we'll always allow caching, since
-    // there is not very much penalty for computing it and it may come in handy.
-    static const unsigned kSmallBitmapSize = 4096;
-    if (fragmentSize <= kSmallBitmapSize)
-        return true;
-
-    // If "too many" requests have been made for this bitmap, we assume that
-    // many more will be made as well, and we'll go ahead and cache it.
-    static const int kManyRequestThreshold = 4;
-    if (m_resizeRequests >= kManyRequestThreshold)
-        return true;
-
-    // If more than 1/4 of the resized image is requested, it's worth caching.
-    return fragmentSize > fullSize / 4;
-}
-
-NativeImageSkia::CachedImageInfo::CachedImageInfo()
-{
-    scaledImageSize.setEmpty();
-    scaledImageSubset.setEmpty();
-}
-
-bool NativeImageSkia::CachedImageInfo::isEqual(const SkISize& otherScaledImageSize, const SkIRect& otherScaledImageSubset) const
-{
-    return scaledImageSize == otherScaledImageSize && scaledImageSubset == otherScaledImageSubset;
-}
-
-void NativeImageSkia::CachedImageInfo::set(const SkISize& otherScaledImageSize, const SkIRect& otherScaledImageSubset)
-{
-    scaledImageSize = otherScaledImageSize;
-    scaledImageSubset = otherScaledImageSubset;
-}
-
-SkIRect NativeImageSkia::CachedImageInfo::rectInSubset(const SkIRect& otherScaledImageSubset)
-{
-    if (!scaledImageSubset.contains(otherScaledImageSubset))
-        return SkIRect::MakeEmpty();
-    SkIRect subsetRect = otherScaledImageSubset;
-    subsetRect.offset(-scaledImageSubset.x(), -scaledImageSubset.y());
-    return subsetRect;
-}
-
-void NativeImageSkia::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
-{
-    MemoryClassInfo info(memoryObjectInfo, this);
-    info.addMember(m_image, "image");
-    info.addMember(m_resizedImage, "resizedImage");
-    info.addMember(m_cachedImageInfo, "cachedImageInfo");
-}
-
-void reportMemoryUsage(const NativeImageSkia* image, MemoryObjectInfo* memoryObjectInfo)
-{
-    image->reportMemoryUsage(memoryObjectInfo);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/NativeImageSkia.h b/Source/WebCore/platform/graphics/skia/NativeImageSkia.h
deleted file mode 100644 (file)
index 1faeb5a..0000000
+++ /dev/null
@@ -1,169 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef NativeImageSkia_h
-#define NativeImageSkia_h
-
-#include "SkBitmap.h"
-#include "SkRect.h"
-#include "SkSize.h"
-#include <wtf/Forward.h>
-#include <wtf/PassRefPtr.h>
-#include <wtf/RefCounted.h>
-
-namespace WebCore {
-
-// This object is used as the "native image" in our port. When WebKit uses
-// PassNativeImagePtr / NativeImagePtr, it is a smart pointer to this type.
-// It has an SkBitmap, and also stores a cached resized image.
-class NativeImageSkia : public RefCounted<NativeImageSkia> {
-public:
-    static PassRefPtr<NativeImageSkia> create()
-    {
-        return adoptRef(new NativeImageSkia());
-    }
-
-    // This factory method does a shallow copy of the passed-in SkBitmap
-    // (ie., it references the same pixel data and bumps the refcount). Use
-    // only when you want sharing semantics.
-    static PassRefPtr<NativeImageSkia> create(const SkBitmap& bitmap, float resolutionScale = 1)
-    {
-        return adoptRef(new NativeImageSkia(bitmap, resolutionScale));
-    }
-
-    // This method does a shallow copy of the internal SkBitmap (ie., it
-    // references the same pixel data and bumps the refcount). Use only when
-    // you want sharing semantics.
-    PassRefPtr<NativeImageSkia> clone() const
-    {
-        return adoptRef(new NativeImageSkia(m_image, m_resolutionScale, m_resizedImage, m_cachedImageInfo, m_resizeRequests));
-    }
-
-    ~NativeImageSkia();
-
-    // Returns the number of bytes of image data. This includes the cached
-    // resized version if there is one.
-    int decodedSize() const;
-
-    // Sets the immutable flag on the bitmap, indicating that the image data
-    // will not be modified any further. This is called by the image decoder
-    // when all data is complete, used by us to know whether we can cache
-    // resized images, and used by Skia for various optimizations.
-    void setDataComplete() { m_image.setImmutable(); }
-
-    // Returns true if the entire image has been decoded.
-    bool isDataComplete() const { return m_image.isImmutable(); }
-
-    // Get reference to the internal SkBitmap representing this image.
-    const SkBitmap& bitmap() const { return m_image; }
-    SkBitmap& bitmap() { return m_image; }
-
-    float resolutionScale() const { return m_resolutionScale; }
-
-    // We can keep a resized version of the bitmap cached on this object.
-    // This function will return true if there is a cached version of the given
-    // scale and subset.
-    bool hasResizedBitmap(const SkISize& scaledImageSize, const SkIRect& scaledImageSubset) const;
-
-    // This will return an existing resized image subset, or generate a new one
-    // of the specified size and subset and possibly cache it.
-    //
-    // scaledImageSize
-    // Dimensions of the scaled full image.
-    //
-    // scaledImageSubset
-    // Rectangle of the subset in the scaled image.
-    SkBitmap resizedBitmap(const SkISize& scaledImageSize, const SkIRect& scaledImageSubset) const;
-
-    void reportMemoryUsage(MemoryObjectInfo*) const;
-
-private:
-    NativeImageSkia();
-
-    NativeImageSkia(const SkBitmap&, float resolutionScale);
-
-    // CachedImageInfo is used to uniquely identify cached or requested image
-    // resizes.
-    // Image resize is identified by the scaled image size and scaled image subset.
-    struct CachedImageInfo {
-        SkISize scaledImageSize;
-        SkIRect scaledImageSubset;
-
-        CachedImageInfo();
-
-        bool isEqual(const SkISize& otherScaledImageSize, const SkIRect& otherScaledImageSubset) const;
-        void set(const SkISize& otherScaledImageSize, const SkIRect& otherScaledImageSubset);
-        SkIRect rectInSubset(const SkIRect& otherScaledImageRect);
-    };
-
-    NativeImageSkia(const SkBitmap& image, float resolutionScale, const SkBitmap& resizedImage, const CachedImageInfo&, int resizeRequests);
-
-    // Returns true if the given resize operation should either resize the whole
-    // image and cache it, or resize just the part it needs and throw the result
-    // away.
-    //
-    // Calling this function may increment a request count that can change the
-    // result of subsequent calls.
-    //
-    // On the one hand, if only a small subset is desired, then we will waste a
-    // lot of time resampling the entire thing, so we only want to do exactly
-    // what's required. On the other hand, resampling the entire bitmap is
-    // better if we're going to be using it more than once (like a bitmap
-    // scrolling on and off the screen. Since we only cache when doing the
-    // entire thing, it's best to just do it up front.
-    bool shouldCacheResampling(const SkISize& scaledImageSize, const SkIRect& scaledImageSubset) const;
-
-    // The original image.
-    SkBitmap m_image;
-    float m_resolutionScale;
-
-    // The cached bitmap fragment. This is a subset of the scaled version of
-    // |m_image|. empty() returns true if there is no cached image.
-    mutable SkBitmap m_resizedImage;
-
-    // References how many times that the image size has been requested for
-    // the last size.
-    //
-    // Every time we get a call to shouldCacheResampling, if it matches the
-    // m_cachedImageInfo, we'll increment the counter, and if not, we'll reset
-    // the counter and save the dimensions.
-    //
-    // This allows us to see if many requests have been made for the same
-    // resized image, we know that we should probably cache it, even if all of
-    // those requests individually are small and would not otherwise be cached.
-    //
-    // We also track scaling information and destination subset for the scaled
-    // image. See comments for CachedImageInfo.
-    mutable CachedImageInfo m_cachedImageInfo;
-    mutable int m_resizeRequests;
-};
-
-}
-#endif  // NativeImageSkia_h
diff --git a/Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp b/Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.cpp
deleted file mode 100644 (file)
index 68e8d30..0000000
+++ /dev/null
@@ -1,437 +0,0 @@
-/*
- * 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "OpaqueRegionSkia.h"
-
-#include "PlatformContextSkia.h"
-
-#include "SkCanvas.h"
-#include "SkColorFilter.h"
-#include "SkShader.h"
-
-namespace WebCore {
-
-OpaqueRegionSkia::OpaqueRegionSkia()
-    : m_opaqueRect(SkRect::MakeEmpty())
-{
-}
-
-OpaqueRegionSkia::~OpaqueRegionSkia()
-{
-}
-
-IntRect OpaqueRegionSkia::asRect() const
-{
-    // Returns the largest enclosed rect.
-    int left = SkScalarCeil(m_opaqueRect.fLeft);
-    int top = SkScalarCeil(m_opaqueRect.fTop);
-    int right = SkScalarFloor(m_opaqueRect.fRight);
-    int bottom = SkScalarFloor(m_opaqueRect.fBottom);
-    return IntRect(left, top, right-left, bottom-top);
-}
-
-// Returns true if the xfermode will force the dst to be opaque, regardless of the current dst.
-static inline bool xfermodeIsOpaque(const SkPaint& paint, bool srcIsOpaque)
-{
-    if (!srcIsOpaque)
-        return false;
-
-    SkXfermode* xfermode = paint.getXfermode();
-    if (!xfermode)
-        return true; // default to kSrcOver_Mode
-    SkXfermode::Mode mode;
-    if (!xfermode->asMode(&mode))
-        return false;
-
-    switch (mode) {
-    case SkXfermode::kSrc_Mode: // source
-    case SkXfermode::kSrcOver_Mode: // source + dest - source*dest
-    case SkXfermode::kDstOver_Mode: // source + dest - source*dest
-    case SkXfermode::kDstATop_Mode: // source
-    case SkXfermode::kPlus_Mode: // source+dest
-    default: // the rest are all source + dest - source*dest
-        return true;
-    case SkXfermode::kClear_Mode: // 0
-    case SkXfermode::kDst_Mode: // dest
-    case SkXfermode::kSrcIn_Mode: // source * dest
-    case SkXfermode::kDstIn_Mode: // dest * source
-    case SkXfermode::kSrcOut_Mode: // source * (1-dest)
-    case SkXfermode::kDstOut_Mode: // dest * (1-source)
-    case SkXfermode::kSrcATop_Mode: // dest
-    case SkXfermode::kXor_Mode: // source + dest - 2*(source*dest)
-        return false;
-    }
-}
-
-// Returns true if the xfermode will keep the dst opaque, assuming the dst is already opaque.
-static inline bool xfermodePreservesOpaque(const SkPaint& paint, bool srcIsOpaque)
-{
-    SkXfermode* xfermode = paint.getXfermode();
-    if (!xfermode)
-        return true; // default to kSrcOver_Mode
-    SkXfermode::Mode mode;
-    if (!xfermode->asMode(&mode))
-        return false;
-
-    switch (mode) {
-    case SkXfermode::kDst_Mode: // dest
-    case SkXfermode::kSrcOver_Mode: // source + dest - source*dest
-    case SkXfermode::kDstOver_Mode: // source + dest - source*dest
-    case SkXfermode::kSrcATop_Mode: // dest
-    case SkXfermode::kPlus_Mode: // source+dest
-    default: // the rest are all source + dest - source*dest
-        return true;
-    case SkXfermode::kClear_Mode: // 0
-    case SkXfermode::kSrcOut_Mode: // source * (1-dest)
-    case SkXfermode::kDstOut_Mode: // dest * (1-source)
-    case SkXfermode::kXor_Mode: // source + dest - 2*(source*dest)
-        return false;
-    case SkXfermode::kSrc_Mode: // source
-    case SkXfermode::kSrcIn_Mode: // source * dest
-    case SkXfermode::kDstIn_Mode: // dest * source
-    case SkXfermode::kDstATop_Mode: // source
-        return srcIsOpaque;
-    }
-}
-
-// Returns true if all pixels painted will be opaque.
-static inline bool paintIsOpaque(const SkPaint& paint, OpaqueRegionSkia::DrawType drawType, const SkBitmap* bitmap)
-{
-    if (paint.getAlpha() < 0xFF)
-        return false;
-    bool checkFillOnly = drawType != OpaqueRegionSkia::FillOrStroke;
-    if (!checkFillOnly && paint.getStyle() != SkPaint::kFill_Style && paint.isAntiAlias())
-        return false;
-    SkShader* shader = paint.getShader();
-    if (shader && !shader->isOpaque())
-        return false;
-    if (bitmap && !bitmap->isOpaque())
-        return false;
-    if (paint.getLooper())
-        return false;
-    if (paint.getImageFilter())
-        return false;
-    if (paint.getMaskFilter())
-        return false;
-    SkColorFilter* colorFilter = paint.getColorFilter();
-    if (colorFilter && !(colorFilter->getFlags() & SkColorFilter::kAlphaUnchanged_Flag))
-        return false;
-    return true;
-}
-
-// Returns true if there is a rectangular clip, with the result in |deviceClipRect|.
-static inline bool getDeviceClipAsRect(const PlatformContextSkia* context, SkRect& deviceClipRect)
-{
-    // Get the current clip in device coordinate space.
-    if (context->canvas()->getClipType() != SkCanvas::kRect_ClipType)
-        return false;
-
-    SkIRect deviceClipIRect;
-    if (context->canvas()->getClipDeviceBounds(&deviceClipIRect))
-        deviceClipRect.set(deviceClipIRect);
-    else
-        deviceClipRect.setEmpty();
-
-    return true;
-}
-
-void OpaqueRegionSkia::pushCanvasLayer(const SkPaint* paint)
-{
-    CanvasLayerState state;
-    if (paint)
-        state.paint = *paint;
-    m_canvasLayerStack.append(state);
-}
-
-void OpaqueRegionSkia::popCanvasLayer(const PlatformContextSkia* context)
-{
-    ASSERT(!m_canvasLayerStack.isEmpty());
-    if (m_canvasLayerStack.isEmpty())
-        return;
-
-    const CanvasLayerState& canvasLayer = m_canvasLayerStack.last();
-    SkRect layerOpaqueRect = canvasLayer.opaqueRect;
-    SkPaint layerPaint = canvasLayer.paint;
-
-    // Apply the image mask.
-    if (canvasLayer.hasImageMask && !layerOpaqueRect.intersect(canvasLayer.imageOpaqueRect))
-        layerOpaqueRect.setEmpty();
-
-    m_canvasLayerStack.removeLast();
-
-    applyOpaqueRegionFromLayer(context, layerOpaqueRect, layerPaint);
-}
-
-void OpaqueRegionSkia::setImageMask(const SkRect& imageOpaqueRect)
-{
-    ASSERT(!m_canvasLayerStack.isEmpty());
-    m_canvasLayerStack.last().hasImageMask = true;
-    m_canvasLayerStack.last().imageOpaqueRect = imageOpaqueRect;
-}
-
-void OpaqueRegionSkia::didDrawRect(const PlatformContextSkia* context, const SkRect& fillRect, const SkPaint& paint, const SkBitmap* sourceBitmap)
-{
-    // Any stroking may put alpha in pixels even if the filling part does not.
-    if (paint.getStyle() != SkPaint::kFill_Style) {
-        bool fillsBounds = false;
-
-        if (!paint.canComputeFastBounds())
-            didDrawUnbounded(context, paint, FillOrStroke);
-        else {
-            SkRect strokeRect;
-            strokeRect = paint.computeFastBounds(fillRect, &strokeRect);
-            didDraw(context, strokeRect, paint, sourceBitmap, fillsBounds, FillOrStroke);
-        }
-    }
-
-    bool fillsBounds = paint.getStyle() != SkPaint::kStroke_Style;
-    didDraw(context, fillRect, paint, sourceBitmap, fillsBounds, FillOnly);
-}
-
-void OpaqueRegionSkia::didDrawPath(const PlatformContextSkia* context, const SkPath& path, const SkPaint& paint)
-{
-    SkRect rect;
-    if (path.isRect(&rect)) {
-        didDrawRect(context, rect, paint, 0);
-        return;
-    }
-
-    bool fillsBounds = false;
-
-    if (!paint.canComputeFastBounds())
-        didDrawUnbounded(context, paint, FillOrStroke);
-    else {
-        rect = paint.computeFastBounds(path.getBounds(), &rect);
-        didDraw(context, rect, paint, 0, fillsBounds, FillOrStroke);
-    }
-}
-
-void OpaqueRegionSkia::didDrawPoints(const PlatformContextSkia* context, SkCanvas::PointMode mode, int numPoints, const SkPoint points[], const SkPaint& paint)
-{
-    if (!numPoints)
-        return;
-
-    SkRect rect;
-    rect.fLeft = points[0].fX;
-    rect.fRight = points[0].fX + 1;
-    rect.fTop = points[0].fY;
-    rect.fBottom = points[0].fY + 1;
-
-    for (int i = 1; i < numPoints; ++i) {
-        rect.fLeft = std::min(rect.fLeft, points[i].fX);
-        rect.fRight = std::max(rect.fRight, points[i].fX + 1);
-        rect.fTop = std::min(rect.fTop, points[i].fY);
-        rect.fBottom = std::max(rect.fBottom, points[i].fY + 1);
-    }
-
-    bool fillsBounds = false;
-
-    if (!paint.canComputeFastBounds())
-        didDrawUnbounded(context, paint, FillOrStroke);
-    else {
-        rect = paint.computeFastBounds(rect, &rect);
-        didDraw(context, rect, paint, 0, fillsBounds, FillOrStroke);
-    }
-}
-
-void OpaqueRegionSkia::didDrawBounded(const PlatformContextSkia* context, const SkRect& bounds, const SkPaint& paint)
-{
-    bool fillsBounds = false;
-
-    if (!paint.canComputeFastBounds())
-        didDrawUnbounded(context, paint, FillOrStroke);
-    else {
-        SkRect rect;
-        rect = paint.computeFastBounds(bounds, &rect);
-        didDraw(context, rect, paint, 0, fillsBounds, FillOrStroke);
-    }
-}
-
-void OpaqueRegionSkia::didDraw(const PlatformContextSkia* context, const SkRect& rect, const SkPaint& paint, const SkBitmap* sourceBitmap, bool fillsBounds, DrawType drawType)
-{
-    SkRect targetRect = rect;
-
-    // Apply the transform to device coordinate space.
-    SkMatrix canvasTransform = context->canvas()->getTotalMatrix();
-    if (!canvasTransform.mapRect(&targetRect))
-        fillsBounds = false;
-
-    // Apply the current clip.
-    SkRect deviceClipRect;
-    if (!getDeviceClipAsRect(context, deviceClipRect))
-        fillsBounds = false;
-    else if (!targetRect.intersect(deviceClipRect))
-        return;
-
-    bool drawsOpaque = paintIsOpaque(paint, drawType, sourceBitmap);
-    bool xfersOpaque = xfermodeIsOpaque(paint, drawsOpaque);
-    bool preservesOpaque = xfermodePreservesOpaque(paint, drawsOpaque);
-
-    if (fillsBounds && xfersOpaque)
-        markRectAsOpaque(targetRect);
-    else if (!preservesOpaque)
-        markRectAsNonOpaque(targetRect);
-}
-
-void OpaqueRegionSkia::didDrawUnbounded(const PlatformContextSkia* context, const SkPaint& paint, DrawType drawType)
-{
-    bool drawsOpaque = paintIsOpaque(paint, drawType, 0);
-    bool preservesOpaque = xfermodePreservesOpaque(paint, drawsOpaque);
-
-    if (preservesOpaque)
-        return;
-
-    SkRect deviceClipRect;
-    getDeviceClipAsRect(context, deviceClipRect);
-    markRectAsNonOpaque(deviceClipRect);
-}
-
-void OpaqueRegionSkia::applyOpaqueRegionFromLayer(const PlatformContextSkia* context, const SkRect& layerOpaqueRect, const SkPaint& paint)
-{
-    SkRect deviceClipRect;
-    bool deviceClipIsARect = getDeviceClipAsRect(context, deviceClipRect);
-
-    if (deviceClipRect.isEmpty())
-        return;
-
-    SkRect sourceOpaqueRect = layerOpaqueRect;
-    // Save the opaque area in the destination, so we can preserve the parts of it under the source opaque area if possible.
-    SkRect destinationOpaqueRect = currentTrackingOpaqueRect();
-
-    bool outsideSourceOpaqueRectPreservesOpaque = xfermodePreservesOpaque(paint, false);
-    if (!outsideSourceOpaqueRectPreservesOpaque)
-        markRectAsNonOpaque(deviceClipRect);
-
-    if (!deviceClipIsARect)
-        return;
-    if (!sourceOpaqueRect.intersect(deviceClipRect))
-        return;
-
-    bool sourceOpaqueRectDrawsOpaque = paintIsOpaque(paint, FillOnly, 0);
-    bool sourceOpaqueRectXfersOpaque = xfermodeIsOpaque(paint, sourceOpaqueRectDrawsOpaque);
-    bool sourceOpaqueRectPreservesOpaque = xfermodePreservesOpaque(paint, sourceOpaqueRectDrawsOpaque);
-
-    // If the layer's opaque area is being drawn opaque in the layer below, then mark it opaque. Otherwise,
-    // if it preserves opaque then keep the intersection of the two.
-    if (sourceOpaqueRectXfersOpaque)
-        markRectAsOpaque(sourceOpaqueRect);
-    else if (sourceOpaqueRectPreservesOpaque && sourceOpaqueRect.intersect(destinationOpaqueRect))
-        markRectAsOpaque(sourceOpaqueRect);
-}
-
-void OpaqueRegionSkia::markRectAsOpaque(const SkRect& rect)
-{
-    // We want to keep track of an opaque region but bound its complexity at a constant size.
-    // We keep track of the largest rectangle seen by area. If we can add the new rect to this
-    // rectangle then we do that, as that is the cheapest way to increase the area returned
-    // without increasing the complexity.
-
-    SkRect& opaqueRect = currentTrackingOpaqueRect();
-
-    if (rect.isEmpty())
-        return;
-    if (opaqueRect.contains(rect))
-        return;
-    if (rect.contains(opaqueRect)) {
-        opaqueRect = rect;
-        return;
-    }
-
-    if (rect.fTop <= opaqueRect.fTop && rect.fBottom >= opaqueRect.fBottom) {
-        if (rect.fLeft < opaqueRect.fLeft && rect.fRight >= opaqueRect.fLeft)
-            opaqueRect.fLeft = rect.fLeft;
-        if (rect.fRight > opaqueRect.fRight && rect.fLeft <= opaqueRect.fRight)
-            opaqueRect.fRight = rect.fRight;
-    } else if (rect.fLeft <= opaqueRect.fLeft && rect.fRight >= opaqueRect.fRight) {
-        if (rect.fTop < opaqueRect.fTop && rect.fBottom >= opaqueRect.fTop)
-            opaqueRect.fTop = rect.fTop;
-        if (rect.fBottom > opaqueRect.fBottom && rect.fTop <= opaqueRect.fBottom)
-            opaqueRect.fBottom = rect.fBottom;
-    }
-
-    long opaqueArea = (long)opaqueRect.width() * (long)opaqueRect.height();
-    long area = (long)rect.width() * (long)rect.height();
-    if (area > opaqueArea)
-        opaqueRect = rect;
-}
-
-void OpaqueRegionSkia::markRectAsNonOpaque(const SkRect& rect)
-{
-    // We want to keep as much of the current opaque rectangle as we can, so find the one largest
-    // rectangle inside m_opaqueRect that does not intersect with |rect|.
-
-    SkRect& opaqueRect = currentTrackingOpaqueRect();
-
-    if (!SkRect::Intersects(rect, opaqueRect))
-        return;
-    if (rect.contains(opaqueRect)) {
-        markAllAsNonOpaque();
-        return;
-    }
-
-    int deltaLeft = rect.fLeft - opaqueRect.fLeft;
-    int deltaRight = opaqueRect.fRight - rect.fRight;
-    int deltaTop = rect.fTop - opaqueRect.fTop;
-    int deltaBottom = opaqueRect.fBottom - rect.fBottom;
-
-    // horizontal is the larger of the two rectangles to the left or to the right of |rect| and inside opaqueRect.
-    // vertical is the larger of the two rectangles above or below |rect| and inside opaqueRect.
-    SkRect horizontal = opaqueRect;
-    if (deltaTop > deltaBottom)
-        horizontal.fBottom = rect.fTop;
-    else
-        horizontal.fTop = rect.fBottom;
-    SkRect vertical = opaqueRect;
-    if (deltaLeft > deltaRight)
-        vertical.fRight = rect.fLeft;
-    else
-        vertical.fLeft = rect.fRight;
-
-    if ((long)horizontal.width() * (long)horizontal.height() > (long)vertical.width() * (long)vertical.height())
-        opaqueRect = horizontal;
-    else
-        opaqueRect = vertical;
-}
-
-void OpaqueRegionSkia::markAllAsNonOpaque()
-{
-    SkRect& opaqueRect = currentTrackingOpaqueRect();
-    opaqueRect.setEmpty();
-}
-
-SkRect& OpaqueRegionSkia::currentTrackingOpaqueRect()
-{
-    // If we are drawing into a canvas layer, then track the opaque rect in that layer.
-    return m_canvasLayerStack.isEmpty() ? m_opaqueRect : m_canvasLayerStack.last().opaqueRect;
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.h b/Source/WebCore/platform/graphics/skia/OpaqueRegionSkia.h
deleted file mode 100644 (file)
index e8cb3c4..0000000
+++ /dev/null
@@ -1,102 +0,0 @@
-/*
- * 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef OpaqueRegionSkia_h
-#define OpaqueRegionSkia_h
-
-#include "IntRect.h"
-
-#include "SkBitmap.h"
-#include "SkCanvas.h"
-#include "SkPaint.h"
-#include "SkPoint.h"
-#include "SkRect.h"
-
-namespace WebCore {
-class PlatformContextSkia;
-
-// This class is an encapsulation of functionality for PlatformContextSkia, and its methods are mirrored
-// there for the outside world. It tracks paints and computes what area will be opaque.
-class OpaqueRegionSkia {
-public:
-    OpaqueRegionSkia();
-    virtual ~OpaqueRegionSkia();
-
-    // The resulting opaque region as a single rect.
-    IntRect asRect() const;
-
-    void pushCanvasLayer(const SkPaint*);
-    void popCanvasLayer(const PlatformContextSkia*);
-
-    void setImageMask(const SkRect& imageOpaqueRect);
-
-    enum DrawType {
-        FillOnly,
-        FillOrStroke
-    };
-
-    void didDrawRect(const PlatformContextSkia*, const SkRect&, const SkPaint&, const SkBitmap* sourceBitmap);
-    void didDrawPath(const PlatformContextSkia*, const SkPath&, const SkPaint&);
-    void didDrawPoints(const PlatformContextSkia*, SkCanvas::PointMode, int numPoints, const SkPoint[], const SkPaint&);
-    void didDrawBounded(const PlatformContextSkia*, const SkRect&, const SkPaint&);
-    void didDrawUnbounded(const PlatformContextSkia*, const SkPaint&, DrawType);
-
-    struct CanvasLayerState {
-        CanvasLayerState()
-            : hasImageMask(false)
-            , opaqueRect(SkRect::MakeEmpty())
-        { }
-
-        SkPaint paint;
-
-        // An image mask is being applied to the layer.
-        bool hasImageMask;
-        // The opaque area in the image mask.
-        SkRect imageOpaqueRect;
-
-        SkRect opaqueRect;
-    };
-
-private:
-    void didDraw(const PlatformContextSkia*, const SkRect&, const SkPaint&, const SkBitmap* sourceBitmap, bool fillsBounds, DrawType);
-    void applyOpaqueRegionFromLayer(const PlatformContextSkia*, const SkRect& layerOpaqueRect, const SkPaint&);
-    void markRectAsOpaque(const SkRect&);
-    void markRectAsNonOpaque(const SkRect&);
-    void markAllAsNonOpaque();
-
-    SkRect& currentTrackingOpaqueRect();
-
-    SkRect m_opaqueRect;
-
-    Vector<CanvasLayerState, 3> m_canvasLayerStack;
-};
-
-}
-#endif // OpaqueRegionSkia_h
diff --git a/Source/WebCore/platform/graphics/skia/PathSkia.cpp b/Source/WebCore/platform/graphics/skia/PathSkia.cpp
deleted file mode 100644 (file)
index 4758752..0000000
+++ /dev/null
@@ -1,313 +0,0 @@
-// Copyright (c) 2008, 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:
-// 
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * 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.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-// 
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
-// OWNER 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 "Path.h"
-
-#include "AffineTransform.h"
-#include "FloatRect.h"
-#include "ImageBuffer.h"
-#include "StrokeStyleApplier.h"
-
-#include "SkPath.h"
-#include "SkRegion.h"
-#include "SkiaUtils.h"
-
-#include <wtf/MathExtras.h>
-
-namespace WebCore {
-
-Path::Path()
-    : m_path(0)
-{
-}
-
-Path::Path(const Path& other)
-{
-    m_path = other.m_path ? new SkPath(*other.m_path) : 0;
-}
-
-#if PLATFORM(BLACKBERRY)
-Path::Path(const SkPath& path)
-{
-    m_path = new SkPath(path);
-}
-#endif
-
-Path::~Path()
-{
-    if (m_path)
-        delete m_path;
-}
-
-PlatformPathPtr Path::ensurePlatformPath()
-{
-    if (!m_path)
-        m_path = new SkPath();
-    return m_path;
-}
-
-Path& Path::operator=(const Path& other)
-{
-    if (other.isNull()) {
-        if (m_path)
-            delete m_path;
-        m_path = 0;
-    } else
-        *ensurePlatformPath() = *other.m_path;
-    return *this;
-}
-
-bool Path::isEmpty() const
-{
-    return isNull() || m_path->isEmpty();
-}
-
-bool Path::hasCurrentPoint() const
-{
-    return !isNull() && m_path->getPoints(0, 0);
-}
-
-FloatPoint Path::currentPoint() const 
-{
-    if (!isNull() && m_path->countPoints() > 0) {
-        SkPoint skResult;
-        m_path->getLastPt(&skResult);
-        FloatPoint result;
-        result.setX(SkScalarToFloat(skResult.fX));
-        result.setY(SkScalarToFloat(skResult.fY));
-        return result;
-    }
-
-    // FIXME: Why does this return quietNaN? Other ports return 0,0.
-    float quietNaN = std::numeric_limits<float>::quiet_NaN();
-    return FloatPoint(quietNaN, quietNaN);
-}
-
-bool Path::contains(const FloatPoint& point, WindRule rule) const
-{
-    if (isNull())
-        return false;
-    return SkPathContainsPoint(m_path, point, rule == RULE_NONZERO ? SkPath::kWinding_FillType : SkPath::kEvenOdd_FillType);
-}
-
-void Path::translate(const FloatSize& size)
-{
-    ensurePlatformPath()->offset(WebCoreFloatToSkScalar(size.width()), WebCoreFloatToSkScalar(size.height()));
-}
-
-FloatRect Path::boundingRect() const
-{
-    if (isNull())
-        return FloatRect();
-    return m_path->getBounds();
-}
-
-void Path::moveTo(const FloatPoint& point)
-{
-    ensurePlatformPath()->moveTo(point);
-}
-
-void Path::addLineTo(const FloatPoint& point)
-{
-    ensurePlatformPath()->lineTo(point);
-}
-
-void Path::addQuadCurveTo(const FloatPoint& cp, const FloatPoint& ep)
-{
-    ensurePlatformPath()->quadTo(cp, ep);
-}
-
-void Path::addBezierCurveTo(const FloatPoint& p1, const FloatPoint& p2, const FloatPoint& ep)
-{
-    ensurePlatformPath()->cubicTo(p1, p2, ep);
-}
-
-void Path::addArcTo(const FloatPoint& p1, const FloatPoint& p2, float radius)
-{
-    ensurePlatformPath()->arcTo(p1, p2, WebCoreFloatToSkScalar(radius));
-}
-
-void Path::closeSubpath()
-{
-    ensurePlatformPath()->close();
-}
-
-void Path::addArc(const FloatPoint& p, float r, float sa, float ea, bool anticlockwise)
-{
-    ensurePlatformPath(); // Make sure m_path is not null.
-
-    SkScalar cx = WebCoreFloatToSkScalar(p.x());
-    SkScalar cy = WebCoreFloatToSkScalar(p.y());
-    SkScalar radius = WebCoreFloatToSkScalar(r);
-    SkScalar s360 = SkIntToScalar(360);
-
-    SkRect oval;
-    oval.set(cx - radius, cy - radius, cx + radius, cy + radius);
-
-    float sweep = ea - sa;
-    SkScalar startDegrees = WebCoreFloatToSkScalar(sa * 180 / piFloat);
-    SkScalar sweepDegrees = WebCoreFloatToSkScalar(sweep * 180 / piFloat);
-    // Check for a circle.
-    if (sweepDegrees >= s360 || sweepDegrees <= -s360) {
-        // Move to the start position (0 sweep means we add a single point).
-        m_path->arcTo(oval, startDegrees, 0, false);
-        // Draw the circle.
-        m_path->addOval(oval, anticlockwise ?
-            SkPath::kCCW_Direction : SkPath::kCW_Direction);
-        // Force a moveTo the end position.
-        m_path->arcTo(oval, startDegrees + sweepDegrees, 0, true);
-    } else {
-        // Counterclockwise arcs should be drawn with negative sweeps, while
-        // clockwise arcs should be drawn with positive sweeps. Check to see
-        // if the situation is reversed and correct it by adding or subtracting
-        // a full circle
-        if (anticlockwise && sweepDegrees > 0) {
-            sweepDegrees -= s360;
-        } else if (!anticlockwise && sweepDegrees < 0) {
-            sweepDegrees += s360;
-        }
-
-        m_path->arcTo(oval, startDegrees, sweepDegrees, false);
-    }
-}
-
-void Path::addRect(const FloatRect& rect)
-{
-    ensurePlatformPath()->addRect(rect);
-}
-
-void Path::addEllipse(const FloatRect& rect)
-{
-    ensurePlatformPath()->addOval(rect);
-}
-
-void Path::clear()
-{
-    if (isNull())
-        return;
-    m_path->reset();
-}
-
-static FloatPoint* convertPathPoints(FloatPoint dst[], const SkPoint src[], int count)
-{
-    for (int i = 0; i < count; i++) {
-        dst[i].setX(SkScalarToFloat(src[i].fX));
-        dst[i].setY(SkScalarToFloat(src[i].fY));
-    }
-    return dst;
-}
-
-void Path::apply(void* info, PathApplierFunction function) const
-{
-    if (isNull())
-        return;
-
-    SkPath::RawIter iter(*m_path);
-    SkPoint pts[4];
-    PathElement pathElement;
-    FloatPoint pathPoints[3];
-
-    for (;;) {
-        switch (iter.next(pts)) {
-        case SkPath::kMove_Verb:
-            pathElement.type = PathElementMoveToPoint;
-            pathElement.points = convertPathPoints(pathPoints, &pts[0], 1);
-            break;
-        case SkPath::kLine_Verb:
-            pathElement.type = PathElementAddLineToPoint;
-            pathElement.points = convertPathPoints(pathPoints, &pts[1], 1);
-            break;
-        case SkPath::kQuad_Verb:
-            pathElement.type = PathElementAddQuadCurveToPoint;
-            pathElement.points = convertPathPoints(pathPoints, &pts[1], 2);
-            break;
-        case SkPath::kCubic_Verb:
-            pathElement.type = PathElementAddCurveToPoint;
-            pathElement.points = convertPathPoints(pathPoints, &pts[1], 3);
-            break;
-        case SkPath::kClose_Verb:
-            pathElement.type = PathElementCloseSubpath;
-            pathElement.points = convertPathPoints(pathPoints, 0, 0);
-            break;
-        case SkPath::kDone_Verb:
-            return;
-        }
-        function(info, &pathElement);
-    }
-}
-
-void Path::transform(const AffineTransform& xform)
-{
-    ensurePlatformPath()->transform(xform);
-}
-
-FloatRect Path::strokeBoundingRect(StrokeStyleApplier* applier) const
-{
-    if (isNull())
-        return FloatRect();
-
-    GraphicsContext* scratch = scratchContext();
-    scratch->save();
-
-    if (applier)
-        applier->strokeStyle(scratch);
-
-    SkPaint paint;
-    scratch->platformContext()->setupPaintForStroking(&paint, 0, 0);
-    SkPath boundingPath;
-    paint.getFillPath(*platformPath(), &boundingPath);
-
-    FloatRect r = boundingPath.getBounds();
-    scratch->restore();
-    return r;
-}
-
-bool Path::strokeContains(StrokeStyleApplier* applier, const FloatPoint& point) const
-{
-    if (isNull())
-        return false;
-
-    ASSERT(applier);
-    GraphicsContext* scratch = scratchContext();
-    scratch->save();
-
-    applier->strokeStyle(scratch);
-
-    SkPaint paint;
-    scratch->platformContext()->setupPaintForStroking(&paint, 0, 0);
-    SkPath strokePath;
-    paint.getFillPath(*platformPath(), &strokePath);
-    bool contains = SkPathContainsPoint(&strokePath, point, SkPath::kWinding_FillType);
-
-    scratch->restore();
-    return contains;
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/PatternSkia.cpp b/Source/WebCore/platform/graphics/skia/PatternSkia.cpp
deleted file mode 100644 (file)
index 74cbb3d..0000000
+++ /dev/null
@@ -1,111 +0,0 @@
-/*
- * Copyright (C) 2008 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. 
- * 3.  Neither the name of Apple Computer, Inc. ("Apple") nor the names of
- *     its contributors may be used to endorse or promote products derived
- *     from this software without specific prior written permission. 
- *
- * 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 "Pattern.h"
-
-#include "AffineTransform.h"
-#include "Image.h"
-#include "NativeImageSkia.h"
-
-#include "SkCanvas.h"
-#include "SkColor.h"
-#include "SkColorShader.h"
-#include "SkShader.h"
-
-using namespace std;
-
-namespace WebCore {
-
-void Pattern::platformDestroy()
-{
-    SkSafeUnref(m_pattern);
-    m_pattern = 0;
-    if (m_externalMemoryAllocated)
-        m_externalMemoryAllocated = 0;
-}
-
-PlatformPatternPtr Pattern::platformPattern(const AffineTransform& patternTransform)
-{
-    if (m_pattern)
-        return m_pattern;
-
-    // Note: patternTransform is ignored since it seems to be applied elsewhere
-    // (when the pattern is used?). Applying it to the pattern (i.e.
-    // shader->setLocalMatrix) results in a double transformation. This can be
-    // seen, for instance, as an extra offset in:
-    // LayoutTests/fast/canvas/patternfill-repeat.html
-    // and expanded scale and skew in:
-    // LayoutTests/svg/W3C-SVG-1.1/pservers-grad-06-b.svg
-
-    RefPtr<NativeImageSkia> image = m_tileImage->nativeImageForCurrentFrame();
-    // If we don't have a bitmap, return a transparent shader.
-    if (!image)
-        m_pattern = new SkColorShader(SkColorSetARGB(0, 0, 0, 0));
-
-    else if (m_repeatX && m_repeatY)
-        m_pattern = SkShader::CreateBitmapShader(image->bitmap(), SkShader::kRepeat_TileMode, SkShader::kRepeat_TileMode);
-
-    else {
-
-        // Skia does not have a "draw the tile only once" option. Clamp_TileMode
-        // repeats the last line of the image after drawing one tile. To avoid
-        // filling the space with arbitrary pixels, this workaround forces the
-        // image to have a line of transparent pixels on the "repeated" edge(s),
-        // thus causing extra space to be transparent filled.
-        SkShader::TileMode tileModeX = m_repeatX ? SkShader::kRepeat_TileMode : SkShader::kClamp_TileMode;
-        SkShader::TileMode tileModeY = m_repeatY ? SkShader::kRepeat_TileMode : SkShader::kClamp_TileMode;
-        int expandW = m_repeatX ? 0 : 1;
-        int expandH = m_repeatY ? 0 : 1;
-
-        // Create a transparent bitmap 1 pixel wider and/or taller than the
-        // original, then copy the orignal into it.
-        // FIXME: Is there a better way to pad (not scale) an image in skia?
-        SkBitmap bm2;
-        bm2.setConfig(image->bitmap().config(), image->bitmap().width() + expandW, image->bitmap().height() + expandH);
-        bm2.allocPixels();
-        bm2.eraseARGB(0x00, 0x00, 0x00, 0x00);
-        SkCanvas canvas(bm2);
-        canvas.drawBitmap(image->bitmap(), 0, 0);
-        bm2.setImmutable();
-        m_pattern = SkShader::CreateBitmapShader(bm2, tileModeX, tileModeY);
-
-        // Clamp to int, since that's what the adjust function takes.
-        m_externalMemoryAllocated = static_cast<int>(min(static_cast<size_t>(INT_MAX), bm2.getSafeSize()));
-    }
-    m_pattern->setLocalMatrix(m_patternSpaceTransformation);
-    return m_pattern;
-}
-
-void Pattern::setPlatformPatternSpaceTransform()
-{
-    if (m_pattern)
-        m_pattern->setLocalMatrix(m_patternSpaceTransformation);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp b/Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp
deleted file mode 100644 (file)
index 6bb882a..0000000
+++ /dev/null
@@ -1,629 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "PlatformContextSkia.h"
-
-#include "Extensions3D.h"
-#include "GraphicsContext.h"
-#include "GraphicsContext3D.h"
-#include "ImageBuffer.h"
-#include "NativeImageSkia.h"
-#include "SkiaUtils.h"
-#include "Texture.h"
-#include "TilingData.h"
-
-#include "skia/ext/image_operations.h"
-#include "skia/ext/platform_canvas.h"
-
-#include "SkBitmap.h"
-#include "SkColorPriv.h"
-#include "SkDashPathEffect.h"
-#include "SkShader.h"
-
-#include <wtf/MathExtras.h>
-#include <wtf/Vector.h>
-
-#if PLATFORM(CHROMIUM)
-#include "TraceEvent.h"
-#endif
-
-namespace WebCore {
-
-struct PlatformContextSkia::DeferredSaveState {
-    DeferredSaveState(unsigned mask, int count) : m_flags(mask), m_restoreCount(count) { }
-
-    unsigned m_flags;
-    int m_restoreCount;
-};
-
-// State -----------------------------------------------------------------------
-
-// Encapsulates the additional painting state information we store for each
-// pushed graphics state.
-struct PlatformContextSkia::State {
-    State();
-    State(const State&);
-    ~State();
-
-    // Common shader state.
-    float m_alpha;
-    SkXfermode::Mode m_xferMode;
-    bool m_useAntialiasing;
-    SkDrawLooper* m_looper;
-
-    // Fill.
-    SkColor m_fillColor;
-
-    // Stroke.
-    StrokeStyle m_strokeStyle;
-    SkColor m_strokeColor;
-    float m_strokeThickness;
-    int m_dashRatio;  // Ratio of the length of a dash to its width.
-    float m_miterLimit;
-    SkPaint::Cap m_lineCap;
-    SkPaint::Join m_lineJoin;
-    SkDashPathEffect* m_dash;
-
-    // Text. (See TextModeFill & friends in GraphicsContext.h.)
-    TextDrawingModeFlags m_textDrawingMode;
-
-    // Helper function for applying the state's alpha value to the given input
-    // color to produce a new output color.
-    SkColor applyAlpha(SkColor) const;
-
-    // If non-empty, the current State is clipped to this image.
-    SkBitmap m_imageBufferClip;
-    // If m_imageBufferClip is non-empty, this is the region the image is clipped to.
-    SkRect m_clip;
-
-    InterpolationQuality m_interpolationQuality;
-
-    PlatformContextSkia::State cloneInheritedProperties();
-private:
-    // Not supported.
-    void operator=(const State&);
-};
-
-// Note: Keep theses default values in sync with GraphicsContextState.
-PlatformContextSkia::State::State()
-    : m_alpha(1)
-    , m_xferMode(SkXfermode::kSrcOver_Mode)
-    , m_useAntialiasing(true)
-    , m_looper(0)
-    , m_fillColor(0xFF000000)
-    , m_strokeStyle(SolidStroke)
-    , m_strokeColor(Color::black)
-    , m_strokeThickness(0)
-    , m_dashRatio(3)
-    , m_miterLimit(4)
-    , m_lineCap(SkPaint::kDefault_Cap)
-    , m_lineJoin(SkPaint::kDefault_Join)
-    , m_dash(0)
-    , m_textDrawingMode(TextModeFill)
-#if USE(LOW_QUALITY_IMAGE_INTERPOLATION)
-    , m_interpolationQuality(InterpolationLow)
-#else
-    , m_interpolationQuality(InterpolationHigh)
-#endif
-{
-}
-
-PlatformContextSkia::State::State(const State& other)
-    : m_alpha(other.m_alpha)
-    , m_xferMode(other.m_xferMode)
-    , m_useAntialiasing(other.m_useAntialiasing)
-    , m_looper(other.m_looper)
-    , m_fillColor(other.m_fillColor)
-    , m_strokeStyle(other.m_strokeStyle)
-    , m_strokeColor(other.m_strokeColor)
-    , m_strokeThickness(other.m_strokeThickness)
-    , m_dashRatio(other.m_dashRatio)
-    , m_miterLimit(other.m_miterLimit)
-    , m_lineCap(other.m_lineCap)
-    , m_lineJoin(other.m_lineJoin)
-    , m_dash(other.m_dash)
-    , m_textDrawingMode(other.m_textDrawingMode)
-    , m_imageBufferClip(other.m_imageBufferClip)
-    , m_clip(other.m_clip)
-    , m_interpolationQuality(other.m_interpolationQuality)
-{
-    // Up the ref count of these. SkSafeRef does nothing if its argument is 0.
-    SkSafeRef(m_looper);
-    SkSafeRef(m_dash);
-}
-
-PlatformContextSkia::State::~State()
-{
-    SkSafeUnref(m_looper);
-    SkSafeUnref(m_dash);
-}
-
-// Returns a new State with all of this object's inherited properties copied.
-PlatformContextSkia::State PlatformContextSkia::State::cloneInheritedProperties()
-{
-    return PlatformContextSkia::State(*this);
-}
-
-SkColor PlatformContextSkia::State::applyAlpha(SkColor c) const
-{
-    int s = roundf(m_alpha * 256);
-    if (s >= 256)
-        return c;
-    if (s < 0)
-        return 0;
-
-    int a = SkAlphaMul(SkColorGetA(c), s);
-    return (c & 0x00FFFFFF) | (a << 24);
-}
-
-// PlatformContextSkia ---------------------------------------------------------
-
-// Danger: canvas can be NULL.
-PlatformContextSkia::PlatformContextSkia(SkCanvas* canvas)
-    : m_canvas(canvas)
-    , m_deferredSaveFlags(0)
-    , m_trackOpaqueRegion(false)
-    , m_printing(false)
-    , m_accelerated(false)
-    , m_deferred(false)
-    , m_drawingToImageBuffer(false)
-    , m_deviceScaleFactor(1)
-{
-    m_stateStack.append(State());
-    m_state = &m_stateStack.last();
-
-    // will be assigned in setGraphicsContext()
-    m_gc = 0;
-}
-
-PlatformContextSkia::~PlatformContextSkia()
-{
-}
-
-void PlatformContextSkia::setCanvas(SkCanvas* canvas)
-{
-    m_canvas = canvas;
-}
-
-void PlatformContextSkia::setDrawingToImageBuffer(bool value)
-{
-    m_drawingToImageBuffer = value;
-}
-
-SkDevice* PlatformContextSkia::createCompatibleDevice(const IntSize& size, bool hasAlpha)
-{
-    return m_canvas->createCompatibleDevice(SkBitmap::kARGB_8888_Config, size.width(), size.height(), !hasAlpha);
-}
-
-bool PlatformContextSkia::isDrawingToImageBuffer() const
-{
-    return m_drawingToImageBuffer;
-}
-
-void PlatformContextSkia::save()
-{
-    m_stateStack.append(m_state->cloneInheritedProperties());
-    m_state = &m_stateStack.last();
-
-    // The clip image only needs to be applied once. Reset the image so that we
-    // don't attempt to clip multiple times.
-    m_state->m_imageBufferClip.reset();
-
-    m_saveStateStack.append(DeferredSaveState(m_deferredSaveFlags, m_canvas->getSaveCount()));
-    m_deferredSaveFlags |= SkCanvas::kMatrixClip_SaveFlag;
-}
-
-void PlatformContextSkia::saveLayer(const SkRect* bounds, const SkPaint* paint, SkCanvas::SaveFlags saveFlags)
-{
-    realizeSave(SkCanvas::kMatrixClip_SaveFlag);
-
-    m_canvas->saveLayer(bounds, paint, saveFlags);
-    if (bounds)
-        m_canvas->clipRect(*bounds);
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.pushCanvasLayer(paint);
-}
-
-void PlatformContextSkia::restoreLayer()
-{
-    m_canvas->restore();
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.popCanvasLayer(this);
-}
-
-void PlatformContextSkia::beginLayerClippedToImage(const FloatRect& rect,
-                                                   const ImageBuffer* imageBuffer)
-{
-    SkRect bounds = { SkFloatToScalar(rect.x()), SkFloatToScalar(rect.y()),
-                      SkFloatToScalar(rect.maxX()), SkFloatToScalar(rect.maxY()) };
-
-    if (imageBuffer->internalSize().isEmpty()) {
-        clipRect(bounds);
-        return;
-    }
-
-    // Skia doesn't support clipping to an image, so we create a layer. The next
-    // time restore is invoked the layer and |imageBuffer| are combined to
-    // create the resulting image.
-
-    m_state->m_clip = bounds;
-    // Get the absolute coordinates of the stored clipping rectangle to make it
-    // independent of any transform changes.
-    getTotalMatrix().mapRect(&m_state->m_clip);
-
-    SkCanvas::SaveFlags saveFlags = static_cast<SkCanvas::SaveFlags>(SkCanvas::kHasAlphaLayer_SaveFlag | SkCanvas::kFullColorLayer_SaveFlag);
-    saveLayer(&bounds, 0, saveFlags);
-
-    const SkBitmap* bitmap = imageBuffer->context()->platformContext()->bitmap();
-
-    if (m_trackOpaqueRegion) {
-        SkRect opaqueRect = bitmap->isOpaque() ? m_state->m_clip : SkRect::MakeEmpty();
-        m_opaqueRegion.setImageMask(opaqueRect);
-    }
-
-    // Copy off the image as |imageBuffer| may be deleted before restore is invoked.
-    if (bitmap->isImmutable())
-        m_state->m_imageBufferClip = *bitmap;
-    else {
-        // We need to make a deep-copy of the pixels themselves, so they don't
-        // change on us between now and when we want to apply them in restore()
-        bitmap->copyTo(&m_state->m_imageBufferClip, SkBitmap::kARGB_8888_Config);
-    }
-}
-
-void PlatformContextSkia::restore()
-{
-    if (!m_state->m_imageBufferClip.empty()) {
-        applyClipFromImage(m_state->m_clip, m_state->m_imageBufferClip);
-        m_canvas->restore();
-    }
-
-    m_stateStack.removeLast();
-    m_state = &m_stateStack.last();
-
-    DeferredSaveState savedState = m_saveStateStack.last();
-    m_saveStateStack.removeLast();
-    m_deferredSaveFlags = savedState.m_flags;
-    m_canvas->restoreToCount(savedState.m_restoreCount);
-}
-
-void PlatformContextSkia::drawRect(SkRect rect)
-{
-    SkPaint paint;
-    int fillcolorNotTransparent = m_state->m_fillColor & 0xFF000000;
-    if (fillcolorNotTransparent) {
-        setupPaintForFilling(&paint);
-        drawRect(rect, paint);
-    }
-
-    if (m_state->m_strokeStyle != NoStroke
-        && (m_state->m_strokeColor & 0xFF000000)) {
-        // We do a fill of four rects to simulate the stroke of a border.
-        paint.reset();
-        setupPaintForFilling(&paint);
-        // need to jam in the strokeColor
-        paint.setColor(this->effectiveStrokeColor());
-
-        SkRect topBorder = { rect.fLeft, rect.fTop, rect.fRight, rect.fTop + 1 };
-        drawRect(topBorder, paint);
-        SkRect bottomBorder = { rect.fLeft, rect.fBottom - 1, rect.fRight, rect.fBottom };
-        drawRect(bottomBorder, paint);
-        SkRect leftBorder = { rect.fLeft, rect.fTop + 1, rect.fLeft + 1, rect.fBottom - 1 };
-        drawRect(leftBorder, paint);
-        SkRect rightBorder = { rect.fRight - 1, rect.fTop + 1, rect.fRight, rect.fBottom - 1 };
-        drawRect(rightBorder, paint);
-    }
-}
-
-void PlatformContextSkia::setupPaintCommon(SkPaint* paint) const
-{
-#if defined(SK_DEBUG)
-    {
-        SkPaint defaultPaint;
-        SkASSERT(*paint == defaultPaint);
-    }
-#endif
-
-    paint->setAntiAlias(m_state->m_useAntialiasing);
-    paint->setXfermodeMode(m_state->m_xferMode);
-    paint->setLooper(m_state->m_looper);
-}
-
-void PlatformContextSkia::setupShader(SkPaint* paint, Gradient* grad, Pattern* pat, SkColor color) const
-{
-    SkShader* shader = 0;
-
-    if (grad) {
-        shader = grad->platformGradient();
-        color = SK_ColorBLACK;
-    } else if (pat) {
-        shader = pat->platformPattern(m_gc->getCTM());
-        color = SK_ColorBLACK;
-        paint->setFilterBitmap(interpolationQuality() != InterpolationNone);
-    }
-
-    paint->setColor(m_state->applyAlpha(color));
-    paint->setShader(shader);
-}
-
-void PlatformContextSkia::setupPaintForFilling(SkPaint* paint) const
-{
-    setupPaintCommon(paint);
-
-    const GraphicsContextState& state = m_gc->state();
-    setupShader(paint, state.fillGradient.get(), state.fillPattern.get(), m_state->m_fillColor);
-}
-
-float PlatformContextSkia::setupPaintForStroking(SkPaint* paint, SkRect* rect, int length) const
-{
-    setupPaintCommon(paint);
-
-    const GraphicsContextState& state = m_gc->state();
-    setupShader(paint, state.strokeGradient.get(), state.strokePattern.get(), m_state->m_strokeColor);
-
-    float width = m_state->m_strokeThickness;
-
-    paint->setStyle(SkPaint::kStroke_Style);
-    paint->setStrokeWidth(SkFloatToScalar(width));
-    paint->setStrokeCap(m_state->m_lineCap);
-    paint->setStrokeJoin(m_state->m_lineJoin);
-    paint->setStrokeMiter(SkFloatToScalar(m_state->m_miterLimit));
-
-    if (m_state->m_dash)
-        paint->setPathEffect(m_state->m_dash);
-    else {
-        switch (m_state->m_strokeStyle) {
-        case NoStroke:
-        case SolidStroke:
-#if ENABLE(CSS3_TEXT)
-        case DoubleStroke:
-        case WavyStroke: // FIXME: https://bugs.webkit.org/show_bug.cgi?id=93509 - Needs platform support.
-#endif // CSS3_TEXT
-            break;
-        case DashedStroke:
-            width = m_state->m_dashRatio * width;
-            // Fall through.
-        case DottedStroke:
-            // Truncate the width, since we don't want fuzzy dots or dashes.
-            int dashLength = static_cast<int>(width);
-            // Subtract off the endcaps, since they're rendered separately.
-            int distance = length - 2 * static_cast<int>(m_state->m_strokeThickness);
-            int phase = 1;
-            if (dashLength > 1) {
-                // Determine how many dashes or dots we should have.
-                int numDashes = distance / dashLength;
-                int remainder = distance % dashLength;
-                // Adjust the phase to center the dashes within the line.
-                if (numDashes % 2 == 0) {
-                    // Even:  shift right half a dash, minus half the remainder
-                    phase = (dashLength - remainder) / 2;
-                } else {
-                    // Odd:  shift right a full dash, minus half the remainder
-                    phase = dashLength - remainder / 2;
-                }
-            }
-            SkScalar dashLengthSk = SkIntToScalar(dashLength);
-            SkScalar intervals[2] = { dashLengthSk, dashLengthSk };
-            paint->setPathEffect(new SkDashPathEffect(intervals, 2, SkIntToScalar(phase)))->unref();
-        }
-    }
-
-    return width;
-}
-
-void PlatformContextSkia::setDrawLooper(SkDrawLooper* dl)
-{
-    SkRefCnt_SafeAssign(m_state->m_looper, dl);
-}
-
-void PlatformContextSkia::setMiterLimit(float ml)
-{
-    m_state->m_miterLimit = ml;
-}
-
-void PlatformContextSkia::setAlpha(float alpha)
-{
-    m_state->m_alpha = alpha;
-}
-
-void PlatformContextSkia::setLineCap(SkPaint::Cap lc)
-{
-    m_state->m_lineCap = lc;
-}
-
-void PlatformContextSkia::setLineJoin(SkPaint::Join lj)
-{
-    m_state->m_lineJoin = lj;
-}
-
-void PlatformContextSkia::setXfermodeMode(SkXfermode::Mode pdm)
-{
-    m_state->m_xferMode = pdm;
-}
-
-void PlatformContextSkia::setFillColor(SkColor color)
-{
-    m_state->m_fillColor = color;
-}
-
-SkDrawLooper* PlatformContextSkia::getDrawLooper() const
-{
-    return m_state->m_looper;
-}
-
-StrokeStyle PlatformContextSkia::getStrokeStyle() const
-{
-    return m_state->m_strokeStyle;
-}
-
-void PlatformContextSkia::setStrokeStyle(StrokeStyle strokeStyle)
-{
-    m_state->m_strokeStyle = strokeStyle;
-}
-
-void PlatformContextSkia::setStrokeColor(SkColor strokeColor)
-{
-    m_state->m_strokeColor = strokeColor;
-}
-
-float PlatformContextSkia::getStrokeThickness() const
-{
-    return m_state->m_strokeThickness;
-}
-
-void PlatformContextSkia::setStrokeThickness(float thickness)
-{
-    m_state->m_strokeThickness = thickness;
-}
-
-TextDrawingModeFlags PlatformContextSkia::getTextDrawingMode() const
-{
-    return m_state->m_textDrawingMode;
-}
-
-float PlatformContextSkia::getAlpha() const
-{
-    return m_state->m_alpha;
-}
-
-int PlatformContextSkia::getNormalizedAlpha() const
-{
-    int alpha = roundf(m_state->m_alpha * 256);
-    if (alpha > 255)
-        alpha = 255;
-    else if (alpha < 0)
-        alpha = 0;
-    return alpha;
-}
-
-SkXfermode::Mode PlatformContextSkia::getXfermodeMode() const
-{
-    return m_state->m_xferMode;
-}
-
-void PlatformContextSkia::setTextDrawingMode(TextDrawingModeFlags mode)
-{
-    m_state->m_textDrawingMode = mode;
-}
-
-void PlatformContextSkia::setUseAntialiasing(bool enable)
-{
-    m_state->m_useAntialiasing = enable;
-}
-
-SkColor PlatformContextSkia::effectiveFillColor() const
-{
-    return m_state->applyAlpha(m_state->m_fillColor);
-}
-
-SkColor PlatformContextSkia::effectiveStrokeColor() const
-{
-    return m_state->applyAlpha(m_state->m_strokeColor);
-}
-
-InterpolationQuality PlatformContextSkia::interpolationQuality() const
-{
-    return m_state->m_interpolationQuality;
-}
-
-void PlatformContextSkia::setInterpolationQuality(InterpolationQuality interpolationQuality)
-{
-    m_state->m_interpolationQuality = interpolationQuality;
-}
-
-void PlatformContextSkia::setDashPathEffect(SkDashPathEffect* dash)
-{
-    if (dash != m_state->m_dash) {
-        SkSafeUnref(m_state->m_dash);
-        m_state->m_dash = dash;
-    }
-}
-
-const SkBitmap* PlatformContextSkia::bitmap() const
-{
-#if PLATFORM(CHROMIUM)
-    TRACE_EVENT0("skia", "PlatformContextSkia::bitmap");
-#endif
-    return &m_canvas->getDevice()->accessBitmap(false);
-}
-
-bool PlatformContextSkia::isNativeFontRenderingAllowed()
-{
-#if USE(SKIA_TEXT)
-    return false;
-#else
-    if (isAccelerated())
-        return false;
-    return skia::SupportsPlatformPaint(m_canvas);
-#endif
-}
-
-void PlatformContextSkia::applyClipFromImage(const SkRect& rect, const SkBitmap& imageBuffer)
-{
-    // NOTE: this assumes the image mask contains opaque black for the portions that are to be shown, as such we
-    // only look at the alpha when compositing. I'm not 100% sure this is what WebKit expects for image clipping.
-    SkPaint paint;
-    paint.setXfermodeMode(SkXfermode::kDstIn_Mode);
-    realizeSave(SkCanvas::kMatrixClip_SaveFlag);
-    m_canvas->save(SkCanvas::kMatrix_SaveFlag);
-    m_canvas->resetMatrix();
-    m_canvas->drawBitmapRect(imageBuffer, 0, rect, &paint);
-    m_canvas->restore();
-}
-
-void PlatformContextSkia::didDrawRect(const SkRect& rect, const SkPaint& paint, const SkBitmap* bitmap)
-{
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawRect(this, rect, paint, bitmap);
-}
-
-void PlatformContextSkia::adjustTextRenderMode(SkPaint* paint)
-{
-    if (!paint->isLCDRenderText())
-        return;
-
-    paint->setLCDRenderText(couldUseLCDRenderedText());
-}
-
-bool PlatformContextSkia::couldUseLCDRenderedText()
-{
-    // Our layers only have a single alpha channel. This means that subpixel
-    // rendered text cannot be composited correctly when the layer is
-    // collapsed. Therefore, subpixel text is disabled when we are drawing
-    // onto a layer.
-    if (isDrawingToLayer())
-        return false;
-
-    return m_gc->shouldSmoothFonts();
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/PlatformContextSkia.h b/Source/WebCore/platform/graphics/skia/PlatformContextSkia.h
deleted file mode 100644 (file)
index 0789612..0000000
+++ /dev/null
@@ -1,518 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef PlatformContextSkia_h
-#define PlatformContextSkia_h
-
-#include "GraphicsContext.h"
-#include "OpaqueRegionSkia.h"
-
-#include "SkCanvas.h"
-#include "SkDashPathEffect.h"
-#include "SkDevice.h"
-#include "SkDrawLooper.h"
-#include "SkPaint.h"
-#include "SkPath.h"
-#include "SkRRect.h"
-
-#include <wtf/Noncopyable.h>
-#include <wtf/Vector.h>
-
-namespace WebCore {
-
-enum CompositeOperator;
-class Texture;
-
-// This class holds the platform-specific state for GraphicsContext. We put
-// most of our Skia wrappers on this class. In theory, a lot of this stuff could
-// be moved to GraphicsContext directly, except that some code external to this
-// would like to poke at our graphics layer as well (like the Image and Font
-// stuff, which needs some amount of our wrappers and state around SkCanvas).
-//
-// So in general, this class uses just Skia types except when there's no easy
-// conversion. GraphicsContext is responsible for converting the WebKit types to
-// Skia types and setting up the eventual call to the Skia functions.
-//
-// This class then keeps track of all the current Skia state. WebKit expects
-// that the graphics state that is pushed and popped by save() and restore()
-// includes things like colors and pen styles. Skia does this differently, where
-// push and pop only includes transforms and bitmaps, and the application is
-// responsible for managing the painting state which is store in separate
-// SkPaint objects. This class provides the adaptor that allows the painting
-// state to be pushed and popped along with the bitmap.
-class PlatformContextSkia {
-    WTF_MAKE_NONCOPYABLE(PlatformContextSkia);
-public:
-    // For printing, there shouldn't be any canvas. canvas can be NULL. If you
-    // supply a NULL canvas, you can also call setCanvas later.
-    PlatformContextSkia(SkCanvas*);
-    ~PlatformContextSkia();
-
-    // Sets the graphics context associated with this context.
-    // GraphicsContextSkia calls this from its constructor.
-    void setGraphicsContext(const GraphicsContext* gc) { m_gc = gc; }
-
-    // Sets the canvas associated with this context. Use when supplying NULL
-    // to the constructor.
-    void setCanvas(SkCanvas*);
-
-    SkDevice* createCompatibleDevice(const IntSize&, bool hasAlpha);
-
-    // If false we're rendering to a GraphicsContext for a web page, if true
-    // we're not (as is the case when rendering to a canvas object).
-    // If this is true the contents have not been marked up with the magic
-    // color and all text drawing needs to go to a layer so that the alpha is
-    // correctly updated.
-    void setDrawingToImageBuffer(bool);
-    bool isDrawingToImageBuffer() const;
-
-    void save();
-    void restore();
-
-    void saveLayer(const SkRect* bounds, const SkPaint*, SkCanvas::SaveFlags = SkCanvas::kARGB_ClipLayer_SaveFlag);
-    void restoreLayer();
-
-    // Begins a layer that is clipped to the image |imageBuffer| at the location
-    // |rect|. This layer is implicitly restored when the next restore is
-    // invoked.
-    // NOTE: |imageBuffer| may be deleted before the |restore| is invoked.
-    void beginLayerClippedToImage(const FloatRect&, const ImageBuffer*);
-
-    // Sets up the common flags on a paint for antialiasing, effects, etc.
-    // This is implicitly called by setupPaintFill and setupPaintStroke, but
-    // you may wish to call it directly sometimes if you don't want that other
-    // behavior.
-    void setupPaintCommon(SkPaint*) const;
-
-    // Sets up the paint for the current fill style.
-    void setupPaintForFilling(SkPaint*) const;
-
-    // Sets up the paint for stroking. Returns an int representing the width of
-    // the pen, or 1 if the pen's width is 0 if a non-zero length is provided,
-    // the number of dashes/dots on a dashed/dotted line will be adjusted to
-    // start and end that length with a dash/dot.
-    float setupPaintForStroking(SkPaint*, SkRect*, int length) const;
-
-    // State setting functions.
-    void setDrawLooper(SkDrawLooper*);  // Note: takes an additional ref.
-    void setMiterLimit(float);
-    void setAlpha(float);
-    void setLineCap(SkPaint::Cap);
-    void setLineJoin(SkPaint::Join);
-    void setXfermodeMode(SkXfermode::Mode);
-    void setFillColor(SkColor);
-    void setStrokeStyle(StrokeStyle);
-    void setStrokeColor(SkColor);
-    void setStrokeThickness(float thickness);
-    void setTextDrawingMode(TextDrawingModeFlags mode);
-    void setUseAntialiasing(bool enable);
-    void setDashPathEffect(SkDashPathEffect*);
-
-    SkDrawLooper* getDrawLooper() const;
-    StrokeStyle getStrokeStyle() const;
-    float getStrokeThickness() const;
-    TextDrawingModeFlags getTextDrawingMode() const;
-    float getAlpha() const;
-    int getNormalizedAlpha() const;
-    SkXfermode::Mode getXfermodeMode() const;
-
-    // Returns the fill color. The returned color has it's alpha adjusted
-    // by the current alpha.
-    SkColor effectiveFillColor() const;
-
-    // Returns the stroke color. The returned color has it's alpha adjusted
-    // by the current alpha.
-    SkColor effectiveStrokeColor() const;
-
-    // Returns the canvas used for painting, NOT guaranteed to be non-null.
-    // Accessing the backing canvas this way flushes all queued save ops,
-    // so it should be avoided. Use the corresponding PlatformContextSkia
-    // draw/matrix/clip methods instead.
-    SkCanvas* canvas();
-    const SkCanvas* canvas() const { return m_canvas; }
-
-    InterpolationQuality interpolationQuality() const;
-    void setInterpolationQuality(InterpolationQuality interpolationQuality);
-
-    // FIXME: This should be pushed down to GraphicsContext.
-    void drawRect(SkRect rect);
-
-    // Returns if the context is a printing context instead of a display
-    // context. Bitmap shouldn't be resampled when printing to keep the best
-    // possible quality.
-    bool printing() const { return m_printing; }
-    void setPrinting(bool p) { m_printing = p; }
-
-    // Returns if the context allows rendering of fonts using native platform
-    // APIs. If false is returned font rendering is performed using the skia
-    // text drawing APIs.
-    // if USE(SKIA_TEXT) is enabled, this always returns false
-    bool isNativeFontRenderingAllowed();
-
-    bool isAccelerated() const { return m_accelerated; }
-    void setAccelerated(bool accelerated) { m_accelerated = accelerated; }
-
-    // True if this context is deferring draw calls to be executed later.
-    // We need to know this for context-to-context draws, in order to know if
-    // the source bitmap needs to be copied.
-    bool isDeferred() const { return m_deferred; }
-    void setDeferred(bool deferred) { m_deferred = deferred; }
-
-    float deviceScaleFactor() const { return m_deviceScaleFactor; }
-    void setDeviceScaleFactor(float scale) { m_deviceScaleFactor = scale; }
-
-    void setTrackOpaqueRegion(bool track) { m_trackOpaqueRegion = track; }
-
-    // This will be an empty region unless tracking is enabled.
-    const OpaqueRegionSkia& opaqueRegion() const { return m_opaqueRegion; }
-
-    // After drawing directly to the context's canvas, use this function to notify the context so
-    // it can track the opaque region.
-    // FIXME: this is still needed only because ImageSkia::paintSkBitmap() may need to notify for a
-    //        smaller rect than the one drawn to, due to its clipping logic.
-    void didDrawRect(const SkRect&, const SkPaint&, const SkBitmap* = 0);
-
-    // Turn off LCD text for the paint if not supported on this context.
-    void adjustTextRenderMode(SkPaint*);
-    bool couldUseLCDRenderedText();
-
-    enum AntiAliasingMode {
-        NotAntiAliased,
-        AntiAliased
-    };
-    enum AccessMode {
-        ReadOnly,
-        ReadWrite
-    };
-
-    // SkCanvas wrappers.
-    const SkBitmap* bitmap() const;
-    const SkBitmap& layerBitmap(AccessMode = ReadOnly) const;
-    bool readPixels(SkBitmap*, int x, int y,
-        SkCanvas::Config8888 = SkCanvas::kNative_Premul_Config8888);
-    void writePixels(const SkBitmap&, int x, int y,
-        SkCanvas::Config8888 = SkCanvas::kNative_Premul_Config8888);
-    bool isDrawingToLayer() const;
-    bool isVector() const;
-
-    bool clipPath(const SkPath&, AntiAliasingMode = NotAntiAliased,
-        SkRegion::Op = SkRegion::kIntersect_Op);
-    bool clipRect(const SkRect&, AntiAliasingMode = NotAntiAliased,
-        SkRegion::Op = SkRegion::kIntersect_Op);
-    bool clipRRect(const SkRRect&, AntiAliasingMode = NotAntiAliased,
-        SkRegion::Op = SkRegion::kIntersect_Op);
-    bool getClipBounds(SkRect*) const;
-
-    void setMatrix(const SkMatrix&);
-    const SkMatrix& getTotalMatrix() const;
-    bool concat(const SkMatrix&);
-    bool rotate(SkScalar degrees);
-    bool scale(SkScalar sx, SkScalar sy);
-    bool translate(SkScalar dx, SkScalar dy);
-
-    void drawBitmap(const SkBitmap&, SkScalar, SkScalar, const SkPaint* = 0);
-    void drawBitmapRect(const SkBitmap&, const SkIRect*, const SkRect&, const SkPaint* = 0);
-    void drawOval(const SkRect&, const SkPaint&);
-    void drawPath(const SkPath&, const SkPaint&);
-    void drawPoints(SkCanvas::PointMode, size_t count, const SkPoint pts[], const SkPaint&);
-    void drawRect(const SkRect&, const SkPaint&);
-    void drawIRect(const SkIRect&, const SkPaint&);
-    void drawRRect(const SkRRect&, const SkPaint&);
-    void drawPosText(const void* text, size_t byteLength, const SkPoint pos[], const SkPaint&);
-    void drawPosTextH(const void* text, size_t byteLength, const SkScalar xpos[], SkScalar constY,
-        const SkPaint&);
-    void drawTextOnPath(const void* text, size_t byteLength, const SkPath&,
-        const SkMatrix*, const SkPaint&);
-
-private:
-    // Used when restoring and the state has an image clip. Only shows the pixels in
-    // m_canvas that are also in imageBuffer.
-    // The clipping rectangle is given in absolute coordinates.
-    void applyClipFromImage(const SkRect&, const SkBitmap&);
-
-    // common code between setupPaintFor[Filling,Stroking]
-    void setupShader(SkPaint*, Gradient*, Pattern*, SkColor) const;
-
-    void realizeSave(SkCanvas::SaveFlags);
-
-    // Defines drawing style.
-    struct State;
-
-    struct DeferredSaveState;
-
-    // NULL indicates painting is disabled. Never delete this object.
-    SkCanvas* m_canvas;
-    const GraphicsContext* m_gc;
-
-    // States stack. Enables local drawing state change with save()/restore()
-    // calls.
-    WTF::Vector<State> m_stateStack;
-    // Pointer to the current drawing state. This is a cached value of
-    // mStateStack.back().
-    State* m_state;
-
-    WTF::Vector<DeferredSaveState> m_saveStateStack;
-
-    // Currently pending save flags.
-    // FIXME: While defined as a bitmask of SkCanvas::SaveFlags, this is mostly used as a bool.
-    //        It will come in handy when adding granular save() support (clip vs. matrix vs. paint).
-    unsigned m_deferredSaveFlags;
-
-    // Tracks the region painted opaque via the GraphicsContext.
-    OpaqueRegionSkia m_opaqueRegion;
-    bool m_trackOpaqueRegion;
-
-    bool m_printing;
-    bool m_accelerated;
-    bool m_deferred;
-    bool m_drawingToImageBuffer;
-    float m_deviceScaleFactor;
-};
-
-inline void PlatformContextSkia::realizeSave(SkCanvas::SaveFlags flags)
-{
-    if (m_deferredSaveFlags & flags) {
-        m_canvas->save((SkCanvas::SaveFlags)m_deferredSaveFlags);
-        m_deferredSaveFlags = 0;
-    }
-}
-
-inline SkCanvas* PlatformContextSkia::canvas()
-{
-    // Flush any pending saves.
-    realizeSave(SkCanvas::kMatrixClip_SaveFlag);
-
-    return m_canvas;
-}
-
-inline const SkBitmap& PlatformContextSkia::layerBitmap(AccessMode access) const
-{
-    return m_canvas->getTopDevice()->accessBitmap(access == ReadWrite);
-}
-
-inline bool PlatformContextSkia::readPixels(SkBitmap* bitmap, int x, int y,
-    SkCanvas::Config8888 config8888)
-{
-    return m_canvas->readPixels(bitmap, x, y, config8888);
-}
-
-inline void PlatformContextSkia::writePixels(const SkBitmap& bitmap, int x, int y,
-    SkCanvas::Config8888 config8888)
-{
-    m_canvas->writePixels(bitmap, x, y, config8888);
-
-    if (m_trackOpaqueRegion) {
-        SkRect rect = SkRect::MakeXYWH(x, y, bitmap.width(), bitmap.height());
-        SkPaint paint;
-
-        paint.setXfermodeMode(SkXfermode::kSrc_Mode);
-        m_opaqueRegion.didDrawRect(this, rect, paint, &bitmap);
-    }
-}
-
-inline bool PlatformContextSkia::isDrawingToLayer() const
-{
-    return m_canvas->isDrawingToLayer();
-}
-
-inline bool PlatformContextSkia::isVector() const
-{
-    return m_canvas->getTopDevice()->getDeviceCapabilities() & SkDevice::kVector_Capability;
-}
-
-inline bool PlatformContextSkia::clipPath(const SkPath& path, AntiAliasingMode aa, SkRegion::Op op)
-{
-    realizeSave(SkCanvas::kClip_SaveFlag);
-
-    return m_canvas->clipPath(path, op, aa == AntiAliased);
-}
-
-inline bool PlatformContextSkia::clipRect(const SkRect& rect, AntiAliasingMode aa, SkRegion::Op op)
-{
-    realizeSave(SkCanvas::kClip_SaveFlag);
-
-    return m_canvas->clipRect(rect, op, aa == AntiAliased);
-}
-
-inline bool PlatformContextSkia::clipRRect(const SkRRect& rect, AntiAliasingMode aa, SkRegion::Op op)
-{
-    realizeSave(SkCanvas::kClip_SaveFlag);
-
-    return m_canvas->clipRRect(rect, op, aa == AntiAliased);
-}
-
-inline bool PlatformContextSkia::getClipBounds(SkRect* bounds) const
-{
-    return m_canvas->getClipBounds(bounds);
-}
-
-inline void PlatformContextSkia::setMatrix(const SkMatrix& matrix)
-{
-    realizeSave(SkCanvas::kMatrix_SaveFlag);
-
-    m_canvas->setMatrix(matrix);
-}
-
-inline const SkMatrix& PlatformContextSkia::getTotalMatrix() const
-{
-    return m_canvas->getTotalMatrix();
-}
-
-inline bool PlatformContextSkia::concat(const SkMatrix& matrix)
-{
-    realizeSave(SkCanvas::kMatrix_SaveFlag);
-
-    return m_canvas->concat(matrix);
-}
-
-inline bool PlatformContextSkia::rotate(SkScalar degrees)
-{
-    realizeSave(SkCanvas::kMatrix_SaveFlag);
-
-    return m_canvas->rotate(degrees);
-}
-
-inline bool PlatformContextSkia::scale(SkScalar sx, SkScalar sy)
-{
-    realizeSave(SkCanvas::kMatrix_SaveFlag);
-
-    return m_canvas->scale(sx, sy);
-}
-
-inline bool PlatformContextSkia::translate(SkScalar dx, SkScalar dy)
-{
-    realizeSave(SkCanvas::kMatrix_SaveFlag);
-
-    return m_canvas->translate(dx, dy);
-}
-
-inline void PlatformContextSkia::drawBitmap(const SkBitmap& bitmap, SkScalar left, SkScalar top,
-    const SkPaint* paint)
-{
-    m_canvas->drawBitmap(bitmap, left, top, paint);
-
-    if (m_trackOpaqueRegion) {
-        SkRect rect = SkRect::MakeXYWH(left, top, bitmap.width(), bitmap.height());
-        m_opaqueRegion.didDrawRect(this, rect, *paint, &bitmap);
-    }
-}
-
-inline void PlatformContextSkia::drawBitmapRect(const SkBitmap& bitmap, const SkIRect* isrc,
-    const SkRect& dst, const SkPaint* paint)
-{
-    m_canvas->drawBitmapRect(bitmap, isrc, dst, paint);
-
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawRect(this, dst, *paint, &bitmap);
-}
-
-inline void PlatformContextSkia::drawOval(const SkRect& oval, const SkPaint& paint)
-{
-    m_canvas->drawOval(oval, paint);
-
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawBounded(this, oval, paint);
-}
-
-inline void PlatformContextSkia::drawPath(const SkPath& path, const SkPaint& paint)
-{
-    m_canvas->drawPath(path, paint);
-
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawPath(this, path, paint);
-}
-
-inline void PlatformContextSkia::drawPoints(SkCanvas::PointMode mode, size_t count,
-    const SkPoint pts[], const SkPaint& paint)
-{
-    m_canvas->drawPoints(mode, count, pts, paint);
-
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawPoints(this, mode, count, pts, paint);
-}
-
-inline void PlatformContextSkia::drawRect(const SkRect& rect, const SkPaint& paint)
-{
-    m_canvas->drawRect(rect, paint);
-
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawRect(this, rect, paint, 0);
-}
-
-inline void PlatformContextSkia::drawIRect(const SkIRect& rect, const SkPaint& paint)
-{
-    m_canvas->drawIRect(rect, paint);
-
-    if (m_trackOpaqueRegion) {
-        SkRect r = SkRect::MakeFromIRect(rect);
-        m_opaqueRegion.didDrawRect(this, r, paint, 0);
-    }
-}
-
-inline void PlatformContextSkia::drawRRect(const SkRRect& rect, const SkPaint& paint)
-{
-    m_canvas->drawRRect(rect, paint);
-
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawBounded(this, rect.getBounds(), paint);
-}
-
-inline void PlatformContextSkia::drawPosText(const void* text, size_t byteLength,
-    const SkPoint pos[], const SkPaint& paint)
-{
-    m_canvas->drawPosText(text, byteLength, pos, paint);
-
-    // FIXME: compute bounds for positioned text.
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawUnbounded(this, paint, OpaqueRegionSkia::FillOrStroke);
-}
-
-inline void PlatformContextSkia::drawPosTextH(const void* text, size_t byteLength,
-    const SkScalar xpos[], SkScalar constY, const SkPaint& paint)
-{
-    m_canvas->drawPosTextH(text, byteLength, xpos, constY, paint);
-
-    // FIXME: compute bounds for positioned text.
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawUnbounded(this, paint, OpaqueRegionSkia::FillOrStroke);
-}
-
-inline void PlatformContextSkia::drawTextOnPath(const void* text, size_t byteLength,
-    const SkPath& path, const SkMatrix* matrix, const SkPaint& paint)
-{
-    m_canvas->drawTextOnPath(text, byteLength, path, matrix, paint);
-
-    // FIXME: compute bounds for positioned text.
-    if (m_trackOpaqueRegion)
-        m_opaqueRegion.didDrawUnbounded(this, paint, OpaqueRegionSkia::FillOrStroke);
-}
-
-}
-#endif // PlatformContextSkia_h
diff --git a/Source/WebCore/platform/graphics/skia/PlatformGraphics.h b/Source/WebCore/platform/graphics/skia/PlatformGraphics.h
deleted file mode 100644 (file)
index 4ae8835..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef PlatformGraphics_h
-#define PlatformGraphics_h
-
-typedef class SkShader* PlatformGradient;
-typedef class SkShader* PlatformPattern;
-
-#endif // PlatformGraphics_h
diff --git a/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp b/Source/WebCore/platform/graphics/skia/SimpleFontDataSkia.cpp
deleted file mode 100644 (file)
index 085f67c..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "SimpleFontData.h"
-
-#include "FloatRect.h"
-#include "Font.h"
-#include "FontCache.h"
-#include "FontDescription.h"
-#include "Logging.h"
-#include "SkPaint.h"
-#include "SkTime.h"
-#include "SkTypeface.h"
-#include "SkTypes.h"
-#include "VDMXParser.h"
-#include <unicode/normlzr.h>
-#include <wtf/unicode/Unicode.h>
-
-namespace WebCore {
-
-// This is the largest VDMX table which we'll try to load and parse.
-static const size_t maxVDMXTableSize = 1024 * 1024; // 1 MB
-
-void SimpleFontData::platformInit()
-{
-    if (!m_platformData.size()) {
-        m_fontMetrics.reset();
-        m_avgCharWidth = 0;
-        m_maxCharWidth = 0;
-        return;
-    }
-
-    SkPaint paint;
-    SkPaint::FontMetrics metrics;
-
-    m_platformData.setupPaint(&paint);
-    paint.getFontMetrics(&metrics);
-    SkTypeface* face = paint.getTypeface();
-
-    static const uint32_t vdmxTag = SkSetFourByteTag('V', 'D', 'M', 'X');
-    int pixelSize = m_platformData.size() + 0.5;
-    int vdmxAscent, vdmxDescent;
-    bool isVDMXValid = false;
-
-    size_t vdmxSize = face->getTableSize(vdmxTag);
-    if (vdmxSize && vdmxSize < maxVDMXTableSize) {
-        uint8_t* vdmxTable = (uint8_t*) fastMalloc(vdmxSize);
-        if (vdmxTable
-            && face->getTableData(vdmxTag, 0, vdmxSize, vdmxTable) == vdmxSize
-            && parseVDMX(&vdmxAscent, &vdmxDescent, vdmxTable, vdmxSize, pixelSize))
-            isVDMXValid = true;
-        fastFree(vdmxTable);
-    }
-
-    float ascent;
-    float descent;
-
-    // Beware those who step here: This code is designed to match Win32 font
-    // metrics *exactly* (except the adjustment of ascent/descent on Linux/Android).
-    if (isVDMXValid) {
-        ascent = vdmxAscent;
-        descent = -vdmxDescent;
-    } else {
-        SkScalar height = -metrics.fAscent + metrics.fDescent + metrics.fLeading;
-        ascent = SkScalarRound(-metrics.fAscent);
-        descent = SkScalarRound(height) - ascent;
-#if OS(LINUX) || OS(ANDROID)
-        // When subpixel positioning is enabled, if the descent is rounded down, the descent part
-        // of the glyph may be truncated when displayed in a 'overflow: hidden' container.
-        // To avoid that, borrow 1 unit from the ascent when possible.
-        // FIXME: This can be removed if sub-pixel ascent/descent is supported.
-        if (platformData().fontRenderStyle().useSubpixelPositioning && descent < SkScalarToFloat(metrics.fDescent) && ascent >= 1) {
-            ++descent;
-            --ascent;
-        }
-#endif
-    }
-
-    m_fontMetrics.setAscent(ascent);
-    m_fontMetrics.setDescent(descent);
-
-    float xHeight;
-    if (metrics.fXHeight) {
-        xHeight = metrics.fXHeight;
-        m_fontMetrics.setXHeight(xHeight);
-    } else {
-        xHeight = ascent * 0.56; // Best guess from Windows font metrics.
-        m_fontMetrics.setXHeight(xHeight);
-        m_fontMetrics.setHasXHeight(false);
-    }
-
-
-    float lineGap = SkScalarToFloat(metrics.fLeading);
-    m_fontMetrics.setLineGap(lineGap);
-    m_fontMetrics.setLineSpacing(lroundf(ascent) + lroundf(descent) + lroundf(lineGap));
-
-    if (platformData().orientation() == Vertical && !isTextOrientationFallback()) {
-        static const uint32_t vheaTag = SkSetFourByteTag('v', 'h', 'e', 'a');
-        static const uint32_t vorgTag = SkSetFourByteTag('V', 'O', 'R', 'G');
-        size_t vheaSize = face->getTableSize(vheaTag);
-        size_t vorgSize = face->getTableSize(vorgTag);
-        if ((vheaSize > 0) || (vorgSize > 0))
-            m_hasVerticalGlyphs = true;
-    }
-
-    // In WebKit/WebCore/platform/graphics/SimpleFontData.cpp, m_spaceWidth is
-    // calculated for us, but we need to calculate m_maxCharWidth and
-    // m_avgCharWidth in order for text entry widgets to be sized correctly.
-
-    SkScalar xRange = metrics.fXMax - metrics.fXMin;
-    m_maxCharWidth = SkScalarRound(xRange * SkScalarRound(m_platformData.size()));
-
-    if (metrics.fAvgCharWidth)
-        m_avgCharWidth = SkScalarRound(metrics.fAvgCharWidth);
-    else {
-        m_avgCharWidth = xHeight;
-
-        GlyphPage* glyphPageZero = GlyphPageTreeNode::getRootChild(this, 0)->page();
-
-        if (glyphPageZero) {
-            static const UChar32 xChar = 'x';
-            const Glyph xGlyph = glyphPageZero->glyphDataForCharacter(xChar).glyph;
-
-            if (xGlyph) {
-                // In widthForGlyph(), xGlyph will be compared with
-                // m_zeroWidthSpaceGlyph, which isn't initialized yet here.
-                // Initialize it with zero to make sure widthForGlyph() returns
-                // the right width.
-                m_zeroWidthSpaceGlyph = 0;
-                m_avgCharWidth = widthForGlyph(xGlyph);
-            }
-        }
-    }
-
-    if (int unitsPerEm = face->getUnitsPerEm())
-        m_fontMetrics.setUnitsPerEm(unitsPerEm);
-}
-
-void SimpleFontData::platformCharWidthInit()
-{
-    // charwidths are set in platformInit.
-}
-
-void SimpleFontData::platformDestroy()
-{
-}
-
-PassRefPtr<SimpleFontData> SimpleFontData::platformCreateScaledFontData(const FontDescription& fontDescription, float scaleFactor) const
-{
-    const float scaledSize = lroundf(fontDescription.computedSize() * scaleFactor);
-    return SimpleFontData::create(FontPlatformData(m_platformData, scaledSize), isCustomFont(), false);
-}
-
-bool SimpleFontData::containsCharacters(const UChar* characters, int length) const
-{
-    SkPaint paint;
-    static const unsigned maxBufferCount = 64;
-    uint16_t glyphs[maxBufferCount];
-
-    m_platformData.setupPaint(&paint);
-    paint.setTextEncoding(SkPaint::kUTF16_TextEncoding);
-
-    while (length > 0) {
-        int n = SkMin32(length, SK_ARRAY_COUNT(glyphs));
-
-        // textToGlyphs takes a byte count so we double the character count.
-        int count = paint.textToGlyphs(characters, n * 2, glyphs);
-        for (int i = 0; i < count; i++) {
-            if (!glyphs[i])
-                return false; // missing glyph
-        }
-
-        characters += n;
-        length -= n;
-    }
-
-    return true;
-}
-
-void SimpleFontData::determinePitch()
-{
-    m_treatAsFixedPitch = platformData().isFixedPitch();
-}
-
-FloatRect SimpleFontData::platformBoundsForGlyph(Glyph glyph) const
-{
-    if (!m_platformData.size())
-        return FloatRect();
-
-    SkASSERT(sizeof(glyph) == 2); // compile-time assert
-
-    SkPaint paint;
-
-    m_platformData.setupPaint(&paint);
-
-    paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
-    SkRect bounds;
-    paint.measureText(&glyph, 2, &bounds);
-    if (!paint.isSubpixelText()) {
-        SkIRect ir;
-        bounds.round(&ir);
-        bounds.set(ir);
-    }
-    return FloatRect(bounds);
-}
-    
-float SimpleFontData::platformWidthForGlyph(Glyph glyph) const
-{
-    if (!m_platformData.size())
-        return 0;
-
-    SkASSERT(sizeof(glyph) == 2); // compile-time assert
-
-    SkPaint paint;
-
-    m_platformData.setupPaint(&paint);
-
-    paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
-    SkScalar width = paint.measureText(&glyph, 2);
-    if (!paint.isSubpixelText())
-        width = SkScalarRound(width);
-    return SkScalarToFloat(width);
-}
-
-#if USE(HARFBUZZ)
-bool SimpleFontData::canRenderCombiningCharacterSequence(const UChar* characters, size_t length) const
-{
-    if (!m_combiningCharacterSequenceSupport)
-        m_combiningCharacterSequenceSupport = adoptPtr(new HashMap<String, bool>);
-
-    WTF::HashMap<String, bool>::AddResult addResult = m_combiningCharacterSequenceSupport->add(String(characters, length), false);
-    if (!addResult.isNewEntry)
-        return addResult.iterator->value;
-
-    UErrorCode error = U_ZERO_ERROR;
-    Vector<UChar, 4> normalizedCharacters(length);
-    int32_t normalizedLength = unorm_normalize(characters, length, UNORM_NFC, UNORM_UNICODE_3_2, &normalizedCharacters[0], length, &error);
-    // Can't render if we have an error or no composition occurred.
-    if (U_FAILURE(error) || (static_cast<size_t>(normalizedLength) == length))
-        return false;
-
-    SkPaint paint;
-    m_platformData.setupPaint(&paint);
-    paint.setTextEncoding(SkPaint::kUTF16_TextEncoding);
-    if (paint.textToGlyphs(&normalizedCharacters[0], normalizedLength * 2, 0)) {
-        addResult.iterator->value = true;
-        return true;
-    }
-    return false;
-}
-#endif
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp b/Source/WebCore/platform/graphics/skia/SkiaFontWin.cpp
deleted file mode 100644 (file)
index 104d824..0000000
+++ /dev/null
@@ -1,296 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "SkiaFontWin.h"
-
-#include "AffineTransform.h"
-#include "FontPlatformDataChromiumWin.h"
-#include "Gradient.h"
-#include "Pattern.h"
-#include "PlatformContextSkia.h"
-#include "SimpleFontData.h"
-#include "SkCanvas.h"
-#include "SkDevice.h"
-#include "SkPaint.h"
-#include "SkShader.h"
-#include "SkTemplates.h"
-
-namespace WebCore {
-
-#if !USE(SKIA_TEXT)
-bool windowsCanHandleDrawTextShadow(GraphicsContext* context)
-{
-    FloatSize shadowOffset;
-    float shadowBlur;
-    Color shadowColor;
-    ColorSpace shadowColorSpace;
-
-    bool hasShadow = context->getShadow(shadowOffset, shadowBlur, shadowColor, shadowColorSpace);
-    return !hasShadow || (!shadowBlur && (shadowColor.alpha() == 255) && (context->fillColor().alpha() == 255));
-}
-
-bool windowsCanHandleTextDrawing(GraphicsContext* context)
-{
-    if (!windowsCanHandleTextDrawingWithoutShadow(context))
-        return false;
-
-    // Check for shadow effects.
-    if (!windowsCanHandleDrawTextShadow(context))
-        return false;
-
-    return true;
-}
-
-bool windowsCanHandleTextDrawingWithoutShadow(GraphicsContext* context)
-{
-    // Check for non-translation transforms. Sometimes zooms will look better in
-    // Skia, and sometimes better in Windows. The main problem is that zooming
-    // in using Skia will show you the hinted outlines for the smaller size,
-    // which look weird. All else being equal, it's better to use Windows' text
-    // drawing, so we don't check for zooms.
-    const AffineTransform& matrix = context->getCTM();
-    if (matrix.b() || matrix.c()) // Check for skew.
-        return false;
-
-    // Check for stroke effects.
-    if (context->platformContext()->getTextDrawingMode() != TextModeFill)
-        return false;
-
-    // Check for gradients.
-    if (context->fillGradient() || context->strokeGradient())
-        return false;
-
-    // Check for patterns.
-    if (context->fillPattern() || context->strokePattern())
-        return false;
-
-    if (!context->platformContext()->isNativeFontRenderingAllowed())
-        return false;
-
-    return true;
-}
-#endif
-
-static void skiaDrawText(PlatformContextSkia* context,
-                         const SkPoint& point,
-                         SkPaint* paint,
-                         const WORD* glyphs,
-                         const int* advances,
-                         const GOFFSET* offsets,
-                         int numGlyphs)
-{
-    // Reserve space for 64 SkPoints on the stack. If numGlyphs is larger, the array
-    // will dynamically allocate it space for numGlyph glyphs. This is used to store
-    // the computed x,y locations. In the case where offsets==null, then we use it
-    // to store (twice as many) SkScalars for x[]
-    static const size_t kLocalGlyphMax = 64;
-
-    SkScalar x = point.fX;
-    SkScalar y = point.fY;
-    if (offsets) {
-        SkAutoSTArray<kLocalGlyphMax, SkPoint> storage(numGlyphs);
-        SkPoint* pos = storage.get();
-        for (int i = 0; i < numGlyphs; i++) {
-            // GDI has dv go up, so we negate it
-            pos[i].set(x + SkIntToScalar(offsets[i].du),
-                       y + -SkIntToScalar(offsets[i].dv));
-            x += SkIntToScalar(advances[i]);
-        }
-        context->drawPosText(glyphs, numGlyphs * sizeof(uint16_t), pos, *paint);
-    } else {
-        SkAutoSTArray<kLocalGlyphMax * 2, SkScalar> storage(numGlyphs);
-        SkScalar* xpos = storage.get();
-        for (int i = 0; i < numGlyphs; i++) {
-            xpos[i] = x;
-            x += SkIntToScalar(advances[i]);
-        }
-        context->drawPosTextH(glyphs, numGlyphs * sizeof(uint16_t),
-                             xpos, y, *paint);
-    }
-}
-
-// Lookup the current system settings for font smoothing.
-// We cache these values for performance, but if the browser has away to be
-// notified when these change, we could re-query them at that time.
-static uint32_t getDefaultGDITextFlags()
-{
-    static bool gInited;
-    static uint32_t gFlags;
-    if (!gInited) {
-        BOOL enabled;
-        gFlags = 0;
-        if (SystemParametersInfo(SPI_GETFONTSMOOTHING, 0, &enabled, 0) && enabled) {
-            gFlags |= SkPaint::kAntiAlias_Flag;
-
-            UINT smoothType;
-            if (SystemParametersInfo(SPI_GETFONTSMOOTHINGTYPE, 0, &smoothType, 0)) {
-                if (FE_FONTSMOOTHINGCLEARTYPE == smoothType)
-                    gFlags |= SkPaint::kLCDRenderText_Flag;
-            }
-        }
-        gInited = true;
-    }
-    return gFlags;
-}
-
-static void setupPaintForFont(SkPaint* paint, PlatformContextSkia* pcs,
-                              SkTypeface* face, float size, int quality)
-{
-    paint->setTextSize(SkFloatToScalar(size));
-    paint->setTypeface(face);
-
-    // turn quality into text flags
-    uint32_t textFlags;
-    switch (quality) {
-    case NONANTIALIASED_QUALITY:
-        textFlags = 0;
-        break;
-    case ANTIALIASED_QUALITY:
-        textFlags = SkPaint::kAntiAlias_Flag;
-        break;
-    case CLEARTYPE_QUALITY:
-        textFlags = (SkPaint::kAntiAlias_Flag | SkPaint::kLCDRenderText_Flag);
-        break;
-    default:
-        textFlags = getDefaultGDITextFlags();
-        break;
-    }
-    // only allow features that SystemParametersInfo allows
-    textFlags &= getDefaultGDITextFlags();
-
-    // do this check after our switch on lfQuality
-    if (!pcs->couldUseLCDRenderedText()) {
-        textFlags &= ~SkPaint::kLCDRenderText_Flag;
-        // If we *just* clear our request for LCD, then GDI seems to
-        // sometimes give us AA text, and sometimes give us BW text. Since the
-        // original intent was LCD, we want to force AA (rather than BW), so we
-        // add a special bit to tell Skia to do its best to avoid the BW: by
-        // drawing LCD offscreen and downsampling that to AA.
-        textFlags |= SkPaint::kGenA8FromLCD_Flag;
-    }
-
-    static const uint32_t textFlagsMask = SkPaint::kAntiAlias_Flag |
-                                          SkPaint::kLCDRenderText_Flag |
-                                          SkPaint::kGenA8FromLCD_Flag;
-
-    // now copy in just the text flags
-    SkASSERT(!(textFlags & ~textFlagsMask));
-    uint32_t flags = paint->getFlags();
-    flags &= ~textFlagsMask;
-    flags |= textFlags;
-    paint->setFlags(flags);
-}
-
-static void paintSkiaText(GraphicsContext* context, HFONT hfont,
-                          SkTypeface* face, float size, int quality,
-                          int numGlyphs,
-                          const WORD* glyphs,
-                          const int* advances,
-                          const GOFFSET* offsets,
-                          const SkPoint* origin)
-{
-    PlatformContextSkia* platformContext = context->platformContext();
-    TextDrawingModeFlags textMode = platformContext->getTextDrawingMode();
-    // Ensure font load for printing, because PDF device needs it.
-    if (platformContext->isVector())
-        FontPlatformData::ensureFontLoaded(hfont);
-
-    // Filling (if necessary). This is the common case.
-    SkPaint paint;
-    platformContext->setupPaintForFilling(&paint);
-    paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
-    setupPaintForFont(&paint, platformContext, face, size, quality);
-
-    bool didFill = false;
-
-    if ((textMode & TextModeFill) && (SkColorGetA(paint.getColor()) || paint.getLooper())) {
-        skiaDrawText(platformContext, *origin, &paint, &glyphs[0], &advances[0], &offsets[0], numGlyphs);
-        didFill = true;
-    }
-
-    // Stroking on top (if necessary).
-    if ((textMode & TextModeStroke)
-        && platformContext->getStrokeStyle() != NoStroke
-        && platformContext->getStrokeThickness() > 0) {
-
-        paint.reset();
-        platformContext->setupPaintForStroking(&paint, 0, 0);
-        paint.setTextEncoding(SkPaint::kGlyphID_TextEncoding);
-        setupPaintForFont(&paint, platformContext, face, size, quality);
-
-        if (didFill) {
-            // If there is a shadow and we filled above, there will already be
-            // a shadow. We don't want to draw it again or it will be too dark
-            // and it will go on top of the fill.
-            //
-            // Note that this isn't strictly correct, since the stroke could be
-            // very thick and the shadow wouldn't account for this. The "right"
-            // thing would be to draw to a new layer and then draw that layer
-            // with a shadow. But this is a lot of extra work for something
-            // that isn't normally an issue.
-            paint.setLooper(0);
-        }
-
-        skiaDrawText(platformContext, *origin, &paint, &glyphs[0], &advances[0], &offsets[0], numGlyphs);
-    }
-}
-
-///////////////////////////////////////////////////////////////////////////////////////////
-
-void paintSkiaText(GraphicsContext* context,
-                   const FontPlatformData& data,
-                   int numGlyphs,
-                   const WORD* glyphs,
-                   const int* advances,
-                   const GOFFSET* offsets,
-                   const SkPoint* origin)
-{
-    paintSkiaText(context, data.hfont(), data.typeface(), data.size(), data.lfQuality(),
-                  numGlyphs, glyphs, advances, offsets, origin);
-}
-
-void paintSkiaText(GraphicsContext* context,
-                   HFONT hfont,
-                   int numGlyphs,
-                   const WORD* glyphs,
-                   const int* advances,
-                   const GOFFSET* offsets,
-                   const SkPoint* origin)
-{
-    int size;
-    int quality;
-    SkTypeface* face = CreateTypefaceFromHFont(hfont, &size, &quality);
-    SkAutoUnref aur(face);
-
-    paintSkiaText(context, hfont, face, size, quality, numGlyphs, glyphs, advances, offsets, origin);
-}
-
-}  // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/SkiaFontWin.h b/Source/WebCore/platform/graphics/skia/SkiaFontWin.h
deleted file mode 100644 (file)
index 0f3432d..0000000
+++ /dev/null
@@ -1,97 +0,0 @@
-/*
- * Copyright (c) 2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef SkiaFontWin_h
-#define SkiaFontWin_h
-
-#include <windows.h>
-#include <usp10.h>
-
-struct SkPoint;
-
-namespace WebCore {
-
-class FontPlatformData;
-class GraphicsContext;
-class PlatformContextSkia;
-
-#if !USE(SKIA_TEXT)
-// The functions below are used for more complex font drawing (effects such as
-// stroking and more complex transforms) than Windows supports directly. Since
-// Windows drawing is faster you should use windowsCanHandleTextDrawing first to
-// check if using Skia is required at all.
-// Note that the text will look different (no ClearType) so this should only be
-// used when necessary.
-//
-// When you call a Skia* text drawing function, various glyph outlines will be
-// cached. As a result, you should call SkiaWinOutlineCache::removePathsForFont
-// when the font is destroyed so that the cache does not outlive the font (since
-// the HFONTs are recycled).
-//
-// Remember that Skia's text drawing origin is the baseline, like WebKit, not
-// the top, like Windows.
-
-// Returns true if the fillColor and shadowColor are opaque and the text-shadow
-// is not blurred.
-bool windowsCanHandleDrawTextShadow(GraphicsContext*);
-
-// Returns true if advanced font rendering is recommended.
-bool windowsCanHandleTextDrawing(GraphicsContext*);
-
-// Returns true if advanced font rendering is recommended if shadows are
-// disregarded.
-bool windowsCanHandleTextDrawingWithoutShadow(GraphicsContext*);
-#endif
-
-// Note that the offsets parameter is optional. If not null it represents a
-// per glyph offset (such as returned by ScriptPlace Windows API function).
-void paintSkiaText(GraphicsContext*,
-                   const FontPlatformData&,
-                   int numGlyphs,
-                   const WORD* glyphs,
-                   const int* advances,
-                   const GOFFSET* offsets,
-                   const SkPoint* origin);
-
-// Note that the offsets parameter is optional. If not null it represents a
-// per glyph offset (such as returned by ScriptPlace Windows API function).
-// Note: this is less efficient than calling the version with FontPlatformData,
-// as that caches the SkTypeface object.
-void paintSkiaText(GraphicsContext*,
-                   HFONT,
-                   int numGlyphs,
-                   const WORD* glyphs,
-                   const int* advances,
-                   const GOFFSET* offsets,
-                   const SkPoint* origin);
-
-}  // namespace WebCore
-
-#endif  // SkiaFontWin_h
diff --git a/Source/WebCore/platform/graphics/skia/SkiaUtils.cpp b/Source/WebCore/platform/graphics/skia/SkiaUtils.cpp
deleted file mode 100644 (file)
index c841994..0000000
+++ /dev/null
@@ -1,168 +0,0 @@
-/*
- * Copyright (c) 2006,2007,2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "SkiaUtils.h"
-
-#include "ImageBuffer.h"
-#include "SharedBuffer.h"
-#include "SkCanvas.h"
-#include "SkColorPriv.h"
-#include "SkMatrix.h"
-#include "SkRegion.h"
-
-namespace WebCore {
-
-static const struct CompositOpToXfermodeMode {
-    uint8_t mCompositOp;
-    uint8_t m_xfermodeMode;
-} gMapCompositOpsToXfermodeModes[] = {
-    { CompositeClear,           SkXfermode::kClear_Mode },
-    { CompositeCopy,            SkXfermode::kSrc_Mode },
-    { CompositeSourceOver,      SkXfermode::kSrcOver_Mode },
-    { CompositeSourceIn,        SkXfermode::kSrcIn_Mode },
-    { CompositeSourceOut,       SkXfermode::kSrcOut_Mode },
-    { CompositeSourceAtop,      SkXfermode::kSrcATop_Mode },
-    { CompositeDestinationOver, SkXfermode::kDstOver_Mode },
-    { CompositeDestinationIn,   SkXfermode::kDstIn_Mode },
-    { CompositeDestinationOut,  SkXfermode::kDstOut_Mode },
-    { CompositeDestinationAtop, SkXfermode::kDstATop_Mode },
-    { CompositeXOR,             SkXfermode::kXor_Mode },
-    { CompositePlusDarker,      SkXfermode::kDarken_Mode },
-    { CompositePlusLighter,     SkXfermode::kPlus_Mode }
-};
-
-SkXfermode::Mode WebCoreCompositeToSkiaComposite(CompositeOperator op)
-{
-    const CompositOpToXfermodeMode* table = gMapCompositOpsToXfermodeModes;
-    
-    for (unsigned i = 0; i < SK_ARRAY_COUNT(gMapCompositOpsToXfermodeModes); i++) {
-        if (table[i].mCompositOp == op)
-            return (SkXfermode::Mode)table[i].m_xfermodeMode;
-    }
-
-    SkDEBUGF(("GraphicsContext::setPlatformCompositeOperation unknown CompositeOperator %d\n", op));
-    return SkXfermode::kSrcOver_Mode; // fall-back
-}
-
-static U8CPU InvScaleByte(U8CPU component, uint32_t scale)
-{
-    SkASSERT(component == (uint8_t)component);
-    return (component * scale + 0x8000) >> 16;
-}
-
-SkColor SkPMColorToColor(SkPMColor pm)
-{
-    if (!pm)
-        return 0;
-    unsigned a = SkGetPackedA32(pm);
-    if (!a) {
-        // A zero alpha value when there are non-zero R, G, or B channels is an
-        // invalid premultiplied color (since all channels should have been
-        // multiplied by 0 if a=0).
-        SkASSERT(false); 
-        // In production, return 0 to protect against division by zero.
-        return 0;
-    }
-    
-    uint32_t scale = (255 << 16) / a;
-    
-    return SkColorSetARGB(a,
-                          InvScaleByte(SkGetPackedR32(pm), scale),
-                          InvScaleByte(SkGetPackedG32(pm), scale),
-                          InvScaleByte(SkGetPackedB32(pm), scale));
-}
-
-Color SkPMColorToWebCoreColor(SkPMColor pm)
-{
-    return SkPMColorToColor(pm);
-}
-
-void ClipRectToCanvas(const PlatformContextSkia* context, const SkRect& srcRect, SkRect* destRect)
-{
-    if (!context->getClipBounds(destRect) || !destRect->intersect(srcRect))
-        destRect->setEmpty();
-}
-
-bool SkPathContainsPoint(SkPath* originalPath, const FloatPoint& point, SkPath::FillType ft)
-{
-    SkRect bounds = originalPath->getBounds();
-
-    // We can immediately return false if the point is outside the bounding
-    // rect.  We don't use bounds.contains() here, since it would exclude
-    // points on the right and bottom edges of the bounding rect, and we want
-    // to include them.
-    SkScalar fX = SkFloatToScalar(point.x());
-    SkScalar fY = SkFloatToScalar(point.y());
-    if (fX < bounds.fLeft || fX > bounds.fRight || fY < bounds.fTop || fY > bounds.fBottom)
-        return false;
-
-    // Scale the path to a large size before hit testing for two reasons:
-    // 1) Skia has trouble with coordinates close to the max signed 16-bit values, so we scale larger paths down.
-    //    TODO: when Skia is patched to work properly with large values, this will not be necessary.
-    // 2) Skia does not support analytic hit testing, so we scale paths up to do raster hit testing with subpixel accuracy.
-    SkScalar biggestCoord = std::max(std::max(std::max(bounds.fRight, bounds.fBottom), -bounds.fLeft), -bounds.fTop);
-    if (SkScalarNearlyZero(biggestCoord))
-        return false;
-    biggestCoord = std::max(std::max(biggestCoord, fX + 1), fY + 1);
-
-    const SkScalar kMaxCoordinate = SkIntToScalar(1 << 15);
-    SkScalar scale = SkScalarDiv(kMaxCoordinate, biggestCoord);
-
-    SkRegion rgn;  
-    SkRegion clip;
-    SkMatrix m;
-    SkPath scaledPath;
-
-    SkPath::FillType originalFillType = originalPath->getFillType();
-    originalPath->setFillType(ft);
-
-    m.setScale(scale, scale);
-    originalPath->transform(m, &scaledPath);
-
-    int x = static_cast<int>(floorf(0.5f + point.x() * scale));
-    int y = static_cast<int>(floorf(0.5f + point.y() * scale));
-    clip.setRect(x - 1, y - 1, x + 1, y + 1);
-
-    bool contains = rgn.setPath(scaledPath, clip);
-    originalPath->setFillType(originalFillType);
-    return contains;
-}
-
-GraphicsContext* scratchContext()
-{
-    static ImageBuffer* scratch = ImageBuffer::create(IntSize(1, 1)).leakPtr();
-    // We don't bother checking for failure creating the ImageBuffer, since our
-    // ImageBuffer initializer won't fail.
-    return scratch->context();
-}
-
-}  // namespace WebCore
diff --git a/Source/WebCore/platform/graphics/skia/SkiaUtils.h b/Source/WebCore/platform/graphics/skia/SkiaUtils.h
deleted file mode 100644 (file)
index 2046a1b..0000000
+++ /dev/null
@@ -1,82 +0,0 @@
-/*
- * Copyright (c) 2006,2007,2008, 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:
- * 
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- * 
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-// All of the functions in this file should move to new homes and this file should be deleted.
-
-#ifndef SkiaUtils_h
-#define SkiaUtils_h
-
-#include <wtf/MathExtras.h>
-#include "GraphicsContext.h"
-#include "SkPath.h"
-#include "SkXfermode.h"
-
-class SkCanvas;
-class SkRegion;
-
-namespace WebCore {
-
-SkXfermode::Mode WebCoreCompositeToSkiaComposite(CompositeOperator);
-
-// move this guy into SkColor.h
-SkColor SkPMColorToColor(SkPMColor);
-
-// This should be an operator on Color
-Color SkPMColorToWebCoreColor(SkPMColor);
-
-// Skia has problems when passed infinite, etc floats, filter them to 0.
-inline SkScalar WebCoreFloatToSkScalar(float f)
-{
-    return SkFloatToScalar(std::isfinite(f) ? f : 0);
-}
-
-inline SkScalar WebCoreDoubleToSkScalar(double d)
-{
-    return SkDoubleToScalar(std::isfinite(d) ? d : 0);
-}
-
-// Computes the smallest rectangle that, which when drawn to the given canvas,
-// will cover the same area as the source rectangle. It will clip to the canvas'
-// clip, doing the necessary coordinate transforms.
-//
-// srcRect and destRect can be the same.
-void ClipRectToCanvas(const PlatformContextSkia*, const SkRect& srcRect, SkRect* destRect);
-
-// Determine if a given WebKit point is contained in a path
-bool SkPathContainsPoint(SkPath*, const FloatPoint&, SkPath::FillType);
-
-// Returns a statically allocated 1x1 GraphicsContext intended for temporary
-// operations. Please save() the state and restore() it when you're done with
-// the context.
-GraphicsContext* scratchContext();
-
-}  // namespace WebCore
-
-#endif  // SkiaUtils_h
diff --git a/Source/WebCore/platform/graphics/skia/TransformationMatrixSkia.cpp b/Source/WebCore/platform/graphics/skia/TransformationMatrixSkia.cpp
deleted file mode 100644 (file)
index dc610d7..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright (c) 2008, 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:
-// 
-//     * Redistributions of source code must retain the above copyright
-// notice, this list of conditions and the following disclaimer.
-//     * 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.
-//     * Neither the name of Google Inc. nor the names of its
-// contributors may be used to endorse or promote products derived from
-// this software without specific prior written permission.
-// 
-// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
-// OWNER 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 "AffineTransform.h"
-#include "TransformationMatrix.h"
-
-#include "SkiaUtils.h"
-
-namespace WebCore {
-
-TransformationMatrix::operator SkMatrix() const
-{
-    SkMatrix result;
-
-    result.setScaleX(WebCoreDoubleToSkScalar(a()));
-    result.setSkewX(WebCoreDoubleToSkScalar(c()));
-    result.setTranslateX(WebCoreDoubleToSkScalar(e()));
-
-    result.setScaleY(WebCoreDoubleToSkScalar(d()));
-    result.setSkewY(WebCoreDoubleToSkScalar(b()));
-    result.setTranslateY(WebCoreDoubleToSkScalar(f()));
-
-    // FIXME: Set perspective properly.
-    result.setPerspX(0);
-    result.setPerspY(0);
-    result.set(SkMatrix::kMPersp2, SK_Scalar1);
-
-    return result;
-}
-
-AffineTransform::operator SkMatrix() const
-{
-    SkMatrix result;
-
-    result.setScaleX(WebCoreDoubleToSkScalar(a()));
-    result.setSkewX(WebCoreDoubleToSkScalar(c()));
-    result.setTranslateX(WebCoreDoubleToSkScalar(e()));
-
-    result.setScaleY(WebCoreDoubleToSkScalar(d()));
-    result.setSkewY(WebCoreDoubleToSkScalar(b()));
-    result.setTranslateY(WebCoreDoubleToSkScalar(f()));
-
-    // FIXME: Set perspective properly.
-    result.setPerspX(0);
-    result.setPerspY(0);
-    result.set(SkMatrix::kMPersp2, SK_Scalar1);
-
-    return result;
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp b/Source/WebCore/platform/image-decoders/skia/ImageDecoderSkia.cpp
deleted file mode 100644 (file)
index c25412b..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-/*
- * Copyright (C) 2006 Apple Computer, Inc.  All rights reserved.
- * Copyright (C) 2008, 2009 Google, Inc.
- *
- * 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 COMPUTER, 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 COMPUTER, 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 "ImageDecoder.h"
-
-#include "NativeImageSkia.h"
-#include "PlatformMemoryInstrumentation.h"
-
-namespace WebCore {
-
-ImageFrame::ImageFrame()
-    : m_bitmap(NativeImageSkia::create())
-    , m_allocator(0)
-    , m_hasAlpha(false)
-    , m_status(FrameEmpty)
-    , m_duration(0)
-    , m_disposalMethod(DisposeNotSpecified)
-    , m_premultiplyAlpha(true)
-{
-}
-
-ImageFrame& ImageFrame::operator=(const ImageFrame& other)
-{
-    if (this == &other)
-        return *this;
-
-    m_bitmap = other.m_bitmap->clone();
-    // Keep the pixels locked since we will be writing directly into the
-    // bitmap throughout this object's lifetime.
-    m_bitmap->bitmap().lockPixels();
-    setMemoryAllocator(other.allocator());
-    setOriginalFrameRect(other.originalFrameRect());
-    setStatus(other.status());
-    setDuration(other.duration());
-    setDisposalMethod(other.disposalMethod());
-    setPremultiplyAlpha(other.premultiplyAlpha());
-    // Be sure that this is called after we've called setStatus(), since we
-    // look at our status to know what to do with the alpha value.
-    setHasAlpha(other.hasAlpha());
-    return *this;
-}
-
-void ImageFrame::clearPixelData()
-{
-    m_bitmap->bitmap().reset();
-    m_status = FrameEmpty;
-    // NOTE: Do not reset other members here; clearFrameBufferCache()
-    // calls this to free the bitmap data, but other functions like
-    // initFrameBuffer() and frameComplete() may still need to read
-    // other metadata out of this frame later.
-}
-
-void ImageFrame::zeroFillPixelData()
-{
-    m_bitmap->bitmap().eraseARGB(0, 0, 0, 0);
-    m_hasAlpha = true;
-}
-
-bool ImageFrame::copyBitmapData(const ImageFrame& other)
-{
-    if (this == &other)
-        return true;
-
-    m_hasAlpha = other.m_hasAlpha;
-    m_bitmap->bitmap().reset();
-    const NativeImageSkia* otherBitmap = other.m_bitmap.get();
-    return otherBitmap->bitmap().copyTo(&m_bitmap->bitmap(), otherBitmap->bitmap().config());
-}
-
-bool ImageFrame::setSize(int newWidth, int newHeight)
-{
-    // setSize() should only be called once, it leaks memory otherwise.
-    ASSERT(!width() && !height());
-
-    m_bitmap->bitmap().setConfig(SkBitmap::kARGB_8888_Config, newWidth, newHeight);
-    if (!m_bitmap->bitmap().allocPixels(m_allocator, 0))
-        return false;
-
-    zeroFillPixelData();
-    return true;
-}
-
-PassNativeImagePtr ImageFrame::asNewNativeImage() const
-{
-    return m_bitmap->clone();
-}
-
-bool ImageFrame::hasAlpha() const
-{
-    return m_hasAlpha;
-}
-
-void ImageFrame::setHasAlpha(bool alpha)
-{
-    m_hasAlpha = alpha;
-
-    // If the frame is not fully loaded, there will be transparent pixels,
-    // so we can't tell skia we're opaque, even for image types that logically
-    // always are (e.g. jpeg).
-    bool isOpaque = !m_hasAlpha;
-    if (m_status != FrameComplete)
-        isOpaque = false;
-    m_bitmap->bitmap().setIsOpaque(isOpaque);
-}
-
-void ImageFrame::setColorProfile(const ColorProfile& colorProfile)
-{
-    // FIXME: Do we need this ImageFrame function anymore, on any port?
-    UNUSED_PARAM(colorProfile);
-}
-
-void ImageFrame::setStatus(FrameStatus status)
-{
-    m_status = status;
-    if (m_status == FrameComplete) {
-        m_bitmap->bitmap().setIsOpaque(!m_hasAlpha);
-        m_bitmap->setDataComplete(); // Tell the bitmap it's done.
-    }
-}
-
-void ImageFrame::reportMemoryUsage(MemoryObjectInfo* memoryObjectInfo) const
-{
-    MemoryClassInfo info(memoryObjectInfo, this, PlatformMemoryTypes::Image);
-    info.addMember(m_bitmap, "bitmap");
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/image-encoders/skia/JPEGImageEncoder.cpp b/Source/WebCore/platform/image-encoders/skia/JPEGImageEncoder.cpp
deleted file mode 100644 (file)
index a3b0a3a..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (c) 2010, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "JPEGImageEncoder.h"
-
-#include "ImageData.h"
-#include "IntSize.h"
-#include "SkBitmap.h"
-#include "SkColorPriv.h"
-extern "C" {
-#include <stdio.h> // jpeglib.h needs stdio.h FILE
-#include "jpeglib.h"
-#include <setjmp.h>
-}
-
-namespace WebCore {
-
-struct JPEGOutputBuffer : public jpeg_destination_mgr {
-    Vector<unsigned char>* output;
-    Vector<unsigned char> buffer;
-};
-
-static void prepareOutput(j_compress_ptr cinfo)
-{
-    JPEGOutputBuffer* out = static_cast<JPEGOutputBuffer*>(cinfo->dest);
-    const size_t internalBufferSize = 8192;
-    out->buffer.resize(internalBufferSize);
-    out->next_output_byte = out->buffer.data();
-    out->free_in_buffer = out->buffer.size();
-}
-
-static boolean writeOutput(j_compress_ptr cinfo)
-{
-    JPEGOutputBuffer* out = static_cast<JPEGOutputBuffer*>(cinfo->dest);
-    out->output->append(out->buffer.data(), out->buffer.size());
-    out->next_output_byte = out->buffer.data();
-    out->free_in_buffer = out->buffer.size();
-    return TRUE;
-}
-
-static void finishOutput(j_compress_ptr cinfo)
-{
-    JPEGOutputBuffer* out = static_cast<JPEGOutputBuffer*>(cinfo->dest);
-    const size_t size = out->buffer.size() - out->free_in_buffer;
-    out->output->append(out->buffer.data(), size);
-}
-
-static void handleError(j_common_ptr common)
-{
-    jmp_buf* jumpBufferPtr = static_cast<jmp_buf*>(common->client_data);
-    longjmp(*jumpBufferPtr, -1);
-}
-
-static void preMultipliedBGRAtoRGB(const unsigned char* pixels, unsigned int pixelCount, unsigned char* output)
-{
-    const SkPMColor* input = reinterpret_cast_ptr<const SkPMColor*>(pixels);
-    for (; pixelCount-- > 0; ++input) {
-        *output++ = SkGetPackedR32(*input);
-        *output++ = SkGetPackedG32(*input);
-        *output++ = SkGetPackedB32(*input);
-    }
-}
-
-static void RGBAtoRGB(const unsigned char* pixels, unsigned int pixelCount, unsigned char* output)
-{
-    for (; pixelCount-- > 0; pixels += 4) {
-        // Do source-over composition on black.
-        unsigned char alpha = pixels[3];
-        if (alpha != 255) {
-            *output++ = SkMulDiv255Round(pixels[0], alpha);
-            *output++ = SkMulDiv255Round(pixels[1], alpha);
-            *output++ = SkMulDiv255Round(pixels[2], alpha);
-        } else {
-            *output++ = pixels[0];
-            *output++ = pixels[1];
-            *output++ = pixels[2];
-        }
-    }
-}
-
-static bool encodePixels(IntSize imageSize, unsigned char* inputPixels, bool premultiplied, int quality, Vector<unsigned char>* output)
-{
-    JPEGOutputBuffer destination;
-    destination.output = output;
-    Vector<JSAMPLE> row;
-
-    jpeg_compress_struct cinfo;
-    jpeg_error_mgr error;
-    cinfo.err = jpeg_std_error(&error);
-    error.error_exit = handleError;
-    jmp_buf jumpBuffer;
-    cinfo.client_data = &jumpBuffer;
-
-    if (setjmp(jumpBuffer)) {
-        jpeg_destroy_compress(&cinfo);
-        return false;
-    }
-
-    jpeg_create_compress(&cinfo);
-    cinfo.dest = &destination;
-    cinfo.dest->init_destination = prepareOutput;
-    cinfo.dest->empty_output_buffer = writeOutput;
-    cinfo.dest->term_destination = finishOutput;
-
-    imageSize.clampNegativeToZero();
-    cinfo.image_height = imageSize.height();
-    cinfo.image_width = imageSize.width();
-
-#if defined(JCS_EXTENSIONS)
-    if (premultiplied) {
-        cinfo.in_color_space = SK_B32_SHIFT ? JCS_EXT_RGBX : JCS_EXT_BGRX;
-
-        cinfo.input_components = 4;
-
-        jpeg_set_defaults(&cinfo);
-        jpeg_set_quality(&cinfo, quality, TRUE);
-        jpeg_start_compress(&cinfo, TRUE);
-
-        unsigned char* pixels = inputPixels;
-        const size_t pixelRowStride = cinfo.image_width * 4;
-        while (cinfo.next_scanline < cinfo.image_height) {
-            jpeg_write_scanlines(&cinfo, &pixels, 1);
-            pixels += pixelRowStride;
-        }
-
-        jpeg_finish_compress(&cinfo);
-        jpeg_destroy_compress(&cinfo);
-        return true;
-    }
-#endif
-
-    cinfo.in_color_space = JCS_RGB;
-    cinfo.input_components = 3;
-
-    void (*extractRowRGB)(const unsigned char*, unsigned int, unsigned char* output);
-    extractRowRGB = &RGBAtoRGB;
-    if (premultiplied)
-        extractRowRGB = &preMultipliedBGRAtoRGB;
-
-    jpeg_set_defaults(&cinfo);
-    jpeg_set_quality(&cinfo, quality, TRUE);
-    jpeg_start_compress(&cinfo, TRUE);
-
-    unsigned char* pixels = inputPixels;
-    row.resize(cinfo.image_width * cinfo.input_components);
-    const size_t pixelRowStride = cinfo.image_width * 4;
-    while (cinfo.next_scanline < cinfo.image_height) {
-        JSAMPLE* rowData = row.data();
-        extractRowRGB(pixels, cinfo.image_width, rowData);
-        jpeg_write_scanlines(&cinfo, &rowData, 1);
-        pixels += pixelRowStride;
-    }
-
-    jpeg_finish_compress(&cinfo);
-    jpeg_destroy_compress(&cinfo);
-    return true;
-}
-
-bool JPEGImageEncoder::encode(const SkBitmap& bitmap, int quality, Vector<unsigned char>* output)
-{
-    SkAutoLockPixels bitmapLock(bitmap);
-
-    if (bitmap.config() != SkBitmap::kARGB_8888_Config || !bitmap.getPixels())
-        return false; // Only support 32 bit/pixel skia bitmaps.
-
-    return encodePixels(IntSize(bitmap.width(), bitmap.height()), static_cast<unsigned char *>(bitmap.getPixels()), true, quality, output);
-}
-
-bool JPEGImageEncoder::encode(const ImageData& imageData, int quality, Vector<unsigned char>* output)
-{
-    return encodePixels(imageData.size(), imageData.data()->data(), false, quality, output);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/image-encoders/skia/JPEGImageEncoder.h b/Source/WebCore/platform/image-encoders/skia/JPEGImageEncoder.h
deleted file mode 100644 (file)
index 122725d..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (c) 2010, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef JPEGImageEncoder_h
-#define JPEGImageEncoder_h
-
-#include <wtf/Vector.h>
-
-class SkBitmap;
-
-namespace WebCore {
-
-class ImageData;
-
-class JPEGImageEncoder {
-public:
-    // Encode the input data with a compression quality in [0-100].
-    static bool encode(const SkBitmap&, int quality, Vector<unsigned char>*);
-    static bool encode(const ImageData&, int quality, Vector<unsigned char>*);
-
-    // For callers: provide a reasonable compression quality default.
-    enum Quality { DefaultCompressionQuality = 92 };
-};
-
-} // namespace WebCore
-
-#endif
diff --git a/Source/WebCore/platform/image-encoders/skia/PNGImageEncoder.cpp b/Source/WebCore/platform/image-encoders/skia/PNGImageEncoder.cpp
deleted file mode 100644 (file)
index 6ad2063..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (c) 2010, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "PNGImageEncoder.h"
-
-#include "ImageData.h"
-#include "IntSize.h"
-#include "SkBitmap.h"
-#include "SkColorPriv.h"
-#include "SkUnPreMultiply.h"
-extern "C" {
-#include "png.h"
-}
-
-namespace WebCore {
-
-static void writeOutput(png_structp png, png_bytep data, png_size_t size)
-{
-    static_cast<Vector<unsigned char>*>(png_get_io_ptr(png))->append(data, size);
-}
-
-static void preMultipliedBGRAtoRGBA(const void* pixels, int pixelCount, unsigned char* output)
-{
-    static const SkUnPreMultiply::Scale* scale = SkUnPreMultiply::GetScaleTable();
-    const SkPMColor* input = static_cast<const SkPMColor*>(pixels);
-
-    for (; pixelCount-- > 0; ++input) {
-        const unsigned alpha = SkGetPackedA32(*input);
-        if ((alpha != 0) && (alpha != 255)) {
-            *output++ = SkUnPreMultiply::ApplyScale(scale[alpha], SkGetPackedR32(*input));
-            *output++ = SkUnPreMultiply::ApplyScale(scale[alpha], SkGetPackedG32(*input));
-            *output++ = SkUnPreMultiply::ApplyScale(scale[alpha], SkGetPackedB32(*input));
-            *output++ = alpha;
-        } else {
-            *output++ = SkGetPackedR32(*input);
-            *output++ = SkGetPackedG32(*input);
-            *output++ = SkGetPackedB32(*input);
-            *output++ = alpha;
-        }
-    }
-}
-
-static bool encodePixels(IntSize imageSize, unsigned char* inputPixels, bool premultiplied, Vector<unsigned char>* output)
-{
-    imageSize.clampNegativeToZero();
-    Vector<unsigned char> row;
-
-    png_struct* png = png_create_write_struct(PNG_LIBPNG_VER_STRING, 0, 0, 0);
-    png_info* info = png_create_info_struct(png);
-    if (!png || !info || setjmp(png_jmpbuf(png))) {
-        png_destroy_write_struct(png ? &png : 0, info ? &info : 0);
-        return false;
-    }
-
-    // Optimize compression for speed.
-    // The parameters are the same as what libpng uses by default for RGB and RGBA images, except:
-    // - the zlib compression level is 3 instead of 6, to avoid the lazy Ziv-Lempel match searching;
-    // - the delta filter is 1 ("sub") instead of 5 ("all"), to reduce the filter computations.
-    // The zlib memory level (8) and strategy (Z_FILTERED) will be set inside libpng.
-    //
-    // Avoid the zlib strategies Z_HUFFMAN_ONLY or Z_RLE.
-    // Although they are the fastest for poorly-compressible images (e.g. photographs),
-    // they are very slow for highly-compressible images (e.g. text, drawings or business graphics).
-    png_set_compression_level(png, 3);
-    png_set_filter(png, PNG_FILTER_TYPE_BASE, PNG_FILTER_SUB);
-
-    png_set_write_fn(png, output, writeOutput, 0);
-    png_set_IHDR(png, info, imageSize.width(), imageSize.height(),
-                 8, PNG_COLOR_TYPE_RGB_ALPHA, 0, 0, 0);
-    png_write_info(png, info);
-
-    unsigned char* pixels = inputPixels;
-    row.resize(imageSize.width() * sizeof(SkPMColor));
-    const size_t pixelRowStride = imageSize.width() * 4;
-    for (int y = 0; y < imageSize.height(); ++y) {
-        if (premultiplied) {
-            preMultipliedBGRAtoRGBA(pixels, imageSize.width(), row.data());
-            png_write_row(png, row.data());
-        } else
-            png_write_row(png, pixels);
-        pixels += pixelRowStride;
-    }
-
-    png_write_end(png, info);
-    png_destroy_write_struct(&png, &info);
-    return true;
-}
-
-bool PNGImageEncoder::encode(const SkBitmap& bitmap, Vector<unsigned char>* output)
-{
-    SkAutoLockPixels bitmapLock(bitmap);
-
-    if (bitmap.config() != SkBitmap::kARGB_8888_Config || !bitmap.getPixels())
-        return false; // Only support 32 bit/pixel skia bitmaps.
-
-    return encodePixels(IntSize(bitmap.width(), bitmap.height()), static_cast<unsigned char*>(bitmap.getPixels()), true, output);
-}
-
-bool PNGImageEncoder::encode(const ImageData& imageData, Vector<unsigned char>* output)
-{
-    return encodePixels(imageData.size(), imageData.data()->data(), false, output);
-}
-
-} // namespace WebCore
diff --git a/Source/WebCore/platform/image-encoders/skia/PNGImageEncoder.h b/Source/WebCore/platform/image-encoders/skia/PNGImageEncoder.h
deleted file mode 100644 (file)
index 31edad3..0000000
+++ /dev/null
@@ -1,51 +0,0 @@
-/*
- * Copyright (c) 2010, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef PNGImageEncoder_h
-#define PNGImageEncoder_h
-
-#include <wtf/Vector.h>
-
-class SkBitmap;
-
-namespace WebCore {
-
-class ImageData;
-
-// Interface for encoding PNG data. This is a wrapper around libpng.
-class PNGImageEncoder {
-public:
-    static bool encode(const SkBitmap&, Vector<unsigned char>* output);
-    static bool encode(const ImageData&, Vector<unsigned char>* output);
-};
-
-} // namespace WebCore
-
-#endif
diff --git a/Source/WebCore/platform/image-encoders/skia/WEBPImageEncoder.cpp b/Source/WebCore/platform/image-encoders/skia/WEBPImageEncoder.cpp
deleted file mode 100644 (file)
index 39d1daf..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (c) 2011, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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 "WEBPImageEncoder.h"
-
-#if USE(WEBP)
-
-#include "ImageData.h"
-#include "IntSize.h"
-#include "SkBitmap.h"
-#include "SkColorPriv.h"
-#include "webp/encode.h"
-
-typedef int (*WebPImporter)(WebPPicture* const, const uint8_t* const data, int rowStride);
-
-namespace WebCore {
-
-static int writeOutput(const uint8_t* data, size_t size, const WebPPicture* const picture)
-{
-    static_cast<Vector<unsigned char>*>(picture->custom_ptr)->append(data, size);
-    return 1;
-}
-
-static bool rgbPictureImport(const unsigned char* pixels, bool premultiplied, WebPImporter importRGBX, WebPImporter importRGB, WebPPicture* picture)
-{
-    if (premultiplied)
-        return importRGBX(picture, pixels, picture->width * 4);
-
-    // Write the RGB pixels to an rgb data buffer, alpha premultiplied, then import the rgb data.
-
-    Vector<unsigned char> rgb;
-    size_t pixelCount = picture->height * picture->width;
-    rgb.reserveInitialCapacity(pixelCount * 3);
-
-    for (unsigned char* data = rgb.data(); pixelCount-- > 0; pixels += 4) {
-        unsigned char alpha = pixels[3];
-        if (alpha != 255) {
-            *data++ = SkMulDiv255Round(pixels[0], alpha);
-            *data++ = SkMulDiv255Round(pixels[1], alpha);
-            *data++ = SkMulDiv255Round(pixels[2], alpha);
-        } else {
-            *data++ = pixels[0];
-            *data++ = pixels[1];
-            *data++ = pixels[2];
-        }
-    }
-
-    return importRGB(picture, rgb.data(), picture->width * 3);
-}
-
-template <bool Premultiplied> inline bool importPictureBGRX(const unsigned char* pixels, WebPPicture* picture)
-{
-    return rgbPictureImport(pixels, Premultiplied, &WebPPictureImportBGRX, &WebPPictureImportBGR, picture);
-}
-
-template <bool Premultiplied> inline bool importPictureRGBX(const unsigned char* pixels, WebPPicture* picture)
-{
-    return rgbPictureImport(pixels, Premultiplied, &WebPPictureImportRGBX, &WebPPictureImportRGB, picture);
-}
-
-static bool encodePixels(IntSize imageSize, const unsigned char* pixels, bool premultiplied, int quality, Vector<unsigned char>* output)
-{
-    WebPConfig config;
-    if (!WebPConfigInit(&config))
-        return false;
-    WebPPicture picture;
-    if (!WebPPictureInit(&picture))
-        return false;
-
-    imageSize.clampNegativeToZero();
-    if (!imageSize.width() || imageSize.width() > WEBP_MAX_DIMENSION)
-        return false;
-    picture.width = imageSize.width();
-    if (!imageSize.height() || imageSize.height() > WEBP_MAX_DIMENSION)
-        return false;
-    picture.height = imageSize.height();
-
-    if (premultiplied && !importPictureBGRX<true>(pixels, &picture))
-        return false;
-    if (!premultiplied && !importPictureRGBX<false>(pixels, &picture))
-        return false;
-
-    picture.custom_ptr = output;
-    picture.writer = &writeOutput;
-    config.quality = quality;
-    config.method = 3;
-
-    bool success = WebPEncode(&config, &picture);
-    WebPPictureFree(&picture);
-    return success;
-}
-
-bool WEBPImageEncoder::encode(const SkBitmap& bitmap, int quality, Vector<unsigned char>* output)
-{
-    SkAutoLockPixels bitmapLock(bitmap);
-
-    if (bitmap.config() != SkBitmap::kARGB_8888_Config || !bitmap.getPixels())
-        return false; // Only support 32 bit/pixel skia bitmaps.
-
-    return encodePixels(IntSize(bitmap.width(), bitmap.height()), static_cast<unsigned char *>(bitmap.getPixels()), true, quality, output);
-}
-
-bool WEBPImageEncoder::encode(const ImageData& imageData, int quality, Vector<unsigned char>* output)
-{
-    return encodePixels(imageData.size(), imageData.data()->data(), false, quality, output);
-}
-
-} // namespace WebCore
-
-#endif
diff --git a/Source/WebCore/platform/image-encoders/skia/WEBPImageEncoder.h b/Source/WebCore/platform/image-encoders/skia/WEBPImageEncoder.h
deleted file mode 100644 (file)
index 4ec928e..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (c) 2011, 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:
- *
- *     * Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
- *     * 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.
- *     * Neither the name of Google Inc. nor the names of its
- * contributors may be used to endorse or promote products derived from
- * this software without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND 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 THE COPYRIGHT
- * OWNER 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.
- */
-
-#ifndef WEBPImageEncoder_h
-#define WEBPImageEncoder_h
-
-#include <wtf/Vector.h>
-
-#if USE(WEBP)
-
-class SkBitmap;
-
-namespace WebCore {
-
-class ImageData;
-
-class WEBPImageEncoder {
-public:
-    // Encode the input data with a compression quality in [0-100].
-    static bool encode(const SkBitmap&, int quality, Vector<unsigned char>*);
-    static bool encode(const ImageData&, int quality, Vector<unsigned char>*);
-
-    // For callers: provide a reasonable compression quality default.
-    enum Quality { DefaultCompressionQuality = 80 };
-};
-
-} // namespace WebCore
-
-#endif
-
-#endif