MCPcopy Create free account
hub / github.com/Snapchat/Valdi / snapDrawingRegisterTypeface

Method snapDrawingRegisterTypeface

valdi/src/valdi/android/NativeBridge.cpp:2243–2292  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2241}
2242
2243void ValdiAndroid::NativeBridge::snapDrawingRegisterTypeface(fbjni::alias_ref<fbjni::JClass> /*clazz*/, // NOLINT
2244 jlong snapDrawingRuntimeHandle,
2245 jstring familyName,
2246 jstring fontWeight,
2247 jstring fontStyle,
2248 jboolean isFallback,
2249 jbyteArray typefaceBytes,
2250 jint typefaceFd) {
2251 auto snapDrawingRuntime = getSnapDrawingRuntime(snapDrawingRuntimeHandle);
2252 if (snapDrawingRuntime == nullptr) {
2253 return;
2254 }
2255
2256 auto familyNameCpp = ValdiAndroid::toInternedString(ValdiAndroid::JavaEnv(), familyName);
2257 auto fontWeightCpp = ValdiAndroid::toInternedString(ValdiAndroid::JavaEnv(), fontWeight);
2258 auto fontSlantCpp = ValdiAndroid::toInternedString(ValdiAndroid::JavaEnv(), fontStyle);
2259
2260 auto fontWeightResult = snap::drawing::FontStyle::parseWeight(fontWeightCpp.toStringView());
2261 if (!fontWeightResult) {
2262 onRegisterTypefaceError(familyNameCpp, fontWeightResult.error());
2263 return;
2264 }
2265 auto fontSlantResult = snap::drawing::FontStyle::parseSlant(fontSlantCpp.toStringView());
2266 if (!fontSlantResult) {
2267 onRegisterTypefaceError(familyNameCpp, fontSlantResult.error());
2268 return;
2269 }
2270 auto fontStyleCpp =
2271 snap::drawing::FontStyle(snap::drawing::FontWidthNormal, fontWeightResult.value(), fontSlantResult.value());
2272
2273 Valdi::BytesView fontData;
2274
2275 if (typefaceBytes != nullptr) {
2276 fontData = ValdiAndroid::toByteArray(ValdiAndroid::JavaEnv(), typefaceBytes);
2277 } else if (static_cast<int>(typefaceFd) != 0) {
2278 auto fontDataResult = Valdi::DiskUtils::loadFromFd(static_cast<int>(typefaceFd));
2279 if (!fontDataResult) {
2280 onRegisterTypefaceError(familyNameCpp, fontDataResult.error());
2281 return;
2282 }
2283 fontData = fontDataResult.moveValue();
2284 } else {
2285 onRegisterTypefaceError(familyNameCpp,
2286 Valdi::Error("Font should be provided through bytes or file descriptor"));
2287 return;
2288 }
2289
2290 snapDrawingRuntime->getViewManager()->registerTypeface(
2291 familyNameCpp, fontStyleCpp, static_cast<bool>(isFallback), fontData);
2292}
2293
2294void ValdiAndroid::NativeBridge::snapDrawingSetSurfacePresenterManager(
2295 fbjni::alias_ref<fbjni::JClass> /*clazz*/, // NOLINT

Callers

nothing calls this directly

Calls 12

getSnapDrawingRuntimeFunction · 0.85
toInternedStringFunction · 0.85
onRegisterTypefaceErrorFunction · 0.85
getViewManagerMethod · 0.80
errorMethod · 0.65
valueMethod · 0.65
JavaEnvClass · 0.50
FontStyleClass · 0.50
toByteArrayFunction · 0.50
ErrorInterface · 0.50
toStringViewMethod · 0.45
registerTypefaceMethod · 0.45

Tested by

no test coverage detected