Skip to content

CAIRO_EXTEND_REFLECT when extending image #1249

Closed
@ddcovery

Description

@ddcovery

In version 1.6.12, method drawImage extends the imge using CAIRO_EXTEND REFLECT:

if (needsExtraSurface) {
...
cairo_pattern_set_extend(cairo_get_source(ctxTemp), CAIRO_EXTEND_REFLECT);
cairo_paint_with_alpha(ctxTemp, 1);
surface = surfTemp;
}

Finally you perform the drawing using the default cairo_pattern_set_extend

cairo_pattern_set_extend(cairo_get_source(ctx), CAIRO_EXTEND_NONE);

This "NONE" is doing nothing, because extend ALLWAYS uses the surfTemp version that contains a CAIRO_EXTEND_REFLECT and final result is a REFLECT extend.

This changes de default drawImage behaviour that is CAIRO_EXTEND_NONE (similar to Firefox/Chrome/...).

Actually, I solve this problem cleaning the reflected areas with extra code... problem is when the canvas where I paint the image contains useful contents this extra content is overpainted with the reflect.

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions