Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,25 +31,6 @@ public class MaskableFrameLayout extends FrameLayout {
//Constants
private static final String TAG = "MaskableFrameLayout";

private static final int MODE_ADD = 0;
private static final int MODE_CLEAR = 1;
private static final int MODE_DARKEN = 2;
private static final int MODE_DST = 3;
private static final int MODE_DST_ATOP = 4;
private static final int MODE_DST_IN = 5;
private static final int MODE_DST_OUT = 6;
private static final int MODE_DST_OVER = 7;
private static final int MODE_LIGHTEN = 8;
private static final int MODE_MULTIPLY = 9;
private static final int MODE_OVERLAY = 10;
private static final int MODE_SCREEN = 11;
private static final int MODE_SRC = 12;
private static final int MODE_SRC_ATOP = 13;
private static final int MODE_SRC_IN = 14;
private static final int MODE_SRC_OUT = 15;
private static final int MODE_SRC_OVER = 16;
private static final int MODE_XOR = 17;

private Handler mHandler;

//Mask props
Expand Down Expand Up @@ -276,72 +257,32 @@ private void swapBitmapMask(@Nullable Bitmap newMask) {

//Utils
private PorterDuffXfermode getModeFromInteger(int index) {
PorterDuff.Mode mode = null;
switch (index) {
case MODE_ADD:
if (Build.VERSION.SDK_INT >= 11) {
mode = PorterDuff.Mode.ADD;
} else {
log("MODE_ADD is not supported on api lvl " + Build.VERSION.SDK_INT);
}
case MODE_CLEAR:
mode = PorterDuff.Mode.CLEAR;
break;
case MODE_DARKEN:
mode = PorterDuff.Mode.DARKEN;
break;
case MODE_DST:
mode = PorterDuff.Mode.DST;
break;
case MODE_DST_ATOP:
mode = PorterDuff.Mode.DST_ATOP;
break;
case MODE_DST_IN:
mode = PorterDuff.Mode.DST_IN;
break;
case MODE_DST_OUT:
mode = PorterDuff.Mode.DST_OUT;
break;
case MODE_DST_OVER:
mode = PorterDuff.Mode.DST_OVER;
break;
case MODE_LIGHTEN:
mode = PorterDuff.Mode.LIGHTEN;
break;
case MODE_MULTIPLY:
mode = PorterDuff.Mode.MULTIPLY;
break;
case MODE_OVERLAY:
if (Build.VERSION.SDK_INT >= 11) {
mode = PorterDuff.Mode.OVERLAY;
} else {
log("MODE_OVERLAY is not supported on api lvl " + Build.VERSION.SDK_INT);
}
case MODE_SCREEN:
mode = PorterDuff.Mode.SCREEN;
break;
case MODE_SRC:
mode = PorterDuff.Mode.SRC;
break;
case MODE_SRC_ATOP:
mode = PorterDuff.Mode.SRC_ATOP;
break;
case MODE_SRC_IN:
mode = PorterDuff.Mode.SRC_IN;
break;
case MODE_SRC_OUT:
mode = PorterDuff.Mode.SRC_OUT;
break;
case MODE_SRC_OVER:
mode = PorterDuff.Mode.SRC_OVER;
break;
case MODE_XOR:
mode = PorterDuff.Mode.XOR;
break;
default:
mode = PorterDuff.Mode.DST_IN;
}
PorterDuff.Mode mode = intToMode(index);
log("Mode is " + mode.toString());
return new PorterDuffXfermode(mode);
}

public static PorterDuff.Mode intToMode(int val) {
switch (val) {
default:
case 0: return PorterDuff.Mode.CLEAR;
case 1: return PorterDuff.Mode.SRC;
case 2: return PorterDuff.Mode.DST;
case 3: return PorterDuff.Mode.SRC_OVER;
case 4: return PorterDuff.Mode.DST_OVER;
case 5: return PorterDuff.Mode.SRC_IN;
case 6: return PorterDuff.Mode.DST_IN;
case 7: return PorterDuff.Mode.SRC_OUT;
case 8: return PorterDuff.Mode.DST_OUT;
case 9: return PorterDuff.Mode.SRC_ATOP;
case 10: return PorterDuff.Mode.DST_ATOP;
case 11: return PorterDuff.Mode.XOR;
case 12: return PorterDuff.Mode.ADD;
case 13: return PorterDuff.Mode.MULTIPLY;
case 14: return PorterDuff.Mode.SCREEN;
case 15: return PorterDuff.Mode.OVERLAY;
case 16: return PorterDuff.Mode.DARKEN;
case 17: return PorterDuff.Mode.LIGHTEN;
}
}
}
36 changes: 18 additions & 18 deletions library/src/main/res/values/attrs_maskable_framelayout.xml
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,24 @@
<declare-styleable name="MaskableLayout">
<attr name="mask" format="reference"/>
<attr name="porterduffxfermode">
<enum name="ADD" value="0"/>
<enum name="CLEAR" value="1"/>
<enum name="DARKEN" value="2"/>
<enum name="DST" value="3"/>
<enum name="DST_ATOP" value="4"/>
<enum name="DST_IN" value="5"/>
<enum name="DST_OUT" value="6"/>
<enum name="DST_OVER" value="7"/>
<enum name="LIGHTEN" value="8"/>
<enum name="MULTIPLY" value="9"/>
<enum name="OVERLAY" value="10"/>
<enum name="SCREEN" value="11"/>
<enum name="SRC" value="12"/>
<enum name="SRC_ATOP" value="13"/>
<enum name="SRC_IN" value="14"/>
<enum name="SRC_OUT" value="15"/>
<enum name="SRC_OVER" value="16"/>
<enum name="XOR" value="17"/>
<enum name="CLEAR" value="0"/>
<enum name="SRC" value="1"/>
<enum name="DST" value="2"/>
<enum name="SRC_OVER" value="3"/>
<enum name="DST_OVER" value="4"/>
<enum name="SRC_IN" value="5"/>
<enum name="DST_IN" value="6"/>
<enum name="SRC_OUT" value="7"/>
<enum name="DST_OUT" value="8"/>
<enum name="SRC_ATOP" value="9"/>
<enum name="DST_ATOP" value="10"/>
<enum name="XOR" value="11"/>
<enum name="ADD" value="12"/>
<enum name="MULTIPLY" value="13"/>
<enum name="SCREEN" value="14"/>
<enum name="OVERLAY" value="15"/>
<enum name="DARKEN" value="16"/>
<enum name="LIGHTEN" value="17"/>
</attr>
<attr name="anti_aliasing" format="boolean"/>
</declare-styleable>
Expand Down