summaryrefslogtreecommitdiff
path: root/support/highlight/src/core/ansigenerator.h
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /support/highlight/src/core/ansigenerator.h
Initial commit
Diffstat (limited to 'support/highlight/src/core/ansigenerator.h')
-rw-r--r--support/highlight/src/core/ansigenerator.h89
1 files changed, 89 insertions, 0 deletions
diff --git a/support/highlight/src/core/ansigenerator.h b/support/highlight/src/core/ansigenerator.h
new file mode 100644
index 0000000000..51ac965a5c
--- /dev/null
+++ b/support/highlight/src/core/ansigenerator.h
@@ -0,0 +1,89 @@
+/***************************************************************************
+ ansicode.h - description
+ -------------------
+ begin : Jul 5 2004
+ copyright : (C) 2004-2007 by Andre Simon
+ email : andre.simon1@gmx.de
+ ***************************************************************************/
+
+
+/*
+This file is part of Highlight.
+
+Highlight is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+Highlight is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with Highlight. If not, see <http://www.gnu.org/licenses/>.
+*/
+
+
+#ifndef ANSIGENERATOR_H
+#define ANSIGENERATOR_H
+
+#include <string>
+
+#include "codegenerator.h"
+#include "charcodes.h"
+#include "version.h"
+
+namespace highlight
+{
+
+ /**
+ \brief This class generates ANSI escape sequences.
+
+ It contains information about the resulting document structure (document
+ header and footer), the colour system, white space handling and text
+ formatting attributes.
+
+ * @author Andre Simon
+ */
+
+ class AnsiGenerator : public highlight::CodeGenerator
+ {
+ public:
+ AnsiGenerator();
+ ~AnsiGenerator();
+
+ /** prints document header
+ */
+ string getHeader();
+
+ /** Prints document footer*/
+ string getFooter();
+
+ /** Prints document body*/
+ void printBody();
+
+ private:
+
+ /** \return escaped character*/
+ virtual string maskCharacter ( unsigned char );
+
+
+ /** gibt ANSI-"Tags" zurueck (Farbindex+bold+kursiv)*/
+ string getOpenTag ( const string&font,
+ const string&fgCol, const string&bgCol="" );
+
+ /** initialize tags in specific format according to colouring information provided in DucumentStyle */
+ void initOutputTags();
+
+ /** @param styleID current style ID
+ @return matching sequence to begin a new element formatting*/
+ string getKeywordOpenTag ( unsigned int styleID );
+
+ /** @param styleID current style ID
+ @return matching sequence to stop element formatting*/
+ string getKeywordCloseTag ( unsigned int styleID );
+ };
+
+}
+#endif