16c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org/* 26c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org * Copyright 2013 Google Inc. 36c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org * 46c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org * Use of this source code is governed by a BSD-style license that can be 56c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org * found in the LICENSE file. 66c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org */ 76c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org 86c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#include "SkLumaColorFilter.h" 9b9641bd55a8f63757a63d9302755feb55d2e9502Mike Reed#include "SkPM4f.h" 10a4083c97d48e8a4f88e2797d7363f141e3d42553Cary Clark#include "SkColorData.h" 111f49f26353997195030aeab41c8665e1860d2958Mike Klein#include "SkRasterPipeline.h" 126c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#include "SkString.h" 136c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org 146c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#if SK_SUPPORT_GPU 156c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#include "GrContext.h" 1614efcbf3497e6a280cc141e6dec179b4ad4565afEthan Nicholas#include "effects/GrLumaColorFilterEffect.h" 1764c4728c70001ed074fecf5c4e083781987b12e9egdaniel#include "glsl/GrGLSLFragmentProcessor.h" 182d721d33aad192cc8a7a1321504b39bdca2a57ceegdaniel#include "glsl/GrGLSLFragmentShaderBuilder.h" 196c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#endif 206c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org 21fdf31035a9639c2d377bdf2ddb404d269f8ca42aMike Kleinvoid SkLumaColorFilter::onAppendStages(SkRasterPipeline* p, 22744908e5e81f81f34288a1b5547aa4ea990ad13dMike Klein SkColorSpace* dst, 23ac04fef619ad3939a25e66bdaef6f6b1e7f5ca50Herb Derby SkArenaAlloc* scratch, 24744908e5e81f81f34288a1b5547aa4ea990ad13dMike Klein bool shaderIsOpaque) const { 251f49f26353997195030aeab41c8665e1860d2958Mike Klein p->append(SkRasterPipeline::luminance_to_alpha); 261f49f26353997195030aeab41c8665e1860d2958Mike Klein} 271f49f26353997195030aeab41c8665e1860d2958Mike Klein 28d053ce9c54d4e5937a142278359e5a4cde18095ereedsk_sp<SkColorFilter> SkLumaColorFilter::Make() { 29d053ce9c54d4e5937a142278359e5a4cde18095ereed return sk_sp<SkColorFilter>(new SkLumaColorFilter); 30d053ce9c54d4e5937a142278359e5a4cde18095ereed} 316c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org 329fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reedSkLumaColorFilter::SkLumaColorFilter() : INHERITED() {} 336c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org 3460c9b58b3214b0154c931656e91e39b230e987d8reedsk_sp<SkFlattenable> SkLumaColorFilter::CreateProc(SkReadBuffer&) { 3560c9b58b3214b0154c931656e91e39b230e987d8reed return Make(); 3660c9b58b3214b0154c931656e91e39b230e987d8reed} 376c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org 389fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reedvoid SkLumaColorFilter::flatten(SkWriteBuffer&) const {} 399fa60daad4d5f54c0dbe3dbcc7608a8f6d721187reed 400f10f7bf1fb43ca6346dc220a076773b1f19a367commit-bot@chromium.org#ifndef SK_IGNORE_TO_STRING 416c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.orgvoid SkLumaColorFilter::toString(SkString* str) const { 426c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org str->append("SkLumaColorFilter "); 436c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org} 446c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#endif 456c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org 466c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#if SK_SUPPORT_GPU 474cbb6e6d551e8bea2c040b1aa9dce253cffb9af0Brian Salomonstd::unique_ptr<GrFragmentProcessor> SkLumaColorFilter::asFragmentProcessor( 484cbb6e6d551e8bea2c040b1aa9dce253cffb9af0Brian Salomon GrContext*, const GrColorSpaceInfo&) const { 4914efcbf3497e6a280cc141e6dec179b4ad4565afEthan Nicholas return GrLumaColorFilterEffect::Make(); 506c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org} 516c1ee2d4e727357451c8a6fcf4a08e75890b5d6dcommit-bot@chromium.org#endif 52