sk_sp<SkSurface> onMakeTightSurface(const SkImageFilter::OutputProperties& outProps, const SkISize& size, SkAlphaType at) const override { SkColorSpace* colorSpace = outProps.colorSpace(); SkColorType colorType = colorSpace && colorSpace->gammaIsLinear() ? kRGBA_F16_SkColorType : kRGBA_8888_SkColorType; SkImageInfo info = SkImageInfo::Make(size.width(), size.height(), colorType, at, sk_ref_sp(colorSpace)); return SkSurface::MakeRenderTarget(fContext, SkBudgeted::kYes, info); }
void draw(SkCanvas* canvas) { SkBitmap bitmap; bitmap.setInfo(SkImageInfo::MakeN32(16, 32, kPremul_SkAlphaType, SkColorSpace::MakeSRGBLinear())); SkColorSpace* colorSpace = bitmap.colorSpace(); SkDebugf("gammaCloseToSRGB: %s gammaIsLinear: %s isSRGB: %s\n", colorSpace->gammaCloseToSRGB() ? "true" : "false", colorSpace->gammaIsLinear() ? "true" : "false", colorSpace->isSRGB() ? "true" : "false"); }
sk_sp<SkSurface> onMakeTightSurface(const SkImageFilter::OutputProperties& outProps, const SkISize& size, SkAlphaType at) const override { #if RASTER_IMAGE_FILTERS_SUPPORT_SRGB_AND_F16 SkColorSpace* colorSpace = outProps.colorSpace(); #else SkColorSpace* colorSpace = nullptr; #endif SkColorType colorType = colorSpace && colorSpace->gammaIsLinear() ? kRGBA_F16_SkColorType : kN32_SkColorType; SkImageInfo info = SkImageInfo::Make(size.width(), size.height(), colorType, at, sk_ref_sp(colorSpace)); return SkSurface::MakeRaster(info); }