cairodriver.h 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103
  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 <stdio.h>
  13. #include <stdlib.h>
  14. #include <string.h>
  15. #include <cairo.h>
  16. #include <grass/config.h>
  17. #include <grass/gis.h>
  18. #include "driver.h"
  19. #include "driverlib.h"
  20. #define DEFAULT_FILE_NAME "map.png"
  21. #define HEADER_SIZE 54
  22. /* Scale for converting colors from [0..255] to cairo's [0.0..1.0] */
  23. #define COLORSCALE (1.0/255.0)
  24. #define CAIROCOLOR(a) (((double)(a))*COLORSCALE)
  25. /* File types */
  26. #define FTYPE_UNKNOWN 0
  27. #define FTYPE_PPM 1
  28. #define FTYPE_BMP 2
  29. #define FTYPE_PNG 3
  30. #define FTYPE_PDF 4
  31. #define FTYPE_PS 5
  32. #define FTYPE_SVG 6
  33. #define FTYPE_X11 7
  34. extern cairo_surface_t *surface;
  35. extern cairo_t *cairo;
  36. struct cairo_state {
  37. char *file_name;
  38. int file_type;
  39. int width, height, stride;
  40. unsigned char *grid;
  41. double bgcolor_r, bgcolor_g, bgcolor_b, bgcolor_a;
  42. int modified;
  43. int mapped;
  44. };
  45. extern struct cairo_state ca;
  46. extern const struct driver *Cairo_Driver(void);
  47. extern void Cairo_Client_Close(void);
  48. extern int Cairo_Graph_set(void);
  49. extern void Cairo_Graph_close(void);
  50. extern void Cairo_Box(double, double, double, double);
  51. extern void Cairo_Set_window(double, double, double, double);
  52. extern void Cairo_Bitmap(int, int, int, const unsigned char *);
  53. extern void Cairo_Color(int, int, int);
  54. extern void Cairo_Erase(void);
  55. extern void Cairo_begin_raster(int, int[2][2], double[2][2]);
  56. extern int Cairo_raster(int, int,
  57. const unsigned char *, const unsigned char *,
  58. const unsigned char *, const unsigned char *);
  59. extern void Cairo_end_raster(void);
  60. extern void Cairo_Begin(void);
  61. extern void Cairo_Move(double, double);
  62. extern void Cairo_Cont(double, double);
  63. extern void Cairo_Close(void);
  64. extern void Cairo_Stroke(void);
  65. extern void Cairo_Fill(void);
  66. extern void Cairo_Point(double, double);
  67. extern void Cairo_Line_width(double);
  68. extern void Cairo_Text(const char *);
  69. extern void Cairo_text_box(const char *, double *, double *, double *, double *);
  70. extern void Cairo_set_font(const char *);
  71. extern void Cairo_font_list(char ***, int *);
  72. extern void Cairo_font_info(char ***, int *);
  73. /* read.c */
  74. extern void cairo_read_image(void);
  75. extern void cairo_read_ppm(void);
  76. extern void cairo_read_bmp(void);
  77. /* write.c */
  78. extern void cairo_write_image(void);
  79. extern void cairo_write_ppm(void);
  80. extern void cairo_write_bmp(void);
  81. #endif /* __CAIRODRIVER_H__ */