133873d2b41a5cd2597b20a4e88eb8942944c0f23Tyler Schultzpackage com.xtremelabs.robolectric.shadows; 256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 3e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williamsimport android.graphics.ColorFilter; 456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richardimport android.graphics.Paint; 593a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwinimport android.graphics.Shader; 622c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implementation; 722c22c9aa4ca68c2deac6164edc1d82bc9645310Christian Williams & Phil Goodwinimport com.xtremelabs.robolectric.internal.Implements; 8c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodlesimport com.xtremelabs.robolectric.internal.RealObject; 956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 1059d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin/** 1159d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * Shadow of {@code Paint} that has some extra accessors so that tests can tell whether a {@code Paint} object was 1259d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * created with the expected parameters. 1359d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 1456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard@SuppressWarnings({"UnusedDeclaration"}) 1556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard@Implements(Paint.class) 16afe0a89d904a7fe2f5980b9deb26cc3240192459Christian Williamspublic class ShadowPaint { 1756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 1804d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private int color; 1904d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private Paint.Style style; 2004d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private Paint.Cap cap; 2104d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private Paint.Join join; 2204d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private float width; 2304d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private float shadowRadius; 2404d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private float shadowDx; 2504d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private float shadowDy; 2604d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private int shadowColor; 2704d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin private Shader shader; 2893a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin private int alpha; 29e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams private ColorFilter filter; 30ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultz private boolean antiAlias; 31c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles private boolean dither; 32bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham private int flags; 33c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles 34c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles @RealObject Paint paint; 3593a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin 36bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham public void __constructor__(int flags) { 37bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham this.flags = flags; 38bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham antiAlias = ( flags & Paint.ANTI_ALIAS_FLAG ) == Paint.ANTI_ALIAS_FLAG; 39bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham } 40bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham 41bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham @Implementation 42bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham public int getFlags() { 43bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham return flags; 44bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham } 45bb928a7e6299a55125322c83838e8f4384e5f1b7adriancowham 46de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 4793a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin public Shader setShader(Shader shader) { 4893a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin this.shader = shader; 4993a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin return shader; 5093a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin } 5193a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin 52de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 5393a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin public int getAlpha() { 5493a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin return alpha; 5593a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin } 5693a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin 57de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 5893a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin public void setAlpha(int alpha) { 5993a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin this.alpha = alpha; 6093a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin } 6193a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin 6293a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin 63de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 6493a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin public Shader getShader() { 6593a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin return shader; 6693a1ab50e8a7374d3f500c45052ddad66726c923Joe Moore & Phil Goodwin } 6756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 68de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 6956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public void setColor(int color) { 7056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard this.color = color; 7156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 7256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 73de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 7456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public int getColor() { 7556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard return color; 7656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 7756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 78de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 7956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public void setStyle(Paint.Style style) { 8056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard this.style = style; 8156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 8256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 83de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 8456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public Paint.Style getStyle() { 8556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard return style; 8656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 8756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 88de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 8956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public void setStrokeCap(Paint.Cap cap) { 9056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard this.cap = cap; 9156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 9256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 93de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 9456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public Paint.Cap getStrokeCap() { 9556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard return cap; 9656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 9756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 98de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 9956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public void setStrokeJoin(Paint.Join join) { 10056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard this.join = join; 10156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 10256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 103de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 10456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public Paint.Join getStrokeJoin() { 10556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard return join; 10656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 10756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 108de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 10956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public void setStrokeWidth(float width) { 11056a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard this.width = width; 11156a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 11256a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 113de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 11456a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard public float getStrokeWidth() { 11556a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard return width; 11656a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard } 11756a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard 118de9feed5ddf1d91a3e76cbc71712c36a7652201eChristian Williams @Implementation 11932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard public void setShadowLayer(float radius, float dx, float dy, int color) { 12032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard shadowRadius = radius; 12132c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard shadowDx = dx; 12232c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard shadowDy = dy; 12332c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard shadowColor = color; 12432c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard } 12532c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard 12659d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin /** 127de2143a1bef92c4ef270d3391b9201e8b8af7051Christian Williams * Non-Android accessor. 12859d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * 12959d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * @return shadow radius (Paint related shadow, not Robolectric Shadow) 13059d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 13132c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard public float getShadowRadius() { 13232c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard return shadowRadius; 13332c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard } 13432c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard 13559d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin /** 136de2143a1bef92c4ef270d3391b9201e8b8af7051Christian Williams * Non-Android accessor. 13759d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * 13859d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * @return shadow Dx (Paint related shadow, not Robolectric Shadow) 13959d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 14032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard public float getShadowDx() { 14132c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard return shadowDx; 14232c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard } 14332c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard 14459d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin /** 145de2143a1bef92c4ef270d3391b9201e8b8af7051Christian Williams * Non-Android accessor. 14659d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * 14759d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * @return shadow Dx (Paint related shadow, not Robolectric Shadow) 14859d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 14932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard public float getShadowDy() { 15032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard return shadowDy; 15132c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard } 15232c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard 15359d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin /** 154de2143a1bef92c4ef270d3391b9201e8b8af7051Christian Williams * Non-Android accessor. 15559d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * 15659d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * @return shadow color (Paint related shadow, not Robolectric Shadow) 15759d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 15832c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard public int getShadowColor() { 15932c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard return shadowColor; 16032c37ca6a61b1cee08c99fc206f8907c69905e23Chee Wong & Ryan Richard } 16104d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin 16259d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin /** 163de2143a1bef92c4ef270d3391b9201e8b8af7051Christian Williams * Non-Android accessor. 16459d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * 16559d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * @return cap 16659d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 16704d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin public Paint.Cap getCap() { 16804d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin return cap; 16904d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin } 17004d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin 17159d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin /** 172de2143a1bef92c4ef270d3391b9201e8b8af7051Christian Williams * Non-Android accessor. 17359d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * 17459d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * @return join 17559d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 17604d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin public Paint.Join getJoin() { 17704d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin return join; 17804d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin } 17904d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin 18059d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin /** 181de2143a1bef92c4ef270d3391b9201e8b8af7051Christian Williams * Non-Android accessor. 18259d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * 18359d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin * @return width 18459d9df0f147b94712b36ad44939ebd2afa4cf1b7Phil Goodwin */ 18504d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin public float getWidth() { 18604d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin return width; 18704d9597d16301009258c94d968d8b7839119ac89Christian Williams & Phil Goodwin } 188e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams 189e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams @Implementation 190e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams public ColorFilter getColorFilter() { 191e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams return filter; 192e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams } 193e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams 194e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams @Implementation 195e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams public ColorFilter setColorFilter(ColorFilter filter) { 196e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams this.filter = filter; 197e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams return filter; 198e3bf0c0e84dd3464de0a508f9c03512d23c11bd8Josh Lauer & Christian Williams } 199c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles 200c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles @Implementation 201ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultz public void setAntiAlias(boolean antiAlias) { 202ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultz this.antiAlias = antiAlias; 203c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles } 204c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles 205c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles @Implementation 206c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles public void setDither(boolean dither) { 207c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles this.dither = dither; 208c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles } 209c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles 210c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles @Implementation 211c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles public final boolean isDither() { 212c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles return dither; 213c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles } 214c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles 215c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles @Implementation 216c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles public final boolean isAntiAlias() { 217ca8b4e7c96507b66cb816a3383c93b02d79a7685Tyler Schultz return antiAlias; 218c3f77896cb2eb511d6aee0b27d010c4def7730a9Zoodles } 21956a2a9db15f97a56b5eacef4645bc8ba8790ba6cChee Wong & Ryan Richard} 220