1d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Copyright (c) 2014 The Chromium Authors. All rights reserved. 2d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Use of this source code is governed by a BSD-style license that can be 3d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// found in the LICENSE file. 4d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 5d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "config.h" 6d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)#include "platform/graphics/GraphicsContextState.h" 7d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 8323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles)#include "platform/graphics/skia/SkiaUtils.h" 9323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) 10c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)namespace blink { 11d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 12d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)GraphicsContextState::GraphicsContextState() 137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci : m_strokeColor(Color::black) 147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci , m_fillColor(Color::black) 15d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_fillRule(RULE_NONZERO) 16d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_textDrawingMode(TextModeFill) 17d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_alpha(256) 18d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_compositeOperator(CompositeSourceOver) 19e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles) , m_blendMode(WebBlendModeNormal) 2043e7502580f146aa5b3db8267ba6dbb5c733a489Torne (Richard Coles) , m_interpolationQuality(InterpolationDefault) 21d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_saveCount(0) 22d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_shouldAntialias(true) 23d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) , m_shouldClampToSourceRect(true) 24d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 25d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStyle(SkPaint::kStroke_Style); 26d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeWidth(SkFloatToScalar(m_strokeData.thickness())); 277242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setColor(applyAlpha(m_strokeColor.rgb())); 28d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeCap(SkPaint::kDefault_Cap); 29d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeJoin(SkPaint::kDefault_Join); 30d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeMiter(SkFloatToScalar(m_strokeData.miterLimit())); 31323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_strokePaint.setFilterLevel(WebCoreInterpolationQualityToSkFilterLevel(m_interpolationQuality)); 32d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setAntiAlias(m_shouldAntialias); 33d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColor(applyAlpha(m_fillColor.rgb())); 34323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_fillPaint.setFilterLevel(WebCoreInterpolationQualityToSkFilterLevel(m_interpolationQuality)); 35d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setAntiAlias(m_shouldAntialias); 36d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 37d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 385d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)GraphicsContextState::GraphicsContextState(const GraphicsContextState& other) 395d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) : m_strokePaint(other.m_strokePaint) 405d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_fillPaint(other.m_fillPaint) 415d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_strokeData(other.m_strokeData) 427242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci , m_strokeColor(other.m_strokeColor) 437242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci , m_strokeGradient(other.m_strokeGradient) 447242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci , m_strokePattern(other.m_strokePattern) 455d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_fillColor(other.m_fillColor) 465d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_fillRule(other.m_fillRule) 475d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_fillGradient(other.m_fillGradient) 485d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_fillPattern(other.m_fillPattern) 495d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_looper(other.m_looper) 505d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_textDrawingMode(other.m_textDrawingMode) 515d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_alpha(other.m_alpha) 525d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_colorFilter(other.m_colorFilter) 535d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_compositeOperator(other.m_compositeOperator) 545d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_blendMode(other.m_blendMode) 555d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_interpolationQuality(other.m_interpolationQuality) 565d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_saveCount(0) 575d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_shouldAntialias(other.m_shouldAntialias) 585d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) , m_shouldClampToSourceRect(other.m_shouldClampToSourceRect) { } 595d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) 605d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles)void GraphicsContextState::copy(const GraphicsContextState& source) 61d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 625d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) this->~GraphicsContextState(); 635d92fedcae5e801a8b224de090094f2d9df0b54aTorne (Richard Coles) new (this) GraphicsContextState(source); 64d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 65d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 66d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)const SkPaint& GraphicsContextState::strokePaint(int strokedPathLength) const 67d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 687242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci if (m_strokeGradient && m_strokeGradient->shaderChanged()) 697242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setShader(m_strokeGradient->shader()); 70d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokeData.setupPaintDashPathEffect(&m_strokePaint, strokedPathLength); 71d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_strokePaint; 72d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 73d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 74d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)const SkPaint& GraphicsContextState::fillPaint() const 75d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 76d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (m_fillGradient && m_fillGradient->shaderChanged()) 77d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setShader(m_fillGradient->shader()); 78d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) return m_fillPaint; 79d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 80d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 81d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setStrokeStyle(StrokeStyle style) 82d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 83d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokeData.setStyle(style); 84d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 85d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 86d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setStrokeThickness(float thickness) 87d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 88d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokeData.setThickness(thickness); 89d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeWidth(SkFloatToScalar(thickness)); 90d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 91d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 92d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setStrokeColor(const Color& color) 93d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 947242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokeGradient.clear(); 957242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePattern.clear(); 967242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokeColor = color; 97d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setColor(applyAlpha(color.rgb())); 98d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setShader(0); 99d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 100d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 101d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setStrokeGradient(const PassRefPtr<Gradient> gradient) 102d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 1037242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokeColor = Color::black; 1047242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePattern.clear(); 1057242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokeGradient = gradient; 106d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setColor(applyAlpha(SK_ColorBLACK)); 1077242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setShader(m_strokeGradient->shader()); 108d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 109d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 110d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::clearStrokeGradient() 111d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 1127242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokeGradient.clear(); 1137242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ASSERT(!m_strokePattern); 1147242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setColor(applyAlpha(m_strokeColor.rgb())); 115d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 116d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 117d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setStrokePattern(const PassRefPtr<Pattern> pattern) 118d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 1197242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokeColor = Color::black; 1207242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokeGradient.clear(); 1217242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePattern = pattern; 122d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setColor(applyAlpha(SK_ColorBLACK)); 1237242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setShader(m_strokePattern->shader()); 124d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 125d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 126d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::clearStrokePattern() 127d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 1287242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePattern.clear(); 1297242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci ASSERT(!m_strokeGradient); 1307242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setColor(applyAlpha(m_strokeColor.rgb())); 131d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 132d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 133d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setLineCap(LineCap cap) 134d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 135d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokeData.setLineCap(cap); 136d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeCap((SkPaint::Cap)cap); 137d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 138d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 139d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setLineJoin(LineJoin join) 140d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 141d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokeData.setLineJoin(join); 142d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeJoin((SkPaint::Join)join); 143d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 144d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 145d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setMiterLimit(float miterLimit) 146d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 147d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokeData.setMiterLimit(miterLimit); 148d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setStrokeMiter(SkFloatToScalar(miterLimit)); 149d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 150d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 151d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setFillColor(const Color& color) 152d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 153d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillColor = color; 154d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillGradient.clear(); 155d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPattern.clear(); 156d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColor(applyAlpha(color.rgb())); 157d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setShader(0); 158d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 159d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 160d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setFillGradient(const PassRefPtr<Gradient> gradient) 161d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 162d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillColor = Color::black; 163d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPattern.clear(); 164d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillGradient = gradient; 165d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColor(applyAlpha(SK_ColorBLACK)); 166d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setShader(m_fillGradient->shader()); 167d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 168d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 169d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::clearFillGradient() 170d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 171d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillGradient.clear(); 172d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ASSERT(!m_fillPattern); 173d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColor(applyAlpha(m_fillColor.rgb())); 174d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 175d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 176d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setFillPattern(const PassRefPtr<Pattern> pattern) 177d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 178d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillColor = Color::black; 179d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillGradient.clear(); 180d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPattern = pattern; 181d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColor(applyAlpha(SK_ColorBLACK)); 182d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setShader(m_fillPattern->shader()); 183d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 184d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 185d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::clearFillPattern() 186d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 187d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPattern.clear(); 188d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) ASSERT(!m_fillGradient); 189d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColor(applyAlpha(m_fillColor.rgb())); 190d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 191d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 192d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)// Shadow. (This will need tweaking if we use draw loopers for other things.) 193d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setDrawLooper(PassRefPtr<SkDrawLooper> drawLooper) 194d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 195d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_looper = drawLooper; 196d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setLooper(m_looper.get()); 197d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setLooper(m_looper.get()); 198d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 199d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 200d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::clearDrawLooper() 201d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 202d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_looper.clear(); 203d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setLooper(0); 204d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setLooper(0); 205d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 206d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 207d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setAlphaAsFloat(float alpha) 208d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 209d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (alpha < 0) { 210d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_alpha = 0; 211d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } else { 212d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_alpha = roundf(alpha * 256); 213d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) if (m_alpha > 256) 214d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_alpha = 256; 215d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) } 2167242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setColor(applyAlpha(m_strokeColor.rgb())); 217d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColor(applyAlpha(m_fillColor.rgb())); 218d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 219d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 220d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setLineDash(const DashArray& dashes, float dashOffset) 221d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 222d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokeData.setLineDash(dashes, dashOffset); 223d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 224d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 225d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setColorFilter(PassRefPtr<SkColorFilter> colorFilter) 226d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 227d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_colorFilter = colorFilter; 228d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setColorFilter(m_colorFilter.get()); 229d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setColorFilter(m_colorFilter.get()); 230d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 231d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 232e38fbeeb576b5094e34e038ab88d9d6a5c5c2214Torne (Richard Coles)void GraphicsContextState::setCompositeOperation(CompositeOperator compositeOperation, WebBlendMode blendMode) 233d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 234d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_compositeOperator = compositeOperation; 235d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_blendMode = blendMode; 2367242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci SkXfermode::Mode xferMode = WebCoreCompositeToSkiaComposite(compositeOperation, blendMode); 2377242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_strokePaint.setXfermodeMode(xferMode); 2387242dc3dbeb210b5e876a3c42d1ec1a667fc621aPrimiano Tucci m_fillPaint.setXfermodeMode(xferMode); 239d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 240d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 241d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setInterpolationQuality(InterpolationQuality quality) 242d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 243d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_interpolationQuality = quality; 244323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_strokePaint.setFilterLevel(WebCoreInterpolationQualityToSkFilterLevel(quality)); 245323480423219ecd77329f8326dc5e0e3b50926d4Torne (Richard Coles) m_fillPaint.setFilterLevel(WebCoreInterpolationQualityToSkFilterLevel(quality)); 246d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 247d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 248d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)void GraphicsContextState::setShouldAntialias(bool shouldAntialias) 249d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles){ 250d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_shouldAntialias = shouldAntialias; 251d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_strokePaint.setAntiAlias(shouldAntialias); 252d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) m_fillPaint.setAntiAlias(shouldAntialias); 253d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles)} 254d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 255d5428f32f5d1719f774f62e19147104ca245a3abTorne (Richard Coles) 256c1847b1379d12d0e05df27436bf19a9b1bf12deaTorne (Richard Coles)} // namespace blink 257