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 3108 2006-03-13 18:03:00Z gbevin $
008 */
009 package com.uwyn.jhighlight.renderer;
010
011 import com.uwyn.jhighlight.highlighter.CppHighlighter;
012 import com.uwyn.jhighlight.highlighter.ExplicitStateHighlighter;
013 import com.uwyn.jhighlight.renderer.XhtmlRenderer;
014 import java.util.HashMap;
015 import 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 */
024 public 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