1 /* 2 * This file defines the text output classes; these are simple subsets of 3 * popular output formats needed by the various filters. 4 */ 5 6 #ifndef TEXTOUT 7 #define TEXTOUT 8 9 #include "outstream.h" 10 #include "instream.h" 11 #include "srlist.h" 12 #include "errhand.h" 13 14 #define TEXT_I_IGNORE -2 15 16 #define MAX_TEXT_REGNUM 10 17 #define MAX_TEXT_REGISTER 64 18 19 /* Base class */ 20 class TextOut { 21 22 int MatchCommand( const char *, int, SrEntry ** ); 23 char * GetDQtext( char *, char *, int ); 24 int OutString( const char * ); 25 int OutStringUC( const char * ); 26 27 public: 28 char *lfont; 29 char font_str[32]; 30 const char *mode; 31 char mode_str[32]; 32 char *nl; 33 char newline_str[32]; 34 int last_was_nl; 35 int last_was_par; 36 char newline_onoutput[3]; 37 SrList *userops; 38 OutStream *out; 39 int debug_flag; 40 TextOut *next; 41 42 /* Text Registers */ 43 char cmdreg[MAX_TEXT_REGNUM][MAX_TEXT_REGISTER]; 44 45 // Basic control 46 virtual int SetDebug( int ); 47 virtual const char *SetMode( const char * ); 48 virtual int SetRegisterValue( int, const char * ); 49 virtual int SetOutstream( OutStream * ); 50 virtual ~TextOut(); 51 virtual int Flush(); 52 virtual void SetNewlineString( const char * ); 53 54 // Error handler. Default is abort. 55 ErrHand *err; 56 57 // Get commands 58 virtual int ReadCommands( InStream * ); 59 60 // Common command generator 61 virtual int PutCommand( char *, char *, char *, char *, char *, int ); 62 63 // Basic text 64 virtual int PutChar( const char ); 65 virtual int PutToken( int, const char * ); 66 virtual int PutQuoted( int, const char * ); 67 virtual int UpdateNL( int ); 68 virtual int PutNewline( ); 69 70 // Verbatim mode output (mostly raw output, but for html, needs to 71 // handle the html special characters 72 virtual int PutTokenRaw(int, const char *); 73 74 /* Special output */ 75 virtual int PutOp( const char * ); 76 virtual int PutOp( const char *, char *, char *, int ); 77 virtual int PutOp( const char *, char *, char *, char *, char * ); 78 virtual int PutOp( const char *, char * ); 79 virtual int PutOp( const char *, char *, int ); 80 virtual int PutOpError( const char *, const char * ); 81 virtual int HasOp( const char * ); 82 83 /* Miscellaneous */ 84 virtual int Debug( int ); 85 }; 86 87 class TextOutHTML : public TextOut { 88 89 int Setup( ); 90 91 public: 92 TextOutHTML( OutStream * ); 93 TextOutHTML( ); 94 int PutChar( const char ); 95 int PutToken( int, const char * ); 96 int PutTokenRaw(int, const char *); 97 }; 98 99 class TextOutTeX : public TextOut { 100 101 int Setup( ); 102 103 public: 104 TextOutTeX( OutStream * ); 105 TextOutTeX( ); 106 int PutChar( const char ); 107 int PutToken( int, const char * ); 108 int PutTokenRaw(int, const char *); 109 }; 110 111 class TextOutNroff : public TextOut { 112 113 int Setup( ); 114 115 public: 116 TextOutNroff( OutStream * ); 117 TextOutNroff( ); 118 int PutChar( const char ); 119 int PutToken( int, const char * ); 120 int PutTokenRaw(int, const char *); 121 }; 122 123 class TextOutStrm : public TextOut { 124 public: 125 TextOutStrm( OutStream * ); 126 ~TextOutStrm(); 127 }; 128 129 #endif 130