diff --git a/src/api-impl-jni/graphics/android_graphics_Matrix.c b/src/api-impl-jni/graphics/android_graphics_Matrix.c index de869570..b259c8e0 100644 --- a/src/api-impl-jni/graphics/android_graphics_Matrix.c +++ b/src/api-impl-jni/graphics/android_graphics_Matrix.c @@ -275,3 +275,13 @@ JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setRotate__JFFF(JNIE graphene_matrix_rotate_z(matrix, degrees); graphene_matrix_translate(matrix, &GRAPHENE_POINT3D_INIT(px, py, 0)); } + +JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1rectStaysRect(JNIEnv *env, jclass class, jlong matrix_ptr) +{ + graphene_matrix_t *matrix = (graphene_matrix_t *)_PTR(matrix_ptr); + float scale_x = graphene_matrix_get_value(matrix, 0, 0); + float skew_x = graphene_matrix_get_value(matrix, 1, 0); + float skew_y = graphene_matrix_get_value(matrix, 0, 1); + float scale_y = graphene_matrix_get_value(matrix, 1, 1); + return (!skew_x && !skew_y) || (!scale_x && !scale_y); +} diff --git a/src/api-impl/android/animation/PropertyValuesHolder.java b/src/api-impl/android/animation/PropertyValuesHolder.java index 7195171e..4310c1d8 100644 --- a/src/api-impl/android/animation/PropertyValuesHolder.java +++ b/src/api-impl/android/animation/PropertyValuesHolder.java @@ -100,6 +100,10 @@ public class PropertyValuesHolder { public void setEvaluator(TypeEvaluator value) {} public void calculateValue(float fraction) { + if (fraction < 0f) + fraction = 0f; + if (fraction > 1f) + fraction = 1f; if (values_object != null) { value = values_object[(int) (fraction * (values_object.length - 1) + 0.5f)]; } else if (values_float != null) { diff --git a/src/api-impl/android/app/backup/BackupManager.java b/src/api-impl/android/app/backup/BackupManager.java index d5dc2c46..b09d0d35 100644 --- a/src/api-impl/android/app/backup/BackupManager.java +++ b/src/api-impl/android/app/backup/BackupManager.java @@ -5,4 +5,6 @@ import android.content.Context; public class BackupManager { public BackupManager(Context context) { } + + public void dataChanged() {} } diff --git a/src/api-impl/android/graphics/Color.java b/src/api-impl/android/graphics/Color.java index c4c853c7..c031a46e 100644 --- a/src/api-impl/android/graphics/Color.java +++ b/src/api-impl/android/graphics/Color.java @@ -179,4 +179,8 @@ public class Color { } return 0; } + + public static int HSVToColor(int alpha, float[] hsv) { + return (alpha << 24) | (HSVToColor(hsv) & 0xffffff); + } } diff --git a/src/api-impl/android/graphics/Path.java b/src/api-impl/android/graphics/Path.java index d0a02dd5..c4f8b741 100644 --- a/src/api-impl/android/graphics/Path.java +++ b/src/api-impl/android/graphics/Path.java @@ -224,6 +224,10 @@ public class Path { transform(matrix); } + public void setLastPoint(float x, float y) { + Log.w("Path", "STUB: setLastPoint"); + } + @SuppressWarnings("deprecation") @Override protected void finalize() throws Throwable { diff --git a/src/api-impl/android/graphics/drawable/BitmapDrawable.java b/src/api-impl/android/graphics/drawable/BitmapDrawable.java index b30d9fa2..047816d4 100644 --- a/src/api-impl/android/graphics/drawable/BitmapDrawable.java +++ b/src/api-impl/android/graphics/drawable/BitmapDrawable.java @@ -12,6 +12,7 @@ import android.content.res.Resources.Theme; import android.content.res.TypedArray; import android.graphics.Bitmap; import android.graphics.Canvas; +import android.graphics.Paint; import android.graphics.Rect; import android.graphics.RectF; import android.graphics.Shader; @@ -61,4 +62,8 @@ public class BitmapDrawable extends Drawable { } public void setTileModeX(Shader.TileMode mode) {} + + public Paint getPaint() { + return new Paint(); + } } diff --git a/src/api-impl/android/graphics/drawable/shapes/Shape.java b/src/api-impl/android/graphics/drawable/shapes/Shape.java index b6922f3d..82c18012 100644 --- a/src/api-impl/android/graphics/drawable/shapes/Shape.java +++ b/src/api-impl/android/graphics/drawable/shapes/Shape.java @@ -7,4 +7,6 @@ public class Shape { protected RectF rect() { return new RectF(); } + + public void resize(float width, float height) {} } diff --git a/src/api-impl/android/media/AudioRecord.java b/src/api-impl/android/media/AudioRecord.java new file mode 100644 index 00000000..8c0de511 --- /dev/null +++ b/src/api-impl/android/media/AudioRecord.java @@ -0,0 +1,8 @@ +package android.media; + +public class AudioRecord { + + public static int getMinBufferSize(int sampleRateInHz, int channelConfig, int audioFormat) { + return 1000; + } +} diff --git a/src/api-impl/android/os/WorkSource.java b/src/api-impl/android/os/WorkSource.java new file mode 100644 index 00000000..d88c9cd2 --- /dev/null +++ b/src/api-impl/android/os/WorkSource.java @@ -0,0 +1,4 @@ +package android.os; + +public class WorkSource { +} diff --git a/src/api-impl/android/text/style/ClickableSpan.java b/src/api-impl/android/text/style/ClickableSpan.java index 353bf7da..afbf534a 100644 --- a/src/api-impl/android/text/style/ClickableSpan.java +++ b/src/api-impl/android/text/style/ClickableSpan.java @@ -1,4 +1,4 @@ package android.text.style; -public class ClickableSpan { +public class ClickableSpan extends CharacterStyle { } diff --git a/src/api-impl/android/text/style/ImageSpan.java b/src/api-impl/android/text/style/ImageSpan.java index cfe7a785..eafec9f7 100644 --- a/src/api-impl/android/text/style/ImageSpan.java +++ b/src/api-impl/android/text/style/ImageSpan.java @@ -14,6 +14,10 @@ public class ImageSpan extends DynamicDrawableSpan { drawable = d; } + public ImageSpan(Drawable d, int verticalAlignment) { + drawable = d; + } + public Drawable getDrawable() { return drawable; } diff --git a/src/api-impl/android/text/style/MetricAffectingSpan.java b/src/api-impl/android/text/style/MetricAffectingSpan.java index 4b77d167..03c4307f 100644 --- a/src/api-impl/android/text/style/MetricAffectingSpan.java +++ b/src/api-impl/android/text/style/MetricAffectingSpan.java @@ -2,7 +2,7 @@ package android.text.style; import android.text.TextPaint; -public class MetricAffectingSpan { +public class MetricAffectingSpan extends CharacterStyle { public void updateMeasureState(TextPaint paint) {} diff --git a/src/api-impl/android/text/style/URLSpan.java b/src/api-impl/android/text/style/URLSpan.java index f6a813dd..6787f6d2 100644 --- a/src/api-impl/android/text/style/URLSpan.java +++ b/src/api-impl/android/text/style/URLSpan.java @@ -1,6 +1,6 @@ package android.text.style; -public class URLSpan { +public class URLSpan extends CharacterStyle { private String url; diff --git a/src/api-impl/android/text/util/Linkify.java b/src/api-impl/android/text/util/Linkify.java index 45e675d4..c509dad2 100644 --- a/src/api-impl/android/text/util/Linkify.java +++ b/src/api-impl/android/text/util/Linkify.java @@ -10,5 +10,5 @@ public class Linkify { public static final boolean addLinks(Spannable text, int mask) { return true; } public static final boolean addLinks(TextView text, int mask) { return true; } - public class MatchFilter {} + public interface MatchFilter {} } diff --git a/src/api-impl/android/view/TextureView.java b/src/api-impl/android/view/TextureView.java index 3237b8eb..39a5a002 100644 --- a/src/api-impl/android/view/TextureView.java +++ b/src/api-impl/android/view/TextureView.java @@ -15,4 +15,8 @@ public class TextureView extends View { public interface SurfaceTextureListener {} + public void setSurfaceTextureListener(SurfaceTextureListener surfaceTextureListener) {} + + public void setOpaque(boolean opaque) {} + } diff --git a/src/api-impl/android/view/animation/OvershootInterpolator.java b/src/api-impl/android/view/animation/OvershootInterpolator.java index 0bece644..99478342 100644 --- a/src/api-impl/android/view/animation/OvershootInterpolator.java +++ b/src/api-impl/android/view/animation/OvershootInterpolator.java @@ -1,6 +1,17 @@ package android.view.animation; -public class OvershootInterpolator { +import android.animation.TimeInterpolator; - public OvershootInterpolator(float overshoot) {} +public class OvershootInterpolator implements TimeInterpolator { + + private float overshoot; + + public OvershootInterpolator(float overshoot) { + this.overshoot = overshoot; + } + + @Override + public float getInterpolation(float input) { + return (input-1) * (input-1) * ((overshoot + 1) * (input-1) + overshoot) + 1; + } } diff --git a/src/api-impl/android/widget/TextView.java b/src/api-impl/android/widget/TextView.java index 245e5858..c3f0f48e 100644 --- a/src/api-impl/android/widget/TextView.java +++ b/src/api-impl/android/widget/TextView.java @@ -123,7 +123,7 @@ public class TextView extends View { public void setTextColor(ColorStateList colors) { if (colors != null) { this.colors = colors; - setTextColor(colors.getDefaultColor()); // TODO: do this properly + native_setTextColor(colors.getDefaultColor()); // TODO: do this properly } } public void setTypeface(Typeface tf, int style) { diff --git a/src/api-impl/android/widget/ViewSwitcher.java b/src/api-impl/android/widget/ViewSwitcher.java new file mode 100644 index 00000000..8ec07964 --- /dev/null +++ b/src/api-impl/android/widget/ViewSwitcher.java @@ -0,0 +1,45 @@ +package android.widget; + +import android.content.Context; +import android.util.AttributeSet; +import android.view.View; + +public class ViewSwitcher extends ViewAnimator { + + public interface ViewFactory { + public View makeView(); + } + + private ViewFactory factory; + + public ViewSwitcher(Context context, AttributeSet attrs) { + super(context, attrs); + } + + public ViewSwitcher(Context context) { + super(context); + } + + public void setFactory(ViewFactory factory) { + this.factory = factory; + } + + @Override + public View getCurrentView() { + View view = super.getCurrentView(); + if (view == null) { + view = factory.makeView(); + addView(view); + } + return view; + } + + public View getNextView() { + View view = getChildAt(mWhichChild+1); + if (view == null) { + view = factory.makeView(); + addView(view); + } + return view; + } +} diff --git a/src/api-impl/meson.build b/src/api-impl/meson.build index fad5033a..32c210e8 100644 --- a/src/api-impl/meson.build +++ b/src/api-impl/meson.build @@ -274,6 +274,7 @@ srcs = [ 'android/location/LocationManager.java', 'android/media/AudioAttributes.java', 'android/media/AudioManager.java', + 'android/media/AudioRecord.java', 'android/media/AudioTrack.java', 'android/media/MediaCodec.java', 'android/media/MediaCodecInfo.java', @@ -363,6 +364,7 @@ srcs = [ 'android/os/UserManager.java', 'android/os/VibrationEffect.java', 'android/os/Vibrator.java', + 'android/os/WorkSource.java', 'android/os/ext/SdkExtensions.java', 'android/os/storage/StorageManager.java', 'android/preference/PreferenceActivity.java', @@ -644,6 +646,7 @@ srcs = [ 'android/widget/Toolbar.java', 'android/widget/ViewAnimator.java', 'android/widget/ViewFlipper.java', + 'android/widget/ViewSwitcher.java', 'android/widget/ZoomButton.java', 'android/widget/ZoomButtonsController.java', 'com/android/internal/Manifest.java',