blob: 0d6eacb0ae24ecf68204538a082fb330bd2de376 [file] [log] [blame]
* Copyright 2013 Google Inc.
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
#ifndef SkLumaColorFilter_DEFINED
#define SkLumaColorFilter_DEFINED
#include "include/core/SkColorFilter.h"
#include "include/core/SkRefCnt.h"
class SkRasterPipeline;
* SkLumaColorFilter multiplies the luma of its input into the alpha channel,
* and sets the red, green, and blue channels to zero.
* SkLumaColorFilter(r,g,b,a) = {0,0,0, a * luma(r,g,b)}
* This is similar to a luminanceToAlpha feColorMatrix,
* but note how this filter folds in the previous alpha,
* something an feColorMatrix cannot do.
* feColorMatrix(luminanceToAlpha; r,g,b,a) = {0,0,0, luma(r,g,b)}
* (Despite its name, an feColorMatrix using luminanceToAlpha does
* actually compute luma, a dot-product of gamma-encoded color channels,
* not luminance, a dot-product of linear color channels. So at least
* SkLumaColorFilter and feColorMatrix+luminanceToAlpha agree there.)
class SK_API SkLumaColorFilter {
static sk_sp<SkColorFilter> Make();
friend class SkFlattenable;
static void RegisterFlattenable();