/************************************************************************ * * StyleConverterHelper.java * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License version 2.1, as published by the Free Software Foundation. * * This library 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 * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA * * Copyright: 2002-2008 by Henrik Just * * All Rights Reserved. * * Version 1.0 (2008-09-08) * */ package writer2latex.xhtml; import writer2latex.office.OfficeReader; import writer2latex.office.OfficeStyleFamily; import writer2latex.office.StyleWithProperties; import writer2latex.office.XMLString; import writer2latex.util.ExportNameCollection; import writer2latex.util.Misc; /** *

This is an abstract base class to convert an OpenDocument style family to * CSS2 styles.

*/ public abstract class StyleConverterHelper extends ConverterHelper { // Translation of OpenDocument style names to CSS class names protected ExportNameCollection styleNames = new ExportNameCollection(true); // Style map to use protected XhtmlStyleMap styleMap; // Should we convert styles resp. hard formatting? protected boolean bConvertStyles = true; protected boolean bConvertHard = true; // The type of xhtml document protected int nType; // Scaling and unit transformation to use private String sScale; private String sColScale; private boolean bConvertToPx; /** Create a new StyleConverterHelper * @param ofr an OfficeReader to read style information from * @param config the configuration to use * @param converter the main Converter class * @param nType the type of xhtml to use */ public StyleConverterHelper(OfficeReader ofr, XhtmlConfig config, Converter converter, int nType) { super(ofr,config,converter); this.nType = nType; sScale = config.getXhtmlScaling(); sColScale = config.getXhtmlColumnScaling(); bConvertToPx = config.xhtmlConvertToPx(); } protected String scale(String s) { if (bConvertToPx) { return Misc.length2px(Misc.multiply(sScale,s)); } else { return Misc.multiply(sScale,s); } } protected String colScale(String s) { return scale(Misc.multiply(sColScale,s)); } /** Apply the writing direction (ltr or rtl) attribute from a style * @param style the OpenDocument style to use * @param info the StyleInfo object to add information to */ protected static void applyDirection(StyleWithProperties style, StyleInfo info) { String sDir = style.getProperty(XMLString.STYLE_WRITING_MODE); if ("lr-tb".equals(sDir)) { info.sDir="ltr"; } else if ("rl-tb".equals(sDir)) { info.sDir="rtl"; } } /** Apply language+country from a style * @param style the OpenDocument style to use * @param info the StyleInfo object to add information to */ protected static void applyLang(StyleWithProperties style, StyleInfo info) { String sLang = style.getProperty(XMLString.FO_LANGUAGE); String sCountry = style.getProperty(XMLString.FO_COUNTRY); if (sLang!=null) { if (sCountry==null) { info.sLang = sLang; } else { info.sLang = sLang+"-"+sCountry; } } } /** Get the OpenDocument style family associated with this * StyleConverterHelper * @return the style family */ public abstract OfficeStyleFamily getStyles(); /**

Convert style information for used styles

* @param sIndent a String of spaces to add before each line */ public abstract String getStyleDeclarations(String sIndent); }