platform/cc/shaper/interop.hh (83 lines of code) (raw):

#pragma once #include <jni.h> #include "../interop.hh" #include "SkShaper.h" #include "unicode/ubrk.h" #include "unicode/utext.h" namespace skija { namespace shaper { namespace BidiRun { extern jfieldID _end; extern jfieldID _level; void onLoad(JNIEnv* env); } namespace FontMgrRunIterator { extern jclass cls; void onLoad(JNIEnv* env); void onUnload(JNIEnv* env); } namespace FontRun { extern jfieldID _end; extern jmethodID _getFontPtr; void onLoad(JNIEnv* env); } namespace HbIcuScriptRunIterator { extern jclass cls; void onLoad(JNIEnv* env); void onUnload(JNIEnv* env); } namespace IcuBidiRunIterator { extern jclass cls; void onLoad(JNIEnv* env); void onUnload(JNIEnv* env); } namespace LanguageRun { extern jfieldID _end; extern jfieldID _language; void onLoad(JNIEnv* env); } namespace RunHandler { extern jclass cls; extern jmethodID beginLine; extern jmethodID runInfo; extern jmethodID commitRunInfo; extern jmethodID runOffset; extern jmethodID commitRun; extern jmethodID commitLine; void onLoad(JNIEnv* env); void onUnload(JNIEnv* env); } namespace RunInfo { extern jclass cls; extern jmethodID ctor; extern jfieldID _fontPtr; void onLoad(JNIEnv* env); void onUnload(JNIEnv* env); jobject toJava(JNIEnv* env, const SkShaper::RunHandler::RunInfo& info, size_t begin, size_t end); jobject toJava(JNIEnv* env, const SkShaper::RunHandler::RunInfo& info, skija::UtfIndicesConverter& indicesConverter); } namespace ScriptRun { extern jfieldID _end; extern jfieldID _scriptTag; void onLoad(JNIEnv* env); } namespace ShapingOptions { extern jfieldID _fontMgr; extern jfieldID _features; extern jfieldID _leftToRight; extern jfieldID _approximateSpaces; extern jfieldID _approximatePunctuation; void onLoad(JNIEnv* env); std::vector<SkShaper::Feature> getFeatures(JNIEnv* env, jobject opts); } namespace TextBlobBuilderRunHandler { extern jclass cls; void onLoad(JNIEnv* env); void onUnload(JNIEnv* env); } void onLoad(JNIEnv* env); void onUnload(JNIEnv* env); using ICUUText = std::unique_ptr<UText, SkFunctionWrapper<decltype(utext_close), utext_close>>; std::shared_ptr<UBreakIterator> graphemeBreakIterator(SkString& text); } }