1251538Srpaulo/* $NetBSD: output.h,v 1.1.1.1 2016/01/13 18:41:48 christos Exp $ */ 2251538Srpaulo 3251538Srpaulo// -*- C++ -*- 4251538Srpaulo/* Copyright (C) 1989, 1990, 1991, 1992, 2001 Free Software Foundation, Inc. 5251538Srpaulo Written by James Clark (jjc@jclark.com) 6251538Srpaulo 7251538SrpauloThis file is part of groff. 8251538Srpaulo 9251538Srpaulogroff is free software; you can redistribute it and/or modify it under 10251538Srpaulothe terms of the GNU General Public License as published by the Free 11251538SrpauloSoftware Foundation; either version 2, or (at your option) any later 12251538Srpauloversion. 13251538Srpaulo 14251538Srpaulogroff is distributed in the hope that it will be useful, but WITHOUT ANY 15251538SrpauloWARRANTY; without even the implied warranty of MERCHANTABILITY or 16251538SrpauloFITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 17251538Srpaulofor more details. 18251538Srpaulo 19251538SrpauloYou should have received a copy of the GNU General Public License along 20251538Srpaulowith groff; see the file COPYING. If not, write to the Free Software 21251538SrpauloFoundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ 22251538Srpaulo 23251538Srpaulostruct line_type { 24251538Srpaulo enum { invisible, solid, dotted, dashed } type; 25251538Srpaulo double dash_width; 26251538Srpaulo double thickness; // the thickness is in points 27251538Srpaulo 28251538Srpaulo line_type(); 29251538Srpaulo}; 30251538Srpaulo 31251538Srpaulo 32251538Srpauloclass output { 33251538Srpauloprotected: 34251538Srpaulo char *args; 35251538Srpaulo double desired_height; // zero if no height specified 36251538Srpaulo double desired_width; // zero if no depth specified 37251538Srpaulo double compute_scale(double, const position &, const position &); 38251538Srpaulopublic: 39251538Srpaulo output(); 40251538Srpaulo virtual ~output(); 41251538Srpaulo void set_desired_width_height(double wid, double ht); 42251538Srpaulo void set_args(const char *); 43251538Srpaulo virtual void start_picture(double sc, const position &ll, const position &ur) = 0; 44251538Srpaulo virtual void finish_picture() = 0; 45251538Srpaulo virtual void circle(const position &, double rad, 46251538Srpaulo const line_type &, double) = 0; 47251538Srpaulo virtual void text(const position &, text_piece *, int, double) = 0; 48251538Srpaulo virtual void line(const position &, const position *, int n, 49251538Srpaulo const line_type &) = 0; 50251538Srpaulo virtual void polygon(const position *, int n, 51251538Srpaulo const line_type &, double) = 0; 52251538Srpaulo virtual void spline(const position &, const position *, int n, 53251538Srpaulo const line_type &) = 0; 54251538Srpaulo virtual void arc(const position &, const position &, const position &, 55251538Srpaulo const line_type &) = 0; 56251538Srpaulo virtual void ellipse(const position &, const distance &, 57251538Srpaulo const line_type &, double) = 0; 58251538Srpaulo virtual void rounded_box(const position &, const distance &, double, 59251538Srpaulo const line_type &, double) = 0; 60251538Srpaulo virtual void command(const char *, const char *, int) = 0; 61251538Srpaulo virtual void set_location(const char *, int) {} 62251538Srpaulo virtual void set_color(char *, char *) = 0; 63251538Srpaulo virtual void reset_color() = 0; 64251538Srpaulo virtual char *get_last_filled() = 0; 65251538Srpaulo virtual char *get_outline_color() = 0; 66251538Srpaulo virtual int supports_filled_polygons(); 67251538Srpaulo virtual void begin_block(const position &ll, const position &ur); 68251538Srpaulo virtual void end_block(); 69251538Srpaulo}; 70251538Srpaulo 71251538Srpauloextern output *out; 72251538Srpaulo 73251538Srpaulo/* #define FIG_SUPPORT 1 */ 74251538Srpaulo#define TEX_SUPPORT 1 75251538Srpaulo 76251538Srpaulooutput *make_troff_output(); 77251538Srpaulo 78251538Srpaulo#ifdef TEX_SUPPORT 79251538Srpaulooutput *make_tex_output(); 80251538Srpaulooutput *make_tpic_output(); 81251538Srpaulo#endif /* TEX_SUPPORT */ 82251538Srpaulo 83252406Srpaulo#ifdef FIG_SUPPORT 84251538Srpaulooutput *make_fig_output(); 85251538Srpaulo#endif /* FIG_SUPPORT */ 86251538Srpaulo