Poly.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. /*!
  2. \file cairodriver/Poly.c
  3. \brief GRASS cairo display driver - draw polygon/polyline
  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. #include "cairodriver.h"
  11. static void do_polygon(const double *xarray, const double *yarray, int count)
  12. {
  13. int i;
  14. cairo_move_to(cairo, xarray[0], yarray[0]);
  15. for (i = 1; i < count; i++)
  16. cairo_line_to(cairo, xarray[i], yarray[i]);
  17. }
  18. /*!
  19. \brief Draw polygon (filled)
  20. \param xarray,yarray array of x/y coordinates
  21. \param count number of points
  22. */
  23. void Cairo_Polygon(const double *xarray, const double *yarray, int count)
  24. {
  25. G_debug(3, "Cairo_Polygon (%d points)", count);
  26. do_polygon(xarray, yarray, count);
  27. cairo_fill(cairo);
  28. ca.modified = 1;
  29. return;
  30. }
  31. /*!
  32. \brief Draw polyline
  33. \param xarray,yarray array of x/y coordinates
  34. \param count number of points
  35. */
  36. void Cairo_Polyline(const double *xarray, const double *yarray, int count)
  37. {
  38. G_debug(3, "Cairo_Polyline (%d points)", count);
  39. do_polygon(xarray, yarray, count);
  40. cairo_stroke(cairo);
  41. ca.modified = 1;
  42. return;
  43. }
  44. /*!
  45. \brief Draw polyline points
  46. \param xarray,yarray array of x/y coordinates
  47. \param count number of points
  48. */
  49. void Cairo_Polydots(const double *xarray, const double *yarray, int count)
  50. {
  51. int i;
  52. G_debug(3, "Cairo_Polydots (%d points)", count);
  53. for (i = 1; i < count; i++)
  54. Cairo_draw_point(xarray[0], yarray[0]);
  55. ca.modified = 1;
  56. return;
  57. }