123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- #include "sys-defines.h"
- #include "extern.h"
- int
- _API_fcircle (R___(Plotter *_plotter) double x, double y, double r)
- {
- if (!_plotter->data->open)
- {
- _plotter->error (R___(_plotter)
- "fcircle: invalid operation");
- return -1;
- }
-
- if (_plotter->drawstate->path)
- _API_endpath (S___(_plotter));
- if (!_plotter->drawstate->points_are_connected)
-
- {
- }
- else
-
- {
- plPoint pc;
- bool clockwise;
-
- _plotter->drawstate->path = _new_plPath ();
-
- pc.x = x;
- pc.y = y;
- clockwise = _plotter->drawstate->orientation < 0 ? true : false;
- if ((_plotter->data->allowed_circle_scaling == AS_ANY)
- ||
- (_plotter->data->allowed_circle_scaling == AS_UNIFORM
- && _plotter->drawstate->transform.uniform))
-
- _add_circle (_plotter->drawstate->path,
- pc, r, clockwise);
- else if ((_plotter->data->allowed_ellipse_scaling == AS_ANY)
- ||
- (_plotter->data->allowed_ellipse_scaling == AS_AXES_PRESERVED
- && _plotter->drawstate->transform.axes_preserved))
-
- _add_ellipse (_plotter->drawstate->path,
- pc, r, r, 0.0, clockwise);
- else if (_plotter->data->allowed_ellarc_scaling == AS_ANY
- || (_plotter->data->allowed_ellarc_scaling == AS_AXES_PRESERVED
- && _plotter->drawstate->transform.axes_preserved))
-
- _add_circle_as_ellarcs (_plotter->drawstate->path,
- pc, r, clockwise);
- else if (_plotter->data->allowed_cubic_scaling == AS_ANY)
-
- _add_circle_as_bezier3s (_plotter->drawstate->path,
- pc, r, clockwise);
- else
-
- _add_circle_as_lines (_plotter->drawstate->path,
- pc, r, clockwise);
- if (_plotter->drawstate->path->type == PATH_SEGMENT_LIST)
-
- _plotter->maybe_prepaint_segments (R___(_plotter) 0);
- }
-
- _plotter->drawstate->pos.x = x;
- _plotter->drawstate->pos.y = y;
- return 0;
- }
|