@react-navigation/native 8.0.0-alpha.2 → 8.0.0-alpha.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/android/build/.transforms/586a73aab4c351d3f13dc604ca6964e8/transformed/classes/classes_dex/classes.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$Companion.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$getImageSource$1.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolTypeface.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolView.dex +0 -0
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/ReactNavigationPackage.dex +0 -0
- package/android/build/generated/source/codegen/java/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.java +1 -1
- package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.java +3 -0
- package/android/build/generated/source/codegen/java/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.java +1 -0
- package/android/build/generated/source/codegen/jni/ReactNavigationSpec-generated.cpp +2 -2
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.cpp +5 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/Props.h +58 -0
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI-generated.cpp +4 -3
- package/android/build/generated/source/codegen/jni/react/renderer/components/ReactNavigationSpec/ReactNavigationSpecJSI.h +5 -5
- package/android/build/generated/source/codegen/schema.json +1 -1
- package/android/build/intermediates/{react-navigation/fonts/MaterialSymbolsOutlined.ttf → assets/debug/mergeDebugAssets/fonts/MaterialSymbolsOutlined_400.ttf} +0 -0
- package/android/build/intermediates/compile_library_classes_jar/debug/bundleLibCompileToJarDebug/classes.jar +0 -0
- package/android/build/intermediates/incremental/mergeDebugAssets/merger.xml +1 -1
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
- package/android/build/intermediates/javac/debug/compileDebugJavaWithJavac/classes/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
- package/android/build/intermediates/{assets/debug/mergeDebugAssets/fonts/MaterialSymbolsOutlined.ttf → react-navigation/fonts/MaterialSymbolsOutlined_400.ttf} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/fbreact/specs/NativeMaterialSymbolModuleSpec.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerDelegate.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/com/facebook/react/viewmanagers/ReactNavigationMaterialSymbolViewManagerInterface.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/{MaterialSymbolModule$getImageSource$future$1$1$1.class → MaterialSymbolModule$getImageSource$1.class} +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolModule.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/MaterialSymbolView.class +0 -0
- package/android/build/intermediates/runtime_library_classes_dir/debug/bundleLibRuntimeToDirDebug/org/reactnavigation/ReactNavigationPackage.class +0 -0
- package/android/build/intermediates/runtime_library_classes_jar/debug/bundleLibRuntimeToJarDebug/classes.jar +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-fq-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/internal-name-to-source.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/source-to-classes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/counters.tab +1 -1
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/file-to-id.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab_i +0 -0
- package/android/build/kotlin/compileDebugKotlin/cacheable/last-build.bin +0 -0
- package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin +0 -0
- package/android/build/tmp/compileDebugJavaWithJavac/previous-compilation-data.bin +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule$Companion.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/{MaterialSymbolModule$getImageSource$future$1$1$1.class → MaterialSymbolModule$getImageSource$1.class} +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolTypeface.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolView.class +0 -0
- package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/ReactNavigationPackage.class +0 -0
- package/android/build.gradle +16 -9
- package/android/src/main/java/org/reactnavigation/MaterialSymbolModule.kt +33 -54
- package/android/src/main/java/org/reactnavigation/MaterialSymbolTypeface.kt +11 -7
- package/android/src/main/java/org/reactnavigation/MaterialSymbolView.kt +15 -3
- package/android/src/main/java/org/reactnavigation/ReactNavigationPackage.kt +11 -14
- package/assets/fonts/{MaterialSymbolsOutlined.ttf → MaterialSymbolsOutlined_400.ttf} +0 -0
- package/lib/module/native/MaterialSymbol.android.js +10 -6
- package/lib/module/native/MaterialSymbol.android.js.map +1 -1
- package/lib/module/native/MaterialSymbolData.js +1 -3
- package/lib/module/native/MaterialSymbolData.js.map +1 -1
- package/lib/module/native/MaterialSymbolViewNativeComponent.ts +4 -0
- package/lib/module/native/NativeMaterialSymbolModule.js.map +1 -1
- package/lib/typescript/src/native/MaterialSymbol.android.d.ts +2 -2
- package/lib/typescript/src/native/MaterialSymbol.android.d.ts.map +1 -1
- package/lib/typescript/src/native/MaterialSymbolData.d.ts +1 -3
- package/lib/typescript/src/native/MaterialSymbolData.d.ts.map +1 -1
- package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts +1 -0
- package/lib/typescript/src/native/MaterialSymbolViewNativeComponent.d.ts.map +1 -1
- package/lib/typescript/src/native/NativeMaterialSymbolModule.d.ts +1 -1
- package/lib/typescript/src/native/NativeMaterialSymbolModule.d.ts.map +1 -1
- package/lib/typescript/src/native/types.d.ts +0 -8
- package/lib/typescript/src/native/types.d.ts.map +1 -1
- package/package.json +10 -6
- package/src/native/MaterialSymbol.android.tsx +13 -5
- package/src/native/MaterialSymbolData.tsx +1 -3
- package/src/native/MaterialSymbolViewNativeComponent.ts +4 -0
- package/src/native/NativeMaterialSymbolModule.ts +1 -0
- package/src/native/types.tsx +0 -8
- package/android/build/.transforms/fb9c4b42fa16b6541a5819cb4bf06272/transformed/bundleLibRuntimeToDirDebug/bundleLibRuntimeToDirDebug_dex/org/reactnavigation/MaterialSymbolModule$getImageSource$future$1$1$1.dex +0 -0
- package/android/build/intermediates/assets/debug/mergeDebugAssets/fonts/MaterialSymbolsRounded.ttf +0 -0
- package/android/build/intermediates/assets/debug/mergeDebugAssets/fonts/MaterialSymbolsSharp.ttf +0 -0
- package/android/build/intermediates/react-navigation/fonts/MaterialSymbolsRounded.ttf +0 -0
- package/android/build/intermediates/react-navigation/fonts/MaterialSymbolsSharp.ttf +0 -0
- package/android/gradle.properties +0 -5
- package/assets/fonts/MaterialSymbolsRounded.codepoints +0 -4102
- package/assets/fonts/MaterialSymbolsRounded.ttf +0 -0
- package/assets/fonts/MaterialSymbolsSharp.codepoints +0 -4102
- package/assets/fonts/MaterialSymbolsSharp.ttf +0 -0
|
Binary file
|
|
Binary file
|
|
@@ -34,5 +34,5 @@ public abstract class NativeMaterialSymbolModuleSpec extends ReactContextBaseJav
|
|
|
34
34
|
|
|
35
35
|
@ReactMethod(isBlockingSynchronousMethod = true)
|
|
36
36
|
@DoNotStrip
|
|
37
|
-
public abstract String getImageSource(String name, String variant, double size, ReadableMap color, String hash);
|
|
37
|
+
public abstract String getImageSource(String name, String variant, double size, double weight, ReadableMap color, String hash);
|
|
38
38
|
}
|
|
@@ -29,6 +29,9 @@ public class ReactNavigationMaterialSymbolViewManagerDelegate<T extends View, U
|
|
|
29
29
|
case "variant":
|
|
30
30
|
mViewManager.setVariant(view, value == null ? null : (String) value);
|
|
31
31
|
break;
|
|
32
|
+
case "weight":
|
|
33
|
+
mViewManager.setWeight(view, value == null ? 400 : ((Double) value).intValue());
|
|
34
|
+
break;
|
|
32
35
|
case "size":
|
|
33
36
|
mViewManager.setSize(view, value == null ? Float.NaN : ((Double) value).floatValue());
|
|
34
37
|
break;
|
|
@@ -16,6 +16,7 @@ import com.facebook.react.uimanager.ViewManagerWithGeneratedInterface;
|
|
|
16
16
|
public interface ReactNavigationMaterialSymbolViewManagerInterface<T extends View> extends ViewManagerWithGeneratedInterface {
|
|
17
17
|
void setName(T view, @Nullable String value);
|
|
18
18
|
void setVariant(T view, @Nullable String value);
|
|
19
|
+
void setWeight(T view, @Nullable Integer value);
|
|
19
20
|
void setSize(T view, float value);
|
|
20
21
|
void setColor(T view, @Nullable Integer value);
|
|
21
22
|
}
|
|
@@ -14,12 +14,12 @@ namespace facebook::react {
|
|
|
14
14
|
|
|
15
15
|
static facebook::jsi::Value __hostFunction_NativeMaterialSymbolModuleSpecJSI_getImageSource(facebook::jsi::Runtime& rt, TurboModule &turboModule, const facebook::jsi::Value* args, size_t count) {
|
|
16
16
|
static jmethodID cachedMethodId = nullptr;
|
|
17
|
-
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "getImageSource", "(Ljava/lang/String;Ljava/lang/String;
|
|
17
|
+
return static_cast<JavaTurboModule &>(turboModule).invokeJavaMethod(rt, StringKind, "getImageSource", "(Ljava/lang/String;Ljava/lang/String;DDLcom/facebook/react/bridge/ReadableMap;Ljava/lang/String;)Ljava/lang/String;", args, count, cachedMethodId);
|
|
18
18
|
}
|
|
19
19
|
|
|
20
20
|
NativeMaterialSymbolModuleSpecJSI::NativeMaterialSymbolModuleSpecJSI(const JavaTurboModule::InitParams ¶ms)
|
|
21
21
|
: JavaTurboModule(params) {
|
|
22
|
-
methodMap_["getImageSource"] = MethodMetadata {
|
|
22
|
+
methodMap_["getImageSource"] = MethodMetadata {6, __hostFunction_NativeMaterialSymbolModuleSpecJSI_getImageSource};
|
|
23
23
|
}
|
|
24
24
|
|
|
25
25
|
std::shared_ptr<TurboModule> ReactNavigationSpec_ModuleProvider(const std::string &moduleName, const JavaTurboModule::InitParams ¶ms) {
|
|
@@ -21,6 +21,7 @@ ReactNavigationMaterialSymbolViewProps::ReactNavigationMaterialSymbolViewProps(
|
|
|
21
21
|
|
|
22
22
|
name(convertRawProp(context, rawProps, "name", sourceProps.name, {})),
|
|
23
23
|
variant(convertRawProp(context, rawProps, "variant", sourceProps.variant, {})),
|
|
24
|
+
weight(convertRawProp(context, rawProps, "weight", sourceProps.weight, {ReactNavigationMaterialSymbolViewWeight::Weight400})),
|
|
24
25
|
size(convertRawProp(context, rawProps, "size", sourceProps.size, {0.0})),
|
|
25
26
|
color(convertRawProp(context, rawProps, "color", sourceProps.color, {})) {}
|
|
26
27
|
|
|
@@ -48,6 +49,10 @@ folly::dynamic ReactNavigationMaterialSymbolViewProps::getDiffProps(
|
|
|
48
49
|
result["variant"] = variant;
|
|
49
50
|
}
|
|
50
51
|
|
|
52
|
+
if (weight != oldProps->weight) {
|
|
53
|
+
result["weight"] = toDynamic(weight);
|
|
54
|
+
}
|
|
55
|
+
|
|
51
56
|
if ((size != oldProps->size) && !(std::isnan(size) && std::isnan(oldProps->size))) {
|
|
52
57
|
result["size"] = size;
|
|
53
58
|
}
|
|
@@ -15,6 +15,63 @@
|
|
|
15
15
|
|
|
16
16
|
namespace facebook::react {
|
|
17
17
|
|
|
18
|
+
enum class ReactNavigationMaterialSymbolViewWeight { Weight100 = 100, Weight200 = 200, Weight300 = 300, Weight400 = 400, Weight500 = 500, Weight600 = 600, Weight700 = 700 };
|
|
19
|
+
|
|
20
|
+
static inline void fromRawValue(const PropsParserContext& context, const RawValue &value, ReactNavigationMaterialSymbolViewWeight &result) {
|
|
21
|
+
assert(value.hasType<int>());
|
|
22
|
+
auto integerValue = (int)value;
|
|
23
|
+
switch (integerValue) {
|
|
24
|
+
case 100:
|
|
25
|
+
result = ReactNavigationMaterialSymbolViewWeight::Weight100;
|
|
26
|
+
return;
|
|
27
|
+
case 200:
|
|
28
|
+
result = ReactNavigationMaterialSymbolViewWeight::Weight200;
|
|
29
|
+
return;
|
|
30
|
+
case 300:
|
|
31
|
+
result = ReactNavigationMaterialSymbolViewWeight::Weight300;
|
|
32
|
+
return;
|
|
33
|
+
case 400:
|
|
34
|
+
result = ReactNavigationMaterialSymbolViewWeight::Weight400;
|
|
35
|
+
return;
|
|
36
|
+
case 500:
|
|
37
|
+
result = ReactNavigationMaterialSymbolViewWeight::Weight500;
|
|
38
|
+
return;
|
|
39
|
+
case 600:
|
|
40
|
+
result = ReactNavigationMaterialSymbolViewWeight::Weight600;
|
|
41
|
+
return;
|
|
42
|
+
case 700:
|
|
43
|
+
result = ReactNavigationMaterialSymbolViewWeight::Weight700;
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
abort();
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
static inline std::string toString(const ReactNavigationMaterialSymbolViewWeight &value) {
|
|
50
|
+
switch (value) {
|
|
51
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight100: return "100";
|
|
52
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight200: return "200";
|
|
53
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight300: return "300";
|
|
54
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight400: return "400";
|
|
55
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight500: return "500";
|
|
56
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight600: return "600";
|
|
57
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight700: return "700";
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
|
|
61
|
+
#ifdef RN_SERIALIZABLE_STATE
|
|
62
|
+
static inline folly::dynamic toDynamic(const ReactNavigationMaterialSymbolViewWeight &value) {
|
|
63
|
+
switch (value) {
|
|
64
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight100: return 100;
|
|
65
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight200: return 200;
|
|
66
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight300: return 300;
|
|
67
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight400: return 400;
|
|
68
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight500: return 500;
|
|
69
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight600: return 600;
|
|
70
|
+
case ReactNavigationMaterialSymbolViewWeight::Weight700: return 700;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
#endif
|
|
74
|
+
|
|
18
75
|
class ReactNavigationMaterialSymbolViewProps final : public ViewProps {
|
|
19
76
|
public:
|
|
20
77
|
ReactNavigationMaterialSymbolViewProps() = default;
|
|
@@ -24,6 +81,7 @@ class ReactNavigationMaterialSymbolViewProps final : public ViewProps {
|
|
|
24
81
|
|
|
25
82
|
std::string name{};
|
|
26
83
|
std::string variant{};
|
|
84
|
+
ReactNavigationMaterialSymbolViewWeight weight{ReactNavigationMaterialSymbolViewWeight::Weight400};
|
|
27
85
|
Float size{0.0};
|
|
28
86
|
SharedColor color{};
|
|
29
87
|
|
|
@@ -17,14 +17,15 @@ static jsi::Value __hostFunction_NativeMaterialSymbolModuleCxxSpecJSI_getImageSo
|
|
|
17
17
|
count <= 0 ? throw jsi::JSError(rt, "Expected argument in position 0 to be passed") : args[0].asString(rt),
|
|
18
18
|
count <= 1 ? throw jsi::JSError(rt, "Expected argument in position 1 to be passed") : args[1].asString(rt),
|
|
19
19
|
count <= 2 ? throw jsi::JSError(rt, "Expected argument in position 2 to be passed") : args[2].asNumber(),
|
|
20
|
-
count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : args[3].
|
|
21
|
-
count <= 4 ? throw jsi::JSError(rt, "Expected argument in position 4 to be passed") : args[4].
|
|
20
|
+
count <= 3 ? throw jsi::JSError(rt, "Expected argument in position 3 to be passed") : args[3].asNumber(),
|
|
21
|
+
count <= 4 ? throw jsi::JSError(rt, "Expected argument in position 4 to be passed") : args[4].asObject(rt),
|
|
22
|
+
count <= 5 ? throw jsi::JSError(rt, "Expected argument in position 5 to be passed") : args[5].asString(rt)
|
|
22
23
|
);
|
|
23
24
|
}
|
|
24
25
|
|
|
25
26
|
NativeMaterialSymbolModuleCxxSpecJSI::NativeMaterialSymbolModuleCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker)
|
|
26
27
|
: TurboModule("ReactNavigationMaterialSymbolModule", jsInvoker) {
|
|
27
|
-
methodMap_["getImageSource"] = MethodMetadata {
|
|
28
|
+
methodMap_["getImageSource"] = MethodMetadata {6, __hostFunction_NativeMaterialSymbolModuleCxxSpecJSI_getImageSource};
|
|
28
29
|
}
|
|
29
30
|
|
|
30
31
|
|
|
@@ -20,7 +20,7 @@ protected:
|
|
|
20
20
|
NativeMaterialSymbolModuleCxxSpecJSI(std::shared_ptr<CallInvoker> jsInvoker);
|
|
21
21
|
|
|
22
22
|
public:
|
|
23
|
-
virtual jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, jsi::Object color, jsi::String hash) = 0;
|
|
23
|
+
virtual jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, double weight, jsi::Object color, jsi::String hash) = 0;
|
|
24
24
|
|
|
25
25
|
};
|
|
26
26
|
|
|
@@ -51,13 +51,13 @@ private:
|
|
|
51
51
|
|
|
52
52
|
}
|
|
53
53
|
|
|
54
|
-
jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, jsi::Object color, jsi::String hash) override {
|
|
54
|
+
jsi::String getImageSource(jsi::Runtime &rt, jsi::String name, jsi::String variant, double size, double weight, jsi::Object color, jsi::String hash) override {
|
|
55
55
|
static_assert(
|
|
56
|
-
bridging::getParameterCount(&T::getImageSource) ==
|
|
57
|
-
"Expected getImageSource(...) to have
|
|
56
|
+
bridging::getParameterCount(&T::getImageSource) == 7,
|
|
57
|
+
"Expected getImageSource(...) to have 7 parameters");
|
|
58
58
|
|
|
59
59
|
return bridging::callFromJs<jsi::String>(
|
|
60
|
-
rt, &T::getImageSource, jsInvoker_, instance_, std::move(name), std::move(variant), std::move(size), std::move(color), std::move(hash));
|
|
60
|
+
rt, &T::getImageSource, jsInvoker_, instance_, std::move(name), std::move(variant), std::move(size), std::move(weight), std::move(color), std::move(hash));
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
private:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"libraryName":"","modules":{"ReactNavigationMaterialSymbolView":{"type":"Component","components":{"ReactNavigationMaterialSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}},"NativeMaterialSymbolModule":{"type":"NativeModule","aliasMap":{},"enumMap":{},"spec":{"eventEmitters":[],"methods":[{"name":"getImageSource","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","returnTypeAnnotation":{"type":"StringTypeAnnotation"},"params":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"size","optional":false,"typeAnnotation":{"type":"NumberTypeAnnotation"}},{"name":"color","optional":false,"typeAnnotation":{"type":"GenericObjectTypeAnnotation"}},{"name":"hash","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}}]}}]},"moduleName":"ReactNavigationMaterialSymbolModule"},"ReactNavigationSFSymbolView":{"type":"Component","components":{"ReactNavigationSFSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}}}}
|
|
1
|
+
{"libraryName":"","modules":{"ReactNavigationMaterialSymbolView":{"type":"Component","components":{"ReactNavigationMaterialSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"weight","optional":true,"typeAnnotation":{"type":"Int32EnumTypeAnnotation","default":400,"options":[100,200,300,400,500,600,700]}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}},"NativeMaterialSymbolModule":{"type":"NativeModule","aliasMap":{},"enumMap":{},"spec":{"eventEmitters":[],"methods":[{"name":"getImageSource","optional":false,"typeAnnotation":{"type":"FunctionTypeAnnotation","returnTypeAnnotation":{"type":"StringTypeAnnotation"},"params":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"variant","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}},{"name":"size","optional":false,"typeAnnotation":{"type":"NumberTypeAnnotation"}},{"name":"weight","optional":false,"typeAnnotation":{"type":"UnionTypeAnnotation","memberType":"NumberTypeAnnotation"}},{"name":"color","optional":false,"typeAnnotation":{"type":"GenericObjectTypeAnnotation"}},{"name":"hash","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation"}}]}}]},"moduleName":"ReactNavigationMaterialSymbolModule"},"ReactNavigationSFSymbolView":{"type":"Component","components":{"ReactNavigationSFSymbolView":{"extendsProps":[{"type":"ReactNativeBuiltInType","knownTypeName":"ReactNativeCoreViewProps"}],"events":[],"props":[{"name":"name","optional":false,"typeAnnotation":{"type":"StringTypeAnnotation","default":null}},{"name":"size","optional":false,"typeAnnotation":{"type":"FloatTypeAnnotation","default":0}},{"name":"color","optional":false,"typeAnnotation":{"type":"ReservedPropTypeAnnotation","name":"ColorPrimitive"}}],"commands":[]}}}}}
|
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
<?xml version="1.0" encoding="utf-8"?>
|
|
2
|
-
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/src/main/assets"/><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation"><file name="fonts/
|
|
2
|
+
<merger version="3"><dataSet config="main" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/src/main/assets"/><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation"><file name="fonts/MaterialSymbolsOutlined_400.ttf" path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/react-navigation/fonts/MaterialSymbolsOutlined_400.ttf"/></source></dataSet><dataSet config="debug" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/src/debug/assets"/></dataSet><dataSet config="generated" ignore_pattern="!.svn:!.git:!.ds_store:!*.scc:.*:<dir>_*:!CVS:!thumbs.db:!picasa.ini:!*~"><source path="/Users/satya/Developer/Projects/react-navigation/packages/native/android/build/intermediates/shader_assets/debug/compileDebugShaders/out"/></dataSet></merger>
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/inputs/source-to-output.tab
CHANGED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/class-attributes.tab
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab.len
CHANGED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/constants.tab_i
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/proto.tab.values.at
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/subtypes.tab_i
CHANGED
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/jvm/kotlin/supertypes.tab
CHANGED
|
Binary file
|
|
Binary file
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
|
|
1
|
+
6
|
|
2
2
|
0
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab.len
CHANGED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/id-to-file.tab_i
CHANGED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.keystream
CHANGED
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.len
CHANGED
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/cacheable/caches-jvm/lookups/lookups.tab.values.at
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/kotlin/compileDebugKotlin/classpath-snapshot/shrunk-classpath-snapshot.bin
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolModule.class
CHANGED
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/MaterialSymbolTypeface.class
CHANGED
|
Binary file
|
|
Binary file
|
package/android/build/tmp/kotlin-classes/debug/org/reactnavigation/ReactNavigationPackage.class
CHANGED
|
Binary file
|
package/android/build.gradle
CHANGED
|
@@ -1,6 +1,17 @@
|
|
|
1
1
|
buildscript {
|
|
2
|
-
ext.
|
|
3
|
-
|
|
2
|
+
ext.ReactNavigation = [
|
|
3
|
+
kotlinVersion: "2.0.21",
|
|
4
|
+
minSdkVersion: 24,
|
|
5
|
+
compileSdkVersion: 36,
|
|
6
|
+
targetSdkVersion: 36
|
|
7
|
+
]
|
|
8
|
+
|
|
9
|
+
ext.getExtOrDefault = { prop ->
|
|
10
|
+
if (rootProject.ext.has(prop)) {
|
|
11
|
+
return rootProject.ext.get(prop)
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
return ReactNavigation[prop]
|
|
4
15
|
}
|
|
5
16
|
|
|
6
17
|
repositories {
|
|
@@ -21,18 +32,14 @@ apply plugin: "kotlin-android"
|
|
|
21
32
|
|
|
22
33
|
apply plugin: "com.facebook.react"
|
|
23
34
|
|
|
24
|
-
def getExtOrIntegerDefault(name) {
|
|
25
|
-
return rootProject.ext.has(name) ? rootProject.ext.get(name) : (project.properties["ReactNavigation_" + name]).toInteger()
|
|
26
|
-
}
|
|
27
|
-
|
|
28
35
|
android {
|
|
29
36
|
namespace "org.reactnavigation"
|
|
30
37
|
|
|
31
|
-
compileSdkVersion
|
|
38
|
+
compileSdkVersion getExtOrDefault("compileSdkVersion")
|
|
32
39
|
|
|
33
40
|
defaultConfig {
|
|
34
|
-
minSdkVersion
|
|
35
|
-
targetSdkVersion
|
|
41
|
+
minSdkVersion getExtOrDefault("minSdkVersion")
|
|
42
|
+
targetSdkVersion getExtOrDefault("targetSdkVersion")
|
|
36
43
|
}
|
|
37
44
|
|
|
38
45
|
buildTypes {
|
|
@@ -3,6 +3,7 @@ package org.reactnavigation
|
|
|
3
3
|
import android.graphics.Bitmap
|
|
4
4
|
import android.graphics.Canvas
|
|
5
5
|
import android.graphics.Paint
|
|
6
|
+
import androidx.core.graphics.createBitmap
|
|
6
7
|
import androidx.core.net.toUri
|
|
7
8
|
import com.facebook.fbreact.specs.NativeMaterialSymbolModuleSpec
|
|
8
9
|
import com.facebook.react.bridge.ColorPropConverter
|
|
@@ -14,23 +15,19 @@ import kotlinx.coroutines.SupervisorJob
|
|
|
14
15
|
import kotlinx.coroutines.launch
|
|
15
16
|
import java.io.File
|
|
16
17
|
import java.io.FileOutputStream
|
|
17
|
-
import java.util.concurrent.Callable
|
|
18
|
-
import java.util.concurrent.ConcurrentHashMap
|
|
19
|
-
import java.util.concurrent.Executors
|
|
20
|
-
import java.util.concurrent.Future
|
|
21
18
|
import kotlin.math.roundToInt
|
|
22
19
|
|
|
23
20
|
class MaterialSymbolModule(reactContext: ReactApplicationContext) :
|
|
24
21
|
NativeMaterialSymbolModuleSpec(reactContext) {
|
|
25
22
|
|
|
26
23
|
companion object {
|
|
27
|
-
|
|
28
|
-
|
|
24
|
+
const val NAME = NativeMaterialSymbolModuleSpec.NAME
|
|
25
|
+
|
|
29
26
|
private val scope = CoroutineScope(Dispatchers.IO + SupervisorJob())
|
|
30
27
|
}
|
|
31
28
|
|
|
32
29
|
override fun getImageSource(
|
|
33
|
-
name: String, variant: String, size: Double, color: ReadableMap, hash: String
|
|
30
|
+
name: String, variant: String, size: Double, weight: Double, color: ReadableMap, hash: String
|
|
34
31
|
): String {
|
|
35
32
|
val colorValue = color.getDynamic("value").let {
|
|
36
33
|
when (it.type) {
|
|
@@ -47,7 +44,7 @@ class MaterialSymbolModule(reactContext: ReactApplicationContext) :
|
|
|
47
44
|
val scaledSize = (size * density).roundToInt().coerceAtLeast(1)
|
|
48
45
|
|
|
49
46
|
val cacheDir = File(
|
|
50
|
-
reactApplicationContext.cacheDir, "react_navigation/material_symbols/$variant/$hash"
|
|
47
|
+
reactApplicationContext.cacheDir, "react_navigation/material_symbols/$variant-$weight/$hash"
|
|
51
48
|
)
|
|
52
49
|
|
|
53
50
|
val cacheKey = "${name.hashCode()}_${scaledSize}_$resolvedColor"
|
|
@@ -57,55 +54,37 @@ class MaterialSymbolModule(reactContext: ReactApplicationContext) :
|
|
|
57
54
|
return cacheFile.toUri().toString()
|
|
58
55
|
}
|
|
59
56
|
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
textSize = scaledSize.toFloat()
|
|
74
|
-
textAlign = Paint.Align.CENTER
|
|
75
|
-
|
|
76
|
-
this.color = resolvedColor
|
|
77
|
-
}
|
|
78
|
-
|
|
79
|
-
val fontMetrics = paint.fontMetrics
|
|
80
|
-
val bitmap = Bitmap.createBitmap(scaledSize, scaledSize, Bitmap.Config.ARGB_8888)
|
|
81
|
-
|
|
82
|
-
try {
|
|
83
|
-
val canvas = Canvas(bitmap)
|
|
84
|
-
val y =
|
|
85
|
-
(scaledSize - (fontMetrics.descent - fontMetrics.ascent)) / 2f - fontMetrics.ascent
|
|
86
|
-
|
|
87
|
-
canvas.drawText(name, scaledSize / 2f, y, paint)
|
|
88
|
-
|
|
89
|
-
FileOutputStream(cacheFile).use {
|
|
90
|
-
bitmap.compress(Bitmap.CompressFormat.PNG, 100, it)
|
|
91
|
-
}
|
|
92
|
-
} finally {
|
|
93
|
-
bitmap.recycle()
|
|
94
|
-
}
|
|
95
|
-
|
|
96
|
-
return@Callable cacheFile.toUri().toString()
|
|
97
|
-
} catch (e: Exception) {
|
|
98
|
-
futures.remove(cacheKey)
|
|
99
|
-
|
|
100
|
-
throw e
|
|
101
|
-
}
|
|
102
|
-
})
|
|
57
|
+
scope.launch {
|
|
58
|
+
cacheDir.parentFile?.listFiles { it.isDirectory && it.name != hash }
|
|
59
|
+
?.forEach { it.deleteRecursively() }
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
cacheDir.mkdirs()
|
|
63
|
+
|
|
64
|
+
val paint = Paint(Paint.ANTI_ALIAS_FLAG).apply {
|
|
65
|
+
typeface = MaterialSymbolTypeface.get(reactApplicationContext, variant, weight.toInt())
|
|
66
|
+
textSize = scaledSize.toFloat()
|
|
67
|
+
textAlign = Paint.Align.CENTER
|
|
68
|
+
|
|
69
|
+
this.color = resolvedColor
|
|
103
70
|
}
|
|
104
71
|
|
|
72
|
+
val fontMetrics = paint.fontMetrics
|
|
73
|
+
val bitmap = createBitmap(scaledSize, scaledSize)
|
|
74
|
+
|
|
105
75
|
try {
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
76
|
+
val canvas = Canvas(bitmap)
|
|
77
|
+
val y = (scaledSize - (fontMetrics.descent - fontMetrics.ascent)) / 2f - fontMetrics.ascent
|
|
78
|
+
|
|
79
|
+
canvas.drawText(name, scaledSize / 2f, y, paint)
|
|
80
|
+
|
|
81
|
+
FileOutputStream(cacheFile).use {
|
|
82
|
+
bitmap.compress(Bitmap.CompressFormat.PNG, 100, it)
|
|
83
|
+
}
|
|
84
|
+
} finally {
|
|
85
|
+
bitmap.recycle()
|
|
109
86
|
}
|
|
87
|
+
|
|
88
|
+
return cacheFile.toUri().toString()
|
|
110
89
|
}
|
|
111
90
|
}
|