Structured Text: Difference between revisions
Lou Montana (talk | contribs) m (Text replacement - "<br/>" to "<br>") |
Lou Montana (talk | contribs) m (Fix <br /> / <br> replacement mistake) |
||
Line 1: | Line 1: | ||
{{SideTOC}} | {{SideTOC}} | ||
Structured Text is just another RV Engine [[typeName | type]] TEXT. It is a rich text, which is able to include images and formatting. It can be created using XML like syntax, as seen in [[parseText]]. However using XML like syntax alone is not going to magically turn given string into structured text, it should be converted to TEXT first (see related commands bellow). Introduced with Armed Assault, does not refer to Cold War Crisis or Resistance. | Structured Text is just another RV Engine [[typeName | type]] TEXT. It is a rich text, which is able to include images and formatting. It can be created using XML like syntax, as seen in [[parseText]]. However using XML like syntax alone is not going to magically turn given string into structured text, it should be converted to TEXT first (see related commands bellow). Introduced with Armed Assault, does not refer to Cold War Crisis or Resistance. | ||
'''Related commands:''' [[text]], [[parseText]], [[composeText]], [[formatText]], [[setAttributes]], [[ctrlSetStructuredText]], [[hint]], [[hintC]] | '''Related commands:''' [[text]], [[parseText]], [[composeText]], [[formatText]], [[setAttributes]], [[ctrlSetStructuredText]], [[hint]], [[hintC]] | ||
== Markups == | == Markups == | ||
=== Syntax === | === Syntax === | ||
All attribute values should be encapsulated in double <tt>"..."</tt> or single <tt>'...'</tt> quotes. The following will log an ''.rpt'' error <tt>Unknown attribute .0</tt> and only number 2 would be taken into account: | All attribute values should be encapsulated in double <tt>"..."</tt> or single <tt>'...'</tt> quotes. The following will log an ''.rpt'' error <tt>Unknown attribute .0</tt> and only number 2 would be taken into account: | ||
<t size=2.0>Large text</t> | <t size=2.0>Large text</t> | ||
Line 16: | Line 16: | ||
=== Text === | === Text === | ||
Texts could be created with the following markup: | Texts could be created with the following markup: | ||
<t>Hello World!</t> | <t>Hello World!</t> | ||
Line 21: | Line 22: | ||
==== Non-breaking space ==== | ==== Non-breaking space ==== | ||
A non-breaking space, commonly known as '''&nbsp;''' shows as '''?''' in structured text control. Use '''&#160;''' as an alternative. | A non-breaking space, commonly known as '''&nbsp;''' shows as '''?''' in structured text control. Use '''&#160;''' as an alternative. | ||
<t>FIVE&#160;&#160;&#160;&#160;&#160;SPACES</t> | <t>FIVE&#160;&#160;&#160;&#160;&#160;SPACES</t> | ||
=== Line break === | === Line break === | ||
Line breaks could be created with either of the following markups: | Line breaks could be created with either of the following markups: | ||
<nowiki><br></nowiki> | <nowiki><br/></nowiki> | ||
<nowiki><br /></nowiki> | |||
<nowiki><br></br></nowiki> | <nowiki><br></br></nowiki> | ||
Or could also be inserted via the [[composeText]] / [[formatText]] and [[lineBreak]] commands. | Or could also be inserted via the [[composeText]] / [[formatText]] and [[lineBreak]] commands. | ||
=== Image === | === Image === | ||
Images could be created with either of the following markups: | Images could be created with either of the following markups: | ||
<nowiki><img image="\a3\Data_f\Flags\flag_Altis_co.paa"/></nowiki> | <nowiki><img image="\a3\Data_f\Flags\flag_Altis_co.paa"/></nowiki> | ||
<nowiki><img image="\a3\Data_f\Flags\flag_Altis_co.paa" /></nowiki> | |||
<nowiki><img image="\a3\Data_f\Flags\flag_Altis_co.paa"></img></nowiki> | <nowiki><img image="\a3\Data_f\Flags\flag_Altis_co.paa"></img></nowiki> | ||
Or could also be inserted via the [[composeText]] / [[formatText]] and [[image]] commands. | Or could also be inserted via the [[composeText]] / [[formatText]] and [[image]] commands. | ||
{{ArgTitle|Hyperlink|3|{{GVI|arma3}}}} | |||
Clickable links, similar to HTML hyperlinks, could be created with the following markup: | Clickable links, similar to HTML hyperlinks, could be created with the following markup: | ||
<nowiki><a href="http://arma3.com">Arma 3</a></nowiki> | <nowiki><a href="http://arma3.com">Arma 3</a></nowiki> | ||
By default the links are not underlined or have a different color to stand out. These attributes should be added separately.<br> | By default the links are not underlined or have a different color to stand out. These attributes should be added separately.<br> | ||
Note: ''&'' should be escaped by ''&amp;''. | Note: ''&'' should be escaped by ''&amp;''. | ||
<nowiki><a href="https://arma3.com/?foo&bar">Example URL A</a>/ | <nowiki><a href="https://arma3.com/?foo&bar">Example URL A</a></nowiki> {{cc|Won't work}} | ||
<a href="https://arma3.com/?foo&amp;bar">Example URL B</a> | <nowiki><a href="https://arma3.com/?foo&amp;bar">Example URL B</a></nowiki> {{cc|Will work}} | ||
== Attributes == | == Attributes == | ||
The following inline attributes are supported: | The following inline attributes are supported: | ||
* <tt>size</tt> | * <tt>size</tt> | ||
Line 60: | Line 69: | ||
=== Size === | === Size === | ||
The structured text <tt>size</tt> attribute is a multiplier for the value of control config property <tt>size</tt>. Default is 1, meaning that the height of letters will be equal to the value set in config. Setting this to 2 will make letters 2 times the size, 0.5 will make them half the size, etc. If the control is defined as follows: | The structured text <tt>size</tt> attribute is a multiplier for the value of control config property <tt>size</tt>. Default is 1, meaning that the height of letters will be equal to the value set in config. Setting this to 2 will make letters 2 times the size, 0.5 will make them half the size, etc. If the control is defined as follows: | ||
<syntaxhighlight lang="cpp">class MyStructuredText : RscStructuredText | <syntaxhighlight lang="cpp"> | ||
class MyStructuredText : RscStructuredText | |||
{ | { | ||
... | ... | ||
Line 68: | Line 79: | ||
size = 0.04; | size = 0.04; | ||
... | ... | ||
};</syntaxhighlight> | }; | ||
</syntaxhighlight> | |||
Then the structured text: | Then the structured text: | ||
Line 75: | Line 87: | ||
=== Color === | === Color === | ||
The <tt>color</tt> attribute is similar to HTML hex color and could either have format [http://en.wikipedia.org/wiki/RGB #RRGGBB] or [http://en.wikipedia.org/wiki/ARGB #AARRGGBB]. | The <tt>color</tt> attribute is similar to HTML hex color and could either have format [http://en.wikipedia.org/wiki/RGB #RRGGBB] or [http://en.wikipedia.org/wiki/ARGB #AARRGGBB]. | ||
<t color="#ff0000">Red text</t> | <t color="#ff0000">Red text</t> | ||
Line 80: | Line 93: | ||
=== Font === | === Font === | ||
The value for the <tt>font</tt> attribute could be found in <tt>CfgFontFamilies</tt> config. Some of the Arma 3 fonts: | The value for the <tt>font</tt> attribute could be found in <tt>CfgFontFamilies</tt> config. Some of the Arma 3 fonts: | ||
* <tt>EtelkaMonospacePro</tt> | * <tt>EtelkaMonospacePro</tt> | ||
Line 98: | Line 112: | ||
=== Horizontal Alignment === | === Horizontal Alignment === | ||
The <tt>align</tt> attribute controls horizontal text alignment and could be one of the following: | The <tt>align</tt> attribute controls horizontal text alignment and could be one of the following: | ||
* <tt>left</tt> | * <tt>left</tt> | ||
Line 105: | Line 120: | ||
=== Vertical Alignment === | === Vertical Alignment === | ||
The <tt>valign</tt> attribute controls vertical text alignment and could be one of the following: | The <tt>valign</tt> attribute controls vertical text alignment and could be one of the following: | ||
* <tt>top</tt> | * <tt>top</tt> | ||
Line 112: | Line 128: | ||
=== Underline === | === Underline === | ||
The <tt>underline</tt> attribute underlines each individual word in text. The normal spaces are not underlined. | The <tt>underline</tt> attribute underlines each individual word in text. The normal spaces are not underlined. | ||
<t underline="1">Underlined Text</t> | <t underline="1">Underlined Text</t> | ||
Line 122: | Line 139: | ||
=== Shadow === | === Shadow === | ||
The <tt>shadow</tt> attribute controls the appearance of shadow/outline around text and could be one of the following: | The <tt>shadow</tt> attribute controls the appearance of shadow/outline around text and could be one of the following: | ||
* <tt>0</tt> - normal text | * <tt>0</tt> - normal text | ||
Line 131: | Line 149: | ||
=== Shadow Color === | === Shadow Color === | ||
The <tt>shadowColor</tt> attribute controls the color of the shadow (not the outline, which is always black for some reason) | The <tt>shadowColor</tt> attribute controls the color of the shadow (not the outline, which is always black for some reason) | ||
<t shadow="1" shadowColor="#ff0000">Text with red shadow</t> | <t shadow="1" shadowColor="#ff0000">Text with red shadow</t> | ||
=== Shadow Offset === | === Shadow Offset === | ||
The <tt>shadowOffset</tt> attribute controls how far is the shadow offset from the text source (has no effect on the outline) | The <tt>shadowOffset</tt> attribute controls how far is the shadow offset from the text source (has no effect on the outline) | ||
<t shadow="1" shadowColor="#ff0000" shadowOffset="0.5">Text with red shadow, which is offset by half character size</t> | <t shadow="1" shadowColor="#ff0000" shadowOffset="0.5">Text with red shadow, which is offset by half character size</t> | ||
=== Link Color === | === Link Color === | ||
Will change the color of the text if the text is a link, otherwise the text color is unaffected. | Will change the color of the text if the text is a link, otherwise the text color is unaffected. | ||
<t colorLink="#0000ff"><a href="http://www.arma3.com/">Blue text</a></t> | <nowiki><t colorLink="#0000ff"><a href="http://www.arma3.com/">Blue text</a></t></nowiki> | ||
<a colorLink="#0000ff" href="http://www.arma3.com/">Blue text too</a> | <nowiki><a colorLink="#0000ff" href="http://www.arma3.com/">Blue text too</a></nowiki> | ||
<t colorLink="#0000ff">Normal text color</t> | <nowiki><t colorLink="#0000ff">Normal text color</t></nowiki> | ||
=== Hyperlink Reference === | === Hyperlink Reference === | ||
The <tt>href</tt> attribute is essential part of the <tt><nowiki><a></nowiki></tt> tag and should contain URL of the destination (See [[ | |||
The <tt>href</tt> attribute is essential part of the <tt><nowiki><a></nowiki></tt> tag and should contain URL of the destination (See [[#Hyperlink | Hyperlink]]). | |||
=== Image Reference === | === Image Reference === | ||
The <tt>image</tt> attribute is essential part of the <tt><nowiki><img></nowiki></tt> tag and should contain filepath to the image (See [[Structured_Text#Image | Image]]). | The <tt>image</tt> attribute is essential part of the <tt><nowiki><img></nowiki></tt> tag and should contain filepath to the image (See [[Structured_Text#Image | Image]]). | ||
== SQF Code Examples | |||
== SQF Code Examples == | |||
<tt>align</tt> <tt>valign</tt> demo: | <tt>align</tt> <tt>valign</tt> demo: | ||
<code>[[hint]] [[parseText]] "<t size='3'><t size='1' valign='top' align='right'>Top Right</t> <t size='1' valign='middle' align='center'>Middle Center</t> <t size='1' valign='bottom' align='left'>Bottom Left</t></t>";</code> | <code>[[hint]] [[parseText]] "<t size='3'><t size='1' valign='top' align='right'>Top Right</t> <t size='1' valign='middle' align='center'>Middle Center</t> <t size='1' valign='bottom' align='left'>Bottom Left</t></t>";</code> | ||
Line 159: | Line 184: | ||
_ctrl [[ctrlSetPosition]] [0,0,1,1]; | _ctrl [[ctrlSetPosition]] [0,0,1,1]; | ||
_ctrl [[ctrlCommit]] 0; | _ctrl [[ctrlCommit]] 0; | ||
_ctrl [[ctrlSetStructuredText]] [[parseText]] "<nowiki><a color='#00FF00' size='5' href='http://arma3.com'><img image='\A3\weapons_f\ammoBoxes\data\ui\map_AmmoBox_F_CA.paa'/></a></nowiki>";</code> | _ctrl [[ctrlSetStructuredText]] [[parseText]] "<nowiki><a color='#00FF00' size='5' href='http://arma3.com'><img image='\A3\weapons_f\ammoBoxes\data\ui\map_AmmoBox_F_CA.paa' /></a></nowiki>";</code> | ||
The use of [[composeText]]: | The use of [[composeText]]: | ||
<code>_separator = [[parseText]] "<nowiki><br>------------------------<br></nowiki>"; | <code>_separator = [[parseText]] "<nowiki><br />------------------------<br /></nowiki>"; | ||
_image = "\a3\Data_f\Flags\flag_Altis_co.paa"; | _image = "\a3\Data_f\Flags\flag_Altis_co.paa"; | ||
_txt1 = [[text]] "left"; | _txt1 = [[text]] "left"; | ||
Line 168: | Line 193: | ||
_txt2 = [[text]] "right"; | _txt2 = [[text]] "right"; | ||
_txt2 [[setAttributes]] ["align", "right"]; | _txt2 [[setAttributes]] ["align", "right"]; | ||
_structuredText = [[composeText]] <nowiki | _structuredText = [[composeText]] [<nowiki/>[[image]] _image, [[lineBreak]], [[lineBreak]], [[text]] "Heading Text", _separator, _txt1, _txt2]; | ||
[[hint]] _structuredText;</code> | [[hint]] _structuredText;</code> |
Revision as of 10:11, 19 March 2020
Template:SideTOC Structured Text is just another RV Engine type TEXT. It is a rich text, which is able to include images and formatting. It can be created using XML like syntax, as seen in parseText. However using XML like syntax alone is not going to magically turn given string into structured text, it should be converted to TEXT first (see related commands bellow). Introduced with Armed Assault, does not refer to Cold War Crisis or Resistance.
Related commands: text, parseText, composeText, formatText, setAttributes, ctrlSetStructuredText, hint, hintC
Markups
Syntax
All attribute values should be encapsulated in double "..." or single '...' quotes. The following will log an .rpt error Unknown attribute .0 and only number 2 would be taken into account:
<t size=2.0>Large text</t>
While both of the following are correct:
<t size="2.0">Large text</t> <t size='2.0'>Large text</t>
Text
Texts could be created with the following markup:
<t>Hello World!</t>
Or could also be inserted via the composeText / formatText and text commands.
Non-breaking space
A non-breaking space, commonly known as shows as ? in structured text control. Use   as an alternative.
<t>FIVE     SPACES</t>
Line break
Line breaks could be created with either of the following markups:
<br/> <br /> <br></br>
Or could also be inserted via the composeText / formatText and lineBreak commands.
Image
Images could be created with either of the following markups:
<img image="\a3\Data_f\Flags\flag_Altis_co.paa"/> <img image="\a3\Data_f\Flags\flag_Altis_co.paa" /> <img image="\a3\Data_f\Flags\flag_Altis_co.paa"></img>
Or could also be inserted via the composeText / formatText and image commands.
3
Clickable links, similar to HTML hyperlinks, could be created with the following markup:
<a href="http://arma3.com">Arma 3</a>
By default the links are not underlined or have a different color to stand out. These attributes should be added separately.
Note: & should be escaped by &.
<a href="https://arma3.com/?foo&bar">Example URL A</a> // Won't work <a href="https://arma3.com/?foo&bar">Example URL B</a> // Will work
Attributes
The following inline attributes are supported:
- size
- color
- font
- align
- valign
- underline
- shadow
- shadowColor
- shadowOffset
- colorLink
- href
- image
Size
The structured text size attribute is a multiplier for the value of control config property size. Default is 1, meaning that the height of letters will be equal to the value set in config. Setting this to 2 will make letters 2 times the size, 0.5 will make them half the size, etc. If the control is defined as follows:
class MyStructuredText : RscStructuredText
{
...
text = "Hello!";
size = 0.04;
...
};
Then the structured text:
_control ctrlSetStructuredText parseText "<t size='2'>Hello!</t>";
Will result in a total text size of 0.04 * 2 = 0.08. Unfortunately, there is no script command to set or get the value of config size property dynamically.
Color
The color attribute is similar to HTML hex color and could either have format #RRGGBB or #AARRGGBB.
<t color="#ff0000">Red text</t> <t color="#99ffffff">Semi-transparent white text</t>
Font
The value for the font attribute could be found in CfgFontFamilies config. Some of the Arma 3 fonts:
- EtelkaMonospacePro
- EtelkaMonospaceProBold
- EtelkaNarrowMediumPro
- LCD14
- LucidaConsoleB
- PuristaBold
- PuristaLight
- PuristaMedium
- PuristaSemibold
- RobotoCondensed
- RobotoCondensedBold
- RobotoCondensedLight
- TahomaB
<t font="PuristaBold">Bold Text</t> <t font="LCD14">Wicked looking text</t>
Horizontal Alignment
The align attribute controls horizontal text alignment and could be one of the following:
- left
- center
- right
<t align="right">Text displayed to the right</t>
Vertical Alignment
The valign attribute controls vertical text alignment and could be one of the following:
- top
- middle
- bottom
<t valign="bottom">Text displayed at the bottom</t>
Underline
The underline attribute underlines each individual word in text. The normal spaces are not underlined.
<t underline="1">Underlined Text</t>
Shadow
The shadow attribute controls the appearance of shadow/outline around text and could be one of the following:
- 0 - normal text
- 1 - classic shadow (text ghosting below and to the right)
- 2 - outline (slight, always black, outline around characters)
<t shadow="0">Text with no shadow</t> <t shadow="1">Text with default black shadow</t> <t shadow="2">Text with default black outline</t>
Shadow Color
The shadowColor attribute controls the color of the shadow (not the outline, which is always black for some reason)
<t shadow="1" shadowColor="#ff0000">Text with red shadow</t>
Shadow Offset
The shadowOffset attribute controls how far is the shadow offset from the text source (has no effect on the outline)
<t shadow="1" shadowColor="#ff0000" shadowOffset="0.5">Text with red shadow, which is offset by half character size</t>
Link Color
Will change the color of the text if the text is a link, otherwise the text color is unaffected.
<t colorLink="#0000ff"><a href="http://www.arma3.com/">Blue text</a></t> <a colorLink="#0000ff" href="http://www.arma3.com/">Blue text too</a> <t colorLink="#0000ff">Normal text color</t>
Hyperlink Reference
The href attribute is essential part of the <a> tag and should contain URL of the destination (See Hyperlink).
Image Reference
The image attribute is essential part of the <img> tag and should contain filepath to the image (See Image).
SQF Code Examples
align valign demo:
hint parseText "<t size='3'><t size='1' valign='top' align='right'>Top Right</t> <t size='1' valign='middle' align='center'>Middle Center</t> <t size='1' valign='bottom' align='left'>Bottom Left</t></t>";
Create clickable image:
_ctrl = findDisplay 46 createDisplay "RscDisplayEmpty" ctrlCreate ["RscStructuredText", -1];
_ctrl ctrlSetPosition [0,0,1,1];
_ctrl ctrlCommit 0;
_ctrl ctrlSetStructuredText parseText "<a color='#00FF00' size='5' href='http://arma3.com'><img image='\A3\weapons_f\ammoBoxes\data\ui\map_AmmoBox_F_CA.paa' /></a>";
The use of composeText:
_separator = parseText "<br />------------------------<br />";
_image = "\a3\Data_f\Flags\flag_Altis_co.paa";
_txt1 = text "left";
_txt1 setAttributes ["align", "left"];
_txt2 = text "right";
_txt2 setAttributes ["align", "right"];
_structuredText = composeText [image _image, lineBreak, lineBreak, text "Heading Text", _separator, _txt1, _txt2];
hint _structuredText;