SvgCreate: Difference between revisions
Jump to navigation
Jump to search
(Initial page creation) |
(Add args) |
||
Line 3: | Line 3: | ||
==Syntax== | ==Syntax== | ||
<syntaxhighlight lang="lua">svg svgCreate ( int width, int height [, string pathOrRawdata, function callback ( bool didLoad ) ] )</syntaxhighlight> | <syntaxhighlight lang="lua">svg svgCreate ( int width, int height [, string pathOrRawdata, function callback ( bool didLoad ) ] )</syntaxhighlight> | ||
===Required Arguments=== | |||
*'''width:''' Desired width, preferably power of two (16, 32, 64 etc.), maximum is 4096 | |||
*'''height :''' Desired height, preferably power of two (16, 32, 64 etc.), maximum is 4096 | |||
===Optional Arguments=== | |||
{{OptionalArg}} | |||
*'''pathorRawData:''' A string representing the path to your SVG file, or the raw SVG data | |||
*'''callback:''' A callback function which is invoked upon SVG document and texture creation, useful for knowing when the SVG element is ready | |||
===Returns=== | ===Returns=== | ||
* Returns an ''svg'' [[element]] if the SVG was created successfully, ''false'' otherwise. | * Returns an ''svg'' [[element]] if the SVG was created successfully, ''false'' otherwise. |
Revision as of 17:42, 26 September 2021
Creates an SVG from size (blank document), filepath or raw data.
Syntax
svg svgCreate ( int width, int height [, string pathOrRawdata, function callback ( bool didLoad ) ] )
Required Arguments
- width: Desired width, preferably power of two (16, 32, 64 etc.), maximum is 4096
- height : Desired height, preferably power of two (16, 32, 64 etc.), maximum is 4096
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.
- pathorRawData: A string representing the path to your SVG file, or the raw SVG data
- callback: A callback function which is invoked upon SVG document and texture creation, useful for knowing when the SVG element is ready
Returns
- Returns an svg element if the SVG was created successfully, false otherwise.
Example
The example below shows how you can load an SVG from raw data (or path) and manipulate the underlying XML document.
IMPORTANT: Depending on your implementation, callback usage may be necessary to ensure the SVG texture and XML document are ready.
-- This could also be a file, with the path provided to svgCreate local rawSvgData = [[ <svg viewBox="0 0 500 500" xmlns="http://www.w3.org/2000/svg"> <circle cx="250" cy="250" r="250" fill="#0fc0fc" /> </svg> ]] local svg function init() -- Create an SVG containing a circle, using the raw XML data above svg = svgCreate(500, 500, rawSvgData, function(didLoad) if (not didLoad) then -- SVG failed to load, so don't continue return end onSvgLoad(svg) end) end addEventHandler("onClientResourceStart", resourceRoot, init) -- Implement a callback for SVG load, to manipulate the underlying XML document function onSvgLoad(svg) -- Get the XML document from our SVG local svgXML = svgGetDocumentXML(svg) -- Add a rect SVG node, positioned center of the document local rect = xmlCreateChild(svgXML, "rect") xmlNodeSetAttribute(rect, "x", "25%") xmlNodeSetAttribute(rect, "y", "25%") xmlNodeSetAttribute(rect, "width", "50%") xmlNodeSetAttribute(rect, "height", "50%") xmlNodeSetAttribute(rect, "fill", "#00749b") -- Apply our XML to the SVG, and start drawing via callback return svgSetDocumentXML(svg, svgXML, function() addEventHandler("onClientRender", root, render) end) end function render() local width, height = svgGetSize(svg) dxDrawImage(0, 0, width, height, svg, 0, 0, 0, tocolor(255, 255, 255), false) end -- Add a keybind which sets the SVG to a random size bindKey("r", "down", function() if (not isElement(svg)) or (getElementType(svg) ~= "svg") then return false end local size = math.random(100, 500) svgSetSize(svg, size, size) end)
Requirements
This template will be deleted.
See Also