| 2241 | } |
| 2242 | |
| 2243 | void 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 | |
| 2294 | void ValdiAndroid::NativeBridge::snapDrawingSetSurfacePresenterManager( |
| 2295 | fbjni::alias_ref<fbjni::JClass> /*clazz*/, // NOLINT |
nothing calls this directly
no test coverage detected