1
0
Fork 0
mirror of https://github.com/geometer/FBReaderJ.git synced 2025-10-03 09:49:19 +02:00

DocPlugin: support for images (also supporting for blocked images in ZLFileImage)

This commit is contained in:
Alexander Turkin 2012-07-04 18:03:17 +04:00
parent 0abb1f46a6
commit 401aaba8bf
26 changed files with 1320 additions and 86 deletions

View file

@ -166,7 +166,7 @@ bool AndroidUtil::init(JavaVM* jvm) {
Method_ZLFile_getPath = new StringMethod(Class_ZLFile, "getPath", "()");
Method_ZLFile_size = new LongMethod(Class_ZLFile, "size", "()");
Constructor_ZLFileImage = new Constructor(Class_ZLFileImage, "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/filesystem/ZLFile;Ljava/lang/String;II)V");
Constructor_ZLFileImage = new Constructor(Class_ZLFileImage, "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/filesystem/ZLFile;Ljava/lang/String;[I[I)V");
StaticMethod_Paths_cacheDirectory = new StaticObjectMethod(Class_Paths, "cacheDirectory", Class_java_lang_String, "()");
@ -213,14 +213,25 @@ jobject AndroidUtil::createJavaImage(JNIEnv *env, const ZLFileImage &image) {
jobject javaFile = createJavaFile(env, image.file().path());
jstring javaEncoding = createJavaString(env, image.encoding());
std::vector<jint> offsets, sizes;
const ZLFileImage::Blocks &blocks = image.blocks();
for (size_t i = 0; i < blocks.size(); ++i) {
offsets.push_back((jint)blocks.at(i).offset);
sizes.push_back((jint)blocks.at(i).size);
}
jintArray javaOffsets = createJavaIntArray(env, offsets);
jintArray javaSizes = createJavaIntArray(env, sizes);
jobject javaImage = Constructor_ZLFileImage->call(
javaMimeType, javaFile, javaEncoding,
image.offset(), image.size()
javaOffsets, javaSizes
);
env->DeleteLocalRef(javaEncoding);
env->DeleteLocalRef(javaFile);
env->DeleteLocalRef(javaMimeType);
env->DeleteLocalRef(javaOffsets);
env->DeleteLocalRef(javaSizes);
return javaImage;
}