package org.emdev.common.textmarkup; import org.ebookdroid.droids.fb2.codec.ParsedContent; import org.emdev.common.fonts.data.FontStyle; import org.emdev.common.fonts.typeface.TypefaceEx; import org.emdev.common.textmarkup.line.TextElement; import org.emdev.common.xml.TextProvider; public class RenderingStyle { private static final TextProvider DEFIS = new TextProvider("-"); private static final TextProvider BULLET = new TextProvider("\u2022 "); public final CustomTextPaint paint; public final TextElement defis; public final TextElement bullet; public final int textSize; public final JustificationMode jm; public final TypefaceEx face; public final Script script; public final Strike strike; public RenderingStyle(final ParsedContent content, final TypefaceEx face, final int textSize) { this.textSize = textSize; this.jm = JustificationMode.Justify; this.face = face; this.paint = content.paints.getTextPaint(face, this.textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final TextStyle text) { this.textSize = text.getFontSize(); this.jm = JustificationMode.Justify; this.face = content.fonts[FontStyle.REGULAR.ordinal()]; this.paint = content.paints.getTextPaint(face, this.textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final TypefaceEx face, final TextStyle text) { this.textSize = text.getFontSize(); this.jm = JustificationMode.Justify; this.face = face; this.paint = content.paints.getTextPaint(face, this.textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final RenderingStyle old, final Script script) { this.textSize = ((script == null) || (script != null && old.script != null)) ? old.textSize : old.textSize / 2; this.jm = old.jm; this.face = old.face; this.paint = content.paints.getTextPaint(face, textSize); this.script = script; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final RenderingStyle old, final Strike strike) { this.textSize = old.textSize; this.jm = old.jm; this.face = old.face; this.paint = content.paints.getTextPaint(face, textSize); this.script = old.script; this.strike = strike; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final RenderingStyle old, final TextStyle text, final JustificationMode jm) { this.textSize = text.getFontSize(); this.jm = jm; this.face = old.face; this.paint = content.paints.getTextPaint(face, textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final RenderingStyle old, final TextStyle text, final JustificationMode jm, FontStyle style) { this.textSize = text.getFontSize(); this.jm = jm; this.face = content.fonts[style.ordinal()]; this.paint = content.paints.getTextPaint(face, textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final RenderingStyle old, final JustificationMode jm, FontStyle style) { this.textSize = old.textSize; this.jm = jm; this.face = content.fonts[style.ordinal()]; this.paint = content.paints.getTextPaint(face, textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final RenderingStyle old, final boolean bold) { this.textSize = old.textSize; this.jm = old.jm; this.face = content.fonts[(bold ? old.face.style.getBold() : old.face.style.getBase()).ordinal()]; this.paint = content.paints.getTextPaint(face, textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public RenderingStyle(final ParsedContent content, final RenderingStyle old, final FontStyle style) { this.textSize = old.textSize; this.jm = old.jm; this.face = content.fonts[style.ordinal()]; this.paint = content.paints.getTextPaint(face, textSize); this.script = null; this.strike = null; this.defis = new TextElement(DEFIS, this); this.bullet = new TextElement(BULLET, this); } public static CustomTextPaint getTextPaint(final ParsedContent content, final int textSize) { TypefaceEx tf = content.fonts[FontStyle.REGULAR.ordinal()]; return content.paints.getTextPaint(tf, textSize); } public static enum Script { SUB, SUPER; } public static enum Strike { THROUGH, UNDER; } }