919N/A#include "stringstream.h"
561N/Astatic unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, float *val, float *computed, char **next);
*val = v;
if (!str) {
*val = v;
} while (val > 0u);
buf[i] = 0;
if (val < 0) {
static unsigned sp_svg_number_write_d(gchar *buf, int bufLen, double val, unsigned int tprec, unsigned int fprec)
if (int_dival != 0) {
end_i = i;
return end_i;
unsigned int sp_svg_number_write_de(gchar *buf, int bufLen, double val, unsigned int tprec, int min_exp)
unsigned int maxnumdigitsWithoutExp = // This doesn't include the sign because it is included in either representation
unsigned int maxnumdigitsWithExp = tprec + ( eval<0 ? 4 : 3 ); // It's not necessary to take larger exponents into account, because then maxnumdigitsWithoutExp is DEFINITELY larger
: _set(false)
, value(0)
, computed(0)
if (!str) {
_set = true;
unit = u;
value = v;
computed = c;
if (!str) {
if (svg_length_absolute_unit(u) == false) {
_set = true;
unit = u;
value = v;
computed = c;
if (!str) {
float computed;
if (!str) {
float value;
float computed;
next++;
return list;
static unsigned sp_svg_length_read_lff(gchar const *str, SVGLength::Unit *unit, float *val, float *computed, char **next)
/* note: this function is sometimes fed a string with several consecutive numbers, e.g. by sp_svg_length_list_read.
So after the number, the string does not necessarily have a \0 or a unit, it might also contain a space or comma and then the next number!
if (!str) {
gchar const *e;
if (e == str) {
if (unit) {
if (val) {
*val = v;
if (computed) {
*computed = v;
if (next) {
} else if (!g_ascii_isalnum(e[0])) {
if (unit) {
if (val) {
if (computed) {
if (next) {
if (unit) {
if (val) {
*val = v;
if (computed) {
*computed = v;
if (next) {
*next = (char *) e;
switch (uval) {
if (unit) {
if (computed) {
*computed = v;
if (unit) {
if (computed) {
if (unit) {
if (computed) {
if (unit) {
if (computed) {
if (unit) {
if (computed) {
if (unit) {
if (computed) {
if (unit) {
if (unit) {
if (val) {
*val = v;
if (next) {
unsigned int sp_svg_length_read_ldd(gchar const *str, SVGLength::Unit *unit, double *value, double *computed)
if (value) {
*value = a;
if (computed) {
*computed = b;
return sp_svg_length_write_with_units(*this);
_set = true;
unit = u;
switch( unit ) {
case NONE:
case PX:
case EM:
case EX:
case PERCENT:
case PT:
case PC:
case MM:
case CM:
case INCH:
value = v;
_set = true;
unit = u;
value = v;
computed = c;
_set = false;
unit = u;
value = v;
computed = c;
return def;
while (isspace(*u)) {
switch (unit) {
unset(u, v, c);