1// -*- C++ -*- 2/* Copyright (C) 1989, 1990, 1991, 1992, 1993, 2003 3 Free Software Foundation, Inc. 4 Written by James Clark (jjc@jclark.com) 5 6This file is part of groff. 7 8groff is free software; you can redistribute it and/or modify it under 9the terms of the GNU General Public License as published by the Free 10Software Foundation; either version 2, or (at your option) any later 11version. 12 13groff is distributed in the hope that it will be useful, but WITHOUT ANY 14WARRANTY; without even the implied warranty of MERCHANTABILITY or 15FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 16for more details. 17 18You should have received a copy of the GNU General Public License along 19with groff; see the file COPYING. If not, write to the Free Software 20Foundation, 51 Franklin St - Fifth Floor, Boston, MA 02110-1301, USA. */ 21 22class common_output : public output { 23private: 24 void dash_line(const position &start, const position &end, 25 const line_type <, double dash_width, double gap_width, 26 double *offsetp); 27 void dash_arc(const position ¢, double rad, 28 double start_angle, double end_angle, const line_type <, 29 double dash_width, double gap_width, double *offsetp); 30 void dot_line(const position &start, const position &end, 31 const line_type <, double gap_width, double *offsetp); 32 void dot_arc(const position ¢, double rad, 33 double start_angle, double end_angle, const line_type <, 34 double gap_width, double *offsetp); 35protected: 36 virtual void dot(const position &, const line_type &) = 0; 37 void ellipse_arc(const position &, const position &, 38 const position &, const distance &, 39 const line_type &); 40 void dashed_circle(const position &, double rad, const line_type &); 41 void dotted_circle(const position &, double rad, const line_type &); 42 void dashed_ellipse(const position &, const distance &, const line_type &); 43 void dotted_ellipse(const position &, const distance &, const line_type &); 44 void dashed_arc(const position &, const position &, const position &, 45 const line_type &); 46 void dotted_arc(const position &, const position &, const position &, 47 const line_type &); 48 virtual void solid_arc(const position ¢, double rad, double start_angle, 49 double end_angle, const line_type <); 50 void dashed_rounded_box(const position &, const distance &, double, 51 const line_type &); 52 void dotted_rounded_box(const position &, const distance &, double, 53 const line_type &); 54 void solid_rounded_box(const position &, const distance &, double, 55 const line_type &); 56 void filled_rounded_box(const position &, const distance &, double, double); 57public: 58 void start_picture(double sc, const position &ll, const position &ur) = 0; 59 void finish_picture() = 0; 60 void circle(const position &, double rad, const line_type &, double) = 0; 61 void text(const position &, text_piece *, int, double) = 0; 62 void line(const position &, const position *, int n, const line_type &) = 0; 63 void polygon(const position *, int n, const line_type &, double) = 0; 64 void spline(const position &, const position *, int n, 65 const line_type &) = 0; 66 void arc(const position &, const position &, const position &, 67 const line_type &) = 0; 68 void ellipse(const position &, const distance &, 69 const line_type &, double) = 0; 70 void rounded_box(const position &, const distance &, double, 71 const line_type &, double); 72 void set_color(char *, char *) = 0; 73 void reset_color() = 0; 74 char *get_last_filled() = 0; 75 char *get_outline_color() = 0; 76}; 77 78int compute_arc_center(const position &start, const position ¢, 79 const position &end, position *result); 80 81