Loading core/jni/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,7 @@ LOCAL_C_INCLUDES += \ $(TOP)/frameworks/av/include \ $(TOP)/system/media/camera/include \ external/skia/src/core \ external/skia/src/effects \ external/skia/src/images \ external/sqlite/dist \ external/sqlite/android \ Loading core/jni/android/graphics/MaskFilter.cpp +7 −6 Original line number Diff line number Diff line #include "GraphicsJNI.h" #include "SkMaskFilter.h" #include "SkBlurMask.h" #include "SkBlurMaskFilter.h" #include "SkTableMaskFilter.h" Loading @@ -19,7 +20,8 @@ public: } static jlong createBlur(JNIEnv* env, jobject, jfloat radius, jint blurStyle) { SkMaskFilter* filter = SkBlurMaskFilter::Create(SkFloatToScalar(radius), SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(SkFloatToScalar(radius)); SkMaskFilter* filter = SkBlurMaskFilter::Create(sigma, (SkBlurMaskFilter::BlurStyle)blurStyle); ThrowIAE_IfNull(env, filter); return reinterpret_cast<jlong>(filter); Loading @@ -34,10 +36,9 @@ public: direction[i] = SkFloatToScalar(values[i]); } SkMaskFilter* filter = SkBlurMaskFilter::CreateEmboss(direction, SkFloatToScalar(ambient), SkFloatToScalar(specular), SkFloatToScalar(radius)); SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(SkFloatToScalar(radius)); SkMaskFilter* filter = SkBlurMaskFilter::CreateEmboss(sigma, direction, SkFloatToScalar(ambient), SkFloatToScalar(specular)); ThrowIAE_IfNull(env, filter); return reinterpret_cast<jlong>(filter); } Loading core/jni/android/graphics/Shader.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -520,7 +520,7 @@ static jlong ComposeShader_postCreate1(JNIEnv* env, jobject o, jlong shaderHandl SkiaShader* shaderB = reinterpret_cast<SkiaShader *>(shaderBHandle); SkXfermode* mode = reinterpret_cast<SkXfermode *>(modeHandle); SkXfermode::Mode skiaMode; if (!SkXfermode::IsMode(mode, &skiaMode)) { if (!SkXfermode::AsMode(mode, &skiaMode)) { // TODO: Support other modes skiaMode = SkXfermode::kSrcOver_Mode; } Loading libs/hwui/DisplayListOp.h +1 −1 Original line number Diff line number Diff line Loading @@ -788,7 +788,7 @@ public: deferInfo.mergeable = state.mMatrix.isSimple() && state.mMatrix.positiveScale() && !state.mClipSideFlags && OpenGLRenderer::getXfermodeDirect(mPaint) == SkXfermode::kSrcOver_Mode && (mBitmap->getConfig() != SkBitmap::kA8_Config); (mBitmap->config() != SkBitmap::kA8_Config); } const SkBitmap* bitmap() { return mBitmap; } Loading libs/hwui/OpenGLRenderer.cpp +12 −7 Original line number Diff line number Diff line Loading @@ -52,7 +52,12 @@ namespace uirenderer { #define ALPHA_THRESHOLD 0 #define FILTER(paint) (!paint || paint->isFilterBitmap() ? GL_LINEAR : GL_NEAREST) static GLenum getFilter(const SkPaint* paint) { if (!paint || paint->getFilterLevel() != SkPaint::kNone_FilterLevel) { return GL_LINEAR; } return GL_NEAREST; } /////////////////////////////////////////////////////////////////////////////// // Globals Loading Loading @@ -1973,7 +1978,7 @@ void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, co texture->setFilter(GL_NEAREST, true); } else { texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); } // No need to check for a UV mapper on the texture object, only ARGB_8888 Loading @@ -1998,7 +2003,7 @@ status_t OpenGLRenderer::drawBitmaps(const SkBitmap* bitmap, AssetAtlas::Entry* const AutoTexture autoCleanup(texture); texture->setWrap(GL_CLAMP_TO_EDGE, true); texture->setFilter(pureTranslate ? GL_NEAREST : FILTER(paint), true); texture->setFilter(pureTranslate ? GL_NEAREST : getFilter(paint), true); const float x = (int) floorf(bounds.left + 0.5f); const float y = (int) floorf(bounds.top + 0.5f); Loading Loading @@ -2174,7 +2179,7 @@ status_t OpenGLRenderer::drawBitmapMesh(const SkBitmap* bitmap, int meshWidth, i const AutoTexture autoCleanup(texture); texture->setWrap(GL_CLAMP_TO_EDGE, true); texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); int alpha; SkXfermode::Mode mode; Loading Loading @@ -2259,10 +2264,10 @@ status_t OpenGLRenderer::drawBitmap(const SkBitmap* bitmap, dstLeft = x; dstTop = y; texture->setFilter(scaled ? FILTER(paint) : GL_NEAREST, true); texture->setFilter(scaled ? getFilter(paint) : GL_NEAREST, true); ignoreTransform = true; } else { texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); } if (CC_UNLIKELY(useScaleTransform)) { Loading Loading @@ -3382,7 +3387,7 @@ void OpenGLRenderer::drawTextureRect(float left, float top, float right, float b paint, texture->blend, vertices, texCoords, GL_TRIANGLE_STRIP, gMeshCount, false, true); } else { texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); drawTextureMesh(left, top, right, bottom, texture->id, paint, texture->blend, vertices, texCoords, GL_TRIANGLE_STRIP, gMeshCount); } Loading Loading
core/jni/Android.mk +1 −0 Original line number Diff line number Diff line Loading @@ -164,6 +164,7 @@ LOCAL_C_INCLUDES += \ $(TOP)/frameworks/av/include \ $(TOP)/system/media/camera/include \ external/skia/src/core \ external/skia/src/effects \ external/skia/src/images \ external/sqlite/dist \ external/sqlite/android \ Loading
core/jni/android/graphics/MaskFilter.cpp +7 −6 Original line number Diff line number Diff line #include "GraphicsJNI.h" #include "SkMaskFilter.h" #include "SkBlurMask.h" #include "SkBlurMaskFilter.h" #include "SkTableMaskFilter.h" Loading @@ -19,7 +20,8 @@ public: } static jlong createBlur(JNIEnv* env, jobject, jfloat radius, jint blurStyle) { SkMaskFilter* filter = SkBlurMaskFilter::Create(SkFloatToScalar(radius), SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(SkFloatToScalar(radius)); SkMaskFilter* filter = SkBlurMaskFilter::Create(sigma, (SkBlurMaskFilter::BlurStyle)blurStyle); ThrowIAE_IfNull(env, filter); return reinterpret_cast<jlong>(filter); Loading @@ -34,10 +36,9 @@ public: direction[i] = SkFloatToScalar(values[i]); } SkMaskFilter* filter = SkBlurMaskFilter::CreateEmboss(direction, SkFloatToScalar(ambient), SkFloatToScalar(specular), SkFloatToScalar(radius)); SkScalar sigma = SkBlurMask::ConvertRadiusToSigma(SkFloatToScalar(radius)); SkMaskFilter* filter = SkBlurMaskFilter::CreateEmboss(sigma, direction, SkFloatToScalar(ambient), SkFloatToScalar(specular)); ThrowIAE_IfNull(env, filter); return reinterpret_cast<jlong>(filter); } Loading
core/jni/android/graphics/Shader.cpp +1 −1 Original line number Diff line number Diff line Loading @@ -520,7 +520,7 @@ static jlong ComposeShader_postCreate1(JNIEnv* env, jobject o, jlong shaderHandl SkiaShader* shaderB = reinterpret_cast<SkiaShader *>(shaderBHandle); SkXfermode* mode = reinterpret_cast<SkXfermode *>(modeHandle); SkXfermode::Mode skiaMode; if (!SkXfermode::IsMode(mode, &skiaMode)) { if (!SkXfermode::AsMode(mode, &skiaMode)) { // TODO: Support other modes skiaMode = SkXfermode::kSrcOver_Mode; } Loading
libs/hwui/DisplayListOp.h +1 −1 Original line number Diff line number Diff line Loading @@ -788,7 +788,7 @@ public: deferInfo.mergeable = state.mMatrix.isSimple() && state.mMatrix.positiveScale() && !state.mClipSideFlags && OpenGLRenderer::getXfermodeDirect(mPaint) == SkXfermode::kSrcOver_Mode && (mBitmap->getConfig() != SkBitmap::kA8_Config); (mBitmap->config() != SkBitmap::kA8_Config); } const SkBitmap* bitmap() { return mBitmap; } Loading
libs/hwui/OpenGLRenderer.cpp +12 −7 Original line number Diff line number Diff line Loading @@ -52,7 +52,12 @@ namespace uirenderer { #define ALPHA_THRESHOLD 0 #define FILTER(paint) (!paint || paint->isFilterBitmap() ? GL_LINEAR : GL_NEAREST) static GLenum getFilter(const SkPaint* paint) { if (!paint || paint->getFilterLevel() != SkPaint::kNone_FilterLevel) { return GL_LINEAR; } return GL_NEAREST; } /////////////////////////////////////////////////////////////////////////////// // Globals Loading Loading @@ -1973,7 +1978,7 @@ void OpenGLRenderer::drawAlphaBitmap(Texture* texture, float left, float top, co texture->setFilter(GL_NEAREST, true); } else { texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); } // No need to check for a UV mapper on the texture object, only ARGB_8888 Loading @@ -1998,7 +2003,7 @@ status_t OpenGLRenderer::drawBitmaps(const SkBitmap* bitmap, AssetAtlas::Entry* const AutoTexture autoCleanup(texture); texture->setWrap(GL_CLAMP_TO_EDGE, true); texture->setFilter(pureTranslate ? GL_NEAREST : FILTER(paint), true); texture->setFilter(pureTranslate ? GL_NEAREST : getFilter(paint), true); const float x = (int) floorf(bounds.left + 0.5f); const float y = (int) floorf(bounds.top + 0.5f); Loading Loading @@ -2174,7 +2179,7 @@ status_t OpenGLRenderer::drawBitmapMesh(const SkBitmap* bitmap, int meshWidth, i const AutoTexture autoCleanup(texture); texture->setWrap(GL_CLAMP_TO_EDGE, true); texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); int alpha; SkXfermode::Mode mode; Loading Loading @@ -2259,10 +2264,10 @@ status_t OpenGLRenderer::drawBitmap(const SkBitmap* bitmap, dstLeft = x; dstTop = y; texture->setFilter(scaled ? FILTER(paint) : GL_NEAREST, true); texture->setFilter(scaled ? getFilter(paint) : GL_NEAREST, true); ignoreTransform = true; } else { texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); } if (CC_UNLIKELY(useScaleTransform)) { Loading Loading @@ -3382,7 +3387,7 @@ void OpenGLRenderer::drawTextureRect(float left, float top, float right, float b paint, texture->blend, vertices, texCoords, GL_TRIANGLE_STRIP, gMeshCount, false, true); } else { texture->setFilter(FILTER(paint), true); texture->setFilter(getFilter(paint), true); drawTextureMesh(left, top, right, bottom, texture->id, paint, texture->blend, vertices, texCoords, GL_TRIANGLE_STRIP, gMeshCount); } Loading