Difference between revisions of "Structured Text"

From Bohemia Interactive Community
Jump to navigation Jump to search
(Code Examples:: better example)
m (SQF Code Examples:)
Line 160: Line 160:
 
<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";
_txt = [[composeText]] <nowiki>[</nowiki>[[image]] _image, lineBreak, lineBreak, [[text]] "Heading Text", _separator, "Content"];
+
_txt = [[composeText]] <nowiki>[</nowiki>[[image]] _image, [[lineBreak]], [[lineBreak]], [[text]] "Heading Text", _separator, "Content"];
 
[[hint]] _txt;</code>
 
[[hint]] _txt;</code>

Revision as of 19:16, 13 January 2019

Description

Rich text, which is able to include images and formatting. It can be created using XML like syntax, as seen in parseText. Introduced with Armed Assault, does not refer to Cold War Crisis or Resistance.

Related commands: parseText, composeText, 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 and text commands.

Non-breaking space

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>

Line break

Line breaks could be created with either of the following markups:

<br/>
<br></br>

Or could also be inserted via the composeText 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>

Or could also be inserted via the composeText and image commands.

Hyperlink (Arma 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.

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>
If you would like to have have a continuous underline between words, use non-breaking spaces. This could be achieved in several ways:
  • Insertion from keyboard: Alt+255
  • Scripted method:

hint parseText format ["<t underline='1'>%1</t>", "Underlined Text" splitString " " joinString toString [160]]

  • Using HTML code:
hint parseText "<t underline='1'>Underlined&#160;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"; _txt = composeText [image _image, lineBreak, lineBreak, text "Heading Text", _separator, "Content"]; hint _txt;