[cairo] Newbie - simple program doesn't work

Fabien Costantini fab672000 at yahoo.fr
Mon Jul 10 02:57:01 PDT 2006


This is probably because cairo_fill() doesn't know what to fill in your code.
you should add before your cairo_fill() call, something like :
    cairo_rectangle(cr,0,0,WIDTH,HEIGHT);
so that cairo_fill() knows that the closed path on which to apply the fill is your whole surface.

Fabien

----- Message d'origine ----
De : Baptiste Gaillard <b_gaillard at hotmail.com>
À : cairo at cairographics.org
Envoyé le : Lundi, 10 Juillet 2006, 11h34mn 47s
Objet : [cairo] Newbie - simple program doesn't work

       Hello, I'm begining with cairo with a very simple  program that doesn't work, but I don't understand why !!!
 Here is the code:
  
  #include <cairo-win32.h>
 #define WIDTH 10000
 #define HEIGHT 10000
 void display_status(cairo_status_t status) {
 switch(status) {
 case CAIRO_STATUS_SUCCESS:
 cout << "CAIRO_STATUS_SUCCESS" << endl;
 break;
 
 case CAIRO_STATUS_NULL_POINTER:
 cout << "CAIRO_STATUS_NULL_POINTER" << endl;
 break; 
 
 case CAIRO_STATUS_NO_MEMORY:
 cout << "CAIRO_STATUS_NO_MEMORY" << endl;
 break; 
 
 case CAIRO_STATUS_READ_ERROR:
 cout << "CAIRO_STATUS_READ_ERROR" << endl;
 break;
 
 case CAIRO_STATUS_INVALID_CONTENT:
 cout << "CAIRO_STATUS_INVALID_CONTENT" << endl;
 break;
 
 case CAIRO_STATUS_INVALID_FORMAT:
 cout << "CAIRO_STATUS_INVALID_FORMAT" << endl;
 break;
 
 case CAIRO_STATUS_INVALID_VISUAL:
 cout << "CAIRO_STATUS_INVALID_VISUAL" << endl;
 break;
 }
 }
 
 int main(int argc, char** argv) {
 cairo_surface_t *surface;
 cairo_t *cr;
 
 surface = cairo_image_surface_create (CAIRO_FORMAT_RGB24, WIDTH, HEIGHT);  
 display_status(cairo_surface_status (surface));
 
 cr = cairo_create (surface);
 display_status(cairo_surface_status (surface)); 
 
 cairo_set_source_rgb(cr, 1,1,1);
 cairo_fill(cr);
 display_status(cairo_surface_status (surface));
 
 cairo_surface_write_to_png (surface, "test.png"); 
 display_status(cairo_surface_status (surface));
 cairo_destroy (cr);
 cairo_surface_destroy (surface);
 return 0;
 }
  
 The program create a png image, but it's filled in black  whereas it should be white. I tried to draw paths and other forms but it seems  that the image buffer isn't 
 modified. I'm working on Windows with DevC++ and use the  cairo library provided with the GTK+ package for windows as indicated on the  Cairo web site. 
 So, do you know why this code doesn't work ?
 Thanks
  
 PS: sorry for my English, I'm french :-)  

_______________________________________________
cairo mailing list
cairo at cairographics.org
http://cairographics.org/cgi-bin/mailman/listinfo/cairo







-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.freedesktop.org/archives/cairo/attachments/20060710/4298b430/attachment.htm


More information about the cairo mailing list