fiducial.c 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. #include <grass/gis.h>
  2. #include <grass/raster.h>
  3. #include <grass/display.h>
  4. #include <grass/symbol.h>
  5. #include <grass/colors.h>
  6. #include <grass/glocale.h>
  7. #include "local_proto.h"
  8. void plot_cross(double easting, double northing, int color, double rotation)
  9. {
  10. plot_symbol(easting, northing, color, rotation, "basic/cross1",
  11. MARK_CROSS);
  12. }
  13. void plot_fiducial(double easting, double northing, int color,
  14. double rotation)
  15. {
  16. plot_symbol(easting, northing, color, rotation + 45.0, "extra/fiducial",
  17. MARK_FIDUCIAL);
  18. }
  19. void plot_dot(double easting, double northing, int color)
  20. {
  21. plot_symbol(easting, northing, color, 0.0, "basic/point", MARK_DOT);
  22. }
  23. void plot_symbol(double easting, double northing, int color, double rotation,
  24. char *symbol_name, int mark_type)
  25. {
  26. SYMBOL *Symb;
  27. RGBA_Color *line_color, *fill_color;
  28. int R, G, B;
  29. double size = 16.0;
  30. int tolerance = 0;
  31. line_color = G_malloc(sizeof(RGBA_Color));
  32. fill_color = G_malloc(sizeof(RGBA_Color));
  33. if (D_color_number_to_RGB(color, &R, &G, &B) == 0)
  34. /* fall back to black on failure */
  35. G_str_to_color(DEFAULT_FG_COLOR, &R, &G, &B);
  36. line_color->r = (unsigned char)R;
  37. line_color->g = (unsigned char)G;
  38. line_color->b = (unsigned char)B;
  39. line_color->a = RGBA_COLOR_OPAQUE;
  40. fill_color->a = RGBA_COLOR_NONE;
  41. if (mark_type == MARK_DOT) {
  42. size = 5;
  43. fill_color->r = (unsigned char)R;
  44. fill_color->g = (unsigned char)G;
  45. fill_color->b = (unsigned char)B;
  46. fill_color->a = RGBA_COLOR_OPAQUE;
  47. }
  48. Symb = S_read(symbol_name);
  49. if (!Symb)
  50. G_fatal_error(_("Reading symbol"));
  51. S_stroke(Symb, size, rotation, tolerance);
  52. D_symbol(Symb, easting, northing, line_color, fill_color);
  53. G_free(line_color);
  54. G_free(fill_color);
  55. }