001 /* 002 * Copyright 2008 - 2008 JEuclid, http://jeuclid.sf.net 003 * 004 * Licensed under the Apache License, Version 2.0 (the "License"); 005 * you may not use this file except in compliance with the License. 006 * You may obtain a copy of the License at 007 * 008 * http://www.apache.org/licenses/LICENSE-2.0 009 * 010 * Unless required by applicable law or agreed to in writing, software 011 * distributed under the License is distributed on an "AS IS" BASIS, 012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 013 * See the License for the specific language governing permissions and 014 * limitations under the License. 015 */ 016 017 /* $Id: Parameter.java,v 03dc0884e86f 2008/06/21 10:53:35 maxberger $ */ 018 019 package net.sourceforge.jeuclid.context; 020 021 import net.sourceforge.jeuclid.context.typewrapper.BooleanTypeWrapper; 022 import net.sourceforge.jeuclid.context.typewrapper.ColorTypeWrapper; 023 import net.sourceforge.jeuclid.context.typewrapper.EnumTypeWrapper; 024 import net.sourceforge.jeuclid.context.typewrapper.NumberTypeWrapper; 025 import net.sourceforge.jeuclid.context.typewrapper.TLIListTypeWrapper; 026 import net.sourceforge.jeuclid.context.typewrapper.TypeWrapper; 027 028 /** 029 * Possible parameters for the LayoutContext. 030 * 031 * @version $Revision: 03dc0884e86f $ 032 */ 033 public enum Parameter { 034 /** 035 * Display style (Display). 036 */ 037 DISPLAY(EnumTypeWrapper.getInstance(Display.class), false, "display", 038 "display style"), 039 040 /** 041 * Font size (Float) used for the output. Defaults to 12.0pt. Please Note: 042 * You may also want to set SCRIPTMINZISE. 043 */ 044 MATHSIZE(NumberTypeWrapper.getInstance(Float.class), false, "fontSize", 045 "font size used for the output (mathsize)"), 046 047 /** 048 * Font size (Float) for smallest script used. Defaults to 8.0pt. 049 */ 050 SCRIPTMINSIZE(NumberTypeWrapper.getInstance(Float.class), false, 051 "scriptMinSize", "font size to be used for smallest script"), 052 053 /** Script size multiplier (Float), defaults to 0.71. */ 054 SCRIPTSIZEMULTIPLIER(NumberTypeWrapper.getInstance(Float.class), false, 055 "scriptSizeMult", "script size multiplier"), 056 057 /** Script level (Integer), defaults to 0. */ 058 SCRIPTLEVEL(NumberTypeWrapper.getInstance(Integer.class), false, 059 "scriptLevel", "script level"), 060 061 /** 062 * Minimum font size for which anti-alias is turned on. Defaults to 10.0pt 063 */ 064 ANTIALIAS_MINSIZE(NumberTypeWrapper.getInstance(Float.class), false, 065 "antiAliasMinSize", 066 "minimum font size for which anti-alias is turned on"), 067 068 /** 069 * Debug mode (Boolean). If true, elements will have borders drawn around 070 * them. 071 */ 072 DEBUG(BooleanTypeWrapper.getInstance(), false, "debug", 073 "debug mode - if on, elements will have borders drawn around them"), 074 075 /** 076 * Anti-Alias mode (Boolean) for rendering. 077 */ 078 ANTIALIAS(BooleanTypeWrapper.getInstance(), false, "antiAlias", 079 "anti-alias mode"), 080 081 /** 082 * Default foreground color (Color). See 3.2.2.2 083 */ 084 MATHCOLOR(ColorTypeWrapper.getInstance(), false, "foregroundColor", 085 "default foreground color (mathcolor)"), 086 087 /** 088 * Default background color (Color), may be null. See 3.2.2.2 089 */ 090 MATHBACKGROUND(ColorTypeWrapper.getInstance(), true, "backgroundColor", 091 "default background color (mathbackground)"), 092 093 /** 094 * List<String> of font families for sans-serif. 095 * 096 * @see Parameter 097 */ 098 FONTS_SANSSERIF(TLIListTypeWrapper.getInstance(), false, 099 "fontsSansSerif", "list of font families for Sans-Serif"), 100 101 /** 102 * List<String> of font families for serif. 103 * 104 * @see Parameter 105 */ 106 FONTS_SERIF(TLIListTypeWrapper.getInstance(), false, "fontsSerif", 107 "list of font families for Serif"), 108 109 /** 110 * List<String> of font families for monospaced. 111 * 112 * @see Parameter 113 */ 114 FONTS_MONOSPACED(TLIListTypeWrapper.getInstance(), false, 115 "fontsMonospaced", "list of font families for Monospaced"), 116 117 /** 118 * CList<String> of font families for script. 119 * 120 * @see Parameter 121 */ 122 FONTS_SCRIPT(TLIListTypeWrapper.getInstance(), false, "fontsScript", 123 124 "list of font families for Script"), 125 /** 126 * List<String> of font families for fraktur. 127 * 128 * @see Parameter 129 */ 130 FONTS_FRAKTUR(TLIListTypeWrapper.getInstance(), false, "fontsFraktur", 131 "list of font families for Fraktur"), 132 133 /** 134 * List<String> of font families for double-struck. 135 * 136 * @see Parameter 137 */ 138 FONTS_DOUBLESTRUCK(TLIListTypeWrapper.getInstance(), false, 139 "fontsDoublestruck", "list of font families for Double-Struck"), 140 141 /** 142 * If true, <mfrac> element will NEVER increase children's 143 * scriptlevel (in violation of the spec); otherwise it will behave with 144 * accordance to the spec. 145 */ 146 MFRAC_KEEP_SCRIPTLEVEL( 147 BooleanTypeWrapper.getInstance(), 148 false, 149 "mfracKeepScriptLevel", 150 "if true, <mfrac> element will NEVER increase children's scriptlevel (in violation of the spec)"); 151 152 private final TypeWrapper typeWrapper; 153 154 private final boolean nullAllowed; 155 156 private final String optionName; 157 158 private final String optionDesc; 159 160 private Parameter(final TypeWrapper aTypeWrapper, 161 final boolean nullIsAllowed, final String oName, 162 final String oDesc) { 163 this.typeWrapper = aTypeWrapper; 164 this.nullAllowed = nullIsAllowed; 165 this.optionName = oName; 166 this.optionDesc = oDesc; 167 } 168 169 /** 170 * @return TypeWrapper instance used for this parameter 171 */ 172 public TypeWrapper getTypeWrapper() { 173 return this.typeWrapper; 174 } 175 176 /** 177 * @return user-friendly option name associated with this parameter 178 */ 179 public String getOptionName() { 180 return this.optionName; 181 } 182 183 /** 184 * @return user-friendly option name associated with this parameter 185 */ 186 public String getOptionDesc() { 187 return this.optionDesc; 188 } 189 190 /** 191 * Checks if the object is of a valid type for this parameter. 192 * 193 * @param o 194 * the object to check 195 * @return true if the parameter can be set. 196 */ 197 public boolean valid(final Object o) { 198 return o == null && this.nullAllowed || this.typeWrapper.valid(o); 199 } 200 201 /** 202 * Attempts to convert a parameter value expressed as string into an 203 * instance of the appropriate (for this parameter) type. 204 * 205 * @param value 206 * parameter value as string 207 * @return parameter value as an instance of the proper type 208 */ 209 public Object fromString(final String value) { 210 return this.typeWrapper.fromString(value); 211 } 212 213 /** 214 * Attempts to convert a parameter value expressed as an object of the 215 * appropriate (for this parameter) type into a string representation. 216 * 217 * @param value 218 * parameter value as object 219 * @return parameter value as string 220 */ 221 public String toString(final Object value) { 222 return this.typeWrapper.toString(value); 223 } 224 }