1fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot/* 2fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Copyright 2015 Google Inc. 3fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * 4fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * Use of this source code is governed by a BSD-style license that can be 5fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot * found in the LICENSE file. 6fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot */ 7fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 8fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkXfermodeInterpretation.h" 9fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot#include "SkPaint.h" 10fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 11fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robotstatic bool just_solid_color(const SkPaint& p) { 12fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return SK_AlphaOPAQUE == p.getAlpha() && !p.getColorFilter() && !p.getShader(); 13fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 14fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot 15fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team RobotSkXfermodeInterpretation SkInterpretXfermode(const SkPaint& paint, bool dstIsOpaque) { 16fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot switch (paint.getBlendMode()) { 17fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkBlendMode::kSrcOver: 18fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kSrcOver_SkXfermodeInterpretation; 19fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkBlendMode::kSrc: 20fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (just_solid_color(paint)) { 21fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kSrcOver_SkXfermodeInterpretation; 22fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 23fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kNormal_SkXfermodeInterpretation; 24fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkBlendMode::kDst: 25fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kSkipDrawing_SkXfermodeInterpretation; 26fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkBlendMode::kDstOver: 27fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (dstIsOpaque) { 28fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kSkipDrawing_SkXfermodeInterpretation; 29fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 30fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kNormal_SkXfermodeInterpretation; 31fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkBlendMode::kSrcIn: 32fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (dstIsOpaque && just_solid_color(paint)) { 33fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kSrcOver_SkXfermodeInterpretation; 34fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 35fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kNormal_SkXfermodeInterpretation; 36fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot case SkBlendMode::kDstIn: 37fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot if (just_solid_color(paint)) { 38fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kSkipDrawing_SkXfermodeInterpretation; 39fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 40fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kNormal_SkXfermodeInterpretation; 41fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot default: 42fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot return kNormal_SkXfermodeInterpretation; 43fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot } 44fe17456d5e528078ce69b5f15cf7adf1fab963fandroid-build-team Robot} 45