1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586 |
- #include "sys-defines.h"
- #include "extern.h"
- int
- _API_flinewidth(R___(Plotter *_plotter) double new_line_width)
- {
- double device_line_width, min_sing_val, max_sing_val;
- int quantized_device_line_width;
- if (!_plotter->data->open)
- {
- _plotter->error (R___(_plotter)
- "flinewidth: invalid operation");
- return -1;
- }
- _API_endpath (S___(_plotter));
- if (new_line_width < 0.0)
- {
- new_line_width = _plotter->drawstate->default_line_width;
- _plotter->drawstate->line_width_is_default = true;
- }
- else
- _plotter->drawstate->line_width_is_default = false;
-
-
- _plotter->drawstate->line_width = new_line_width;
-
-
- _matrix_sing_vals (_plotter->drawstate->transform.m,
- &min_sing_val, &max_sing_val);
- device_line_width = min_sing_val * new_line_width;
- quantized_device_line_width = IROUND(device_line_width);
-
- if (quantized_device_line_width == 0 && device_line_width > 0.0)
- quantized_device_line_width = 1;
-
- _plotter->drawstate->device_line_width = device_line_width;
- _plotter->drawstate->quantized_device_line_width
- = quantized_device_line_width;
-
- _plotter->data->linewidth_invoked = true;
- return 0;
- }
|