sk_sp<SkImageFilter> FEFlood::createImageFilter() { Color color = floodColor().combineWithAlpha(floodOpacity()); SkImageFilter::CropRect rect = getCropRect(); return SkColorFilterImageFilter::Make( SkColorFilter::MakeModeFilter(color.rgb(), SkXfermode::kSrc_Mode), 0, &rect); }
PassRefPtr<SkImageFilter> FEFlood::createImageFilter(SkiaImageFilterBuilder* builder) { Color color = floodColor().combineWithAlpha(floodOpacity()); SkImageFilter::CropRect rect = getCropRect(builder->cropOffset()); SkAutoTUnref<SkColorFilter> cf(SkColorFilter::CreateModeFilter(color.rgb(), SkXfermode::kSrc_Mode)); return adoptRef(SkColorFilterImageFilter::Create(cf, 0, &rect)); }
TextStream& FEFlood::externalRepresentation(TextStream& ts) const { ts << "[type=FLOOD] "; FilterEffect::externalRepresentation(ts); ts << " [color=" << floodColor() << "]" << " [opacity=" << floodOpacity() << "]"; return ts; }
TextStream& FEFlood::externalRepresentation(TextStream& ts, int indent) const { writeIndent(ts, indent); ts << "[feFlood"; FilterEffect::externalRepresentation(ts); ts << " flood-color=\"" << floodColor().nameForLayoutTreeAsText() << "\" " << "flood-opacity=\"" << floodOpacity() << "\"]\n"; return ts; }
PassRefPtr<SkImageFilter> FEFlood::createImageFilter(SkiaImageFilterBuilder& builder) { Color color = floodColor().combineWithAlpha(floodOpacity()); SkImageFilter::CropRect rect = getCropRect(); sk_sp<SkColorFilter> colorFilter = SkColorFilter::MakeModeFilter(color.rgb(), SkXfermode::kSrc_Mode); return adoptRef(SkColorFilterImageFilter::Create(colorFilter.get(), 0, &rect)); }
void FEFlood::apply(Filter* filter) { GraphicsContext* filterContext = effectContext(filter); if (!filterContext) return; Color color = colorWithOverrideAlpha(floodColor().rgb(), floodOpacity()); filterContext->fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()), color, DeviceColorSpace); }
void FEFlood::platformApplySoftware() { ImageBuffer* resultImage = createImageBufferResult(); if (!resultImage) return; Color color = colorWithOverrideAlpha(floodColor().rgb(), floodOpacity()); resultImage->context()->fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()), color, ColorSpaceDeviceRGB); }
void FEFlood::applySoftware() { ImageBuffer* resultImage = createImageBufferResult(); if (!resultImage) return; Color color = floodColor().combineWithAlpha(floodOpacity()); resultImage->context()->fillRect(FloatRect(FloatPoint(), absolutePaintRect().size()), color); FilterEffect::setResultColorSpace(ColorSpaceDeviceRGB); }