///|
/// Apply the cpdfcontent path-state operators that do not require resources.
pub fn PdfContentPathState::content_apply_path_state_op(
self : PdfContentPathState,
op : @content.PdfContentOp,
) -> PdfContentPathState {
match op {
Op_w(width) => { ..self, line_width: width, }
Op_J(cap) => { ..self, line_cap: cap, }
Op_j(join) => { ..self, line_join: join, }
Op_d(dashes, phase) =>
{
..self,
dash_pattern: { array: pdf_content_state_copy_doubles(dashes), phase, },
}
Op_ri(intent) =>
{ ..self, rendering_intent: pdf_content_state_name_text(intent), }
Op_CS(name) =>
match pdf_colour_space_of_device_name(name) {
Some(space) =>
{
..self,
colourspace_stroke: space,
colour_stroke: pdf_content_initial_colour_values(space),
}
None => self
}
Op_cs(name) =>
match pdf_colour_space_of_device_name(name) {
Some(space) =>
{
..self,
colourspace_non_stroke: space,
colour_non_stroke: pdf_content_initial_colour_values(space),
}
None => self
}
Op_SC(values) | Op_SCN(values) =>
{
..self,
colour_stroke: PdfContentColourFloats(
pdf_content_state_copy_doubles(values),
),
}
Op_sc(values) | Op_scn(values) =>
{
..self,
colour_non_stroke: PdfContentColourFloats(
pdf_content_state_copy_doubles(values),
),
}
Op_SCNName(name, values) =>
{
..self,
colour_non_stroke: PdfContentColourNamed(
pdf_content_state_name_text(name),
pdf_content_state_copy_doubles(values),
),
}
Op_scnName(name, values) =>
{
..self,
colour_stroke: PdfContentColourNamed(
pdf_content_state_name_text(name),
pdf_content_state_copy_doubles(values),
),
}
Op_G(value) =>
{
..self,
colourspace_stroke: PdfDeviceGray,
colour_stroke: PdfContentColourFloats([value]),
}
Op_g(value) =>
{
..self,
colourspace_non_stroke: PdfDeviceGray,
colour_non_stroke: PdfContentColourFloats([value]),
}
Op_RG(red, green, blue) =>
{
..self,
colourspace_stroke: PdfDeviceRGB,
colour_stroke: PdfContentColourFloats([red, green, blue]),
}
Op_rg(red, green, blue) =>
{
..self,
colourspace_non_stroke: PdfDeviceRGB,
colour_non_stroke: PdfContentColourFloats([red, green, blue]),
}
Op_K(cyan, magenta, yellow, black) =>
{
..self,
colourspace_stroke: PdfDeviceCMYK,
colour_stroke: PdfContentColourFloats([cyan, magenta, yellow, black]),
}
Op_k(cyan, magenta, yellow, black) =>
{
..self,
colourspace_non_stroke: PdfDeviceCMYK,
colour_non_stroke: PdfContentColourFloats([cyan, magenta, yellow, black]),
}
_ => self
}
}
///|
/// Compatibility wrapper for `PdfContentPathState::content_apply_path_state_op`.
pub fn pdf_content_apply_path_state_op(
state : PdfContentPathState,
op : @content.PdfContentOp,
) -> PdfContentPathState {
state.content_apply_path_state_op(op)
}