blob: 26ae6e272bda6d3603b1ae941a8e2521551768cf [file] [log] [blame]
/*
* Copyright 2021 Google Inc.
*
* Use of this source code is governed by a BSD-style license that can be
* found in the LICENSE file.
*/
#include <jni.h>
#include "include/core/SkFont.h"
#include "include/core/SkFontMgr.h"
#include "modules/jetski/src/Utils.h"
namespace {
//TODO: replace jstring fontFamily with TypeFace object. Wrap Typeface in JetSki
static jlong Font_Create(JNIEnv* env, jobject, jstring jFontFamily, float size) {
const jetski::utils::CString cFontFamily(env, jFontFamily);
sk_sp<SkFontMgr> fontMgr = SkFontMgr::RefDefault();
sk_sp<SkTypeface> typeface = sk_sp<SkTypeface>(fontMgr->matchFamilyStyle(cFontFamily, SkFontStyle()));
return reinterpret_cast<jlong>(new SkFont(std::move(typeface), size));
}
static void Font_Release(JNIEnv*, jobject, jlong native_Font) {
delete reinterpret_cast<SkFont*>(native_Font);
}
} // namespace
int register_jetski_Font(JNIEnv* env) {
static const JNINativeMethod methods[] = {
{"nCreate" , "(Ljava/lang/String;F)J" , reinterpret_cast<void*>(Font_Create)},
{"nRelease", "(J)V" , reinterpret_cast<void*>(Font_Release)},
};
const auto clazz = env->FindClass("org/skia/jetski/Font");
return clazz
? env->RegisterNatives(clazz, methods, std::size(methods))
: JNI_ERR;
}