Changeset 87151 in webkit


Ignore:
Timestamp:
May 24, 2011 8:13:17 AM (13 years ago)
Author:
commit-queue@webkit.org
Message:

2011-05-24 Ryuan Choi <ryuan.choi@samsung.com>

Reviewed by Andreas Kling.

[GTK] Implement GraphicsContextCairo::imageInterpolationQuality().
https://bugs.webkit.org/show_bug.cgi?id=60827

Implement getter/setter of imageInterpolationQuality and logic to change
interpolation algorithm when drawing image.
Mac and Qt already implemented it.

  • platform/graphics/cairo/GraphicsContextCairo.cpp: (WebCore::GraphicsContext::setImageInterpolationQuality): (WebCore::GraphicsContext::imageInterpolationQuality):
  • platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
  • platform/graphics/cairo/PlatformContextCairo.cpp: (WebCore::PlatformContextCairo::drawSurfaceToContext):
  • platform/graphics/cairo/PlatformContextCairo.h: (WebCore::PlatformContextCairo::setImageInterpolationQuality): Added. (WebCore::PlatformContextCairo::imageInterpolationQuality): Added.
Location:
trunk/Source/WebCore
Files:
5 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/WebCore/ChangeLog

    r87150 r87151  
     12011-05-24  Ryuan Choi  <ryuan.choi@samsung.com>
     2
     3        Reviewed by Andreas Kling.
     4
     5        [GTK] Implement GraphicsContextCairo::imageInterpolationQuality().
     6        https://bugs.webkit.org/show_bug.cgi?id=60827
     7
     8        Implement getter/setter of imageInterpolationQuality and logic to change
     9        interpolation algorithm when drawing image.
     10        Mac and Qt already implemented it.
     11
     12        * platform/graphics/cairo/GraphicsContextCairo.cpp:
     13        (WebCore::GraphicsContext::setImageInterpolationQuality):
     14        (WebCore::GraphicsContext::imageInterpolationQuality):
     15        * platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h:
     16        * platform/graphics/cairo/PlatformContextCairo.cpp:
     17        (WebCore::PlatformContextCairo::drawSurfaceToContext):
     18        * platform/graphics/cairo/PlatformContextCairo.h:
     19        (WebCore::PlatformContextCairo::setImageInterpolationQuality): Added.
     20        (WebCore::PlatformContextCairo::imageInterpolationQuality): Added.
     21
    1222011-05-24  Leandro Gracia Gil  <leandrogracia@chromium.org>
    223
  • trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextCairo.cpp

    r85405 r87151  
    11551155}
    11561156
    1157 void GraphicsContext::setImageInterpolationQuality(InterpolationQuality)
    1158 {
     1157void GraphicsContext::setImageInterpolationQuality(InterpolationQuality quality)
     1158{
     1159    platformContext()->setImageInterpolationQuality(quality);
    11591160}
    11601161
    11611162InterpolationQuality GraphicsContext::imageInterpolationQuality() const
    11621163{
    1163     return InterpolationDefault;
     1164    return platformContext()->imageInterpolationQuality();
    11641165}
    11651166
  • trunk/Source/WebCore/platform/graphics/cairo/GraphicsContextPlatformPrivateCairo.h

    r83044 r87151  
    103103    ContextShadow shadow;
    104104    Vector<ContextShadow> shadowStack;
     105    InterpolationQuality imageInterpolationQuality;
    105106
    106107#if PLATFORM(GTK)
  • trunk/Source/WebCore/platform/graphics/cairo/PlatformContextCairo.cpp

    r86174 r87151  
    9898    // Test using example site at http://www.meyerweb.com/eric/css/edge/complexspiral/demo.html
    9999    RefPtr<cairo_pattern_t> pattern = adoptRef(cairo_pattern_create_for_surface(surface));
     100
     101    switch (m_imageInterpolationQuality) {
     102    case InterpolationNone:
     103    case InterpolationLow:
     104        cairo_pattern_set_filter(pattern.get(), CAIRO_FILTER_FAST);
     105        break;
     106    case InterpolationMedium:
     107    case InterpolationHigh:
     108        cairo_pattern_set_filter(pattern.get(), CAIRO_FILTER_BILINEAR);
     109        break;
     110    case InterpolationDefault:
     111        cairo_pattern_set_filter(pattern.get(), CAIRO_FILTER_BILINEAR);
     112        break;
     113    }
    100114    cairo_pattern_set_extend(pattern.get(), CAIRO_EXTEND_PAD);
    101115
  • trunk/Source/WebCore/platform/graphics/cairo/PlatformContextCairo.h

    r86174 r87151  
    2828
    2929#include "ContextShadow.h"
     30#include "GraphicsContext.h"
    3031#include "RefPtrCairo.h"
    3132
     
    6970    void drawSurfaceToContext(cairo_surface_t*, const FloatRect& destRect, const FloatRect& srcRect, GraphicsContext*);
    7071
     72    void setImageInterpolationQuality(InterpolationQuality quality) { m_imageInterpolationQuality = quality; }
     73    InterpolationQuality imageInterpolationQuality() const { return m_imageInterpolationQuality; }
     74
    7175private:
    7276    RefPtr<cairo_t> m_cr;
    7377    Vector<ImageMaskInformation> m_maskImageStack;
     78    InterpolationQuality m_imageInterpolationQuality;
    7479};
    7580
Note: See TracChangeset for help on using the changeset viewer.