vg4->font->totext()
Create text image.
SYNTAX
struct VG_Image *
vg4->font->totext(const char *text,
const char *dparam,
const char *dirname,
struct VG_Hash *hvar,
struct VG_Hash **htags)
FUNCTION PARAMETERS
text | Text |
dparam | Default parameters for text (header), or NULL E.g.: "[bgcolor=0x444444 maxwidth=80%]" |
dirname | Start-path from where to load subsequent files, or NULL = actual path |
hvar | Hash with variables, or NULL hash-format: - key: variable name - value: variable value |
htags | For returning position of tagged boxes and sub-tags, or NULL hash-format: - key: box-tag value or sub-tag value - value: position as rectangle (struct VG_Rect) |
RETURN VALUE
Returns the text as image
or NULL = Error
DESCRIPTION
Create text image.
Additional to normal text, the contents of text may contain control-commands:
%{ <command> [<header>] : <data> %}
Examples:
- %{txt: My text%}
- %{txt[border=4]:
My other text
with two lines
%}
Control-commands may be nested.
When they are executed, they return an image, called a box.
A missing start-control-command assumes command txt.
The filename of images, text files or sprites to be loaded in the text
are searched relatively to dirname.
If a filename of a file to be loaded begins with a '/',
it is searched from the current directory.
Variables are taken from the parameter hvar.
Their values are represented by the format $(<variable name>).
Control-commands:
-----------------
- txtfile: load another text file
data = path to text file to load
(data may contain variables,
- a specific automatic variable LANG contains the locale,
e.g.: %{txtfile: myfile_$(LANG).txt%}
)
Example: %{txtfile: another_text.txt%}
- txt: text data
data = embedded text
Example: %{txt: Hello World%}
- imgfile: load an image from file
data = path to image file to load
(data may contain variables,
- a specific automatic variable LANG contains the locale,
e.g.: %{imgfile: myfile_$(LANG).bmp%}
)
Example: %{imgfile: images/myimg.bmp%}
- img: load image from embedded data
data = embedded base64-coded image
Example: %{img: R0lGODlhQAHIA...BZIAAA7%}
- mlang: multilanguage scope:key, will be replaced by appropriate text
data = <scope> : <key>
(data may contain variables)
Example: %{mlang: myscope:mykey%}
- var: variable: will be replaced by the variable value (from parameter hvar)
data = variable name
Example: %{var: myvar%}
- box: a box just containing control-commands
data = control-commands
Example: %{box:
%{imgfile: me.bmp%} %{txt[fgcolor=0xff0000]: That's me%}
%}
- table: a table
the header needs cells
data = cell control-commands
Example: %{table[cells=50,50 fullraster=0x888888]:
%{cell: line1 row1%} %{cell: line1 row2%}
%{cell: line2 row1%} %{cell: line2 row2%}
%}
- cell: a cell of a table (only as sub-command to table)
data = embedded text
Example: see table
- nl: a newline (only in txt and box, without header and data)
Example: %{nl%}
- sp: a space (only in txt and box, without header and data)
Example: %{sp%}
Header:
-------
Nearly each control-command may have a header,
which comes after the control-command and before the colon in square brackets:
%{txt[headerkey1=headervalue1 headerkey2=headervalue2]: data %}
Header values may contain variables.
Most missing header pairs inherit from the parent control-command.
Following header pairs are defined:
- background image
- key: bgimg
- value: path to image file to load
- default: empty
- inherited: no
Example: %{txt[bgimg=images/background.bmp]: some text%}
- greatest width of box
- key: maxwidth
- value: width in pixels or percent (e.g. "50" or "50%"), or 0 = no limit
- default: width of parent, or window if no parent
- inherited: yes, and can be overwritten only by lesser values
Example: %{txt[maxwidth=80%]: some text%}
- width of box
- key: boxwidth
- value: width in pixels or percent (e.g. "50" or "50%"), or 0 = no limit
- default: 0 (no limit)
- inherited: yes, but as header "maxwidth"
Example: %{txt[boxwidth=80%]: some text%}
- height of box (if no background image)
- key: boxheight
- value: height in pixels, or 0 = no limit
- default: 0 (no limit)
- inherited: no
Example: %{txt[boxheight=150]: some text%}
- border in pixels in background color around (outside) box
- key: border
- value: border in pixels
- default: 0 (no border)
- inherited: no
Example: %{txt[border=5]: some text%}
- rectangle around box
- key: rectcolor
- value: color as hex number (0xRRGGBB), or "no"
- default: "no"
- inherited: yes
Example: %{txt[rectcolor=0xff0000]: some text%}
- font
- key: font
- value: font name
- default: sys:low for VG_WINDOW_SIZE_LOW, sys:high for VG_WINDOW_SIZE_HIGH
- inherited: yes
Example: %{txt[font=sys:low]: some text%}
- text color
- key: fgcolor
- value: color as hex number (0xRRGGBB)
- default: 0xffffff
- inherited: yes
Example: %{txt[fgcolor=0xffff00]: some text%}
- background color
- key: bgcolor
- value: color as hex number (0xRRGGBB), or "transparent"
- default: "transparent"
- inherited: yes
Example: %{txt[bgcolor=transparent]: some text%}
- whether font-characters are bold
- key: bold
- value: "no", "off", "0" or "yes", "on", "1"
- default: "no"
- inherited: yes
Example: %{txt[bold=yes]: some text%}
- line pitch to add (in percent of default pitch)
- key: linepitch
- value: line pitch to add, e.g. "100" will be twice of default pitch
- default: 0
- inherited: yes
Example: %{txt[linepitch=150]: some text%}
- orientation of embedded text
- key: orientation
- value: "left", "center", "right" or "block"
The value may have an additional orientation appended with '+',
which will be used, if a textline exceeds the width of boxwidth or maxwidth,
e.g.: "center+right"
=> text is centered, but if greater than box it is right-orientated
- default: "left"
- inherited: yes
Example: %{txt[orientation=center]: some text%}
- vertical orientation, only if bgimg or boxheight is set, or in table-cell
- key: v-orientation
- value: "top", "center" or "bottom"
The value may have an additional vertical orientation appended with '+',
which will be used, if the text exceeds the boundaries of bgimg or boxheight,
e.g.: "top+bottom"
=> text is on top, but if greater than boxheight it is on bottom
- default: "center"
- inherited: no
Example: %{txt[boxheight=100 v-orientation=top]: some text%}
- not wrapping lines on separation character
- key: nowrap
- value: "no", "off", "0" or "yes", "on", "1"
- default: "no"
- inherited: yes
Example: %{txt[nowrap=on]: some text%}
- box-tag, will tag the box and return it in parameter htags
- key: tag
- value: arbitrary string, which serves as key for htags
- default: empty
- inherited: no
Example: %{txt[tag=yellowbox]: some text%}
=> sets to htags: yellowbox = <rectangle of text-box>
- box-sub-tag, will tag a part of the box and return it in parameter htags, can be repeated
- key: utag-*, where "*" is an arbitrary string and serves as key for htags
- value: rectangle in the format: "<x>+<w>,<y>+<h>"
- default: none
- inherited: no
Example: %{imgfile[utag-yellowbox=5+10,20+70 utag-redbox=55+10,20+70]: myimg.bmp%}
=> sets to htags: yellowbox = <rectangle 5+10,20+70 within rectangle of image-box>
redbox = <rectangle 55+10,20+70 within rectangle of image-box>
- only for command table
- cells of a table
- key: cells
- value: comma-separated percent-size of each cell,
e.g. "20,20,50" has three cells in a line,
the first's size is 20% of the table,
the seconds's size is 20% of the table,
the third's size is 50% of the table,
the missing 10% will be used for cell-distances in background color
- there is no default, it must exist for a table
- inherited: no
- raster of a table (will correct cell-sizes to 100% and clear linepitch)
- key: for a line raster: lineraster
for a full raster: fullraster
- value: raster-color: hex number (0xRRGGBB)
- default: no raster
- inherited: no
Example: %{table[cells=20,20,50 fullraster=0x888888]: ... %}
Aliases:
--------
Aliases are appended to the control-command after a &
e.g. %{txt¢er: Text is centered%}
Following aliases are defined, internally setting header values
- left orientation
- alias: left
- sets header to: [orientation=left boxwidth=100%]
- right orientation
- alias: right
- sets header to: [orientation=right boxwidth=100%]
- centered orientation
- alias: center
- sets header to: [orientation=center boxwidth=100%]
- block orientation
- alias: block
- sets header to: [orientation=block boxwidth=100%]
Example:
%{txt&right[fgcolor=0x008844 bold=yes]: Hello world%}
is identical to
%{txt[orientation=right boxwidth=100% fgcolor=0x008844 bold=yes]: Hello world%}
EXAMPLE
/* Simple example for a text with control-commands */ Hello World. This is my first text. Here you see my dog: %{imgfile: mydog.bmp%}. And that is my cat: %{imgfile: mycat.bmp%}. Table of differences: %{table[cells=50,50 fullraster=0x888888]: %{cell[bold=on]: My dog%} %{cell[bold=on]: My cat%} %{cell: Sleeps at night%} %{cell: Active at night%} %{cell: Barks%} %{cell: Does not bark%} %{cell: Obeys%} %{cell: Does not obey%} %}
SEE ALSO
vg4->font->loadtext()
vg4 text show -h