/*************************************************************************** xterm256generator.h - description ------------------- begin : Oct 13 2006 copyright : (C) 2006-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 . */ #ifndef XTERM256GENERATOR_H #define XTERM256GENERATOR_H #include #include "codegenerator.h" namespace highlight { /** \brief This class generates xterm 256 color 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 Xterm256Generator : public highlight::CodeGenerator { public: Xterm256Generator(); ~Xterm256Generator(); private: /** prints document header */ string getHeader(); /** Prints document footer*/ string getFooter(); /** Prints document body*/ void printBody(); /** \return escaped character*/ virtual string maskCharacter ( unsigned char ); /** initialize tags in specific format according to colouring information provided in DucumentStyle */ void initOutputTags(); /** @param style associated element style @return formatting seqence */ string getOpenTag (const ElementStyle &style ); /** @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 close element formatting*/ string getKeywordCloseTag ( unsigned int styleID ); /** convert an xterm color value (0-253) to 3 unsigned chars rgb @param color xterm color @param rgb RGB destination string */ void xterm2rgb ( unsigned char color, unsigned char* rgb ); /** fill the colortable for use with rgb2xterm */ void maketable(); /** selects the nearest xterm color for a 3xBYTE rgb value @param RGB colour string */ unsigned char rgb2xterm ( unsigned char* rgb ); /// Flag to determine if colourtable is calculated static bool initialized; /// color tzable for nearest match calculation static unsigned char colortable[254][3]; /// the 6 value iterations in the xterm color cube static const unsigned char valuerange[] ; /// 16 basic colors static const unsigned char basic16[16][3]; }; } #endif