1
0
Fork 0
mirror of https://github.com/luanti-org/luanti.git synced 2025-08-01 17:38:41 +00:00

Formspec: add hypertext element

This commit is contained in:
Pierre-Yves Rollo 2019-09-10 15:11:26 +02:00 committed by SmallJoker
parent 8697090b35
commit 72416a6a1f
22 changed files with 1792 additions and 79 deletions

View file

@ -2189,8 +2189,13 @@ Elements
half a coordinate. With the old system, newlines are spaced 2/5 of
an inventory slot.
### `vertlabel[<X>,<Y>;<label>]`
### `hypertext[<X>,<Y>;<W>,<H>;<name>;<text>]`
* Displays a static formated text with hyperlinks.
* `x`, `y`, `w` and `h` work as per field
* `name` is the name of the field as returned in fields to `on_receive_fields` in case of action in text.
* `text` is the formatted text using `markup language` described below.
### `vertlabel[<X>,<Y>;<label>]`
* Textual label drawn vertically
* `label` is the text on the label
* **Note**: If the new coordinate system is enabled, vertlabels are
@ -2534,6 +2539,110 @@ Some types may inherit styles from parent types.
* noclip - boolean, set to true to allow the element to exceed formspec bounds.
* textcolor - color. Default white.
Markup language
---------------
Markup language used in `hypertext[]` elements uses tag that look like HTML tags. Some
tags can enclose text, they open with `<tagname>` and close with `</tagname>`.
Tags can have attributes, in that case, attributes are in the opening tag in
form of a key/value separated with equal signs. Attribute values should not be quoted.
These are the technically basic tags but see below for usual tags. Base tags are:
`<style color=... font=... size=...>...</style>`
Changes the style of the text.
* `color`: Text color. Given color is a `colorspec`.
* `size`: Text size.
* `font`: Text font (`mono` or `normal`).
`<global background=... margin=... valign=... color=... hovercolor=... size=... font=... halign=... >`
Sets global style.
Global only styles:
* `background`: Text background, a `colorspec` or `none`.
* `margin`: Page margins in pixel.
* `valign`: Text vertical alignment (`top`, `middle`, `bottom`).
Inheriting styles (affects child elements):
* `color`: Default text color. Given color is a `colorspec`.
* `hovercolor`: Color of <action> tags when mouse is over.
* `size`: Default text size.
* `font`: Default text font (`mono` or `normal`).
* `halign`: Default text horizontal alignment (`left`, `right`, `center`, `justify`).
This tag needs to be placed only once as it changes the global settings of the
text. Anyway, if several tags are placed, each changed will be made in the order
tags appear.
`<tag name=... color=... hovercolor=... font=... size=...>`
Defines or redefines tag style. This can be used to define new tags.
* `name`: Name of the tag to define or change.
* `color`: Text color. Given color is a `colorspec`.
* `hovercolor`: Text color when element hovered (only for `action` tags). Given color is a `colorspec`.
* `size`: Text size.
* `font`: Text font (`mono` or `normal`).
Following tags are the usual tags for text layout. They are defined by default.
Other tags can be added using `<tag ...>` tag.
`<normal>...</normal>`: Normal size text
`<big>...</big>`: Big text
`<bigger>...</bigger>`: Bigger text
`<center>...</center>`: Centered text
`<left>...</left>`: Left-aligned text
`<right>...</right>`: Right-aligned text
`<justify>...</justify>`: Justified text
`<mono>...</mono>`: Monospaced font
`<b>...</b>`, `<i>...</i>`, `<u>...</u>`: Bold, italic, underline styles.
`<action name=...>...</action>`
Make that text a clickable text triggering an action.
* `name`: Name of the action (mandatory).
When clicked, the formspec is send to the server. The value of the text field
sent to `on_player_receive_fields` will be "action:" concatenated to the action
name.
`<img name=... float=... width=... height=...>`
Draws an image which is present in the client media cache.
* `name`: Name of the texture (mandatory).
* `float`: If present, makes the image floating (`left` or `right`).
* `width`: Force image width instead of taking texture width.
* `height`: Force image height instead of taking texture height.
If only width or height given, texture aspect is kept.
`<item name=... float=... width=... height=... rotate=...>`
Draws an item image.
* `name`: Item string of the item to draw (mandatory).
* `float`: If present, makes the image floating (`left` or `right`).
* `width`: Item image width.
* `height`: Item image height.
* `rotate`: Rotate item image if set to `yes` or `X,Y,Z`. X, Y and Z being
rotation speeds in percent of standard speed (-1000 to 1000). Works only if
`inventory_items_animations` is set to true.
* `angle`: Angle in which the item image is shown. Value has `X,Y,Z` form.
X, Y and Z being angles around each three axes. Works only if
`inventory_items_animations` is set to true.
Inventory
=========
@ -2557,7 +2666,6 @@ Player Inventory lists
* Is not created automatically, use `InvRef:set_size`
* Is only used to enhance the empty hand's tool capabilities
Colors
======