int main (int argc, char **argv) { cairo_t *cr; cairo_surface_t *dst, *src; CustomEffect *effect; PixelShader *shader; int stride = width * 4; Rect bounds = Rect (0, 0, width, height); gpointer data; bool status; if (argc < 2) { printf ("usage: %s SHADERFILE\n", argv[0]); return 1; } gtk_init (&argc, &argv); runtime_init_desktop (); data = g_malloc0 (height * stride); dst = cairo_image_surface_create_for_data ((unsigned char *) data, CAIRO_FORMAT_ARGB32, width, height, stride); src = cairo_surface_create_similar (dst, CAIRO_CONTENT_COLOR_ALPHA, width, height); cr = cairo_create (dst); effect = new CustomEffect (); shader = new PixelShader (); shader->SetTokensFromPath (argv[1]); effect->SetPixelShader (shader); status = effect->Render (cr, src, NULL, 0, 0, width, height); effect->unref (); shader->unref (); cairo_destroy (cr); cairo_surface_destroy (src); cairo_surface_destroy (dst); g_free (data); runtime_shutdown (); return status != true; }