Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit b0f49a60 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Create colored shadows demo"

parents fcd996cc 3c0369bf
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -353,6 +353,11 @@ public class RenderNode {
        return nHasShadow(mNativeRenderNode);
    }

    /** setShadowColor */
    public boolean setShadowColor(int color) {
        return nSetShadowColor(mNativeRenderNode, color);
    }

    /**
     * Enables or disables clipping to the outline.
     *
@@ -910,6 +915,8 @@ public class RenderNode {
    @CriticalNative
    private static native boolean nHasShadow(long renderNode);
    @CriticalNative
    private static native boolean nSetShadowColor(long renderNode, int color);
    @CriticalNative
    private static native boolean nSetClipToOutline(long renderNode, boolean clipToOutline);
    @CriticalNative
    private static native boolean nSetRevealClip(long renderNode,
+9 −0
Original line number Diff line number Diff line
@@ -15182,6 +15182,15 @@ public class View implements Drawable.Callback, KeyEvent.Callback,
        return mRenderNode.hasShadow();
    }
    /**
     * @hide
     */
    public void setShadowColor(@ColorInt int color) {
        if (mRenderNode.setShadowColor(color)) {
            invalidateViewProperty(true, true);
        }
    }
    /** @hide */
    public void setRevealClip(boolean shouldClip, float x, float y, float radius) {
+5 −0
Original line number Diff line number Diff line
@@ -174,6 +174,10 @@ static jboolean android_view_RenderNode_hasShadow(jlong renderNodePtr) {
    return renderNode->stagingProperties().hasShadow();
}

static jboolean android_view_RenderNode_setShadowColor(jlong renderNodePtr, jint shadowColor) {
    return SET_AND_DIRTY(setShadowColor, static_cast<SkColor>(shadowColor), RenderNode::GENERIC);
}

static jboolean android_view_RenderNode_setClipToOutline(jlong renderNodePtr,
        jboolean clipToOutline) {
    RenderNode* renderNode = reinterpret_cast<RenderNode*>(renderNodePtr);
@@ -571,6 +575,7 @@ static const JNINativeMethod gMethods[] = {
    { "nSetOutlineEmpty",      "(J)Z",   (void*) android_view_RenderNode_setOutlineEmpty },
    { "nSetOutlineNone",       "(J)Z",   (void*) android_view_RenderNode_setOutlineNone },
    { "nHasShadow",            "(J)Z",   (void*) android_view_RenderNode_hasShadow },
    { "nSetShadowColor",       "(JI)Z",  (void*) android_view_RenderNode_setShadowColor },
    { "nSetClipToOutline",     "(JZ)Z",  (void*) android_view_RenderNode_setClipToOutline },
    { "nSetRevealClip",        "(JZFFF)Z", (void*) android_view_RenderNode_setRevealClip },

+10 −0
Original line number Diff line number Diff line
@@ -26,6 +26,7 @@

#include <SkBlendMode.h>
#include <SkCamera.h>
#include <SkColor.h>
#include <SkMatrix.h>
#include <SkRegion.h>

@@ -506,6 +507,14 @@ public:
               getOutline().getAlpha() != 0.0f;
    }

    SkColor getShadowColor() const {
        return mPrimitiveFields.mShadowColor;
    }

    bool setShadowColor(SkColor shadowColor) {
        return RP_SET(mPrimitiveFields.mShadowColor, shadowColor);
    }

    bool fitsOnLayer() const {
        const DeviceInfo* deviceInfo = DeviceInfo::get();
        return mPrimitiveFields.mWidth <= deviceInfo->maxTextureSize() &&
@@ -529,6 +538,7 @@ private:
        int mLeft = 0, mTop = 0, mRight = 0, mBottom = 0;
        int mWidth = 0, mHeight = 0;
        int mClippingFlags = CLIP_TO_BOUNDS;
        SkColor mShadowColor = SK_ColorBLACK;
        float mAlpha = 1;
        float mTranslationX = 0, mTranslationY = 0, mTranslationZ = 0;
        float mElevation = 0;
+1 −1
Original line number Diff line number Diff line
@@ -189,7 +189,7 @@ void EndReorderBarrierDrawable::drawShadow(SkCanvas* canvas, RenderNodeDrawable*
    }
    SkShadowUtils::DrawShadow(
            canvas, *casterPath, zParams, skiaLightPos, SkiaPipeline::getLightRadius(),
            ambientAlpha, spotAlpha, SK_ColorBLACK,
            ambientAlpha, spotAlpha, casterProperties.getShadowColor(),
            casterAlpha < 1.0f ? SkShadowFlags::kTransparentOccluder_ShadowFlag : 0);
}

Loading