Geom::Point ArrayParam<Geom::Point>::readsvg(const gchar * str) { gchar ** strarray = g_strsplit(str, ",", 2); double newx, newy; unsigned int success = sp_svg_number_read_d(strarray[0], &newx); success += sp_svg_number_read_d(strarray[1], &newy); g_strfreev (strarray); if (success == 2) { return Geom::Point(newx, newy); } return Geom::Point(Geom::infinity(),Geom::infinity()); }
bool PointParam::param_readSVGValue(const gchar * strvalue) { gchar ** strarray = g_strsplit(strvalue, ",", 2); double newx, newy; unsigned int success = sp_svg_number_read_d(strarray[0], &newx); success += sp_svg_number_read_d(strarray[1], &newy); g_strfreev (strarray); if (success == 2) { param_setValue( Geom::Point(newx, newy) ); return true; } return false; }
double ArrayParam<double>::readsvg(const gchar * str) { double newx = Geom::infinity(); sp_svg_number_read_d(str, &newx); return newx; }
bool ScalarParam::param_readSVGValue(const gchar * strvalue) { double newval; unsigned int success = sp_svg_number_read_d(strvalue, &newval); if (success == 1) { param_set_value(newval); return true; } return false; }
bool VectorParam::param_readSVGValue(const gchar * strvalue) { gchar ** strarray = g_strsplit(strvalue, ",", 4); double val[4]; unsigned int i = 0; while (strarray[i] && i < 4) { if (sp_svg_number_read_d(strarray[i], &val[i]) != 0) { i++; } else { break; } } g_strfreev (strarray); if (i == 4) { setOrigin( Geom::Point(val[0], val[1]) ); setVector( Geom::Point(val[2], val[3]) ); return true; } return false; }
static void sp_guide_set (SPObject *object, unsigned int key, const gchar *value) { SPGuide *guide; guide = SP_GUIDE (object); switch (key) { case SP_ATTR_ORIENTATION: if (value && !strcmp (value, "horizontal")) { guide->orientation = SP_GUIDE_HORIZONTAL; } else { guide->orientation = SP_GUIDE_VERTICAL; } break; case SP_ATTR_POSITION: sp_svg_number_read_d (value, &guide->position); break; default: if (((SPObjectClass *) (parent_class))->set) ((SPObjectClass *) (parent_class))->set (object, key, value); break; } }
void SPGenericEllipse::set(unsigned int key, gchar const *value) { // There are multiple ways to set internal cx, cy, rx, and ry (via SVG attributes or Sodipodi // attributes) thus we don't want to unset them if a read fails (e.g., when we explicitly clear // an attribute by setting it to NULL). SVGLength t; switch (key) { case SP_ATTR_CX: case SP_ATTR_SODIPODI_CX: if( t.read(value) ) cx = t; this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_CY: case SP_ATTR_SODIPODI_CY: if( t.read(value) ) cy = t; this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_RX: case SP_ATTR_SODIPODI_RX: if( t.read(value) && t.value > 0.0 ) this->rx = t; this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_RY: case SP_ATTR_SODIPODI_RY: if( t.read(value) && t.value > 0.0 ) this->ry = t; this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_R: if( t.read(value) && t.value > 0.0 ) { this->ry = this->rx = t; } this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_START: if (value) { sp_svg_number_read_d(value, &this->start); } else { this->start = 0; } this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_END: if (value) { sp_svg_number_read_d(value, &this->end); } else { this->end = 2 * M_PI; } this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_OPEN: this->_closed = (!value); this->requestDisplayUpdate(SP_OBJECT_MODIFIED_FLAG); break; default: SPShape::set(key, value); break; } }
static void sp_arc_set (SPObject *object, unsigned int key, const gchar *value) { SPGenericEllipse *ge; SPVersion version; ge = SP_GENERICELLIPSE (object); version = sp_object_get_sodipodi_version (object); if (sp_version_inside_range (version, 0, 0, 0, 25)) { switch (key) { case SP_ATTR_CX: key = SP_ATTR_SODIPODI_CX; break; case SP_ATTR_CY: key = SP_ATTR_SODIPODI_CY; break; case SP_ATTR_RX: key = SP_ATTR_SODIPODI_RX; break; case SP_ATTR_RY: key = SP_ATTR_SODIPODI_RY; break; } } switch (key) { case SP_ATTR_SODIPODI_CX: if (!sp_svg_length_read (value, &ge->cx)) { sp_svg_length_unset (&ge->cx, SP_SVG_UNIT_NONE, 0.0, 0.0); } sp_object_request_update (object, SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_CY: if (!sp_svg_length_read (value, &ge->cy)) { sp_svg_length_unset (&ge->cy, SP_SVG_UNIT_NONE, 0.0, 0.0); } sp_object_request_update (object, SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_RX: if (!sp_svg_length_read (value, &ge->rx) || (ge->rx.computed <= 0.0)) { sp_svg_length_unset (&ge->rx, SP_SVG_UNIT_NONE, 0.0, 0.0); } sp_object_request_update (object, SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_RY: if (!sp_svg_length_read (value, &ge->ry) || (ge->ry.computed <= 0.0)) { sp_svg_length_unset (&ge->ry, SP_SVG_UNIT_NONE, 0.0, 0.0); } sp_object_request_update (object, SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_START: sp_svg_number_read_d (value, &ge->start); sp_object_request_update (object, SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_END: sp_svg_number_read_d (value, &ge->end); sp_object_request_update (object, SP_OBJECT_MODIFIED_FLAG); break; case SP_ATTR_SODIPODI_OPEN: ge->closed = (!value); sp_object_request_update (object, SP_OBJECT_MODIFIED_FLAG); break; default: if (((SPObjectClass *) arc_parent_class)->set) ((SPObjectClass *) arc_parent_class)->set (object, key, value); break; } }