001/*
002 * Copyright 2006 Arnout Engelen <arnouten[remove] at bzzt dot net>
003 * Copyright 2004-2006 Geert Bevin <gbevin[remove] at uwyn dot com>
004 * Distributed under the terms of either:
005 * - the common development and distribution license (CDDL), v1.0; or
006 * - the GNU Lesser General Public License, v2.1 or later
007 * $Id: CppXhtmlRenderer.java 3106 2006-03-13 17:53:50Z gbevin $
008 */
009package com.uwyn.jhighlight.renderer;
010
011import com.uwyn.jhighlight.highlighter.CppHighlighter;
012import com.uwyn.jhighlight.highlighter.ExplicitStateHighlighter;
013import com.uwyn.jhighlight.renderer.XhtmlRenderer;
014import java.util.HashMap;
015import java.util.Map;
016
017/**
018 * Generates highlighted syntax in XHTML from Cpp source.
019 *
020 * @author Arnout Engelen (arnouten[remove] at bzzt dot net)
021 * @author Geert Bevin (gbevin[remove] at uwyn dot com)
022 * @version $Revision: 0$
023 */
024public class CppXhtmlRenderer extends XhtmlRenderer
025{
026        public final static HashMap DEFAULT_CSS = new HashMap() {{
027                        put("h1",
028                                "font-family: sans-serif; " +
029                                "font-size: 16pt; " +
030                                "font-weight: bold; " +
031                                "color: rgb(0,0,0); " +
032                                "background: rgb(210,210,210); " +
033                                "border: solid 1px black; " +
034                                "padding: 5px; " +
035                                "text-align: center;");
036                        
037                        put("code",
038                                "color: rgb(0,0,0); " +
039                                "font-family: monospace; " +
040                                "font-size: 12px; " +
041                                "white-space: nowrap;");
042                        
043                        put(".cpp_plain",
044                                "color: rgb(0,0,0);");
045                        
046                        put(".cpp_keyword",
047                                "color: rgb(0,0,0); " +
048                                "font-weight: bold;");
049                        
050                        put(".cpp_type",
051                                "color: rgb(0,44,221);");
052                        
053                        put(".cpp_operator",
054                                "color: rgb(0,124,31);");
055                        
056                        put(".cpp_separator",
057                                "color: rgb(0,33,255);");
058                        
059                        put(".cpp_literal",
060                                "color: rgb(188,0,0);");
061                        
062                        put(".cpp_comment",
063                                "color: rgb(147,147,147); " +
064                                "background-color: rgb(247,247,247);");
065                        
066                        put(".cpp_doxygen_comment",
067                                "color: rgb(147,147,147); " +
068                                "background-color: rgb(247,247,247); " +
069                                "font-style: italic;");
070                        
071                        put(".cpp_doxygen_tag",
072                                "color: rgb(147,147,147); " +
073                                "background-color: rgb(247,247,247); " +
074                                "font-style: italic; " +
075                                "font-weight: bold;");
076                        
077                        put(".cpp_preproc",
078                                "color: purple;");
079                }};
080        
081        protected Map getDefaultCssStyles()
082        {
083                return DEFAULT_CSS;
084        }
085                
086        protected String getCssClass(int style)
087        {
088                switch (style)
089                {
090                        case CppHighlighter.PLAIN_STYLE:
091                                return "cpp_plain";
092                        case CppHighlighter.KEYWORD_STYLE:
093                                return "cpp_keyword";
094                        case CppHighlighter.TYPE_STYLE:
095                                return "cpp_type";
096                        case CppHighlighter.OPERATOR_STYLE:
097                                return "cpp_operator";
098                        case CppHighlighter.SEPARATOR_STYLE:
099                                return "cpp_separator";
100                        case CppHighlighter.LITERAL_STYLE:
101                                return "cpp_literal";
102                        case CppHighlighter.CPP_COMMENT_STYLE:
103                                return "cpp_comment";
104                        case CppHighlighter.DOXYGEN_COMMENT_STYLE:
105                                return "cpp_doxygen_comment";
106                        case CppHighlighter.DOXYGEN_TAG_STYLE:
107                                return "cpp_doxygen_tag";
108                        case CppHighlighter.PREPROC_STYLE:
109                                return "cpp_preproc";
110                }
111                
112                return null;
113        }
114        
115        protected ExplicitStateHighlighter getHighlighter()
116        {
117                return new CppHighlighter();
118        }
119}
120