Commit a1e2b428 authored by twanvl's avatar twanvl

made padding and line height scriptable

parent e8cf68e2
...@@ -87,19 +87,19 @@ The rest of the properties depend on the type of [[type:field]] this style is fo ...@@ -87,19 +87,19 @@ The rest of the properties depend on the type of [[type:field]] this style is fo
| ^^^ @allow formating@ [[type:boolean]] @true@ Is custom formating (bold, italic) allowed? | ^^^ @allow formating@ [[type:boolean]] @true@ Is custom formating (bold, italic) allowed?
| ^^^ @alignment@ [[type:scriptable]] [[type:alignment]] @top left@ Alignment of the text. | ^^^ @alignment@ [[type:scriptable]] [[type:alignment]] @top left@ Alignment of the text.
| ^^^ @direction@ [[type:direction]] @"left to right"@ Direction in which the text flows. If set to @"vertical"@ it is as if a line break is inserted after each character. | ^^^ @direction@ [[type:direction]] @"left to right"@ Direction in which the text flows. If set to @"vertical"@ it is as if a line break is inserted after each character.
| ^^^ @padding left@ [[type:double]] @0@ Padding between the text and the border of the box, in pixels. | ^^^ @padding left@ [[type:scriptable]] [[type:double]] @0@ Padding between the text and the border of the box, in pixels.
| ^^^ @padding right@ ^^^ ^^^ ^^^ | ^^^ @padding right@ ^^^ ^^^ ^^^
| ^^^ @padding top@ ^^^ ^^^ ^^^ | ^^^ @padding top@ ^^^ ^^^ ^^^
| ^^^ @padding bottom@ ^^^ ^^^ ^^^ | ^^^ @padding bottom@ ^^^ ^^^ ^^^
| ^^^ @padding left min@ [[type:double]] &infin; Minimal padding around the field.<br/> When the text is scalled down the padding is scalled as well, but it becomes no smaller than this. | ^^^ @padding left min@ [[type:scriptable]] [[type:double]] &infin; Minimal padding around the field.<br/> When the text is scalled down the padding is scalled as well, but it becomes no smaller than this.
| ^^^ @padding right min@ ^^^ ^^^ ^^^ | ^^^ @padding right min@ ^^^ ^^^ ^^^
| ^^^ @padding top min@ ^^^ ^^^ ^^^ | ^^^ @padding top min@ ^^^ ^^^ ^^^
| ^^^ @padding bottom min@ ^^^ ^^^ ^^^ | ^^^ @padding bottom min@ ^^^ ^^^ ^^^
| ^^^ @line height soft@ [[type:double]] @1@ Multiplier for the line height of 'soft' line breaks. These are breaks caused by wrapping around lines that are too long.<br/> | ^^^ @line height soft@ [[type:scriptable]] [[type:double]] @1@ Multiplier for the line height of 'soft' line breaks. These are breaks caused by wrapping around lines that are too long.<br/>
A line height of @0@ means all lines are in the same position, @1@ is normal behaviour, @2@ skips a line, etc. A line height of @0@ means all lines are in the same position, @1@ is normal behaviour, @2@ skips a line, etc.
| ^^^ @line height hard@ [[type:double]] @1@ Multiplier for the line height of 'hard' line breaks. These are breaks caused by the enter key. | ^^^ @line height hard@ [[type:scriptable]] [[type:double]] @1@ Multiplier for the line height of 'hard' line breaks. These are breaks caused by the enter key.
| ^^^ @line height line@ [[type:double]] @1@ Multiplier for the line height of 'soft' line breaks. These are breaks caused by @"<line>\n</line>"@ tags. | ^^^ @line height line@ [[type:scriptable]] [[type:double]] @1@ Multiplier for the line height of 'soft' line breaks. These are breaks caused by @"<line>\n</line>"@ tags.
| ^^^ @line height soft max@ [[type:double]] ''disabled'' When there is still vertical room in the text box, increase the line heights to at most these values to spread the text more evenly. | ^^^ @line height soft max@ [[type:scriptable]] [[type:double]] ''disabled'' When there is still vertical room in the text box, increase the line heights to at most these values to spread the text more evenly.
| ^^^ @line height hard max@ ^^^ ^^^ ^^^ | ^^^ @line height hard max@ ^^^ ^^^ ^^^
| ^^^ @line height line max@ ^^^ ^^^ ^^^ | ^^^ @line height line max@ ^^^ ^^^ ^^^
| ^^^ @paragraph height@ [[type:double]] ''flexible'' The height of paragraphs. If specified, each paragraph is given this much space, and aligned inside that space as specified by @alignment@.<br/> | ^^^ @paragraph height@ [[type:double]] ''flexible'' The height of paragraphs. If specified, each paragraph is given this much space, and aligned inside that space as specified by @alignment@.<br/>
......
...@@ -70,7 +70,22 @@ int TextStyle::update(Context& ctx) { ...@@ -70,7 +70,22 @@ int TextStyle::update(Context& ctx) {
return Style ::update(ctx) return Style ::update(ctx)
| font .update(ctx) * CHANGE_OTHER | font .update(ctx) * CHANGE_OTHER
| symbol_font.update(ctx) * CHANGE_OTHER | symbol_font.update(ctx) * CHANGE_OTHER
| alignment .update(ctx) * CHANGE_OTHER; | alignment .update(ctx) * CHANGE_OTHER
| ( padding_left .update(ctx)
| padding_left_min .update(ctx)
| padding_right .update(ctx)
| padding_right_min .update(ctx)
| padding_top .update(ctx)
| padding_top_min .update(ctx)
| padding_bottom .update(ctx)
| padding_bottom_min .update(ctx)
| line_height_soft .update(ctx)
| line_height_hard .update(ctx)
| line_height_line .update(ctx)
| line_height_soft_max.update(ctx)
| line_height_hard_max.update(ctx)
| line_height_line_max.update(ctx)
) * CHANGE_OTHER;
} }
void TextStyle::initDependencies(Context& ctx, const Dependency& dep) const { void TextStyle::initDependencies(Context& ctx, const Dependency& dep) const {
Style ::initDependencies(ctx, dep); Style ::initDependencies(ctx, dep);
......
...@@ -51,26 +51,27 @@ class TextStyle : public Style { ...@@ -51,26 +51,27 @@ class TextStyle : public Style {
TextStyle(const TextFieldP&); TextStyle(const TextFieldP&);
DECLARE_STYLE_TYPE(Text); DECLARE_STYLE_TYPE(Text);
Font font; ///< Font to use for the text Font font; ///< Font to use for the text
SymbolFontRef symbol_font; ///< Symbol font for symbols in the text SymbolFontRef symbol_font; ///< Symbol font for symbols in the text
bool always_symbol; ///< Should everything be drawn as symbols? bool always_symbol; ///< Should everything be drawn as symbols?
bool allow_formating; ///< Is formating (bold/italic/..) allowed? bool allow_formating; ///< Is formating (bold/italic/..) allowed?
Scriptable<Alignment> alignment; ///< Alignment inside the box Scriptable<Alignment> alignment; ///< Alignment inside the box
double padding_left, padding_left_min; ///< Padding Scriptable<double>
double padding_right, padding_right_min; ///< Padding padding_left, padding_left_min, ///< Padding
double padding_top, padding_top_min; ///< Padding padding_right, padding_right_min, ///< Padding
double padding_bottom, padding_bottom_min; ///< Padding padding_top, padding_top_min, ///< Padding
double line_height_soft; ///< Line height for soft linebreaks padding_bottom, padding_bottom_min, ///< Padding
double line_height_hard; ///< Line height for hard linebreaks line_height_soft, ///< Line height for soft linebreaks
double line_height_line; ///< Line height for <line> tags line_height_hard, ///< Line height for hard linebreaks
double line_height_soft_max; ///< Maximum line height line_height_line, ///< Line height for <line> tags
double line_height_hard_max; ///< Maximum line height line_height_soft_max, ///< Maximum line height
double line_height_line_max; ///< Maximum line height line_height_hard_max, ///< Maximum line height
double paragraph_height; ///< Fixed height of paragraphs line_height_line_max, ///< Maximum line height
Direction direction; ///< In what direction is text layed out? paragraph_height; ///< Fixed height of paragraphs
Direction direction; ///< In what direction is text layed out?
// information from text rendering // information from text rendering
double content_width, content_height; ///< Size of the rendered text double content_width, content_height; ///< Size of the rendered text
int content_lines; ///< Number of rendered lines int content_lines; ///< Number of rendered lines
virtual int update(Context&); virtual int update(Context&);
virtual void initDependencies(Context&, const Dependency&) const; virtual void initDependencies(Context&, const Dependency&) const;
...@@ -88,8 +89,8 @@ class TextValue : public Value { ...@@ -88,8 +89,8 @@ class TextValue : public Value {
inline TextValue(const TextFieldP& field) : Value(field), last_update(1) {} inline TextValue(const TextFieldP& field) : Value(field), last_update(1) {}
DECLARE_VALUE_TYPE(Text, Defaultable<String>); DECLARE_VALUE_TYPE(Text, Defaultable<String>);
ValueType value; ///< The text of this value ValueType value; ///< The text of this value
Age last_update; ///< When was the text last changed? Age last_update; ///< When was the text last changed?
virtual bool update(Context&); virtual bool update(Context&);
}; };
......
...@@ -322,7 +322,7 @@ IMPLEMENT_VALUE_EDITOR(Text) ...@@ -322,7 +322,7 @@ IMPLEMENT_VALUE_EDITOR(Text)
{ {
if (viewer.nativeLook() && field().multi_line) { if (viewer.nativeLook() && field().multi_line) {
scrollbar = new TextValueEditorScrollBar(*this); scrollbar = new TextValueEditorScrollBar(*this);
style->padding_right = max(style->padding_right, (double)scrollbar->GetSize().x); style->padding_right = max(style->padding_right(), (double)scrollbar->GetSize().x);
} }
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment