- 使用 Spring Initializr 创建 Spring Boot 应用程序
- 在Spring Boot中配置Cassandra
- 在 Spring Boot 上配置 Tomcat 连接池
- 将Camel消息路由到嵌入WildFly的Artemis上
本文整理了Java中com.koolearn.klibrary.text.view.ZLTextView
类的一些代码示例,展示了ZLTextView
类的具体用法。这些代码示例主要来源于Github
/Stackoverflow
/Maven
等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。ZLTextView
类的具体详情如下:
包路径:com.koolearn.klibrary.text.view.ZLTextView
类名称:ZLTextView
暂无
代码示例来源:origin: ydcx/KooReader
public void highlight(ZLTextPosition start, ZLTextPosition end) {
removeHighlightings(ZLTextManualHighlighting.class);
addHighlighting(new ZLTextManualHighlighting(this, start, end));
}
代码示例来源:origin: ydcx/KooReader
private void skip(ZLTextPage page, ZLTextWordCursor cursor, int unit, int size) {
final ZLTextParagraphCursor paragraphCursor = cursor.getParagraphCursor();
if (paragraphCursor == null) {
return;
}
final int endElementIndex = paragraphCursor.getParagraphLength();
resetTextStyle();
applyStyleChanges(paragraphCursor, 0, cursor.getElementIndex());
ZLTextLineInfo info = null;
while (!cursor.isEndOfParagraph() && size > 0) {
info = processTextLine(page, paragraphCursor, cursor.getElementIndex(), cursor.getCharIndex(), endElementIndex, info);
cursor.moveTo(info.EndElementIndex, info.EndCharIndex);
size -= infoSize(info, unit);
}
}
代码示例来源:origin: ydcx/KooReader
private synchronized float computeCharsPerPage() {
setTextStyle(getTextStyleCollection().getBaseStyle());
final int textWidth = getTextColumnWidth();
final int textHeight = getTextAreaHeight();
final int num = myModel.getParagraphsNumber();
final int totalTextSize = myModel.getTextLength(num - 1);
final float charsPerParagraph = ((float) totalTextSize) / num;
final float charWidth = computeCharWidth();
final int indentWidth = getElementWidth(ZLTextElement.Indent, 0);
final float effectiveWidth = textWidth - (indentWidth + 0.5f * textWidth) / charsPerParagraph;
float charsPerLine = Math.min(effectiveWidth / charWidth,
charsPerParagraph * 1.2f);
final int strHeight = getWordHeight() + getContext().getDescent();
final int effectiveHeight = (int)
(textHeight -
(getTextStyle().getSpaceBefore(metrics())
+ getTextStyle().getSpaceAfter(metrics()) / 2) / charsPerParagraph);
final int linesPerPage = effectiveHeight / strHeight;
return charsPerLine * linesPerPage;
}
代码示例来源:origin: ydcx/KooReader
public final synchronized String pagePositionPecReal(ZLTextPage page) {
int current = getCurrentNumber(page, false); // 传入要绘制的page
int total = sizeOfFullText();
if (getCurrentCharNumber(ZLViewEnums.PageIndex.current, true) == 0) {
return "0.00%";
}
if (computeTextPageNumber(total) <= 3) {
current = page.EndCursor.getParagraphIndex();
total = myModel.getParagraphsNumber() - 1;
}
final StringBuilder info = new StringBuilder();
float size = (float) current * 100 / total;
DecimalFormat df = new DecimalFormat("0.00");
info.append(df.format(size));
info.append("%");
return info.toString();
}
代码示例来源:origin: Jiangzqts/EpubRead
setContext(context);
final ZLFile wallpaper = getWallpaperFile(); // 获取背景图片
if (wallpaper != null) {
context.clear(wallpaper, getFillMode());
} else {
context.clear(getBackgroundColor());
page = myPreviousPage;
if (myPreviousPage.PaintState == PaintStateEnum.NOTHING_TO_PAINT) {
preparePaintInfo(myCurrentPage);
myPreviousPage.EndCursor.setCursor(myCurrentPage.StartCursor);
myPreviousPage.PaintState = PaintStateEnum.END_IS_KNOWN;
preparePaintInfo(myCurrentPage);
myNextPage.StartCursor.setCursor(myCurrentPage.EndCursor);
myNextPage.PaintState = PaintStateEnum.START_IS_KNOWN;
preparePaintInfo(page);
int x = getLeftMargin(); // MarginLeft
int y = getTopMargin();
int index = 0;
int columnIndex = 0;
for (ZLTextLineInfo info : lineInfos) {
info.adjust(previousInfo);
prepareTextLine(page, info, x, y, columnIndex);
y += info.Height + info.Descent + info.VSpaceAfter;
labels[++index] = page.TextElementMap.size();
代码示例来源:origin: ydcx/KooReader
ZLTextLineInfo previousInfo
) {
final ZLPaintContext context = getContext();
final ZLTextLineInfo info = new ZLTextLineInfo(paragraphCursor, startIndex, startCharIndex, getTextStyle());
final ZLTextLineInfo cachedInfo = myLineInfoCache.get(info);
if (cachedInfo != null) {
cachedInfo.adjust(previousInfo);
applyStyleChanges(paragraphCursor, startIndex, cachedInfo.EndElementIndex);
return cachedInfo;
while (isStyleChangeElement(element)) {
applyStyleChangeElement(element);
++currentElementIndex;
currentCharIndex = 0;
info.StartStyle = getTextStyle();
info.RealStartElementIndex = currentElementIndex;
info.RealStartCharIndex = currentCharIndex;
ZLTextStyle storedStyle = getTextStyle();
final int maxWidth = page.getTextWidth() - storedStyle.getRightIndent(metrics());
info.LeftIndent = storedStyle.getLeftIndent(metrics());
if (isFirstLine && storedStyle.getAlignment() != ZLTextAlignmentType.ALIGN_CENTER) {
info.LeftIndent += storedStyle.getFirstLineIndent(metrics());
newWidth += getElementWidth(element, currentCharIndex);
newHeight = Math.max(newHeight, getElementHeight(element));
newDescent = Math.max(newDescent, getElementDescent(element));
代码示例来源:origin: Jiangzqts/EpubRead
private void prepareTextLine(ZLTextPage page, ZLTextLineInfo info, int x, int y, int columnIndex) {
y = Math.min(y + info.Height, getTopMargin() + page.getTextHeight() - 1);
final ZLPaintContext context = getContext();
final ZLTextParagraphCursor paragraphCursor = info.ParagraphCursor;
setTextStyle(info.StartStyle);
int spaceCounter = info.SpaceCounter;
int fullCorrection = 0;
switch (getTextStyle().getAlignment()) {
case ZLTextAlignmentType.ALIGN_RIGHT:
x += maxWidth - getTextStyle().getRightIndent(metrics()) - info.Width;
break;
case ZLTextAlignmentType.ALIGN_CENTER:
x += (maxWidth - getTextStyle().getRightIndent(metrics()) - info.Width) / 2;
break;
case ZLTextAlignmentType.ALIGN_JUSTIFY:
if (!endOfParagraph && (paragraphCursor.getElement(info.EndElementIndex) != ZLTextElement.AfterParagraph)) {
fullCorrection = maxWidth - getTextStyle().getRightIndent(metrics()) - info.Width;
for (int wordIndex = info.RealStartElementIndex; wordIndex != endElementIndex; ++wordIndex, charIndex = 0) {
final ZLTextElement element = paragraph.getElement(wordIndex);
final int width = getElementWidth(element, charIndex);
if (element == ZLTextElement.HSpace) {
if (wordOccurred && spaceCounter > 0) {
final int correction = fullCorrection / spaceCounter;
final int spaceLength = context.getSpaceWidth() + correction;
if (getTextStyle().isUnderline()) {
spaceElement = new ZLTextElementArea(
代码示例来源:origin: Jiangzqts/EpubRead
private synchronized void preparePaintInfo(ZLTextPage page) {
page.setSize(getTextColumnWidth(), getTextAreaHeight(), twoColumnView(), page == myPreviousPage);
buildInfos(page, startCursor, endCursor);
if (!page.isEmptyPage() && (myScrollingMode != ScrollingMode.KEEP_LINES || !endCursor.samePositionAs(page.EndCursor))) {
page.StartCursor.setCursor(startCursor);
buildInfos(page, page.StartCursor, page.EndCursor);
switch (myScrollingMode) {
case ScrollingMode.NO_OVERLAPPING:
page.StartCursor.setCursor(findStartOfPrevousPage(page, page.StartCursor));
break;
case ScrollingMode.KEEP_LINES: {
ZLTextWordCursor startCursor = findStartOfPrevousPage(page, endCursor);
if (startCursor.samePositionAs(page.StartCursor)) {
page.StartCursor.setCursor(findStartOfPrevousPage(page, page.StartCursor));
} else {
page.StartCursor.setCursor(startCursor);
page.StartCursor.setCursor(findStartOfPrevousPage(page, page.StartCursor));
page.StartCursor.setCursor(findStart(page, page.StartCursor, SizeUnit.LINE_UNIT, myOverlappingValue));
break;
case ScrollingMode.SCROLL_PERCENTAGE:
page.StartCursor.setCursor(findStart(page, page.StartCursor, SizeUnit.PIXEL_UNIT, page.getTextHeight() * myOverlappingValue / 100));
break;
buildInfos(page, page.StartCursor, page.EndCursor);
代码示例来源:origin: Jiangzqts/EpubRead
public final synchronized PagePosition pagePosition() {
int current = computeTextPageNumber(getCurrentCharNumber(ZLViewEnums.PageIndex.current, false));
int total = computeTextPageNumber(sizeOfFullText());
if (total > 3) {
return new PagePosition(current, total);
preparePaintInfo(myCurrentPage);
ZLTextWordCursor cursor = myCurrentPage.StartCursor;
if (cursor == null || cursor.isNull()) {
ZLTextWordCursor prevCursor = myPreviousPage.StartCursor;
if (prevCursor == null || prevCursor.isNull()) {
preparePaintInfo(myPreviousPage);
prevCursor = myPreviousPage.StartCursor;
ZLTextWordCursor nextCursor = myNextPage.EndCursor;
if (nextCursor == null || nextCursor.isNull()) {
preparePaintInfo(myNextPage);
nextCursor = myNextPage.EndCursor;
代码示例来源:origin: ydcx/KooReader
resetTextStyle();
final ZLTextParagraphCursor paragraphCursor = result.getParagraphCursor();
final int wordIndex = result.getElementIndex();
applyStyleChanges(paragraphCursor, 0, wordIndex);
info = new ZLTextLineInfo(paragraphCursor, wordIndex, result.getCharIndex(), getTextStyle());
final int endIndex = info.ParagraphCursorLength;
while (info.EndElementIndex != endIndex) {
info = processTextLine(page, paragraphCursor, info.EndElementIndex, info.EndCharIndex, endIndex, previousInfo);
textAreaHeight -= info.Height + info.Descent;
if (textAreaHeight < 0 && page.LineInfos.size() > page.Column0Height) {
page.LineInfos.size() == page.Column0Height)
);
resetTextStyle();
代码示例来源:origin: ydcx/KooReader
public final synchronized String pagePositionPec() {
int current = getCurrentCharNumber(PageIndex.current, false);
int total = sizeOfFullText();
if (getCurrentCharNumber(ZLViewEnums.PageIndex.current, true) == 0) {
return "0.00%";
}
// LogUtil.i24("size1:" + getCurrentCharNumber(PageIndex.current, false) + "/" + sizeOfFullText());
// LogUtil.i24("size2:" + myCurrentPage.EndCursor.getParagraphIndex() + "/" + myModel.getParagraphsNumber());
if (computeTextPageNumber(total) <= 3) {
current = myCurrentPage.EndCursor.getParagraphIndex();
total = myModel.getParagraphsNumber() - 1;
}
final StringBuilder info = new StringBuilder();
float size = (float) current * 100 / total;
DecimalFormat df = new DecimalFormat("0.00");
info.append(df.format(size));
info.append("%");
return info.toString();
}
代码示例来源:origin: ydcx/KooReader
public final synchronized void gotoPage(int page) {
if (myModel == null || myModel.getParagraphsNumber() == 0) {
return;
}
final float factor = computeCharsPerPage();
final float textSize = page * factor;
int intTextSize = (int) textSize;
int paragraphIndex = myModel.findParagraphByTextLength(intTextSize);
if (paragraphIndex > 0 && myModel.getTextLength(paragraphIndex) > intTextSize) {
--paragraphIndex;
}
intTextSize = myModel.getTextLength(paragraphIndex);
int sizeOfTextBefore = myModel.getTextLength(paragraphIndex - 1);
while (paragraphIndex > 0 && intTextSize == sizeOfTextBefore) {
--paragraphIndex;
intTextSize = sizeOfTextBefore;
sizeOfTextBefore = myModel.getTextLength(paragraphIndex - 1);
}
final int paragraphLength = intTextSize - sizeOfTextBefore;
final int wordIndex;
if (paragraphLength == 0) {
wordIndex = 0;
} else {
preparePaintInfo(myCurrentPage);
final ZLTextWordCursor cursor = new ZLTextWordCursor(myCurrentPage.EndCursor);
cursor.moveToParagraph(paragraphIndex);
wordIndex = cursor.getParagraphCursor().getParagraphLength();
}
gotoPositionByEnd(paragraphIndex, wordIndex, 0);
}
代码示例来源:origin: Jiangzqts/EpubRead
@Override
public ZLTextPosition getEndPosition() {
if (isEmpty()) {
return null;
}
final ZLTextParagraphCursor cursor = myView.cursor(myRightMostRegionSoul.ParagraphIndex);
final ZLTextElement element = cursor.getElement(myRightMostRegionSoul.EndElementIndex);
return new ZLTextFixedPosition(
myRightMostRegionSoul.ParagraphIndex,
myRightMostRegionSoul.EndElementIndex,
element instanceof ZLTextWord ? ((ZLTextWord)element).Length : 0
);
}
代码示例来源:origin: Jiangzqts/EpubRead
protected SelectionCursor.Which findSelectionCursor(int x, int y, float maxDistance2) {
if (mySelection.isEmpty()) {
return null;
}
final float leftDistance2 = distance2ToCursor(x, y, SelectionCursor.Which.Left);
final float rightDistance2 = distance2ToCursor(x, y, SelectionCursor.Which.Right);
if (rightDistance2 < leftDistance2) {
return rightDistance2 <= maxDistance2 ? SelectionCursor.Which.Right : null;
} else {
return leftDistance2 <= maxDistance2 ? SelectionCursor.Which.Left : null;
}
}
代码示例来源:origin: Jiangzqts/EpubRead
private synchronized int computeTextPageNumber(int textSize) {
if (myModel == null || myModel.getParagraphsNumber() == 0) {
return 1;
}
final float factor = 1.0f / computeCharsPerPage();
final float pages = textSize * factor;
return Math.max((int) (pages + 1.0f - 0.5f * factor), 1);
}
代码示例来源:origin: ydcx/KooReader
myCharWidth = computeCharWidth(myLettersBuffer, myLettersBufferLength);
代码示例来源:origin: ydcx/KooReader
setContext(context);
final ZLFile wallpaper = getWallpaperFile(); // 获取背景图片
if (wallpaper != null) {
context.clear(wallpaper, getFillMode());
} else {
context.clear(getBackgroundColor());
page = myPreviousPage;
if (myPreviousPage.PaintState == PaintStateEnum.NOTHING_TO_PAINT) {
preparePaintInfo(myCurrentPage);
myPreviousPage.EndCursor.setCursor(myCurrentPage.StartCursor);
myPreviousPage.PaintState = PaintStateEnum.END_IS_KNOWN;
preparePaintInfo(myCurrentPage);
myNextPage.StartCursor.setCursor(myCurrentPage.EndCursor);
myNextPage.PaintState = PaintStateEnum.START_IS_KNOWN;
preparePaintInfo(page);
int x = getLeftMargin(); // MarginLeft
int y = getTopMargin();
int index = 0;
int columnIndex = 0;
for (ZLTextLineInfo info : lineInfos) {
info.adjust(previousInfo);
prepareTextLine(page, info, x, y, columnIndex);
y += info.Height + info.Descent + info.VSpaceAfter;
labels[++index] = page.TextElementMap.size();
代码示例来源:origin: Jiangzqts/EpubRead
ZLTextLineInfo previousInfo
) {
final ZLPaintContext context = getContext();
final ZLTextLineInfo info = new ZLTextLineInfo(paragraphCursor, startIndex, startCharIndex, getTextStyle());
final ZLTextLineInfo cachedInfo = myLineInfoCache.get(info);
if (cachedInfo != null) {
cachedInfo.adjust(previousInfo);
applyStyleChanges(paragraphCursor, startIndex, cachedInfo.EndElementIndex);
return cachedInfo;
while (isStyleChangeElement(element)) {
applyStyleChangeElement(element);
++currentElementIndex;
currentCharIndex = 0;
info.StartStyle = getTextStyle();
info.RealStartElementIndex = currentElementIndex;
info.RealStartCharIndex = currentCharIndex;
ZLTextStyle storedStyle = getTextStyle();
final int maxWidth = page.getTextWidth() - storedStyle.getRightIndent(metrics());
info.LeftIndent = storedStyle.getLeftIndent(metrics());
if (isFirstLine && storedStyle.getAlignment() != ZLTextAlignmentType.ALIGN_CENTER) {
info.LeftIndent += storedStyle.getFirstLineIndent(metrics());
newWidth += getElementWidth(element, currentCharIndex);
newHeight = Math.max(newHeight, getElementHeight(element));
newDescent = Math.max(newDescent, getElementDescent(element));
代码示例来源:origin: ydcx/KooReader
private void prepareTextLine(ZLTextPage page, ZLTextLineInfo info, int x, int y, int columnIndex) {
y = Math.min(y + info.Height, getTopMargin() + page.getTextHeight() - 1);
final ZLPaintContext context = getContext();
final ZLTextParagraphCursor paragraphCursor = info.ParagraphCursor;
setTextStyle(info.StartStyle);
int spaceCounter = info.SpaceCounter;
int fullCorrection = 0;
switch (getTextStyle().getAlignment()) {
case ZLTextAlignmentType.ALIGN_RIGHT:
x += maxWidth - getTextStyle().getRightIndent(metrics()) - info.Width;
break;
case ZLTextAlignmentType.ALIGN_CENTER:
x += (maxWidth - getTextStyle().getRightIndent(metrics()) - info.Width) / 2;
break;
case ZLTextAlignmentType.ALIGN_JUSTIFY:
if (!endOfParagraph && (paragraphCursor.getElement(info.EndElementIndex) != ZLTextElement.AfterParagraph)) {
fullCorrection = maxWidth - getTextStyle().getRightIndent(metrics()) - info.Width;
for (int wordIndex = info.RealStartElementIndex; wordIndex != endElementIndex; ++wordIndex, charIndex = 0) {
final ZLTextElement element = paragraph.getElement(wordIndex);
final int width = getElementWidth(element, charIndex);
if (element == ZLTextElement.HSpace) {
if (wordOccurred && spaceCounter > 0) {
final int correction = fullCorrection / spaceCounter;
final int spaceLength = context.getSpaceWidth() + correction;
if (getTextStyle().isUnderline()) {
spaceElement = new ZLTextElementArea(
代码示例来源:origin: ydcx/KooReader
private synchronized void preparePaintInfo(ZLTextPage page) {
page.setSize(getTextColumnWidth(), getTextAreaHeight(), twoColumnView(), page == myPreviousPage);
buildInfos(page, startCursor, endCursor);
if (!page.isEmptyPage() && (myScrollingMode != ScrollingMode.KEEP_LINES || !endCursor.samePositionAs(page.EndCursor))) {
page.StartCursor.setCursor(startCursor);
buildInfos(page, page.StartCursor, page.EndCursor);
switch (myScrollingMode) {
case ScrollingMode.NO_OVERLAPPING:
page.StartCursor.setCursor(findStartOfPrevousPage(page, page.StartCursor));
break;
case ScrollingMode.KEEP_LINES: {
ZLTextWordCursor startCursor = findStartOfPrevousPage(page, endCursor);
if (startCursor.samePositionAs(page.StartCursor)) {
page.StartCursor.setCursor(findStartOfPrevousPage(page, page.StartCursor));
} else {
page.StartCursor.setCursor(startCursor);
page.StartCursor.setCursor(findStartOfPrevousPage(page, page.StartCursor));
page.StartCursor.setCursor(findStart(page, page.StartCursor, SizeUnit.LINE_UNIT, myOverlappingValue));
break;
case ScrollingMode.SCROLL_PERCENTAGE:
page.StartCursor.setCursor(findStart(page, page.StartCursor, SizeUnit.PIXEL_UNIT, page.getTextHeight() * myOverlappingValue / 100));
break;
buildInfos(page, page.StartCursor, page.EndCursor);
我目前正在创建一个正则表达式来拆分所有匹配以下格式的字符串:&[text(text - text text) !text]。这里的文本实际上可以是任何字符。并且间距很重要。文本将如图所示列出。 我已经
这个问题在这里已经有了答案: Remove duplicate commas and extra commas at start/end with RegExp in Javascript, and
我有以下代码。 from xml.dom.minidom import Document doc = Document() root = doc.createElement('root') doc.a
这个问题在这里已经有了答案: 关闭 10 年前。 Possible Duplicate: Find text string in jQuery and make it bold 如何使用 jQuer
我使用 libmagic 在我的元素的 Web 界面中获取文件的 MIME 类型。我在 css 和 js 文件上得到文本/纯 mime 类型。 例如 chromium 显示以下警告: Resource
起初我必须阅读很多教程,但我仍然不知道我做错了什么...... 我想内联使用 4 个 div。在我想放置的那些 div 中:文本、图像、文本、文本。我希望中间文本自动设置为最大宽度。 我写了一个简单的
我想替换所有出现的 [b: "text"]至text使用 JavaScript 和 RegEx。目前我知道如何替换 [b: ""]至使用'/\[b: ""\]/g'但我不知道如果 " 之间有文本该怎么
这可能是一个幼稚的问题,但我想知道是否有比使用 text() 更好的方法将文本添加到绘图中。注意,我也在使用 layout()以及。具体来说,我有一个情节的一部分,我想在其中添加一些带有标题的文本,然
我必须反复从 latex 源粘贴代码,因此每次都必须做很多查找和替换操作('“a'=>'ä','” o'=>'ö',...) 。 有没有一种方法可以存储这些搜索和替换规则,例如,我可以通过一次按键执行
当我在Sublime Text 3代码屏幕中编写代码时,它连续地向右滑动,如图所示。我该怎么办? 请注意第10行。 最佳答案 如果您只想为当前 View (正在编辑的当前文件)激活自动换行,只需vie
是否有可能更改 sublime text 中的默认字体目录?我只想使用可移植 sublime 文本存储在我的 pendrive 上的字体,这样我就不必在我使用可移植 sublime 文本的每台机器上安
我是 Android 开发的新手,我有一个愚蠢的问题。如何将“文本字段”框放在一行中的文本旁边。 例子: Please Enter the number: [ ] 关于 "t
我想自动将“我的文本”更改为“我的文本”,因为这是用德语写的正确方式。引号可以在文本中的任何位置。 有没有一种简单的方法可以实现这一点? 解决方案应该检查第一个字符,最后一个字符,比如“this”,或
我想知道是否有特殊的语法来绑定(bind)与现有文本连接的文本。 像这样。 显然,这行不通。 什么是最佳实践? 使用 SL4。 最佳答案 使用StringFormat在 Binding 上。 WPF
我认为它应该打印“真实文本”,因为它相当于 true console.log('true text' || true ? 'text' : 'text1'); 但是,输出是“文本”;抱歉,如果是愚蠢的
有没有办法通过 css 打破文本,以便中间有一个“空白”?目前我正在通过手工打破文本来解决这个问题 -但这是愚蠢的。我知道有一个函数可以让文本在另一个 div 中结束和开始,但 IE 不支持它。 文本
我想为我的Tcl/Tk工具实现一个效果:在text控件中,根据具体情况,希望高亮一些线条的背景色,其他线条正常透明.有可能吗? 我尝试了一些选项,例如:-highlightbackground 、-i
我正在尝试解析原始维基百科文章内容,例如the article on Sweden ,使用re.sub()。但是,我在尝试替换 {{some text}} block 时遇到了问题,因为它们可以包含更
我试图先删除 ComboBox 中的所有内容。然后在其前面添加文本,但保留了一些旧文本。有没有办法重置或清除 ComboBox?或者我怎样才能最好地实现这一目标? public void GetBad
我知道我们应该创建 Example对象并将其传递给 nlp.update() 方法。根据 docs 中的示例, 我们有 for raw_text, entity_offsets in train_da
我是一名优秀的程序员,十分优秀!