DxGetTextSize: Difference between revisions

From Multi Theft Auto: Wiki
Jump to navigation Jump to search
No edit summary
m (Fix bad return type)
Line 7: Line 7:
==Syntax==
==Syntax==
<syntaxhighlight lang="lua">
<syntaxhighlight lang="lua">
float, float dxGetTextSize ( string text, [float width=0, float scaleXY=1.0, float=scaleY=1.0, mixed font="default", bool wordBreak=false, bool colorCoded=false] )
Vector2 dxGetTextSize ( string text [, float width = 0, float scaleX = 1.0, float scaleY = 1.0, mixed font = "default", bool wordBreak = false, bool colorCoded = false ] )
</syntaxhighlight>
</syntaxhighlight>
{{OOP|This syntax requires you to ignore the font argument above| [[Element/DX font|font]]:getSize}}
{{OOP|This syntax requires you to ignore the font argument above| [[Element/DX font|font]]:getSize}}
Line 16: Line 16:
{{OptionalArg}}
{{OptionalArg}}
* '''width:''' The width of the text. Use with ''wordBreak = true''.
* '''width:''' The width of the text. Use with ''wordBreak = true''.
* '''scale:''' The size of the text. Can (optionally) be specified as two floats. i.e. '''scaleX, scaleY'''
* '''scaleX:''' The scale of the text. Scale can be specified as a [[Vector2]].
* '''scaleY:''' The scale of the text. Scale can be specified as a [[Vector2]].
* '''font:''' Either a custom [[DX font]] element or the name of a built-in dx font:
* '''font:''' Either a custom [[DX font]] element or the name of a built-in dx font:
{{DxFonts}}
{{DxFonts}}
* '''wordBreak:''' If set to ''true'', the text will wrap to a new line whenever it reaches the right side of the bounding box. If ''false'', the text will always be completely on one line.
* '''wordBreak:''' If set to ''true'', the text will wrap to a new line whenever it reaches the right side of the bounding box. If ''false'', the text will always be completely on one line.
* '''bColorCoded:''' Should we exclude color codes from the width? (false will include the hex in the length)
* '''colorCoded:''' Should we exclude color codes from the width? False will include the hex in the length.


===Returns===
===Returns===
Returns two floats representing the width and height of the text (in pixels).  
Returns a [[Vector2]] representing the width and height of the text in pixels.


==Example==
==Example==
Line 36: Line 37:


function renderMessage()
function renderMessage()
     local textWidth, textHeight = dxGetTextSize(message, messageWidth, 2, "default", true)
     local textSize = dxGetTextSize(message, messageWidth, 2, "default", true)
    local textWidth, textHeight = textSize.x, textSize.y
     local x = screenWidth - textWidth - messageOffset
     local x = screenWidth - textWidth - messageOffset
     local y = screenHeight - textHeight - messageOffset
     local y = screenHeight - textHeight - messageOffset

Revision as of 12:35, 7 February 2021

This function retrieves the theoretical width and height (in pixels) of a certain piece of text, if it were to be drawn using dxDrawText.

NOTE: This function already takes the client's screen resolution into account.

Syntax

Vector2 dxGetTextSize ( string text [, float width = 0, float scaleX = 1.0, float scaleY = 1.0, mixed font = "default", bool wordBreak = false, bool colorCoded = false ] )

OOP Syntax Help! I don't understand this!

Note: This syntax requires you to ignore the font argument above
Method: font:getSize(...)


Required Arguments

  • text: A string representing the text for which you wish to retrieve with width for.

Optional Arguments

NOTE: When using optional arguments, you might need to supply all arguments before the one you wish to use. For more information on optional arguments, see optional arguments.

  • width: The width of the text. Use with wordBreak = true.
  • scaleX: The scale of the text. Scale can be specified as a Vector2.
  • scaleY: The scale of the text. Scale can be specified as a Vector2.
  • font: Either a custom DX font element or the name of a built-in dx font:
    • "default": Tahoma
    • "default-bold": Tahoma Bold
    • "clear": Verdana
    • "arial": Arial
    • "sans": Microsoft Sans Serif
    • "pricedown": Pricedown (GTA's theme text)
    • "bankgothic": Bank Gothic Medium
    • "diploma": Diploma Regular
    • "beckett": Beckett Regular
    • "unifont": Unifont
  • wordBreak: If set to true, the text will wrap to a new line whenever it reaches the right side of the bounding box. If false, the text will always be completely on one line.
  • colorCoded: Should we exclude color codes from the width? False will include the hex in the length.

Returns

Returns a Vector2 representing the width and height of the text in pixels.

Example

This example draws a text with black background at the bottom right corner of the screen.

local screenWidth, screenHeight = guiGetScreenSize()

local message = "Incredibly huuuuuuuge message"
local messageOffset = 32
local messagePadding = 16
local messageWidth = 256

function renderMessage()
    local textSize = dxGetTextSize(message, messageWidth, 2, "default", true)
    local textWidth, textHeight = textSize.x, textSize.y
    local x = screenWidth - textWidth - messageOffset
    local y = screenHeight - textHeight - messageOffset
    dxDrawRectangle(x - messagePadding, y - messagePadding, textWidth + messagePadding * 2, textHeight + messagePadding * 2, 0x80000000) -- draw background
    dxDrawText(message, x, y, x + textWidth, y + textHeight, 0xFFFFFFFF, 2, "default", "left", "top", false, true)
end
addEventHandler("onClientRender", root, renderMessage)
Example

Requirements

Minimum server version n/a
Minimum client version 1.5.7-9.20447

Note: Using this feature requires the resource to have the above minimum version declared in the meta.xml <min_mta_version> section. e.g. <min_mta_version client="1.5.7-9.20447" />

See Also