Merge "Properly decode colors spaces in BitmapRegionDecoder" into oc-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
5b52cf6274
@@ -218,6 +218,7 @@ static jobject nativeDecodeRegion(JNIEnv* env, jobject, jlong brdHandle, jint in
|
||||
// If we may have reused a bitmap, we need to indicate that the pixels have changed.
|
||||
if (javaBitmap) {
|
||||
recycleAlloc.copyIfNecessary();
|
||||
bitmap::reinitBitmap(env, javaBitmap, recycledBitmap->info(), !requireUnpremul);
|
||||
return javaBitmap;
|
||||
}
|
||||
|
||||
|
||||
@@ -658,7 +658,11 @@ bool RecyclingClippingPixelAllocator::allocPixelRef(SkBitmap* bitmap, SkColorTab
|
||||
// mRecycledBitmap->info() for the SkImageInfo. According to the
|
||||
// specification for BitmapRegionDecoder, we are not allowed to change
|
||||
// the SkImageInfo.
|
||||
mRecycledBitmap->reconfigure(mRecycledBitmap->info(), rowBytes, ctable);
|
||||
// We can (must) preserve the color space since it doesn't affect the
|
||||
// storage needs
|
||||
mRecycledBitmap->reconfigure(
|
||||
mRecycledBitmap->info().makeColorSpace(bitmap->refColorSpace()),
|
||||
rowBytes, ctable);
|
||||
|
||||
// Give the bitmap the same pixelRef as mRecycledBitmap.
|
||||
// skbug.com/4538: We also need to make sure that the rowBytes on the pixel ref
|
||||
|
||||
@@ -1592,7 +1592,7 @@ public abstract class ColorSpace {
|
||||
Math.abs(a.a - b.a) < 1e-3 &&
|
||||
Math.abs(a.b - b.b) < 1e-3 &&
|
||||
Math.abs(a.c - b.c) < 1e-3 &&
|
||||
Math.abs(a.d - b.d) < 1e-3 &&
|
||||
Math.abs(a.d - b.d) < 2e-3 && // Special case for variations in sRGB OETF/EOTF
|
||||
Math.abs(a.e - b.e) < 1e-3 &&
|
||||
Math.abs(a.f - b.f) < 1e-3 &&
|
||||
Math.abs(a.g - b.g) < 1e-3;
|
||||
|
||||
@@ -600,12 +600,12 @@ void verify(const ProgramDescription& description, const Glop& glop) {
|
||||
void GlopBuilder::build() {
|
||||
REQUIRE_STAGES(kAllStages);
|
||||
if (mOutGlop->mesh.vertices.attribFlags & VertexAttribFlags::TextureCoord) {
|
||||
if (mOutGlop->fill.texture.texture->target() == GL_TEXTURE_2D) {
|
||||
Texture* texture = mOutGlop->fill.texture.texture;
|
||||
if (texture->target() == GL_TEXTURE_2D) {
|
||||
mDescription.hasTexture = true;
|
||||
} else {
|
||||
mDescription.hasExternalTexture = true;
|
||||
}
|
||||
Texture* texture = mOutGlop->fill.texture.texture;
|
||||
mDescription.hasLinearTexture = texture->isLinear();
|
||||
mDescription.hasColorSpaceConversion = texture->hasColorSpaceConversion();
|
||||
mDescription.transferFunction = texture->getTransferFunctionType();
|
||||
|
||||
Reference in New Issue
Block a user