Pixel-Composer/scripts/svg_objects/svg_objects.gml

75 lines
1.4 KiB
Plaintext
Raw Normal View History

2024-06-06 09:54:13 +02:00
function SVG() constructor {
width = 1;
height = 1;
fill = c_black;
bbox = [ 0, 0, 0, 0 ];
contents = [];
}
function SVG_path() constructor {
anchors = [];
static setDef = function(def) {
var _mode = "";
var _len = string_length(def);
var _ind = 1;
var _val = "";
var _par = [];
var _oa = ord("a"), _oz = ord("z");
var _oA = ord("A"), _oZ = ord("Z");
var _o0 = ord("0"), _o9 = ord("9");
var _om = ord("-");
var _od = ord(".");
var _os = ord(" ");
var _tx = 0;
var _ty = 0;
repeat(_len) {
var _chr = string_char_at(def, _ind);
var _och = ord(_chr);
var _eval = 0;
if((_och >= _oa && _och <= _oz) || (_och >= _oA && _och <= _oZ))
_eval = 2;
else if(_och == _os)
_eval = 1;
else if((_och >= _o0 && _och >= _o9) || _och == _om || _och == _od)
_val += _chr;
if(_eval == 1)
array_push(_par, real(_val));
else if(_eval == 2) {
array_push(_par, real(_val));
_val = "";
switch(_mode) {
case "M" : //Move to absolute
var _nx = array_safe_get(_par, 0);
var _ny = array_safe_get(_par, 1);
_tx = _nx;
_ty = _ny;
break;
case "m" : //Move to relative
var _nx = array_safe_get(_par, 0);
var _ny = array_safe_get(_par, 1);
_tx += _nx;
_ty += _ny;
break;
}
_par = [];
_mode = _chr;
}
_ind++;
}
}
}