diff options
author | wlemb <wlemb> | 2002-01-24 22:37:29 +0000 |
---|---|---|
committer | wlemb <wlemb> | 2002-01-24 22:37:29 +0000 |
commit | 7482010e8f31df2ac357c1f652c20f2d4fd6e713 (patch) | |
tree | d134edbf57061a0a29ced6b9bf92f37eeda3909a /src/libs/libgroff/geometry.cc | |
parent | 1878e2b7b01e7a8975aa29a57ea6b307226b88c8 (diff) | |
download | groff-7482010e8f31df2ac357c1f652c20f2d4fd6e713.tar.gz |
* tmac/groff_www.man, NEWS: Fix typos.
Complete revision of color support:
Adapt programs to the new libdriver/input.cc.
Color spaces are no longer converted to RGB but transferred as-is
in the troff intermediate output format.
Handle default color gracefully. troff now supports a `default'
color (which can't be changed).
grops will now use the proper color space functions if available.
Update pic.
Note that currently grohtml doesn't handle colors properly. This
has to be fixed.
* src/libgroff/itoa.c (UINT_DIGITS): New macro.
(ui_to_a): New function.
* src/include/lib.h: Updated.
* src/include/color.h (color_scheme): Replace `NONE' with `DEFAULT'.
(color): Simplified; removed all `double' members and methods.
A new array `components' now holds the color parameters.
(color::is_default, color::get_components): New methods.
(color::operator==, color:operator!=): New.
(Red, Green, Blue, Cyan, Magenta, Yellow, Black, Gray): New macros
to make access to the `components' array more comprehensible.
* src/libgroff/color.cc: Implement new color support.
(atoh): Small fixes.
(color::read_encoding): Simplified for new troff intermediate color
output format.
(default_color): New global variable.
* src/roff/troff/input.cc (default_symbol): New global variable.
(lookup_color): Use it.
(default_black): Removed.
(do_glyph_color, do_fill_color): Simplified.
(define_color): Handle default color.
Improve warnings.
(do_if_request): Handle default color.
* src/roff/troff/env.cc (environment::environment): Initialize
colors with `default_color'.
* src/roff/troff/node.cc (troff_output_file::put): Add method
for `unsigned int'.
(troff_output_file::hex): Removed.
(troff_output_file::fill_color, troff_output_file::glyph_color):
Updated to include/color.h and libdriver/input.cc.
* src/preproc/pic/object.cc (draw_arrow): New parameter to set
fill color properly (identically to the outline color). \D'f...'
doesn't work any more.
All function calls to it updated.
* src/devices/grohtml/post-html.cc (html_printer::do_body, main):
Updated.
* src/devices/grohtml/html-text.cc (html_text::issue_color_begin):
Updated.
* src/devices/grops/ps.cc (ps_output::put_color): New method.
(ps_printer::sbuf_color): Make a real member instead of pointer.
(ps_printer::fill_color, ps_printer::output_color): Removed.
(ps_printer::ps_printer): Updated.
(ps_printer::set_char): Ditto.
(ps_printer::set_color): Use various color schemes.
Use `put_color' method.
(ps_printer::flush_sbuf): Don't set color.
(ps_printer::fill_path): Take `environment' as parameter.
Simplify color handling.
(ps_printer::set_line_thickness): Renamed to ...
(ps_printer::set_line_thickness_and_color): This (and updated).
(ps_printer::set_color): Change second parameter from `complete'
to `fill' which better describes what it does.
(ps_printer::draw): Call `flush_sbuf' to output graphic commands
and text in the right order.
Updated.
Remove branches for `f' and `F'; this is handled by
libdriver/input.cc.
* src/devices/grops/ps.h: Updated.
* font/devps/prologue (FL): Redefined
({F,C}r,k,g: New color functions (with and without filling).
* doc/pic.ms, src/preproc/pic/pic.man: Small fixes.
* man/groff_diff.man, man/groff.man, man/groff_out.man,
doc/groff.texinfo, NEWS: Updated.
* src/libs/libdriver/input.cc: Completely rewritten. See comments
in this file for what has been changed.
Diffstat (limited to 'src/libs/libgroff/geometry.cc')
-rw-r--r-- | src/libs/libgroff/geometry.cc | 32 |
1 files changed, 20 insertions, 12 deletions
diff --git a/src/libs/libgroff/geometry.cc b/src/libs/libgroff/geometry.cc index 7aa0d2b8..58a94a4a 100644 --- a/src/libs/libgroff/geometry.cc +++ b/src/libs/libgroff/geometry.cc @@ -1,5 +1,5 @@ // -*- C++ -*- -/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001 +/* Copyright (C) 1989, 1990, 1991, 1992, 2000, 2001, 2002 Free Software Foundation, Inc. Written by Gaius Mulley <gaius@glam.ac.uk> using adjust_arc_center() from printer.cc, written by James Clark. @@ -136,14 +136,22 @@ void check_output_arc_limits(int x1, int y1, *miny = y1 + yv1 - radius; *maxy = y1 + yv1 + radius; - // now see which min/max can be reduced and increased for the limits of - // the arc - // - // Q2 | Q1 - // -----+----- - // Q3 | Q4 - // - if (xv1 >= 0 && yv1 >= 0) { + /* now to see which min/max can be reduced and increased for the limits of + * the arc + * + * Q2 | Q1 + * -----+----- + * Q3 | Q4 + * + * + * NB. (x1+xv1, y1+yv1) is at the origin + * + * below we ask a nested question + * (i) from which quadrant does the first vector start? + * (ii) into which quadrant does the second vector go? + * from the 16 possible answers we determine the limits of the arc + */ + if (xv1 > 0 && yv1 > 0) { // first vector in Q3 if (xv2 >= 0 && yv2 >= 0 ) { // second in Q1 @@ -172,7 +180,7 @@ void check_output_arc_limits(int x1, int y1, } } } - else if (xv1 >= 0 && yv1 < 0) { + else if (xv1 > 0 && yv1 < 0) { // first vector in Q2 if (xv2 >= 0 && yv2 >= 0) { // second in Q1 @@ -202,7 +210,7 @@ void check_output_arc_limits(int x1, int y1, *minx = MIN(x1, x2); } } - else if (xv1 < 0 && yv1 < 0) { + else if (xv1 <= 0 && yv1 <= 0) { // first vector in Q1 if (xv2 >= 0 && yv2 >= 0) { // second in Q1 @@ -232,7 +240,7 @@ void check_output_arc_limits(int x1, int y1, *maxy = y1; } } - else if (xv1 < 0 && yv1 >= 0) { + else if (xv1 <= 0 && yv1 > 0) { // first vector in Q4 if (xv2 >= 0 && yv2 >= 0) { // second in Q1 |