本文整理汇总了C++中SkImageFilter::asColorFilter方法的典型用法代码示例。如果您正苦于以下问题:C++ SkImageFilter::asColorFilter方法的具体用法?C++ SkImageFilter::asColorFilter怎么用?C++ SkImageFilter::asColorFilter使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类SkImageFilter
的用法示例。
在下文中一共展示了SkImageFilter::asColorFilter方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: colorSpaceTest
void colorSpaceTest()
{
// Build filter tree
RefPtr<ReferenceFilter> referenceFilter = ReferenceFilter::create();
// Add a dummy source graphic input
RefPtr<FilterEffect> sourceEffect = referenceFilter->sourceGraphic();
sourceEffect->setOperatingColorSpace(ColorSpaceDeviceRGB);
// Add a blur effect (with input : source)
RefPtr<FilterEffect> blurEffect =
FEGaussianBlur::create(referenceFilter.get(), 3.0f, 3.0f);
blurEffect->setOperatingColorSpace(ColorSpaceLinearRGB);
blurEffect->inputEffects().append(sourceEffect);
// Add a blend effect (with inputs : blur, source)
RefPtr<FilterEffect> blendEffect =
FEBlend::create(referenceFilter.get(), FEBLEND_MODE_NORMAL);
blendEffect->setOperatingColorSpace(ColorSpaceDeviceRGB);
FilterEffectVector& blendInputs = blendEffect->inputEffects();
blendInputs.reserveCapacity(2);
blendInputs.append(sourceEffect);
blendInputs.append(blurEffect);
// Add a merge effect (with inputs : blur, blend)
RefPtr<FilterEffect> mergeEffect = FEMerge::create(referenceFilter.get());
mergeEffect->setOperatingColorSpace(ColorSpaceLinearRGB);
FilterEffectVector& mergeInputs = mergeEffect->inputEffects();
mergeInputs.reserveCapacity(2);
mergeInputs.append(blurEffect);
mergeInputs.append(blendEffect);
referenceFilter->setLastEffect(mergeEffect);
// Get SkImageFilter resulting tree
SkiaImageFilterBuilder builder;
RefPtr<SkImageFilter> filter = builder.build(referenceFilter->lastEffect(), ColorSpaceDeviceRGB);
// Let's check that the resulting tree looks like this :
// ColorSpace (Linear->Device) : CS (L->D)
// |
// Merge (L)
// | |
// | CS (D->L)
// | |
// | Blend (D)
// | / |
// | CS (L->D) |
// | / |
// Blur (L) |
// \ |
// CS (D->L) |
// \ |
// Source Graphic (D)
EXPECT_EQ(filter->countInputs(), 1); // Should be CS (L->D)
SkImageFilter* child = filter->getInput(0); // Should be Merge
EXPECT_EQ(child->asColorFilter(0), false);
EXPECT_EQ(child->countInputs(), 2);
child = child->getInput(1); // Should be CS (D->L)
EXPECT_EQ(child->asColorFilter(0), true);
EXPECT_EQ(child->countInputs(), 1);
child = child->getInput(0); // Should be Blend
EXPECT_EQ(child->asColorFilter(0), false);
EXPECT_EQ(child->countInputs(), 2);
child = child->getInput(0); // Should be CS (L->D)
EXPECT_EQ(child->asColorFilter(0), true);
EXPECT_EQ(child->countInputs(), 1);
child = child->getInput(0); // Should be Blur
EXPECT_EQ(child->asColorFilter(0), false);
EXPECT_EQ(child->countInputs(), 1);
child = child->getInput(0); // Should be CS (D->L)
EXPECT_EQ(child->asColorFilter(0), true);
EXPECT_EQ(child->countInputs(), 1);
}