diff options
author | wlemb <wlemb> | 2002-07-17 04:55:45 +0000 |
---|---|---|
committer | wlemb <wlemb> | 2002-07-17 04:55:45 +0000 |
commit | 2d126da890e3f8a788fb11113e45deeef4aa7c3a (patch) | |
tree | b657edb579025108ffbee66f6f95cf7f695a90e5 /src/devices/grolj4 | |
parent | 6ec8cde0582c0a3d31b79b67cbba93ec0a376a3e (diff) | |
download | groff-2d126da890e3f8a788fb11113e45deeef4aa7c3a.tar.gz |
* contrib/pic2graph/pic2graph.*: Use convert(1).
* contrib/eqn2graph/eqn2graph.*: Minor fixes.
* tmac/groff_trace.man: New file.
* tmac/Makefile.sub: Updated.
* NEWS: Updated.
* src/roff/groff/groff.man: Add some cross references.
* src/roff/troff/input.cc (substring_request): Add warnings for
string indices out of range.
* font/devdvi/generate/ec.map: Fix typo (`(l' -> `/l').
* font/devdvi/*EC: Regenerated.
* man/groff_char.man: Updated and extended.
* src/roff/troff/input.cc (length_macro): Renamed to...
(length_request): This.
Move call of `tok.next()' to the very end, otherwise the register
value hasn't been updated yet.
(init_input_requests): Updated.
* src/roff/troff/input.cc (substring_macro): Renamed to...
(substring_request): This.
(init_input_requests): Updated.
* src/roff/troff/request.h: Updated.
* src/roff/grog/grog.sh: Fix typo.
* win32-diffs: Updated.
Handle `papersize' keyword properly in DESC.
* src/libs/libgroff/font.cc (font::scan_papersize): Fix argument
type.
Updated all callers.
* src/libs/libgroff/paper.cc: Add four more paper formats used by
grolj4.
* src/include/paper.h: Updated.
* src/devices/grolbp/lbp.cc: Remove unnecessary semicolons.
Other minor C syntax fixes.
(papersize, paperlength, paperwidth): Renamed to `user_*'.
(lbp_printer): Add `papersize', `paperlength', and `paperwidth'
members.
(lbp_printer::lbp_printer): Pass three arguments.
Set paper dimensions properly.
(make_printer, main): Updated.
(handle_unknown_desc_command): Fix error messages.
(main): Handle papersize keyword in DESC properly.
* src/devices/grolj4/lj4.cc (paper_size): Renamed to
`user_paper_size'.
(lbp_printer::lbp_printer): Pass an argument.
Set paper_size properly.
(handle_unknown_desc_command): Removed.
(make_printer, main): Updated.
* src/devices/grolj4/grolj4.man: Minor documentation fix.
* man/groff_font.man, NEWS: Updated.
Diffstat (limited to 'src/devices/grolj4')
-rw-r--r-- | src/devices/grolj4/grolj4.man | 5 | ||||
-rw-r--r-- | src/devices/grolj4/lj4.cc | 56 |
2 files changed, 26 insertions, 35 deletions
diff --git a/src/devices/grolj4/grolj4.man b/src/devices/grolj4/grolj4.man index 414ad78d..6d880292 100644 --- a/src/devices/grolj4/grolj4.man +++ b/src/devices/grolj4/grolj4.man @@ -1,5 +1,5 @@ .ig -Copyright (C) 1994-2000, 2001 Free Software Foundation, Inc. +Copyright (C) 1994-2000, 2001, 2002 Free Software Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice @@ -102,8 +102,7 @@ Prepend directory to the search path for font and device description files. .LP The following four commands are available additionally in the -.B DESC -file: +font description files: .TP .BI pclweight \ N The integer value diff --git a/src/devices/grolj4/lj4.cc b/src/devices/grolj4/lj4.cc index 0ee11852..0c3150d3 100644 --- a/src/devices/grolj4/lj4.cc +++ b/src/devices/grolj4/lj4.cc @@ -1,5 +1,5 @@ // -*- C++ -*- -/* Copyright (C) 1994, 2000, 2001 Free Software Foundation, Inc. +/* Copyright (C) 1994, 2000, 2001, 2002 Free Software Foundation, Inc. Written by James Clark (jjc@jclark.com) This file is part of groff. @@ -55,7 +55,7 @@ static struct { { "dl", 90, 71, 59 }, }; -static int paper_size = -1; +static int user_paper_size = -1; static int landscape_flag = 0; static int duplex_flag = 0; @@ -76,6 +76,8 @@ const int DEFAULT_HPGL_UNITS = 1016; int line_width_factor = DEFAULT_LINE_WIDTH_FACTOR; unsigned ncopies = 0; // 0 means don't send ncopies command +static int lookup_paper_size(const char *); + class lj4_font : public font { public: ~lj4_font(); @@ -158,7 +160,7 @@ void lj4_font::handle_unknown_font_command(const char *command, class lj4_printer : public printer { public: - lj4_printer(); + lj4_printer(int); ~lj4_printer(); void set_char(int, font *, const environment *, int, const char *name); void draw(int code, int *p, int np, const environment *env); @@ -184,6 +186,7 @@ private: double pen_width; double hpgl_scale; int hpgl_inited; + int paper_size; }; inline @@ -207,7 +210,7 @@ void lj4_printer::hpgl_end() fputs(";\033%0A", stdout); } -lj4_printer::lj4_printer() +lj4_printer::lj4_printer(int ps) : cur_hpos(-1), cur_font(0), cur_size(0), @@ -221,11 +224,19 @@ lj4_printer::lj4_printer() font::res); fputs("\033E", stdout); // reset if (font::res != 300) - printf("\033&u%dD", font::res); // unit of measure + printf("\033&u%dD", font::res); // unit of measure if (ncopies > 0) printf("\033&l%uX", ncopies); - if (paper_size < 0) - paper_size = 0; // default to letter + paper_size = 0; // default to letter + if (font::papersize) { + int n = lookup_paper_size(font::papersize); + if (n < 0) + error("unknown paper size `%1'", font::papersize); + else + paper_size = n; + } + if (ps >= 0) + paper_size = ps; printf("\033&l%dA" // paper size "\033&l%dO" // orientation "\033&l0E", // no top margin @@ -266,7 +277,8 @@ int is_unprintable(unsigned char c) return c < 32 && (c == 0 || (7 <= c && c <= 15) || c == 27); } -void lj4_printer::set_char(int index, font *f, const environment *env, int w, const char *name) +void lj4_printer::set_char(int index, font *f, const environment *env, + int w, const char *name) { int code = f->get_code(index); @@ -534,8 +546,8 @@ void lj4_printer::hpgl_init() hpgl_scale = double(DEFAULT_HPGL_UNITS)/font::res; printf("\033&f0S" // push position "\033*p0x0Y" // move to 0,0 - "\033*c%dx%dy0T" // establish picture frame - "\033%%1B" // switch to HPGL + "\033*c%dx%dy0T" // establish picture frame + "\033%%1B" // switch to HPGL "SP1SC0,%.4f,0,-%.4f,2IR0,100,0,100" // set up scaling "LA1,4,2,4" // round line ends and joins "PR" // relative plotting @@ -568,7 +580,7 @@ font *lj4_printer::make_font(const char *nm) printer *make_printer() { - return new lj4_printer; + return new lj4_printer(user_paper_size); } static @@ -583,25 +595,6 @@ int lookup_paper_size(const char *s) return -1; } -static -void handle_unknown_desc_command(const char *command, const char *arg, - const char *filename, int lineno) -{ - if (strcmp(command, "papersize") == 0) { - if (arg == 0) - error_with_file_and_line(filename, lineno, - "`papersize' command requires an argument"); - else if (paper_size < 0) { - int n = lookup_paper_size(arg); - if (n < 0) - error_with_file_and_line(filename, lineno, - "unknown paper size `%1'", arg); - else - paper_size = n; - } - } -} - static void usage(FILE *stream); extern "C" int optopt, optind; @@ -611,7 +604,6 @@ int main(int argc, char **argv) program_name = argv[0]; static char stderr_buf[BUFSIZ]; setbuf(stderr, stderr_buf); - font::set_unknown_desc_command_handler(handle_unknown_desc_command); int c; static const struct option long_options[] = { { "help", no_argument, 0, CHAR_MAX + 1 }, @@ -647,7 +639,7 @@ int main(int argc, char **argv) if (n < 0) error("unknown paper size `%1'", optarg); else - paper_size = n; + user_paper_size = n; break; } case 'v': |