/**
* @file TxtBookReader.java
*
* @revision: none
*
* @version 0.0.01
* @author: Zenki (zhajun), zenki2001cn@163.com
* @date: 2011-6-20 下午01:51:35
*/
package org.geometerplus.fbreader.formats.txt;
import org.geometerplus.fbreader.bookmodel.BookModel;
import org.geometerplus.fbreader.bookmodel.BookReader;
import org.geometerplus.fbreader.bookmodel.FBTextKind;
import org.geometerplus.zlibrary.text.model.ZLTextParagraph;
import com.easyview.ebook.reader.engine.util.Logger;
public class TxtBookReader extends TxtReader {
static private final String TAG = "TxtBookReader";
private final char[] SPACE = { ' ' };
public TxtBookReader(BookModel model) {
super(model);
Logger.dLog(TAG, "mEncoding = " + mEncoding);
}
@Override
protected void startDocumentHandler() {
setMainTextModel();
pushKind(FBTextKind.REGULAR);
beginParagraph();
}
@Override
protected boolean spaceDataHandler(int num) {
addFixedHSpace((short) num);
return true;
}
// add data to buffer
private boolean regularDataHandler(char[] data) {
addData(data);
return true;
}
// add data and flush
private boolean regularDataHandlerFlush(char[] data) {
addData(data, 0, data.length, true);
return true;
}
@Override
protected boolean characterDataHandler(String str) {
regularDataHandlerFlush(str.toCharArray());
return true;
}
@Override
protected boolean newLineHandler() {
addControl(FBTextKind.CODE, false);
endParagraph();
beginParagraph();
addControl(FBTextKind.CODE, true);
return true;
}
@Override
protected boolean newEmptyLineHandler() {
beginParagraph(ZLTextParagraph.Kind.EMPTY_LINE_PARAGRAPH);
endParagraph();
beginParagraph();
return true;
}
@Override
protected void endDocumentHandler() {
endParagraph();
}
}