api-impl: stubs and fixes for Compose Stopwatch and LibreSudoku

This commit is contained in:
Julian Winkler
2024-12-10 23:23:14 +01:00
parent b9272aa150
commit 1398125eb5
28 changed files with 238 additions and 36 deletions

View File

@@ -253,3 +253,17 @@ JNIEXPORT jboolean JNICALL Java_android_graphics_Matrix_native_1equals(JNIEnv *e
graphene_matrix_t *matrix2 = (graphene_matrix_t *)_PTR(matrix2_ptr);
return graphene_matrix_equal(matrix1, matrix2);
}
JNIEXPORT void JNICALL Java_android_graphics_Matrix_native_1setValues(JNIEnv *env, jclass class, jlong matrix_ptr, jfloatArray values_ref)
{
graphene_matrix_t *matrix = (graphene_matrix_t *)_PTR(matrix_ptr);
jfloat *values = (*env)->GetFloatArrayElements(env, values_ref, NULL);
float values4x4[4][4] = {
{values[android_graphics_Matrix_MSCALE_X], values[android_graphics_Matrix_MSKEW_X], 0, values[android_graphics_Matrix_MTRANS_X]},
{values[android_graphics_Matrix_MSKEW_Y], values[android_graphics_Matrix_MSCALE_Y], 0, values[android_graphics_Matrix_MTRANS_Y]},
{0, 0, 1, 0},
{values[android_graphics_Matrix_MPERSP_0], values[android_graphics_Matrix_MPERSP_1], 0, values[android_graphics_Matrix_MPERSP_2]},
};
graphene_matrix_init_from_float(matrix, *values4x4);
(*env)->ReleaseFloatArrayElements(env, values_ref, values, 0);
}

View File

@@ -201,3 +201,10 @@ JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addPath__JJ(JNIEnv *en
sk_path_t *src = (sk_path_t *)_PTR(src_ptr);
sk_path_add_path(path, src, APPEND_SK_PATH_ADD_MODE);
}
JNIEXPORT void JNICALL Java_android_graphics_Path_native_1addPath__JJFF(JNIEnv *env, jclass class, jlong path_ptr, jlong src_ptr, jfloat dx, jfloat dy)
{
sk_path_t *path = (sk_path_t *)_PTR(path_ptr);
sk_path_t *src = (sk_path_t *)_PTR(src_ptr);
sk_path_add_path_offset(path, src, dx, dy, APPEND_SK_PATH_ADD_MODE);
}

View File

@@ -5,6 +5,7 @@ import java.util.List;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.drawable.Icon;
import android.media.AudioAttributes;
import android.media.session.MediaSession;
import android.net.Uri;
@@ -67,6 +68,10 @@ public class Notification implements Parcelable {
notification = new Notification();
}
public Builder(Context context, String tag) {
this(context);
}
public Builder setWhen(long when) {return this;}
public Builder setSmallIcon(int icon, int level) {
@@ -161,6 +166,22 @@ public class Notification implements Parcelable {
public Builder setExtras(Bundle extras) {return this;}
public Builder setLargeIcon(Icon icon) {return this;}
public Builder setRemoteInputHistory(CharSequence[] history) {return this;}
public Builder setBadgeIconType(int iconType) {return this;}
public Builder setSettingsText(CharSequence settingsText) {return this;}
public Builder setShortcutId(String shortcutId) {return this;}
public Builder setTimeoutAfter(long timeout) {return this;}
public Builder setGroupAlertBehavior(int groupAlertBehavior) {return this;}
public Builder setSound(Uri sound) {return this;}
public Notification build() {
return notification;
}
@@ -186,10 +207,16 @@ public class Notification implements Parcelable {
action.intent = intent;
}
public Builder(Icon icon, CharSequence title, PendingIntent intent) {
this(0, title, intent);
}
public Builder addExtras(Bundle extras) {return this;}
public Builder addRemoteInput(RemoteInput remoteInput) {return this;}
public Builder setAllowGeneratedReplies(boolean allowGeneratedReplies) {return this;}
public Action build() {
return action;
}

View File

@@ -0,0 +1,6 @@
package android.app;
public class NotificationChannel {
public NotificationChannel(String id, CharSequence name, int importance) {}
}

View File

@@ -98,6 +98,8 @@ public class NotificationManager {
}
}
public void createNotificationChannel(NotificationChannel channel) {}
protected native long nativeInitBuilder();
protected native void nativeAddAction(long builder, String title, int intentType, String action, String className);
protected native void nativeShowNotification(long builder, int id, String title, String text, String iconPath, boolean ongoing, int intentType, String action, String className);

View File

@@ -29,6 +29,10 @@ public abstract class Service extends Context {
System.out.println("stopForeground(" + remove + ") called");
}
public void stopForeground(int remove) {
System.out.println("stopForeground(" + remove + ") called");
}
public Application getApplication() {
return this_application;
}

View File

@@ -231,8 +231,8 @@ public class Context extends Object {
}
}
public final <T> T getSystemService(Class<T> serviceClass) {
return null;
public final Object getSystemService(Class<?> serviceClass) throws InstantiationException, IllegalAccessException, InvocationTargetException {
return serviceClass.getConstructors()[0].newInstance();
}
public Intent registerReceiver(BroadcastReceiver receiver, IntentFilter filter) {

View File

@@ -489,7 +489,11 @@ public final class Bitmap {
* This configuration is very flexible and offers the best
* quality. It should be used whenever possible.
*/
ARGB_8888(5);
ARGB_8888(5),
RGBA_F16(6),
HARDWARE(7);
final int nativeInt;
@@ -602,9 +606,9 @@ public final class Bitmap {
*/
public Bitmap copy(Config config, boolean isMutable) {
checkRecycled("Can't copy a recycled bitmap");
Bitmap b = nativeCopy(mNativeBitmap, config.nativeInt, isMutable);
Bitmap b = new Bitmap(native_copy(pixbuf));
if (b != null) {
b.setAlphaAndPremultiplied(hasAlpha(), mIsPremultiplied);
// b.setAlphaAndPremultiplied(hasAlpha(), mIsPremultiplied);
b.mDensity = mDensity;
}
return b;
@@ -979,6 +983,10 @@ public final class Bitmap {
return createBitmap(display, colors, 0, width, width, height, config);
}
public static Bitmap createBitmap(DisplayMetrics display, int width, int height, Config config, boolean hasAlpha, ColorSpace colorSpace) {
return createBitmap(display, width, height, config, hasAlpha);
}
/**
* Returns an optional array of private data, used by the UI system for
* some bitmaps. Not intended to be called by applications.

View File

@@ -0,0 +1,13 @@
package android.graphics;
public class ColorSpace {
public static enum Named {
SRGB,
}
public static ColorSpace get(Named named) {
return new ColorSpace();
}
}

View File

@@ -7,4 +7,6 @@ public class Outline {
public void setEmpty() {}
public void setRoundRect(int left, int top, int right, int bottom, float r) {}
public void setRect(int left, int top, int right, int bottom) {}
}

View File

@@ -670,6 +670,10 @@ public class Path {
final long ni() {
return mNativePath;
}
public boolean isConvex() {
return false;
}
private static native long init1();
private static native long init2(long nPath);
private static native void native_reset(long nPath);

View File

@@ -3,4 +3,14 @@ package android.graphics;
public class PathMeasure {
public PathMeasure(Path path, boolean dummy) {
}
public void setPath(Path path, boolean forceClosed) {}
public float getLength() {
return 100;
}
public boolean getSegment(float start, float end, Path dst, boolean forceClosed) {
return false;
}
}

View File

@@ -0,0 +1,8 @@
package android.graphics.drawable;
public class Icon {
public static Icon createWithResource(String packageName, int resourceId) {
return null;
}
}

View File

@@ -10,4 +10,6 @@ public class RippleDrawable extends LayerDrawable {
public void setColor(ColorStateList colorStateList) {}
public void setRadius(int radius) {}
}

View File

@@ -302,4 +302,25 @@ public class BaseBundle {
return null;
}
}
/**
* Returns the value associated with the given key, or null if
* no mapping of the desired type exists for the given key or a null
* value is explicitly associated with the key.
*
* @param key a String, or null
* @return an int[] value, or null
*/
public int[] getIntArray(String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (int[])o;
} catch (ClassCastException e) {
typeWarning(key, o, "int[]", e);
return null;
}
}
}

View File

@@ -1042,27 +1042,6 @@ public final class Bundle extends BaseBundle implements Cloneable, Parcelable {
}
}
/**
* Returns the value associated with the given key, or null if
* no mapping of the desired type exists for the given key or a null
* value is explicitly associated with the key.
*
* @param key a String, or null
* @return an int[] value, or null
*/
public int[] getIntArray(String key) {
Object o = mMap.get(key);
if (o == null) {
return null;
}
try {
return (int[])o;
} catch (ClassCastException e) {
typeWarning(key, o, "int[]", e);
return null;
}
}
/**
* Returns the value associated with the given key, or null if
* no mapping of the desired type exists for the given key or a null

View File

@@ -0,0 +1,13 @@
package android.os;
public class VibrationEffect {
public static VibrationEffect createOneShot(long milliseconds, int amplitude) {
return new VibrationEffect();
}
public static VibrationEffect createWaveform(long[] pattern, int repeat) {
return new VibrationEffect();
}
}

View File

@@ -21,6 +21,10 @@ public class Html {
// TODO when JTidy is in use: s/<br \/>//g
}
public static Spanned fromHtml(String source, ImageGetter imageGetter, TagHandler tagHandler) {
return fromHtml(source, 0);
}
public static String escapeHtml(CharSequence source) {
StringBuilder out = new StringBuilder(source.length());
for (int i = 0; i < source.length(); i++) {

View File

@@ -11,14 +11,38 @@ public class StaticLayout extends Layout {
super(source, paint, outerwidth, align, spacingmult, spacingadd);
}
public int getWidth() {
return 200; // arbitrary value for stub method
public static class Builder {
private StaticLayout layout;
public static Builder obtain(CharSequence source, int bufstart, int bufend, TextPaint paint, int outerwidth) {
Builder builder = new Builder();
builder.layout = new StaticLayout(source, bufstart, bufend, paint, outerwidth, null, null, 0, 0, false, null, 0, 0);
return builder;
}
public int getHeight() {
return 50; // arbitrary value for stub method
public Builder setTextDirection(TextDirectionHeuristic textDir) {return this;}
public Builder setAlignment(Alignment align) {return this;}
public Builder setMaxLines(int maxLines) {return this;}
public Builder setEllipsize(TextUtils.TruncateAt ellipsize) {return this;}
public Builder setEllipsizedWidth(int ellipsizedWidth) {return this;}
public Builder setLineSpacing(float add, float mult) {return this;}
public Builder setIncludePad(boolean includepad) {return this;}
public Builder setBreakStrategy(int strategy) {return this;}
public Builder setHyphenationFrequency(int hyphenationFrequency) {return this;}
public Builder setIndents(int[] indents, int[] widths) {return this;}
public Builder setJustificationMode(int mode) {return this;}
public StaticLayout build() {return layout;}
}
public float getLineLeft(int line) {return 0;}
}

View File

@@ -2727,7 +2727,8 @@ public final class MotionEvent extends InputEvent {
* Sets this event's action.
*/
public final void setAction(int action) {
nativeSetAction(mNativePtr, action);
// nativeSetAction(mNativePtr, action);
this.action = action;
}
/**

Some files were not shown because too many files have changed in this diff Show More