write.c 900 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. #include "cairodriver.h"
  2. #if CAIRO_HAS_XLIB_SURFACE
  3. #include <X11/Xlib.h>
  4. #include <cairo-xlib.h>
  5. #endif
  6. void cairo_write_image(void)
  7. {
  8. G_debug(1, "write_image");
  9. if (!ca.modified)
  10. return;
  11. if (ca.mapped)
  12. return;
  13. if (!cairo || !surface)
  14. return;
  15. if (ca.file_type == FTYPE_PPM) {
  16. G_debug(1, "Writing image to %s", ca.file_name);
  17. cairo_write_ppm();
  18. }
  19. else if (ca.file_type == FTYPE_BMP) {
  20. G_debug(1, "Writing image to %s", ca.file_name);
  21. cairo_write_bmp();
  22. }
  23. #if CAIRO_HAS_PNG_FUNCTIONS
  24. else if (ca.file_type == FTYPE_PNG) {
  25. G_debug(1, "Writing image to %s", ca.file_name);
  26. cairo_surface_write_to_png(surface, ca.file_name);
  27. }
  28. #endif
  29. #if CAIRO_HAS_XLIB_SURFACE
  30. else if (ca.file_type == FTYPE_X11) {
  31. XFlush(cairo_xlib_surface_get_display(surface));
  32. }
  33. #endif
  34. /* vector format files are written directly to file */
  35. ca.modified = 0;
  36. }