mirror of
https://github.com/geometer/FBReaderJ.git
synced 2025-10-03 17:59:33 +02:00
unused class hierarchy has gone
This commit is contained in:
parent
3256027dd8
commit
3f34cd6c9b
7 changed files with 130 additions and 202 deletions
|
@ -197,7 +197,7 @@ static bool initInternalHyperlinks(JNIEnv *env, jobject javaModel, BookModel &mo
|
||||||
JString linksDirectoryName(env, allocator.directoryName(), false);
|
JString linksDirectoryName(env, allocator.directoryName(), false);
|
||||||
JString linksFileExtension(env, allocator.fileExtension(), false);
|
JString linksFileExtension(env, allocator.fileExtension(), false);
|
||||||
jint linksBlocksNumber = allocator.blocksNumber();
|
jint linksBlocksNumber = allocator.blocksNumber();
|
||||||
AndroidUtil::Method_NativeBookModel_initInternalHyperlinks->call(javaModel, linksDirectoryName.j(), linksFileExtension.j(), linksBlocksNumber);
|
AndroidUtil::Method_BookModel_initInternalHyperlinks->call(javaModel, linksDirectoryName.j(), linksFileExtension.j(), linksBlocksNumber);
|
||||||
return !env->ExceptionCheck();
|
return !env->ExceptionCheck();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -224,7 +224,7 @@ static jobject createTextModel(JNIEnv *env, jobject javaModel, ZLTextModel &mode
|
||||||
jstring fileExtension = env->NewStringUTF(model.allocator().fileExtension().c_str());
|
jstring fileExtension = env->NewStringUTF(model.allocator().fileExtension().c_str());
|
||||||
jint blocksNumber = (jint) model.allocator().blocksNumber();
|
jint blocksNumber = (jint) model.allocator().blocksNumber();
|
||||||
|
|
||||||
jobject textModel = AndroidUtil::Method_NativeBookModel_createTextModel->call(
|
jobject textModel = AndroidUtil::Method_BookModel_createTextModel->call(
|
||||||
javaModel,
|
javaModel,
|
||||||
id, language,
|
id, language,
|
||||||
paragraphsNumber, entryIndices, entryOffsets,
|
paragraphsNumber, entryIndices, entryOffsets,
|
||||||
|
@ -243,11 +243,11 @@ static void initTOC(JNIEnv *env, jobject javaModel, const ContentsTree &tree) {
|
||||||
for (std::vector<shared_ptr<ContentsTree> >::const_iterator it = children.begin(); it != children.end(); ++it) {
|
for (std::vector<shared_ptr<ContentsTree> >::const_iterator it = children.begin(); it != children.end(); ++it) {
|
||||||
const ContentsTree &child = **it;
|
const ContentsTree &child = **it;
|
||||||
JString text(env, child.text());
|
JString text(env, child.text());
|
||||||
AndroidUtil::Method_NativeBookModel_addTOCItem->call(javaModel, text.j(), child.reference());
|
AndroidUtil::Method_BookModel_addTOCItem->call(javaModel, text.j(), child.reference());
|
||||||
|
|
||||||
initTOC(env, javaModel, child);
|
initTOC(env, javaModel, child);
|
||||||
|
|
||||||
AndroidUtil::Method_NativeBookModel_leaveTOCItem->call(javaModel);
|
AndroidUtil::Method_BookModel_leaveTOCItem->call(javaModel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ JNIEXPORT jint JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
jobject javaBook = AndroidUtil::Field_NativeBookModel_Book->value(javaModel);
|
jobject javaBook = AndroidUtil::Field_BookModel_Book->value(javaModel);
|
||||||
|
|
||||||
shared_ptr<Book> book = Book::loadFromJavaBook(env, javaBook);
|
shared_ptr<Book> book = Book::loadFromJavaBook(env, javaBook);
|
||||||
shared_ptr<BookModel> model = new BookModel(book, javaModel);
|
shared_ptr<BookModel> model = new BookModel(book, javaModel);
|
||||||
|
@ -297,7 +297,7 @@ JNIEXPORT jint JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin
|
||||||
if (javaTextModel == 0) {
|
if (javaTextModel == 0) {
|
||||||
return 5;
|
return 5;
|
||||||
}
|
}
|
||||||
AndroidUtil::Method_NativeBookModel_setBookTextModel->call(javaModel, javaTextModel);
|
AndroidUtil::Method_BookModel_setBookTextModel->call(javaModel, javaTextModel);
|
||||||
if (env->ExceptionCheck()) {
|
if (env->ExceptionCheck()) {
|
||||||
return 6;
|
return 6;
|
||||||
}
|
}
|
||||||
|
@ -310,7 +310,7 @@ JNIEXPORT jint JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin
|
||||||
if (javaFootnoteModel == 0) {
|
if (javaFootnoteModel == 0) {
|
||||||
return 7;
|
return 7;
|
||||||
}
|
}
|
||||||
AndroidUtil::Method_NativeBookModel_setFootnoteModel->call(javaModel, javaFootnoteModel);
|
AndroidUtil::Method_BookModel_setFootnoteModel->call(javaModel, javaFootnoteModel);
|
||||||
if (env->ExceptionCheck()) {
|
if (env->ExceptionCheck()) {
|
||||||
return 8;
|
return 8;
|
||||||
}
|
}
|
||||||
|
@ -325,7 +325,7 @@ JNIEXPORT jint JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin
|
||||||
JString jString(env, lst[i]);
|
JString jString(env, lst[i]);
|
||||||
env->SetObjectArrayElement(jList, i, jString.j());
|
env->SetObjectArrayElement(jList, i, jString.j());
|
||||||
}
|
}
|
||||||
AndroidUtil::Method_NativeBookModel_registerFontFamilyList->call(javaModel, jList);
|
AndroidUtil::Method_BookModel_registerFontFamilyList->call(javaModel, jList);
|
||||||
env->DeleteLocalRef(jList);
|
env->DeleteLocalRef(jList);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -340,7 +340,7 @@ JNIEXPORT jint JNICALL Java_org_geometerplus_fbreader_formats_NativeFormatPlugin
|
||||||
jobject italic = createJavaFileInfo(env, it->second->Italic);
|
jobject italic = createJavaFileInfo(env, it->second->Italic);
|
||||||
jobject boldItalic = createJavaFileInfo(env, it->second->BoldItalic);
|
jobject boldItalic = createJavaFileInfo(env, it->second->BoldItalic);
|
||||||
|
|
||||||
AndroidUtil::Method_NativeBookModel_registerFontEntry->call(
|
AndroidUtil::Method_BookModel_registerFontEntry->call(
|
||||||
javaModel, family.j(), normal, bold, italic, boldItalic
|
javaModel, family.j(), normal, bold, italic, boldItalic
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
|
@ -235,7 +235,7 @@ void BookReader::addImage(const std::string &id, shared_ptr<const ZLImage> image
|
||||||
|
|
||||||
jobject javaImage = AndroidUtil::createJavaImage(env, (const ZLFileImage&)*image);
|
jobject javaImage = AndroidUtil::createJavaImage(env, (const ZLFileImage&)*image);
|
||||||
JString javaId(env, id);
|
JString javaId(env, id);
|
||||||
AndroidUtil::Method_NativeBookModel_addImage->call(myModel.myJavaModel, javaId.j(), javaImage);
|
AndroidUtil::Method_BookModel_addImage->call(myModel.myJavaModel, javaId.j(), javaImage);
|
||||||
|
|
||||||
env->DeleteLocalRef(javaImage);
|
env->DeleteLocalRef(javaImage);
|
||||||
}
|
}
|
||||||
|
|
|
@ -51,7 +51,7 @@ JavaClass AndroidUtil::Class_PluginCollection("org/geometerplus/fbreader/formats
|
||||||
JavaClass AndroidUtil::Class_Paths("org/geometerplus/fbreader/Paths");
|
JavaClass AndroidUtil::Class_Paths("org/geometerplus/fbreader/Paths");
|
||||||
JavaClass AndroidUtil::Class_Book("org/geometerplus/fbreader/book/Book");
|
JavaClass AndroidUtil::Class_Book("org/geometerplus/fbreader/book/Book");
|
||||||
JavaClass AndroidUtil::Class_Tag("org/geometerplus/fbreader/book/Tag");
|
JavaClass AndroidUtil::Class_Tag("org/geometerplus/fbreader/book/Tag");
|
||||||
JavaClass AndroidUtil::Class_NativeBookModel("org/geometerplus/fbreader/bookmodel/NativeBookModel");
|
JavaClass AndroidUtil::Class_BookModel("org/geometerplus/fbreader/bookmodel/BookModel");
|
||||||
|
|
||||||
shared_ptr<StringMethod> AndroidUtil::Method_java_lang_String_toLowerCase;
|
shared_ptr<StringMethod> AndroidUtil::Method_java_lang_String_toLowerCase;
|
||||||
shared_ptr<StringMethod> AndroidUtil::Method_java_lang_String_toUpperCase;
|
shared_ptr<StringMethod> AndroidUtil::Method_java_lang_String_toUpperCase;
|
||||||
|
@ -117,16 +117,16 @@ shared_ptr<VoidMethod> AndroidUtil::Method_Book_addUid;
|
||||||
|
|
||||||
shared_ptr<StaticObjectMethod> AndroidUtil::StaticMethod_Tag_getTag;
|
shared_ptr<StaticObjectMethod> AndroidUtil::StaticMethod_Tag_getTag;
|
||||||
|
|
||||||
shared_ptr<ObjectField> AndroidUtil::Field_NativeBookModel_Book;
|
shared_ptr<ObjectField> AndroidUtil::Field_BookModel_Book;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_initInternalHyperlinks;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_initInternalHyperlinks;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_addTOCItem;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_addTOCItem;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_leaveTOCItem;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_leaveTOCItem;
|
||||||
shared_ptr<ObjectMethod> AndroidUtil::Method_NativeBookModel_createTextModel;
|
shared_ptr<ObjectMethod> AndroidUtil::Method_BookModel_createTextModel;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_setBookTextModel;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_setBookTextModel;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_setFootnoteModel;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_setFootnoteModel;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_addImage;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_addImage;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_registerFontFamilyList;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_registerFontFamilyList;
|
||||||
shared_ptr<VoidMethod> AndroidUtil::Method_NativeBookModel_registerFontEntry;
|
shared_ptr<VoidMethod> AndroidUtil::Method_BookModel_registerFontEntry;
|
||||||
|
|
||||||
JNIEnv *AndroidUtil::getEnv() {
|
JNIEnv *AndroidUtil::getEnv() {
|
||||||
JNIEnv *env;
|
JNIEnv *env;
|
||||||
|
@ -200,16 +200,16 @@ bool AndroidUtil::init(JavaVM* jvm) {
|
||||||
|
|
||||||
StaticMethod_Tag_getTag = new StaticObjectMethod(Class_Tag, "getTag", Class_Tag, "(Lorg/geometerplus/fbreader/book/Tag;Ljava/lang/String;)");
|
StaticMethod_Tag_getTag = new StaticObjectMethod(Class_Tag, "getTag", Class_Tag, "(Lorg/geometerplus/fbreader/book/Tag;Ljava/lang/String;)");
|
||||||
|
|
||||||
Field_NativeBookModel_Book = new ObjectField(Class_NativeBookModel, "Book", Class_Book);
|
Field_BookModel_Book = new ObjectField(Class_BookModel, "Book", Class_Book);
|
||||||
Method_NativeBookModel_initInternalHyperlinks = new VoidMethod(Class_NativeBookModel, "initInternalHyperlinks", "(Ljava/lang/String;Ljava/lang/String;I)");
|
Method_BookModel_initInternalHyperlinks = new VoidMethod(Class_BookModel, "initInternalHyperlinks", "(Ljava/lang/String;Ljava/lang/String;I)");
|
||||||
Method_NativeBookModel_addTOCItem = new VoidMethod(Class_NativeBookModel, "addTOCItem", "(Ljava/lang/String;I)");
|
Method_BookModel_addTOCItem = new VoidMethod(Class_BookModel, "addTOCItem", "(Ljava/lang/String;I)");
|
||||||
Method_NativeBookModel_leaveTOCItem = new VoidMethod(Class_NativeBookModel, "leaveTOCItem", "()");
|
Method_BookModel_leaveTOCItem = new VoidMethod(Class_BookModel, "leaveTOCItem", "()");
|
||||||
Method_NativeBookModel_createTextModel = new ObjectMethod(Class_NativeBookModel, "createTextModel", Class_ZLTextModel, "(Ljava/lang/String;Ljava/lang/String;I[I[I[I[I[BLjava/lang/String;Ljava/lang/String;I)");
|
Method_BookModel_createTextModel = new ObjectMethod(Class_BookModel, "createTextModel", Class_ZLTextModel, "(Ljava/lang/String;Ljava/lang/String;I[I[I[I[I[BLjava/lang/String;Ljava/lang/String;I)");
|
||||||
Method_NativeBookModel_setBookTextModel = new VoidMethod(Class_NativeBookModel, "setBookTextModel", "(Lorg/geometerplus/zlibrary/text/model/ZLTextModel;)");
|
Method_BookModel_setBookTextModel = new VoidMethod(Class_BookModel, "setBookTextModel", "(Lorg/geometerplus/zlibrary/text/model/ZLTextModel;)");
|
||||||
Method_NativeBookModel_setFootnoteModel = new VoidMethod(Class_NativeBookModel, "setFootnoteModel", "(Lorg/geometerplus/zlibrary/text/model/ZLTextModel;)");
|
Method_BookModel_setFootnoteModel = new VoidMethod(Class_BookModel, "setFootnoteModel", "(Lorg/geometerplus/zlibrary/text/model/ZLTextModel;)");
|
||||||
Method_NativeBookModel_addImage = new VoidMethod(Class_NativeBookModel, "addImage", "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/image/ZLImage;)");
|
Method_BookModel_addImage = new VoidMethod(Class_BookModel, "addImage", "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/image/ZLImage;)");
|
||||||
Method_NativeBookModel_registerFontFamilyList = new VoidMethod(Class_NativeBookModel, "registerFontFamilyList", "([Ljava/lang/String;)");
|
Method_BookModel_registerFontFamilyList = new VoidMethod(Class_BookModel, "registerFontFamilyList", "([Ljava/lang/String;)");
|
||||||
Method_NativeBookModel_registerFontEntry = new VoidMethod(Class_NativeBookModel, "registerFontEntry", "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;)");
|
Method_BookModel_registerFontEntry = new VoidMethod(Class_BookModel, "registerFontEntry", "(Ljava/lang/String;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;Lorg/geometerplus/zlibrary/core/fonts/FileInfo;)");
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -88,7 +88,7 @@ public:
|
||||||
static JavaClass Class_Paths;
|
static JavaClass Class_Paths;
|
||||||
static JavaClass Class_Book;
|
static JavaClass Class_Book;
|
||||||
static JavaClass Class_Tag;
|
static JavaClass Class_Tag;
|
||||||
static JavaClass Class_NativeBookModel;
|
static JavaClass Class_BookModel;
|
||||||
//static JavaClass Class_BookReadingException;
|
//static JavaClass Class_BookReadingException;
|
||||||
|
|
||||||
static shared_ptr<StringMethod> Method_java_lang_String_toLowerCase;
|
static shared_ptr<StringMethod> Method_java_lang_String_toLowerCase;
|
||||||
|
@ -155,16 +155,16 @@ public:
|
||||||
|
|
||||||
static shared_ptr<StaticObjectMethod> StaticMethod_Tag_getTag;
|
static shared_ptr<StaticObjectMethod> StaticMethod_Tag_getTag;
|
||||||
|
|
||||||
static shared_ptr<ObjectField> Field_NativeBookModel_Book;
|
static shared_ptr<ObjectField> Field_BookModel_Book;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_initInternalHyperlinks;
|
static shared_ptr<VoidMethod> Method_BookModel_initInternalHyperlinks;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_addTOCItem;
|
static shared_ptr<VoidMethod> Method_BookModel_addTOCItem;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_leaveTOCItem;
|
static shared_ptr<VoidMethod> Method_BookModel_leaveTOCItem;
|
||||||
static shared_ptr<ObjectMethod> Method_NativeBookModel_createTextModel;
|
static shared_ptr<ObjectMethod> Method_BookModel_createTextModel;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_setBookTextModel;
|
static shared_ptr<VoidMethod> Method_BookModel_setBookTextModel;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_setFootnoteModel;
|
static shared_ptr<VoidMethod> Method_BookModel_setFootnoteModel;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_addImage;
|
static shared_ptr<VoidMethod> Method_BookModel_addImage;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_registerFontFamilyList;
|
static shared_ptr<VoidMethod> Method_BookModel_registerFontFamilyList;
|
||||||
static shared_ptr<VoidMethod> Method_NativeBookModel_registerFontEntry;
|
static shared_ptr<VoidMethod> Method_BookModel_registerFontEntry;
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static bool init(JavaVM* jvm);
|
static bool init(JavaVM* jvm);
|
||||||
|
|
|
@ -19,22 +19,22 @@
|
||||||
|
|
||||||
package org.geometerplus.fbreader.bookmodel;
|
package org.geometerplus.fbreader.bookmodel;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.*;
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.geometerplus.zlibrary.core.fonts.*;
|
import org.geometerplus.zlibrary.core.fonts.*;
|
||||||
|
import org.geometerplus.zlibrary.core.image.ZLImage;
|
||||||
import org.geometerplus.zlibrary.text.model.*;
|
import org.geometerplus.zlibrary.text.model.*;
|
||||||
|
|
||||||
import org.geometerplus.fbreader.book.Book;
|
import org.geometerplus.fbreader.book.Book;
|
||||||
import org.geometerplus.fbreader.formats.BuiltinFormatPlugin;
|
import org.geometerplus.fbreader.formats.BuiltinFormatPlugin;
|
||||||
import org.geometerplus.fbreader.formats.FormatPlugin;
|
import org.geometerplus.fbreader.formats.FormatPlugin;
|
||||||
|
|
||||||
public abstract class BookModel {
|
public final class BookModel {
|
||||||
public static BookModel createModel(Book book) throws BookReadingException {
|
public static BookModel createModel(Book book) throws BookReadingException {
|
||||||
final FormatPlugin plugin = book.getPlugin();
|
final FormatPlugin plugin = book.getPlugin();
|
||||||
|
|
||||||
if (plugin instanceof BuiltinFormatPlugin) {
|
if (plugin instanceof BuiltinFormatPlugin) {
|
||||||
final BookModel model = new NativeBookModel(book);
|
final BookModel model = new BookModel(book);
|
||||||
((BuiltinFormatPlugin)plugin).readModel(model);
|
((BuiltinFormatPlugin)plugin).readModel(model);
|
||||||
return model;
|
return model;
|
||||||
}
|
}
|
||||||
|
@ -48,6 +48,11 @@ public abstract class BookModel {
|
||||||
public final TOCTree TOCTree = new TOCTree();
|
public final TOCTree TOCTree = new TOCTree();
|
||||||
public final FontManager FontManager = new FontManager();
|
public final FontManager FontManager = new FontManager();
|
||||||
|
|
||||||
|
protected CachedCharStorage myInternalHyperlinks;
|
||||||
|
protected final HashMap<String,ZLImage> myImageMap = new HashMap<String,ZLImage>();
|
||||||
|
protected ZLTextModel myBookTextModel;
|
||||||
|
protected final HashMap<String,ZLTextModel> myFootnotes = new HashMap<String,ZLTextModel>();
|
||||||
|
|
||||||
public static final class Label {
|
public static final class Label {
|
||||||
public final String ModelId;
|
public final String ModelId;
|
||||||
public final int ParagraphIndex;
|
public final int ParagraphIndex;
|
||||||
|
@ -62,10 +67,6 @@ public abstract class BookModel {
|
||||||
Book = book;
|
Book = book;
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract ZLTextModel getTextModel();
|
|
||||||
public abstract ZLTextModel getFootnoteModel(String id);
|
|
||||||
protected abstract Label getLabelInternal(String id);
|
|
||||||
|
|
||||||
public interface LabelResolver {
|
public interface LabelResolver {
|
||||||
List<String> getCandidates(String id);
|
List<String> getCandidates(String id);
|
||||||
}
|
}
|
||||||
|
@ -100,4 +101,83 @@ public abstract class BookModel {
|
||||||
public void registerFontEntry(String family, FileInfo normal, FileInfo bold, FileInfo italic, FileInfo boldItalic) {
|
public void registerFontEntry(String family, FileInfo normal, FileInfo bold, FileInfo italic, FileInfo boldItalic) {
|
||||||
registerFontEntry(family, new FontEntry(family, normal, bold, italic, boldItalic));
|
registerFontEntry(family, new FontEntry(family, normal, bold, italic, boldItalic));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public ZLTextModel createTextModel(
|
||||||
|
String id, String language, int paragraphsNumber,
|
||||||
|
int[] entryIndices, int[] entryOffsets,
|
||||||
|
int[] paragraphLenghts, int[] textSizes, byte[] paragraphKinds,
|
||||||
|
String directoryName, String fileExtension, int blocksNumber
|
||||||
|
) {
|
||||||
|
return new ZLTextPlainModel(
|
||||||
|
id, language, paragraphsNumber,
|
||||||
|
entryIndices, entryOffsets,
|
||||||
|
paragraphLenghts, textSizes, paragraphKinds,
|
||||||
|
directoryName, fileExtension, blocksNumber, myImageMap, FontManager
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setBookTextModel(ZLTextModel model) {
|
||||||
|
myBookTextModel = model;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setFootnoteModel(ZLTextModel model) {
|
||||||
|
myFootnotes.put(model.getId(), model);
|
||||||
|
}
|
||||||
|
|
||||||
|
public ZLTextModel getTextModel() {
|
||||||
|
return myBookTextModel;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ZLTextModel getFootnoteModel(String id) {
|
||||||
|
return myFootnotes.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addImage(String id, ZLImage image) {
|
||||||
|
myImageMap.put(id, image);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void initInternalHyperlinks(String directoryName, String fileExtension, int blocksNumber) {
|
||||||
|
myInternalHyperlinks = new CachedCharStorage(directoryName, fileExtension, blocksNumber);
|
||||||
|
}
|
||||||
|
|
||||||
|
private TOCTree myCurrentTree = TOCTree;
|
||||||
|
|
||||||
|
public void addTOCItem(String text, int reference) {
|
||||||
|
myCurrentTree = new TOCTree(myCurrentTree);
|
||||||
|
myCurrentTree.setText(text);
|
||||||
|
myCurrentTree.setReference(myBookTextModel, reference);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void leaveTOCItem() {
|
||||||
|
myCurrentTree = myCurrentTree.Parent;
|
||||||
|
if (myCurrentTree == null) {
|
||||||
|
myCurrentTree = TOCTree;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private Label getLabelInternal(String id) {
|
||||||
|
final int len = id.length();
|
||||||
|
final int size = myInternalHyperlinks.size();
|
||||||
|
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
final char[] block = myInternalHyperlinks.block(i);
|
||||||
|
for (int offset = 0; offset < block.length; ) {
|
||||||
|
final int labelLength = (int)block[offset++];
|
||||||
|
if (labelLength == 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
final int idLength = (int)block[offset + labelLength];
|
||||||
|
if ((labelLength != len) || !id.equals(new String(block, offset, labelLength))) {
|
||||||
|
offset += labelLength + idLength + 3;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
offset += labelLength + 1;
|
||||||
|
final String modelId = (idLength > 0) ? new String(block, offset, idLength) : null;
|
||||||
|
offset += idLength;
|
||||||
|
final int paragraphNumber = (int)block[offset] + (((int)block[offset + 1]) << 16);
|
||||||
|
return new Label(modelId, paragraphNumber);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return null;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,69 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2007-2015 FBReader.ORG Limited <contact@fbreader.org>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
* 02110-1301, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.geometerplus.fbreader.bookmodel;
|
|
||||||
|
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
import org.geometerplus.zlibrary.core.image.*;
|
|
||||||
|
|
||||||
import org.geometerplus.zlibrary.text.model.*;
|
|
||||||
|
|
||||||
import org.geometerplus.fbreader.book.Book;
|
|
||||||
|
|
||||||
abstract class BookModelImpl extends BookModel {
|
|
||||||
protected CachedCharStorage myInternalHyperlinks;
|
|
||||||
protected final HashMap<String,ZLImage> myImageMap = new HashMap<String,ZLImage>();
|
|
||||||
protected final HashMap<String,ZLTextModel> myFootnotes = new HashMap<String,ZLTextModel>();
|
|
||||||
|
|
||||||
BookModelImpl(Book book) {
|
|
||||||
super(book);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected Label getLabelInternal(String id) {
|
|
||||||
final int len = id.length();
|
|
||||||
final int size = myInternalHyperlinks.size();
|
|
||||||
|
|
||||||
for (int i = 0; i < size; ++i) {
|
|
||||||
final char[] block = myInternalHyperlinks.block(i);
|
|
||||||
for (int offset = 0; offset < block.length; ) {
|
|
||||||
final int labelLength = (int)block[offset++];
|
|
||||||
if (labelLength == 0) {
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
final int idLength = (int)block[offset + labelLength];
|
|
||||||
if ((labelLength != len) || !id.equals(new String(block, offset, labelLength))) {
|
|
||||||
offset += labelLength + idLength + 3;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
offset += labelLength + 1;
|
|
||||||
final String modelId = (idLength > 0) ? new String(block, offset, idLength) : null;
|
|
||||||
offset += idLength;
|
|
||||||
final int paragraphNumber = (int)block[offset] + (((int)block[offset + 1]) << 16);
|
|
||||||
return new Label(modelId, paragraphNumber);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void addImage(String id, ZLImage image) {
|
|
||||||
myImageMap.put(id, image);
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -1,83 +0,0 @@
|
||||||
/*
|
|
||||||
* Copyright (C) 2011-2015 FBReader.ORG Limited <contact@fbreader.org>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation; either version 2 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program; if not, write to the Free Software
|
|
||||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
|
|
||||||
* 02110-1301, USA.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package org.geometerplus.fbreader.bookmodel;
|
|
||||||
|
|
||||||
import org.geometerplus.zlibrary.text.model.*;
|
|
||||||
|
|
||||||
import org.geometerplus.fbreader.book.Book;
|
|
||||||
|
|
||||||
public class NativeBookModel extends BookModelImpl {
|
|
||||||
private ZLTextModel myBookTextModel;
|
|
||||||
|
|
||||||
NativeBookModel(Book book) {
|
|
||||||
super(book);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void initInternalHyperlinks(String directoryName, String fileExtension, int blocksNumber) {
|
|
||||||
myInternalHyperlinks = new CachedCharStorage(directoryName, fileExtension, blocksNumber);
|
|
||||||
}
|
|
||||||
|
|
||||||
private TOCTree myCurrentTree = TOCTree;
|
|
||||||
|
|
||||||
public void addTOCItem(String text, int reference) {
|
|
||||||
myCurrentTree = new TOCTree(myCurrentTree);
|
|
||||||
myCurrentTree.setText(text);
|
|
||||||
myCurrentTree.setReference(myBookTextModel, reference);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void leaveTOCItem() {
|
|
||||||
myCurrentTree = myCurrentTree.Parent;
|
|
||||||
if (myCurrentTree == null) {
|
|
||||||
myCurrentTree = TOCTree;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public ZLTextModel createTextModel(
|
|
||||||
String id, String language, int paragraphsNumber,
|
|
||||||
int[] entryIndices, int[] entryOffsets,
|
|
||||||
int[] paragraphLenghts, int[] textSizes, byte[] paragraphKinds,
|
|
||||||
String directoryName, String fileExtension, int blocksNumber
|
|
||||||
) {
|
|
||||||
return new ZLTextPlainModel(
|
|
||||||
id, language, paragraphsNumber,
|
|
||||||
entryIndices, entryOffsets,
|
|
||||||
paragraphLenghts, textSizes, paragraphKinds,
|
|
||||||
directoryName, fileExtension, blocksNumber, myImageMap, FontManager
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setBookTextModel(ZLTextModel model) {
|
|
||||||
myBookTextModel = model;
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setFootnoteModel(ZLTextModel model) {
|
|
||||||
myFootnotes.put(model.getId(), model);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ZLTextModel getTextModel() {
|
|
||||||
return myBookTextModel;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public ZLTextModel getFootnoteModel(String id) {
|
|
||||||
return myFootnotes.get(id);
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Add table
Add a link
Reference in a new issue