cairodriver.h 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*!
  2. \file cairodriver/cairodriver.h
  3. \brief GRASS cairo display driver - header file
  4. (C) 2007-2008 by Lars Ahlzen and the GRASS Development Team
  5. This program is free software under the GNU General Public License
  6. (>=v2). Read the file COPYING that comes with GRASS for details.
  7. \author Lars Ahlzen <lars ahlzen.com> (original contibutor)
  8. \author Glynn Clements
  9. */
  10. #ifndef __CAIRODRIVER_H__
  11. #define __CAIRODRIVER_H__
  12. #include <grass/config.h>
  13. #include <stdio.h>
  14. #include <stdlib.h>
  15. #include <string.h>
  16. #include <cairo.h>
  17. #if !defined(USE_X11) || !CAIRO_HAS_XLIB_SURFACE || CAIRO_VERSION < CAIRO_VERSION_ENCODE(1,6,0)
  18. #undef CAIRO_HAS_XLIB_XRENDER_SURFACE
  19. #define CAIRO_HAS_XLIB_XRENDER_SURFACE 0
  20. #endif
  21. #if CAIRO_HAS_XLIB_XRENDER_SURFACE
  22. #include <X11/X.h>
  23. #include <X11/Xlib.h>
  24. #include <X11/Xutil.h>
  25. #include <X11/extensions/Xrender.h>
  26. #endif
  27. #include <grass/gis.h>
  28. #include "driver.h"
  29. #include "driverlib.h"
  30. #define DEFAULT_FILE_NAME "map.png"
  31. #define HEADER_SIZE 64
  32. /* Scale for converting colors from [0..255] to cairo's [0.0..1.0] */
  33. #define COLORSCALE (1.0/255.0)
  34. #define CAIROCOLOR(a) (((double)(a))*COLORSCALE)
  35. /* File types */
  36. #define FTYPE_UNKNOWN 0
  37. #define FTYPE_PPM 1
  38. #define FTYPE_BMP 2
  39. #define FTYPE_PNG 3
  40. #define FTYPE_PDF 4
  41. #define FTYPE_PS 5
  42. #define FTYPE_SVG 6
  43. #define FTYPE_X11 7
  44. extern cairo_surface_t *surface;
  45. extern cairo_t *cairo;
  46. struct cairo_state {
  47. char *file_name;
  48. int file_type;
  49. int width, height, stride;
  50. unsigned char *grid;
  51. double bgcolor_r, bgcolor_g, bgcolor_b, bgcolor_a;
  52. int modified;
  53. int mapped;
  54. #if CAIRO_HAS_XLIB_XRENDER_SURFACE
  55. Display *dpy;
  56. Drawable win;
  57. Screen *screen;
  58. XRenderPictFormat *format;
  59. int depth;
  60. #endif
  61. };
  62. extern struct cairo_state ca;
  63. extern const struct driver *Cairo_Driver(void);
  64. extern void Cairo_Client_Close(void);
  65. extern int Cairo_Graph_set(void);
  66. extern const char *Cairo_Graph_get_file(void);
  67. extern void Cairo_Graph_close(void);
  68. extern void Cairo_Box(double, double, double, double);
  69. extern void Cairo_Set_window(double, double, double, double);
  70. extern void Cairo_Bitmap(int, int, int, const unsigned char *);
  71. extern void Cairo_Color(int, int, int);
  72. extern void Cairo_Erase(void);
  73. extern void Cairo_begin_raster(int, int[2][2], double[2][2]);
  74. extern int Cairo_raster(int, int,
  75. const unsigned char *, const unsigned char *,
  76. const unsigned char *, const unsigned char *);
  77. extern void Cairo_end_raster(void);
  78. extern void Cairo_Begin(void);
  79. extern void Cairo_Move(double, double);
  80. extern void Cairo_Cont(double, double);
  81. extern void Cairo_Close(void);
  82. extern void Cairo_Stroke(void);
  83. extern void Cairo_Fill(void);
  84. extern void Cairo_Point(double, double);
  85. extern void Cairo_Line_width(double);
  86. extern void Cairo_Text(const char *);
  87. extern void Cairo_text_box(const char *, double *, double *, double *, double *);
  88. extern void Cairo_set_font(const char *);
  89. extern void Cairo_font_list(char ***, int *);
  90. extern void Cairo_font_info(char ***, int *);
  91. /* read.c */
  92. extern void cairo_read_image(void);
  93. extern void cairo_read_ppm(void);
  94. extern void cairo_read_bmp(void);
  95. extern void cairo_read_xid(void);
  96. /* write.c */
  97. extern void cairo_write_image(void);
  98. extern void cairo_write_ppm(void);
  99. extern void cairo_write_bmp(void);
  100. extern void cairo_write_xid(void);
  101. #endif /* __CAIRODRIVER_H__ */