123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- #include "sys-defines.h"
- #include "extern.h"
- int
- _API_pentype (R___(Plotter *_plotter) int level)
- {
- if (!_plotter->data->open)
- {
- _plotter->error (R___(_plotter)
- "pentype: invalid operation");
- return -1;
- }
- _API_endpath (S___(_plotter));
- if ((level < 0) || (level > 0xffff))
-
- level = _default_drawstate.pen_type;
- _plotter->drawstate->pen_type = level;
-
- return 0;
- }
- int
- _API_filltype (R___(Plotter *_plotter) int level)
- {
- int red, green, blue;
- double red_d, green_d, blue_d;
- double desaturate;
- plColor new_rgb;
- if (!_plotter->data->open)
- {
- _plotter->error (R___(_plotter)
- "filltype: invalid operation");
- return -1;
- }
- _API_endpath (S___(_plotter));
- if ((level < 0) || (level > 0xffff))
-
- level = _default_drawstate.fill_type;
- _plotter->drawstate->fill_type = level;
-
- if (level == 0)
-
- return 0;
-
-
- red = _plotter->drawstate->fillcolor_base.red;
- green = _plotter->drawstate->fillcolor_base.green;
- blue = _plotter->drawstate->fillcolor_base.blue;
-
- red_d = ((double)red)/0xFFFF;
- green_d = ((double)green)/0xFFFF;
- blue_d = ((double)blue)/0xFFFF;
-
- desaturate = ((double)_plotter->drawstate->fill_type - 1.)/0xFFFE;
- red_d = red_d + desaturate * (1.0 - red_d);
- green_d = green_d + desaturate * (1.0 - green_d);
- blue_d = blue_d + desaturate * (1.0 - blue_d);
-
- new_rgb.red = IROUND(0xFFFF * red_d);
- new_rgb.green = IROUND(0xFFFF * green_d);
- new_rgb.blue = IROUND(0xFFFF * blue_d);
-
- _plotter->drawstate->fillcolor = new_rgb;
- return 0;
- }
|