[cairo] filters/image processing

MenTaLguY mental at rydia.net
Fri Mar 24 18:20:03 PST 2006

Okay, here's what I'm thinking at the moment.  We keep the composable
pattern stuff, but add pipelines, which are composable pattern

 typedef struct _cairo_pipeline_t cairo_pipeline_t;

 cairo_pipeline_t *
 cairo_pipeline_create_from_pattern (cairo_pattern_t *pattern);

 cairo_pipeline_t *
 cairo_pipeline_copy (cairo_pipeline_t *pipeline);

 cairo_pipeline_t *
 cairo_pipeline_reference (cairo_pipeline_t *pipeline);

 cairo_pipeline_destroy (cairo_pipeline_t *pipeline);

 /* singleton representing pipeline input */
 cairo_pipeline_t *
 cairo_pipeline_input (void);

 /* should variables be flyweights? */
 cairo_pipeline_t *
 cairo_pipeline_variable (const char *name);

 /* each nontrivial cairo_pipeline_t has its own symbol table
    which inherits from downstream at evaluation time */
 cairo_pipeline_assign (cairo_pipeline_t *pipeline,
                        const char *name,
                        cairo_pipeline_t *value);

 cairo_pipeline_assign_from_pattern (cairo_pipeline_t *pipeline,
                                     const char *name,
                                     cairo_pattern_t *value);

 cairo_pattern_t *
 cairo_pattern_create_from_pipeline (cairo_pipeline_t *pipeline,
                                     cairo_pattern_t *input);

 /* parallel to cairo_gaussian_blur_pattern_create() */
 cairo_pipeline_t *
 cairo_gaussian_blur_pipeline_create (cairo_pipeline_t *source,
                                      double radius);

 /* and maybe? */
 cairo_set_mask_pipeline (cairo_t *ctx, cairo_pipeline_t *pipeline);

So then:

 cairo_pipeline_t *blur=
   cairo_gaussian_blur_pipeline_create (cairo_pipeline_input(), 3.0);
 cairo_set_mask_pipeline (ctx, blur);
 cairo_pipeline_destroy (blur);

What do you think?


-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://lists.freedesktop.org/archives/cairo/attachments/20060324/bbaa2229/attachment.pgp

More information about the cairo mailing list