static cairo_status_t _cairo_stroker_move_to_dashed (void *closure, const cairo_point_t *point) { cairo_stroker_t *stroker = closure; /* reset the dash pattern for new sub paths */ _cairo_stroker_dash_start (&stroker->dash); return _cairo_stroker_move_to (closure, point); }
static void _cairo_stroker_dash_init (cairo_stroker_dash_t *dash, const cairo_stroke_style_t *style) { dash->dashed = style->dash != NULL; if (! dash->dashed) return; dash->dashes = style->dash; dash->num_dashes = style->num_dashes; dash->dash_offset = style->dash_offset; _cairo_stroker_dash_start (dash); }
static cairo_status_t _cairo_rectilinear_stroker_move_to (void *closure, const cairo_point_t *point) { cairo_rectilinear_stroker_t *stroker = closure; cairo_status_t status; if (stroker->dash.dashed) status = _cairo_rectilinear_stroker_emit_segments_dashed (stroker); else status = _cairo_rectilinear_stroker_emit_segments (stroker); if (unlikely (status)) return status; /* reset the dash pattern for new sub paths */ _cairo_stroker_dash_start (&stroker->dash); stroker->current_point = *point; stroker->first_point = *point; return CAIRO_STATUS_SUCCESS; }
static cairo_status_t _cairo_stroker_move_to (void *closure, const cairo_point_t *point) { cairo_stroker_t *stroker = closure; cairo_status_t status; /* reset the dash pattern for new sub paths */ _cairo_stroker_dash_start (&stroker->dash); /* Cap the start and end of the previous sub path as needed */ status = _cairo_stroker_add_caps (stroker); if (unlikely (status)) return status; stroker->first_point = *point; stroker->current_point = *point; stroker->has_first_face = FALSE; stroker->has_current_face = FALSE; stroker->has_initial_sub_path = FALSE; return CAIRO_STATUS_SUCCESS; }