_rsvg_css_normalize_length(): Use a LengthDir enum instead of chars for the 'dir' argument

Same as the last commit; we need an enum here.  This also fixes a bug where 'w'
was used mistakenly instead of 'h'.
parent b7768db1
......@@ -85,10 +85,10 @@ _set_source_rsvg_linear_gradient (RsvgDrawingCtx * ctx,
if (linear->obj_bbox)
_rsvg_push_view_box (ctx, 1., 1.);
pattern = cairo_pattern_create_linear (_rsvg_css_normalize_length (&linear->x1, ctx, 'h'),
_rsvg_css_normalize_length (&linear->y1, ctx, 'v'),
_rsvg_css_normalize_length (&linear->x2, ctx, 'h'),
_rsvg_css_normalize_length (&linear->y2, ctx, 'v'));
pattern = cairo_pattern_create_linear (_rsvg_css_normalize_length (&linear->x1, ctx, LENGTH_DIR_HORIZONTAL),
_rsvg_css_normalize_length (&linear->y1, ctx, LENGTH_DIR_VERTICAL),
_rsvg_css_normalize_length (&linear->x2, ctx, LENGTH_DIR_HORIZONTAL),
_rsvg_css_normalize_length (&linear->y2, ctx, LENGTH_DIR_VERTICAL));
if (linear->obj_bbox)
_rsvg_pop_view_box (ctx);
......@@ -130,11 +130,11 @@ _set_source_rsvg_radial_gradient (RsvgDrawingCtx * ctx,
if (radial->obj_bbox)
_rsvg_push_view_box (ctx, 1., 1.);
pattern = cairo_pattern_create_radial (_rsvg_css_normalize_length (&radial->fx, ctx, 'h'),
_rsvg_css_normalize_length (&radial->fy, ctx, 'v'), 0.0,
_rsvg_css_normalize_length (&radial->cx, ctx, 'h'),
_rsvg_css_normalize_length (&radial->cy, ctx, 'v'),
_rsvg_css_normalize_length (&radial->r, ctx, 'o'));
pattern = cairo_pattern_create_radial (_rsvg_css_normalize_length (&radial->fx, ctx, LENGTH_DIR_HORIZONTAL),
_rsvg_css_normalize_length (&radial->fy, ctx, LENGTH_DIR_VERTICAL), 0.0,
_rsvg_css_normalize_length (&radial->cx, ctx, LENGTH_DIR_HORIZONTAL),
_rsvg_css_normalize_length (&radial->cy, ctx, LENGTH_DIR_VERTICAL),
_rsvg_css_normalize_length (&radial->r, ctx, LENGTH_DIR_BOTH));
if (radial->obj_bbox)
_rsvg_pop_view_box (ctx);
......@@ -198,10 +198,10 @@ _set_source_rsvg_pattern (RsvgDrawingCtx * ctx,
if (rsvg_pattern->obj_bbox)
_rsvg_push_view_box (ctx, 1., 1.);
patternx = _rsvg_css_normalize_length (&rsvg_pattern->x, ctx, 'h');
patterny = _rsvg_css_normalize_length (&rsvg_pattern->y, ctx, 'v');
patternw = _rsvg_css_normalize_length (&rsvg_pattern->width, ctx, 'h');
patternh = _rsvg_css_normalize_length (&rsvg_pattern->height, ctx, 'v');
patternx = _rsvg_css_normalize_length (&rsvg_pattern->x, ctx, LENGTH_DIR_HORIZONTAL);
patterny = _rsvg_css_normalize_length (&rsvg_pattern->y, ctx, LENGTH_DIR_VERTICAL);
patternw = _rsvg_css_normalize_length (&rsvg_pattern->width, ctx, LENGTH_DIR_HORIZONTAL);
patternh = _rsvg_css_normalize_length (&rsvg_pattern->height, ctx, LENGTH_DIR_VERTICAL);
if (rsvg_pattern->obj_bbox)
_rsvg_pop_view_box (ctx);
......@@ -442,12 +442,12 @@ rsvg_cairo_render_pango_layout (RsvgDrawingCtx * ctx, PangoLayout * layout, doub
cairo_rotate (render->cr, -rotation);
pango_cairo_layout_path (render->cr, layout);
cairo_set_line_width (render->cr, _rsvg_css_normalize_length (&state->stroke_width, ctx, 'h'));
cairo_set_line_width (render->cr, _rsvg_css_normalize_length (&state->stroke_width, ctx, LENGTH_DIR_HORIZONTAL));
cairo_set_miter_limit (render->cr, state->miter_limit);
cairo_set_line_cap (render->cr, (cairo_line_cap_t) state->cap);
cairo_set_line_join (render->cr, (cairo_line_join_t) state->join);
cairo_set_dash (render->cr, state->dash.dash, state->dash.n_dash,
_rsvg_css_normalize_length (&state->dash.offset, ctx, 'o'));
_rsvg_css_normalize_length (&state->dash.offset, ctx, LENGTH_DIR_BOTH));
cairo_stroke (render->cr);
cairo_restore (render->cr);
}
......@@ -470,12 +470,12 @@ rsvg_cairo_render_path_builder (RsvgDrawingCtx * ctx, RsvgPathBuilder *builder)
_set_rsvg_affine (render, &state->affine);
cairo_set_line_width (cr, _rsvg_css_normalize_length (&state->stroke_width, ctx, 'h'));
cairo_set_line_width (cr, _rsvg_css_normalize_length (&state->stroke_width, ctx, LENGTH_DIR_HORIZONTAL));
cairo_set_miter_limit (cr, state->miter_limit);
cairo_set_line_cap (cr, (cairo_line_cap_t) state->cap);
cairo_set_line_join (cr, (cairo_line_join_t) state->join);
cairo_set_dash (cr, state->dash.dash, state->dash.n_dash,
_rsvg_css_normalize_length (&state->dash.offset, ctx, 'o'));
_rsvg_css_normalize_length (&state->dash.offset, ctx, LENGTH_DIR_BOTH));
rsvg_path_builder_add_to_cairo_context (builder, cr);
......@@ -643,10 +643,10 @@ rsvg_cairo_generate_mask (cairo_t * cr, RsvgMask * self, RsvgDrawingCtx * ctx, R
if (self->maskunits == objectBoundingBox)
_rsvg_push_view_box (ctx, 1, 1);
sx = _rsvg_css_normalize_length (&self->x, ctx, 'h');
sy = _rsvg_css_normalize_length (&self->y, ctx, 'v');
sw = _rsvg_css_normalize_length (&self->width, ctx, 'h');
sh = _rsvg_css_normalize_length (&self->height, ctx, 'v');
sx = _rsvg_css_normalize_length (&self->x, ctx, LENGTH_DIR_HORIZONTAL);
sy = _rsvg_css_normalize_length (&self->y, ctx, LENGTH_DIR_VERTICAL);
sw = _rsvg_css_normalize_length (&self->width, ctx, LENGTH_DIR_HORIZONTAL);
sh = _rsvg_css_normalize_length (&self->height, ctx, LENGTH_DIR_VERTICAL);
if (self->maskunits == objectBoundingBox)
_rsvg_pop_view_box (ctx);
......
......@@ -226,7 +226,7 @@ _rsvg_css_normalize_font_size (RsvgState * state, RsvgDrawingCtx * ctx)
}
break;
default:
return _rsvg_css_normalize_length (&state->font_size, ctx, 'v');
return _rsvg_css_normalize_length (&state->font_size, ctx, LENGTH_DIR_VERTICAL);
break;
}
......@@ -234,18 +234,22 @@ _rsvg_css_normalize_font_size (RsvgState * state, RsvgDrawingCtx * ctx)
}
double
_rsvg_css_normalize_length (const RsvgLength * in, RsvgDrawingCtx * ctx, char dir)
_rsvg_css_normalize_length (const RsvgLength * in, RsvgDrawingCtx * ctx, LengthDir dir)
{
if (in->unit == LENGTH_UNIT_DEFAULT)
return in->length;
else if (in->unit == LENGTH_UNIT_PERCENT) {
if (dir == 'h')
switch (dir) {
case LENGTH_DIR_HORIZONTAL:
return in->length * ctx->vb.rect.width;
if (dir == 'v')
case LENGTH_DIR_VERTICAL:
return in->length * ctx->vb.rect.height;
if (dir == 'o')
case LENGTH_DIR_BOTH:
return in->length * rsvg_viewport_percentage (ctx->vb.rect.width,
ctx->vb.rect.height);
}
} else if (in->unit == LENGTH_UNIT_FONT_EM || in->unit == LENGTH_UNIT_FONT_EX) {
double font = _rsvg_css_normalize_font_size (rsvg_current_state (ctx), ctx);
if (in->unit == LENGTH_UNIT_FONT_EM)
......@@ -253,12 +257,16 @@ _rsvg_css_normalize_length (const RsvgLength * in, RsvgDrawingCtx * ctx, char di
else
return in->length * font / 2.;
} else if (in->unit == LENGTH_UNIT_INCH) {
if (dir == 'h')
switch (dir) {
case LENGTH_DIR_HORIZONTAL:
return in->length * ctx->dpi_x;
if (dir == 'v')
case LENGTH_DIR_VERTICAL:
return in->length * ctx->dpi_y;
if (dir == 'o')
case LENGTH_DIR_BOTH:
return in->length * rsvg_viewport_percentage (ctx->dpi_x, ctx->dpi_y);
}
} else if (in->unit == LENGTH_UNIT_RELATIVE_LARGER) {
/* todo: "larger" */
} else if (in->unit == LENGTH_UNIT_RELATIVE_SMALLER) {
......
......@@ -161,10 +161,10 @@ rsvg_filter_primitive_get_bounds (RsvgFilterPrimitive * self, RsvgFilterContext
otherbox.virgin = 0;
if (ctx->filter->filterunits == objectBoundingBox)
_rsvg_push_view_box (ctx->ctx, 1., 1.);
otherbox.rect.x = _rsvg_css_normalize_length (&ctx->filter->x, ctx->ctx, 'h');
otherbox.rect.y = _rsvg_css_normalize_length (&ctx->filter->y, ctx->ctx, 'v');
otherbox.rect.width = _rsvg_css_normalize_length (&ctx->filter->width, ctx->ctx, 'h');
otherbox.rect.height = _rsvg_css_normalize_length (&ctx->filter->height, ctx->ctx, 'v');
otherbox.rect.x = _rsvg_css_normalize_length (&ctx->filter->x, ctx->ctx, LENGTH_DIR_HORIZONTAL);
otherbox.rect.y = _rsvg_css_normalize_length (&ctx->filter->y, ctx->ctx, LENGTH_DIR_VERTICAL);
otherbox.rect.width = _rsvg_css_normalize_length (&ctx->filter->width, ctx->ctx, LENGTH_DIR_HORIZONTAL);
otherbox.rect.height = _rsvg_css_normalize_length (&ctx->filter->height, ctx->ctx, LENGTH_DIR_VERTICAL);
if (ctx->filter->filterunits == objectBoundingBox)
_rsvg_pop_view_box (ctx->ctx);
......@@ -179,19 +179,19 @@ rsvg_filter_primitive_get_bounds (RsvgFilterPrimitive * self, RsvgFilterContext
if (ctx->filter->primitiveunits == objectBoundingBox)
_rsvg_push_view_box (ctx->ctx, 1., 1.);
if (self->x_specified)
otherbox.rect.x = _rsvg_css_normalize_length (&self->x, ctx->ctx, 'h');
otherbox.rect.x = _rsvg_css_normalize_length (&self->x, ctx->ctx, LENGTH_DIR_HORIZONTAL);
else
otherbox.rect.x = 0;
if (self->y_specified)
otherbox.rect.y = _rsvg_css_normalize_length (&self->y, ctx->ctx, 'v');
otherbox.rect.y = _rsvg_css_normalize_length (&self->y, ctx->ctx, LENGTH_DIR_VERTICAL);
else
otherbox.rect.y = 0;
if (self->width_specified)
otherbox.rect.width = _rsvg_css_normalize_length (&self->width, ctx->ctx, 'h');
otherbox.rect.width = _rsvg_css_normalize_length (&self->width, ctx->ctx, LENGTH_DIR_HORIZONTAL);
else
otherbox.rect.width = ctx->ctx->vb.rect.width;
if (self->height_specified)
otherbox.rect.height = _rsvg_css_normalize_length (&self->height, ctx->ctx, 'v');
otherbox.rect.height = _rsvg_css_normalize_length (&self->height, ctx->ctx, LENGTH_DIR_VERTICAL);
else
otherbox.rect.height = ctx->ctx->vb.rect.height;
if (ctx->filter->primitiveunits == objectBoundingBox)
......@@ -2019,8 +2019,8 @@ rsvg_filter_primitive_offset_render (RsvgFilterPrimitive * self, RsvgFilterConte
output_pixels = cairo_image_surface_get_data (output);
dx = _rsvg_css_normalize_length (&upself->dx, ctx->ctx, 'h');
dy = _rsvg_css_normalize_length (&upself->dy, ctx->ctx, 'v');
dx = _rsvg_css_normalize_length (&upself->dx, ctx->ctx, LENGTH_DIR_HORIZONTAL);
dy = _rsvg_css_normalize_length (&upself->dy, ctx->ctx, LENGTH_DIR_VERTICAL);
ox = ctx->paffine.xx * dx + ctx->paffine.xy * dy;
oy = ctx->paffine.yx * dx + ctx->paffine.yy * dy;
......@@ -4284,9 +4284,9 @@ get_light_direction (RsvgNodeLightSource * source, gdouble x1, gdouble y1, gdoub
double x, y;
x = affine->xx * x1 + affine->xy * y1 + affine->x0;
y = affine->yx * x1 + affine->yy * y1 + affine->y0;
output.x = _rsvg_css_normalize_length (&source->x, ctx, 'h') - x;
output.y = _rsvg_css_normalize_length (&source->y, ctx, 'v') - y;
output.z = _rsvg_css_normalize_length (&source->z, ctx, 'o') - z;
output.x = _rsvg_css_normalize_length (&source->x, ctx, LENGTH_DIR_HORIZONTAL) - x;
output.y = _rsvg_css_normalize_length (&source->y, ctx, LENGTH_DIR_VERTICAL) - y;
output.z = _rsvg_css_normalize_length (&source->z, ctx, LENGTH_DIR_BOTH) - z;
output = normalise (output);
}
break;
......@@ -4307,12 +4307,12 @@ get_light_color (RsvgNodeLightSource * source, vector3 color,
if (source->type != SPOTLIGHT)
return color;
sx = _rsvg_css_normalize_length (&source->x, ctx, 'h');
sy = _rsvg_css_normalize_length (&source->y, ctx, 'v');
sz = _rsvg_css_normalize_length (&source->z, ctx, 'o');
spx = _rsvg_css_normalize_length (&source->pointsAtX, ctx, 'h');
spy = _rsvg_css_normalize_length (&source->pointsAtY, ctx, 'v');
spz = _rsvg_css_normalize_length (&source->pointsAtZ, ctx, 'o');
sx = _rsvg_css_normalize_length (&source->x, ctx, LENGTH_DIR_HORIZONTAL);
sy = _rsvg_css_normalize_length (&source->y, ctx, LENGTH_DIR_VERTICAL);
sz = _rsvg_css_normalize_length (&source->z, ctx, LENGTH_DIR_BOTH);
spx = _rsvg_css_normalize_length (&source->pointsAtX, ctx, LENGTH_DIR_HORIZONTAL);
spy = _rsvg_css_normalize_length (&source->pointsAtY, ctx, LENGTH_DIR_VERTICAL);
spz = _rsvg_css_normalize_length (&source->pointsAtZ, ctx, LENGTH_DIR_BOTH);
x = affine->xx * x1 + affine->xy * y1 + affine->x0;
y = affine->yx * x1 + affine->yy * y1 + affine->y0;
......
......@@ -174,10 +174,10 @@ rsvg_node_image_draw (RsvgNode * self, RsvgDrawingCtx * ctx, int dominate)
if (surface == NULL)
return;
x = _rsvg_css_normalize_length (&z->x, ctx, 'h');
y = _rsvg_css_normalize_length (&z->y, ctx, 'v');
w = _rsvg_css_normalize_length (&z->w, ctx, 'h');
h = _rsvg_css_normalize_length (&z->h, ctx, 'v');
x = _rsvg_css_normalize_length (&z->x, ctx, LENGTH_DIR_HORIZONTAL);
y = _rsvg_css_normalize_length (&z->y, ctx, LENGTH_DIR_VERTICAL);
w = _rsvg_css_normalize_length (&z->w, ctx, LENGTH_DIR_HORIZONTAL);
h = _rsvg_css_normalize_length (&z->h, ctx, LENGTH_DIR_VERTICAL);
rsvg_state_reinherit_top (ctx, z->super.state, dominate);
......
......@@ -143,8 +143,8 @@ rsvg_marker_render (const char * marker_name, gdouble xpos, gdouble ypos, gdoubl
if (self->vbox.active) {
double w, h, x, y;
w = _rsvg_css_normalize_length (&self->width, ctx, 'h');
h = _rsvg_css_normalize_length (&self->height, ctx, 'v');
w = _rsvg_css_normalize_length (&self->width, ctx, LENGTH_DIR_HORIZONTAL);
h = _rsvg_css_normalize_length (&self->height, ctx, LENGTH_DIR_VERTICAL);
x = 0;
y = 0;
......@@ -160,8 +160,8 @@ rsvg_marker_render (const char * marker_name, gdouble xpos, gdouble ypos, gdoubl
}
cairo_matrix_init_translate (&taffine,
-_rsvg_css_normalize_length (&self->refX, ctx, 'h'),
-_rsvg_css_normalize_length (&self->refY, ctx, 'v'));
-_rsvg_css_normalize_length (&self->refX, ctx, LENGTH_DIR_HORIZONTAL),
-_rsvg_css_normalize_length (&self->refY, ctx, LENGTH_DIR_VERTICAL));
cairo_matrix_multiply (&affine, &taffine, &affine);
rsvg_state_push (ctx);
......@@ -183,8 +183,8 @@ rsvg_marker_render (const char * marker_name, gdouble xpos, gdouble ypos, gdoubl
self->vbox.rect.width, self->vbox.rect.height);
else
rsvg_add_clipping_rect (ctx, 0, 0,
_rsvg_css_normalize_length (&self->width, ctx, 'h'),
_rsvg_css_normalize_length (&self->height, ctx, 'v'));
_rsvg_css_normalize_length (&self->width, ctx, LENGTH_DIR_HORIZONTAL),
_rsvg_css_normalize_length (&self->height, ctx, LENGTH_DIR_VERTICAL));
}
for (i = 0; i < self->super.children->len; i++) {
......@@ -219,7 +219,7 @@ rsvg_render_markers (RsvgDrawingCtx *ctx,
state = rsvg_current_state (ctx);
linewidth = _rsvg_css_normalize_length (&state->stroke_width, ctx, 'o');
linewidth = _rsvg_css_normalize_length (&state->stroke_width, ctx, LENGTH_DIR_BOTH);
rsvg_rust_render_markers (ctx,
builder,
......
......@@ -407,7 +407,7 @@ void rsvg_bbox_insert (RsvgBbox * dst, RsvgBbox * src);
G_GNUC_INTERNAL
void rsvg_bbox_clip (RsvgBbox * dst, RsvgBbox * src);
G_GNUC_INTERNAL
double _rsvg_css_normalize_length (const RsvgLength * in, RsvgDrawingCtx * ctx, char dir);
double _rsvg_css_normalize_length (const RsvgLength * in, RsvgDrawingCtx * ctx, LengthDir dir);
G_GNUC_INTERNAL
double _rsvg_css_hand_normalize_length (const RsvgLength * in, gdouble pixels_per_inch,
gdouble width_or_height, gdouble font_size);
......
......@@ -284,10 +284,10 @@ _rsvg_node_line_draw (RsvgNode * overself, RsvgDrawingCtx * ctx, int dominate)
builder = rsvg_path_builder_new ();
x1 = _rsvg_css_normalize_length (&self->x1, ctx, 'h');
y1 = _rsvg_css_normalize_length (&self->y1, ctx, 'v');
x2 = _rsvg_css_normalize_length (&self->x2, ctx, 'h');
y2 = _rsvg_css_normalize_length (&self->y2, ctx, 'v');
x1 = _rsvg_css_normalize_length (&self->x1, ctx, LENGTH_DIR_HORIZONTAL);
y1 = _rsvg_css_normalize_length (&self->y1, ctx, LENGTH_DIR_VERTICAL);
x2 = _rsvg_css_normalize_length (&self->x2, ctx, LENGTH_DIR_HORIZONTAL);
y2 = _rsvg_css_normalize_length (&self->y2, ctx, LENGTH_DIR_VERTICAL);
rsvg_path_builder_move_to (builder, x1, y1);
rsvg_path_builder_line_to (builder, x2, y2);
......@@ -362,16 +362,16 @@ _rsvg_node_rect_draw (RsvgNode * self, RsvgDrawingCtx * ctx, int dominate)
RsvgPathBuilder *builder;
RsvgNodeRect *rect = (RsvgNodeRect *) self;
x = _rsvg_css_normalize_length (&rect->x, ctx, 'h');
y = _rsvg_css_normalize_length (&rect->y, ctx, 'v');
x = _rsvg_css_normalize_length (&rect->x, ctx, LENGTH_DIR_HORIZONTAL);
y = _rsvg_css_normalize_length (&rect->y, ctx, LENGTH_DIR_VERTICAL);
/* FIXME: negative w/h/rx/ry is an error, per http://www.w3.org/TR/SVG11/shapes.html#RectElement
* For now we'll just take the absolute value.
*/
w = fabs (_rsvg_css_normalize_length (&rect->w, ctx, 'h'));
h = fabs (_rsvg_css_normalize_length (&rect->h, ctx, 'v'));
rx = fabs (_rsvg_css_normalize_length (&rect->rx, ctx, 'h'));
ry = fabs (_rsvg_css_normalize_length (&rect->ry, ctx, 'v'));
w = fabs (_rsvg_css_normalize_length (&rect->w, ctx, LENGTH_DIR_HORIZONTAL));
h = fabs (_rsvg_css_normalize_length (&rect->h, ctx, LENGTH_DIR_VERTICAL));
rx = fabs (_rsvg_css_normalize_length (&rect->rx, ctx, LENGTH_DIR_HORIZONTAL));
ry = fabs (_rsvg_css_normalize_length (&rect->ry, ctx, LENGTH_DIR_VERTICAL));
if (w == 0. || h == 0.)
return;
......@@ -544,9 +544,9 @@ _rsvg_node_circle_draw (RsvgNode * self, RsvgDrawingCtx * ctx, int dominate)
double cx, cy, r;
RsvgPathBuilder *builder;
cx = _rsvg_css_normalize_length (&circle->cx, ctx, 'h');
cy = _rsvg_css_normalize_length (&circle->cy, ctx, 'v');
r = _rsvg_css_normalize_length (&circle->r, ctx, 'o');
cx = _rsvg_css_normalize_length (&circle->cx, ctx, LENGTH_DIR_HORIZONTAL);
cy = _rsvg_css_normalize_length (&circle->cy, ctx, LENGTH_DIR_VERTICAL);
r = _rsvg_css_normalize_length (&circle->r, ctx, LENGTH_DIR_BOTH);
if (r <= 0)
return;
......@@ -638,10 +638,10 @@ _rsvg_node_ellipse_draw (RsvgNode * self, RsvgDrawingCtx * ctx, int dominate)
double cx, cy, rx, ry;
RsvgPathBuilder *builder;
cx = _rsvg_css_normalize_length (&ellipse->cx, ctx, 'h');
cy = _rsvg_css_normalize_length (&ellipse->cy, ctx, 'v');
rx = _rsvg_css_normalize_length (&ellipse->rx, ctx, 'h');
ry = _rsvg_css_normalize_length (&ellipse->ry, ctx, 'v');
cx = _rsvg_css_normalize_length (&ellipse->cx, ctx, LENGTH_DIR_HORIZONTAL);
cy = _rsvg_css_normalize_length (&ellipse->cy, ctx, LENGTH_DIR_VERTICAL);
rx = _rsvg_css_normalize_length (&ellipse->rx, ctx, LENGTH_DIR_HORIZONTAL);
ry = _rsvg_css_normalize_length (&ellipse->ry, ctx, LENGTH_DIR_VERTICAL);
if (rx <= 0 || ry <= 0)
return;
......
......@@ -184,10 +184,10 @@ rsvg_node_use_draw (RsvgNode * self, RsvgDrawingCtx * ctx, int dominate)
RsvgState *state;
cairo_matrix_t affine;
double x, y, w, h;
x = _rsvg_css_normalize_length (&use->x, ctx, 'h');
y = _rsvg_css_normalize_length (&use->y, ctx, 'v');
w = _rsvg_css_normalize_length (&use->w, ctx, 'h');
h = _rsvg_css_normalize_length (&use->h, ctx, 'v');
x = _rsvg_css_normalize_length (&use->x, ctx, LENGTH_DIR_HORIZONTAL);
y = _rsvg_css_normalize_length (&use->y, ctx, LENGTH_DIR_VERTICAL);
w = _rsvg_css_normalize_length (&use->w, ctx, LENGTH_DIR_HORIZONTAL);
h = _rsvg_css_normalize_length (&use->h, ctx, LENGTH_DIR_VERTICAL);
rsvg_state_reinherit_top (ctx, self->state, dominate);
......@@ -261,10 +261,10 @@ rsvg_node_svg_draw (RsvgNode * self, RsvgDrawingCtx * ctx, int dominate)
double nx, ny, nw, nh;
sself = (RsvgNodeSvg *) self;
nx = _rsvg_css_normalize_length (&sself->x, ctx, 'h');
ny = _rsvg_css_normalize_length (&sself->y, ctx, 'v');
nw = _rsvg_css_normalize_length (&sself->w, ctx, 'h');
nh = _rsvg_css_normalize_length (&sself->h, ctx, 'v');
nx = _rsvg_css_normalize_length (&sself->x, ctx, LENGTH_DIR_HORIZONTAL);
ny = _rsvg_css_normalize_length (&sself->y, ctx, LENGTH_DIR_VERTICAL);
nw = _rsvg_css_normalize_length (&sself->w, ctx, LENGTH_DIR_HORIZONTAL);
nh = _rsvg_css_normalize_length (&sself->h, ctx, LENGTH_DIR_VERTICAL);
rsvg_state_reinherit_top (ctx, self->state, dominate);
......
......@@ -284,10 +284,10 @@ _rsvg_node_text_draw (RsvgNode * self, RsvgDrawingCtx * ctx, int dominate)
RsvgNodeText *text = (RsvgNodeText *) self;
rsvg_state_reinherit_top (ctx, self->state, dominate);
x = _rsvg_css_normalize_length (&text->x, ctx, 'h');
y = _rsvg_css_normalize_length (&text->y, ctx, 'v');
dx = _rsvg_css_normalize_length (&text->dx, ctx, 'h');
dy = _rsvg_css_normalize_length (&text->dy, ctx, 'v');
x = _rsvg_css_normalize_length (&text->x, ctx, LENGTH_DIR_HORIZONTAL);
y = _rsvg_css_normalize_length (&text->y, ctx, LENGTH_DIR_VERTICAL);
dx = _rsvg_css_normalize_length (&text->dx, ctx, LENGTH_DIR_HORIZONTAL);
dy = _rsvg_css_normalize_length (&text->dy, ctx, LENGTH_DIR_VERTICAL);
if (rsvg_current_state (ctx)->text_anchor != TEXT_ANCHOR_START) {
_rsvg_node_text_length_children (self, ctx, &length, &lastwasspace, FALSE);
......@@ -334,8 +334,8 @@ _rsvg_node_text_type_tspan (RsvgNodeText * self, RsvgDrawingCtx * ctx,
double dx, dy, length = 0;
rsvg_state_reinherit_top (ctx, self->super.state, 0);
dx = _rsvg_css_normalize_length (&self->dx, ctx, 'h');
dy = _rsvg_css_normalize_length (&self->dy, ctx, 'v');
dx = _rsvg_css_normalize_length (&self->dx, ctx, LENGTH_DIR_HORIZONTAL);
dy = _rsvg_css_normalize_length (&self->dy, ctx, LENGTH_DIR_VERTICAL);
if (rsvg_current_state (ctx)->text_anchor != TEXT_ANCHOR_START) {
gboolean lws = *lastwasspace;
......@@ -346,7 +346,7 @@ _rsvg_node_text_type_tspan (RsvgNodeText * self, RsvgDrawingCtx * ctx,
}
if (self->x_specified) {
*x = _rsvg_css_normalize_length (&self->x, ctx, 'h');
*x = _rsvg_css_normalize_length (&self->x, ctx, LENGTH_DIR_HORIZONTAL);
if (!PANGO_GRAVITY_IS_VERTICAL (rsvg_current_state (ctx)->text_gravity)) {
*x -= length;
if (rsvg_current_state (ctx)->text_anchor == TEXT_ANCHOR_MIDDLE)
......@@ -358,7 +358,7 @@ _rsvg_node_text_type_tspan (RsvgNodeText * self, RsvgDrawingCtx * ctx,
*x += dx;
if (self->y_specified) {
*y = _rsvg_css_normalize_length (&self->y, ctx, 'v');
*y = _rsvg_css_normalize_length (&self->y, ctx, LENGTH_DIR_VERTICAL);
if (PANGO_GRAVITY_IS_VERTICAL (rsvg_current_state (ctx)->text_gravity)) {
*y -= length;
if (rsvg_current_state (ctx)->text_anchor == TEXT_ANCHOR_MIDDLE)
......@@ -381,9 +381,9 @@ _rsvg_node_text_length_tspan (RsvgNodeText * self,
return TRUE;
if (PANGO_GRAVITY_IS_VERTICAL (rsvg_current_state (ctx)->text_gravity))
*length += _rsvg_css_normalize_length (&self->dy, ctx, 'v');
*length += _rsvg_css_normalize_length (&self->dy, ctx, LENGTH_DIR_VERTICAL);
else
*length += _rsvg_css_normalize_length (&self->dx, ctx, 'h');
*length += _rsvg_css_normalize_length (&self->dx, ctx, LENGTH_DIR_HORIZONTAL);
return _rsvg_node_text_length_children (&self->super, ctx, length,
lastwasspace, usetextonly);
......@@ -548,7 +548,7 @@ rsvg_text_create_layout (RsvgDrawingCtx * ctx,
attr_list = pango_attr_list_new ();
attribute = pango_attr_letter_spacing_new (_rsvg_css_normalize_length (&state->letter_spacing,
ctx, 'h') * PANGO_SCALE);
ctx, LENGTH_DIR_HORIZONTAL) * PANGO_SCALE);
attribute->start_index = 0;
attribute->end_index = G_MAXINT;
pango_attr_list_insert (attr_list, attribute);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment