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

line spacing option

This commit is contained in:
Nikolay Pultsin 2014-06-07 06:20:10 +01:00
parent 543f19d4a0
commit 0a90ed38cd
37 changed files with 68 additions and 28 deletions

View file

@ -988,5 +988,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -996,5 +996,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -995,5 +995,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -1016,5 +1016,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -999,5 +999,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -1010,5 +1010,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -995,5 +995,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -988,5 +988,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -990,5 +990,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%"/>
<node name="percent" value="E.g.: 125%"/>
</node> </node>
</resources> </resources>

View file

@ -995,5 +995,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -1016,5 +1016,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -990,5 +990,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -983,5 +983,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -995,5 +995,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -981,5 +981,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -995,5 +995,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -990,5 +990,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -990,5 +990,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -992,5 +992,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -995,5 +995,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="Например: 20px, 10pt, 0.8em, 1ex, 120%"/> <node name="positiveLength" value="Например: 20px, 10pt, 0.8em, 1ex, 120%"/>
<node name="length" value="Например: -2px, 10pt, -0.8em, 1.1ex, -40%"/> <node name="length" value="Например: -2px, 10pt, -0.8em, 1.1ex, -40%"/>
<node name="percent" value="Например: 125%"/>
</node> </node>
</resources> </resources>

View file

@ -990,5 +990,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -990,5 +990,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -980,5 +980,6 @@
<node name="hint"> <node name="hint">
<node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/> <node name="positiveLength" value="E.g.: 20px, 10pt, 0.8em, 1ex, 120%" toBeTranslated="true"/>
<node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/> <node name="length" value="E.g.: -2px, 10pt, -0.8em, 1.1ex, -40%" toBeTranslated="true"/>
<node name="percent" value="E.g.: 125%" toBeTranslated="true"/>
</node> </node>
</resources> </resources>

View file

@ -254,24 +254,6 @@ public class PreferenceActivity extends ZLPreferenceActivity {
textScreen.addOption(baseStyle.AutoHyphenationOption, "autoHyphenations"); textScreen.addOption(baseStyle.AutoHyphenationOption, "autoHyphenations");
final Screen moreStylesScreen = textScreen.createPreferenceScreen("more"); final Screen moreStylesScreen = textScreen.createPreferenceScreen("more");
/*
final ZLIntegerOption spacePercentOption = decoration.LineSpacePercentOption;
final int[] spacingValues = new int[17];
final String[] spacingKeys = new String[17];
spacingValues[0] = -1;
spacingKeys[0] = "unchanged";
for (int j = 1; j < spacingValues.length; ++j) {
final int val = 4 + j;
spacingValues[j] = 10 * val;
spacingKeys[j] = (char)(val / 10 + '0') + decimalSeparator + (char)(val % 10 + '0');
}
formatScreen.addPreference(new ZLIntegerChoicePreference(
this, textScreen.Resource, "lineSpacing",
spacePercentOption, spacingValues, spacingKeys
));
*/
for (ZLTextNGStyleDescription description : collection.getDescriptionList()) { for (ZLTextNGStyleDescription description : collection.getDescriptionList()) {
final Screen ngScreen = moreStylesScreen.createPreferenceScreen(description.Name); final Screen ngScreen = moreStylesScreen.createPreferenceScreen(description.Name);
ngScreen.addPreference(new FontPreference( ngScreen.addPreference(new FontPreference(
@ -308,6 +290,11 @@ public class PreferenceActivity extends ZLPreferenceActivity {
description.AlignmentOption, description.AlignmentOption,
new String[] { "inherit", "left", "right", "center", "justify" } new String[] { "inherit", "left", "right", "center", "justify" }
)); ));
ngScreen.addPreference(new StringPreference(
this, description.LineHeightOption,
StringPreference.Constraint.PERCENT,
textScreen.Resource, "lineSpacing"
));
ngScreen.addPreference(new StringPreference( ngScreen.addPreference(new StringPreference(
this, description.MarginTopOption, this, description.MarginTopOption,
StringPreference.Constraint.LENGTH, StringPreference.Constraint.LENGTH,

View file

@ -37,13 +37,17 @@ import org.geometerplus.zlibrary.ui.android.R;
public class StringPreference extends DialogPreference { public class StringPreference extends DialogPreference {
public static class Constraint { public static class Constraint {
public static final Constraint LENGTH = new Constraint( public static final Constraint LENGTH = new Constraint(
"(-{0,1}([0-9]*\\.){0,1}[0-9]+(%|em|ex|px|pt)|)", "-{0,1}([0-9]*\\.){0,1}[0-9]+(%|em|ex|px|pt)|",
"length" "length"
); );
public static final Constraint POSITIVE_LENGTH = new Constraint( public static final Constraint POSITIVE_LENGTH = new Constraint(
"(([0-9]*\\.){0,1}[0-9]+(%|em|ex|px|pt)|)", "([0-9]*\\.){0,1}[0-9]+(%|em|ex|px|pt)|",
"positiveLength" "positiveLength"
); );
public static final Constraint PERCENT = new Constraint(
"([1-9][0-9]{1,2}%)|",
"percent"
);
private final Pattern myPattern; private final Pattern myPattern;
public final String HintKey; public final String HintKey;

View file

@ -35,6 +35,7 @@ public abstract class ZLTextDecoratedStyle extends ZLTextStyle {
private boolean myIsBold; private boolean myIsBold;
private boolean myIsUnderline; private boolean myIsUnderline;
private boolean myIsStrikeThrough; private boolean myIsStrikeThrough;
private int myLineSpacePercent;
private boolean myIsNotCached = true; private boolean myIsNotCached = true;
@ -60,6 +61,7 @@ public abstract class ZLTextDecoratedStyle extends ZLTextStyle {
myIsBold = isBoldInternal(); myIsBold = isBoldInternal();
myIsUnderline = isUnderlineInternal(); myIsUnderline = isUnderlineInternal();
myIsStrikeThrough = isStrikeThroughInternal(); myIsStrikeThrough = isStrikeThroughInternal();
myLineSpacePercent = getLineSpacePercentInternal();
myIsNotCached = false; myIsNotCached = false;
} }
@ -182,4 +184,13 @@ public abstract class ZLTextDecoratedStyle extends ZLTextStyle {
return myFirstLineIndent; return myFirstLineIndent;
} }
protected abstract int getFirstLineIndentInternal(ZLTextMetrics metrics, int fontSize); protected abstract int getFirstLineIndentInternal(ZLTextMetrics metrics, int fontSize);
@Override
public final int getLineSpacePercent() {
if (myIsNotCached) {
initCache();
}
return myLineSpacePercent;
}
protected abstract int getLineSpacePercentInternal();
} }

View file

@ -158,7 +158,7 @@ public class ZLTextExplicitlyDecoratedStyle extends ZLTextDecoratedStyle impleme
return myEntry.getLength(LENGTH_RIGHT_INDENT, metrics, fontSize); return myEntry.getLength(LENGTH_RIGHT_INDENT, metrics, fontSize);
} }
@Override @Override
public int getFirstLineIndentInternal(ZLTextMetrics metrics, int fontSize) { protected int getFirstLineIndentInternal(ZLTextMetrics metrics, int fontSize) {
if (myEntry instanceof ZLTextCSSStyleEntry && !BaseStyle.UseCSSMarginsOption.getValue()) { if (myEntry instanceof ZLTextCSSStyleEntry && !BaseStyle.UseCSSMarginsOption.getValue()) {
return Parent.getFirstLineIndent(metrics); return Parent.getFirstLineIndent(metrics);
} }
@ -168,7 +168,8 @@ public class ZLTextExplicitlyDecoratedStyle extends ZLTextDecoratedStyle impleme
} }
return myEntry.getLength(LENGTH_FIRST_LINE_INDENT, metrics, fontSize); return myEntry.getLength(LENGTH_FIRST_LINE_INDENT, metrics, fontSize);
} }
public int getLineSpacePercent() { @Override
protected int getLineSpacePercentInternal() {
// TODO: implement // TODO: implement
return Parent.getLineSpacePercent(); return Parent.getLineSpacePercent();
} }

View file

@ -105,21 +105,25 @@ public class ZLTextNGStyle extends ZLTextDecoratedStyle {
} }
@Override @Override
public int getLeftIndentInternal(ZLTextMetrics metrics, int fontSize) { protected int getLeftIndentInternal(ZLTextMetrics metrics, int fontSize) {
return myDescription.getLeftIndent(metrics, Parent.getLeftIndent(metrics), fontSize); return myDescription.getLeftIndent(metrics, Parent.getLeftIndent(metrics), fontSize);
} }
@Override @Override
public int getRightIndentInternal(ZLTextMetrics metrics, int fontSize) { protected int getRightIndentInternal(ZLTextMetrics metrics, int fontSize) {
return myDescription.getRightIndent(metrics, Parent.getRightIndent(metrics), fontSize); return myDescription.getRightIndent(metrics, Parent.getRightIndent(metrics), fontSize);
} }
@Override @Override
public int getFirstLineIndentInternal(ZLTextMetrics metrics, int fontSize) { protected int getFirstLineIndentInternal(ZLTextMetrics metrics, int fontSize) {
return myDescription.getFirstLineIndent(metrics, Parent.getFirstLineIndent(metrics), fontSize); return myDescription.getFirstLineIndent(metrics, Parent.getFirstLineIndent(metrics), fontSize);
} }
public int getLineSpacePercent() { @Override
// TODO: implement protected int getLineSpacePercentInternal() {
final String lineHeight = myDescription.LineHeightOption.getValue();
if (!lineHeight.matches("[1-9][0-9]*%")) {
return Parent.getLineSpacePercent(); return Parent.getLineSpacePercent();
} }
return Integer.valueOf(lineHeight.substring(0, lineHeight.length() - 1));
}
@Override @Override
protected int getVerticalAlignInternal(ZLTextMetrics metrics, int fontSize) { protected int getVerticalAlignInternal(ZLTextMetrics metrics, int fontSize) {
return myDescription.getVerticalAlign(metrics, Parent.getVerticalAlign(metrics), fontSize); return myDescription.getVerticalAlign(metrics, Parent.getVerticalAlign(metrics), fontSize);

View file

@ -42,6 +42,7 @@ public class ZLTextNGStyleDescription {
public final ZLStringOption TextIndentOption; public final ZLStringOption TextIndentOption;
public final ZLStringOption AlignmentOption; public final ZLStringOption AlignmentOption;
public final ZLStringOption VerticalAlignOption; public final ZLStringOption VerticalAlignOption;
public final ZLStringOption LineHeightOption;
private static ZLStringOption createOption(String selector, String name, Map<String,String> valueMap) { private static ZLStringOption createOption(String selector, String name, Map<String,String> valueMap) {
return new ZLStringOption("Style", selector + "::" + name, valueMap.get(name)); return new ZLStringOption("Style", selector + "::" + name, valueMap.get(name));
@ -63,6 +64,7 @@ public class ZLTextNGStyleDescription {
TextIndentOption = createOption(selector, "text-indent", valueMap); TextIndentOption = createOption(selector, "text-indent", valueMap);
AlignmentOption = createOption(selector, "text-align", valueMap); AlignmentOption = createOption(selector, "text-align", valueMap);
VerticalAlignOption = createOption(selector, "vertical-align", valueMap); VerticalAlignOption = createOption(selector, "vertical-align", valueMap);
LineHeightOption = createOption(selector, "line-height", valueMap);
} }
int getFontSize(ZLTextMetrics metrics, int baseFontSize) { int getFontSize(ZLTextMetrics metrics, int baseFontSize) {