From: Jean-Marc Lasgouttes Date: Tue, 27 Oct 2009 16:16:15 +0000 (+0000) Subject: Move some functions that only required a FontInfo parameter from Font.* X-Git-Tag: 2.0.0~5282 X-Git-Url: https://git.lyx.org/gitweb/?a=commitdiff_plain;h=0c1ff6d89e72ae82e4a68f99934b735ade5fea5c;p=lyx.git Move some functions that only required a FontInfo parameter from Font.* to FontInfo.* This allows tex2lyx to use the plain FontInfo object (via Layout), and to remove several '#ifdef TEX2LYX' in the code Reorder a bit the makefile in tex2lyx git-svn-id: svn://svn.lyx.org/lyx/lyx-devel/trunk@31772 a592a061-630c-0410-9148-cb99ea01b6c8 --- diff --git a/src/Font.cpp b/src/Font.cpp index 4bf3040cd7..8cdb3f4096 100644 --- a/src/Font.cpp +++ b/src/Font.cpp @@ -39,6 +39,16 @@ using namespace lyx::support; namespace lyx { +// +// Strings used to read and write .lyx format files +// +// These are defined in FontInfo.cpp +extern char const ** LyXFamilyNames; +extern char const ** LyXSeriesNames; +extern char const ** LyXShapeNames; +extern char const ** LyXSizeNames; +extern char const ** LyXMiscNames; + // // Names for the GUI // @@ -65,29 +75,6 @@ char const * GUISizeNames[14] = char const * GUIMiscNames[5] = { N_("Off"), N_("On"), N_("Toggle"), N_("Inherit"), N_("Ignore") }; - -// -// Strings used to read and write .lyx format files -// -char const * LyXFamilyNames[NUM_FAMILIES + 2 /* default & error */] = -{ "roman", "sans", "typewriter", "symbol", - "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "wasy", "esint", - "default", "error" }; - -char const * LyXSeriesNames[4] = -{ "medium", "bold", "default", "error" }; - -char const * LyXShapeNames[6] = -{ "up", "italic", "slanted", "smallcaps", "default", "error" }; - -char const * LyXSizeNames[14] = -{ "tiny", "scriptsize", "footnotesize", "small", "normal", "large", - "larger", "largest", "huge", "giant", - "increase", "decrease", "default", "error" }; - -char const * LyXMiscNames[5] = -{ "off", "on", "toggle", "default", "error" }; - // // Strings used to write LaTeX files // @@ -208,92 +195,6 @@ docstring const Font::stateText(BufferParams * params) const } -// Set family according to lyx format string -void setLyXFamily(string const & fam, FontInfo & f) -{ - string const s = ascii_lowercase(fam); - - int i = 0; - while (LyXFamilyNames[i] != s && - LyXFamilyNames[i] != string("error")) - ++i; - if (s == LyXFamilyNames[i]) - f.setFamily(FontFamily(i)); - else - lyxerr << "setLyXFamily: Unknown family `" - << s << '\'' << endl; -} - - -// Set series according to lyx format string -void setLyXSeries(string const & ser, FontInfo & f) -{ - string const s = ascii_lowercase(ser); - - int i = 0; - while (LyXSeriesNames[i] != s && - LyXSeriesNames[i] != string("error")) ++i; - if (s == LyXSeriesNames[i]) { - f.setSeries(FontSeries(i)); - } else - lyxerr << "setLyXSeries: Unknown series `" - << s << '\'' << endl; -} - - -// Set shape according to lyx format string -void setLyXShape(string const & sha, FontInfo & f) -{ - string const s = ascii_lowercase(sha); - - int i = 0; - while (LyXShapeNames[i] != s && LyXShapeNames[i] != string("error")) - ++i; - if (s == LyXShapeNames[i]) - f.setShape(FontShape(i)); - else - lyxerr << "Font::setLyXShape: Unknown shape `" - << s << '\'' << endl; -} - - -// Set size according to lyx format string -void setLyXSize(string const & siz, FontInfo & f) -{ - string const s = ascii_lowercase(siz); - int i = 0; - while (LyXSizeNames[i] != s && LyXSizeNames[i] != string("error")) - ++i; - if (s == LyXSizeNames[i]) { - f.setSize(FontSize(i)); - } else - lyxerr << "Font::setLyXSize: Unknown size `" - << s << '\'' << endl; -} - - -// Set size according to lyx format string -FontState Font::setLyXMisc(string const & siz) -{ - string const s = ascii_lowercase(siz); - int i = 0; - while (LyXMiscNames[i] != s && - LyXMiscNames[i] != string("error")) ++i; - if (s == LyXMiscNames[i]) - return FontState(i); - lyxerr << "Font::setLyXMisc: Unknown misc flag `" - << s << '\'' << endl; - return FONT_OFF; -} - - -/// Sets color after LyX text format -void setLyXColor(string const & col, FontInfo & f) -{ - f.setColor(lcolor.getFromLyXName(col)); -} - - // Returns size in latex format string const Font::latexSize() const { @@ -301,81 +202,6 @@ string const Font::latexSize() const } -// Read a font definition from given file in lyx format -// Used for layouts -FontInfo lyxRead(Lexer & lex, FontInfo const & fi) -{ - FontInfo f = fi; - bool error = false; - bool finished = false; - while (!finished && lex.isOK() && !error) { - lex.next(); - string const tok = ascii_lowercase(lex.getString()); - - if (tok.empty()) { - continue; - } else if (tok == "endfont") { - finished = true; - } else if (tok == "family") { - lex.next(); - string const ttok = lex.getString(); - setLyXFamily(ttok, f); - } else if (tok == "series") { - lex.next(); - string const ttok = lex.getString(); - setLyXSeries(ttok, f); - } else if (tok == "shape") { - lex.next(); - string const ttok = lex.getString(); - setLyXShape(ttok, f); - } else if (tok == "size") { - lex.next(); - string const ttok = lex.getString(); - setLyXSize(ttok, f); - } else if (tok == "misc") { - lex.next(); - string const ttok = ascii_lowercase(lex.getString()); - - if (ttok == "no_bar") { - f.setUnderbar(FONT_OFF); - } else if (ttok == "no_strikeout") { - f.setStrikeout(FONT_OFF); - } else if (ttok == "no_uuline") { - f.setUuline(FONT_OFF); - } else if (ttok == "no_uwave") { - f.setUwave(FONT_OFF); - } else if (ttok == "no_emph") { - f.setEmph(FONT_OFF); - } else if (ttok == "no_noun") { - f.setNoun(FONT_OFF); - } else if (ttok == "emph") { - f.setEmph(FONT_ON); - } else if (ttok == "underbar") { - f.setUnderbar(FONT_ON); - } else if (ttok == "strikeout") { - f.setStrikeout(FONT_ON); - } else if (ttok == "uuline") { - f.setUuline(FONT_ON); - } else if (ttok == "uwave") { - f.setUwave(FONT_ON); - } else if (ttok == "noun") { - f.setNoun(FONT_ON); - } else { - lex.printError("Illegal misc type"); - } - } else if (tok == "color") { - lex.next(); - string const ttok = lex.getString(); - setLyXColor(ttok, f); - } else { - lex.printError("Unknown tag"); - error = true; - } - } - return f; -} - - /// Writes the changes from this font to orgfont in .lyx format in file void Font::lyxWriteChanges(Font const & orgfont, ostream & os) const diff --git a/src/Font.h b/src/Font.h index 97d403627e..7c0b61134f 100644 --- a/src/Font.h +++ b/src/Font.h @@ -15,10 +15,6 @@ #ifndef FONT_H #define FONT_H -#ifdef TEX2LYX -#include "tex2lyx/Font.h" -#else - #include "ColorCode.h" #include "FontInfo.h" @@ -27,7 +23,6 @@ namespace lyx { -class Lexer; class BufferParams; class Language; class LaTeXFeatures; @@ -57,10 +52,6 @@ public: /// void setLanguage(Language const * l); - /// Returns misc flag after LyX text format - FontState setLyXMisc(std::string const &); - - /// Returns size of font in LaTeX text notation std::string const latexSize() const; @@ -153,26 +144,6 @@ bool operator!=(Font const & font1, Font const & font2) */ std::string const freefont2string(); - -/// Set family after LyX text format -void setLyXFamily(std::string const &, FontInfo &); - -/// Set series after LyX text format -void setLyXSeries(std::string const &, FontInfo &); - -/// Set shape after LyX text format -void setLyXShape(std::string const &, FontInfo &); - -/// Set size after LyX text format -void setLyXSize(std::string const &, FontInfo &); - -/// Sets color after LyX text format -void setLyXColor(std::string const &, FontInfo &); - -/// Read a font specification from Lexer. Used for layout files. -FontInfo lyxRead(Lexer &, FontInfo const & fi = sane_font); - } // namespace lyx -#endif // TEX2LYX #endif diff --git a/src/FontInfo.cpp b/src/FontInfo.cpp index 491ebf3885..8343df0751 100644 --- a/src/FontInfo.cpp +++ b/src/FontInfo.cpp @@ -14,15 +14,42 @@ #include +#include "ColorSet.h" #include "FontInfo.h" +#include "Lexer.h" #include "support/debug.h" #include "support/docstring.h" +#include "support/lstrings.h" using namespace std; +using namespace lyx::support; namespace lyx { +// +// Strings used to read and write .lyx format files +// +char const * LyXFamilyNames[NUM_FAMILIES + 2 /* default & error */] = +{ "roman", "sans", "typewriter", "symbol", + "cmr", "cmsy", "cmm", "cmex", "msa", "msb", "eufrak", "wasy", "esint", + "default", "error" }; + +char const * LyXSeriesNames[4] = +{ "medium", "bold", "default", "error" }; + +char const * LyXShapeNames[6] = +{ "up", "italic", "slanted", "smallcaps", "default", "error" }; + +char const * LyXSizeNames[14] = +{ "tiny", "scriptsize", "footnotesize", "small", "normal", "large", + "larger", "largest", "huge", "giant", + "increase", "decrease", "default", "error" }; + +char const * LyXMiscNames[5] = +{ "off", "on", "toggle", "default", "error" }; + + FontInfo const sane_font( ROMAN_FAMILY, MEDIUM_SERIES, @@ -448,4 +475,160 @@ docstring FontInfo::asCSS() const return from_ascii(retval); } +// Set family according to lyx format string +void setLyXFamily(string const & fam, FontInfo & f) +{ + string const s = ascii_lowercase(fam); + + int i = 0; + while (LyXFamilyNames[i] != s && + LyXFamilyNames[i] != string("error")) + ++i; + if (s == LyXFamilyNames[i]) + f.setFamily(FontFamily(i)); + else + LYXERR0("Unknown family `" << s << '\''); +} + + +// Set series according to lyx format string +void setLyXSeries(string const & ser, FontInfo & f) +{ + string const s = ascii_lowercase(ser); + + int i = 0; + while (LyXSeriesNames[i] != s && + LyXSeriesNames[i] != string("error")) ++i; + if (s == LyXSeriesNames[i]) { + f.setSeries(FontSeries(i)); + } else + LYXERR0("Unknown series `" << s << '\''); +} + + +// Set shape according to lyx format string +void setLyXShape(string const & sha, FontInfo & f) +{ + string const s = ascii_lowercase(sha); + + int i = 0; + while (LyXShapeNames[i] != s && LyXShapeNames[i] != string("error")) + ++i; + if (s == LyXShapeNames[i]) + f.setShape(FontShape(i)); + else + LYXERR0("Unknown shape `" << s << '\''); +} + + +// Set size according to lyx format string +void setLyXSize(string const & siz, FontInfo & f) +{ + string const s = ascii_lowercase(siz); + int i = 0; + while (LyXSizeNames[i] != s && LyXSizeNames[i] != string("error")) + ++i; + if (s == LyXSizeNames[i]) { + f.setSize(FontSize(i)); + } else + LYXERR0("Unknown size `" << s << '\''); +} + + +// Set size according to lyx format string +FontState setLyXMisc(string const & siz) +{ + string const s = ascii_lowercase(siz); + int i = 0; + while (LyXMiscNames[i] != s && + LyXMiscNames[i] != string("error")) ++i; + if (s == LyXMiscNames[i]) + return FontState(i); + LYXERR0("Unknown misc flag `" << s << '\''); + return FONT_OFF; +} + + +/// Sets color after LyX text format +void setLyXColor(string const & col, FontInfo & f) +{ + f.setColor(lcolor.getFromLyXName(col)); +} + + +// Read a font definition from given file in lyx format +// Used for layouts +FontInfo lyxRead(Lexer & lex, FontInfo const & fi) +{ + FontInfo f = fi; + bool error = false; + bool finished = false; + while (!finished && lex.isOK() && !error) { + lex.next(); + string const tok = ascii_lowercase(lex.getString()); + + if (tok.empty()) { + continue; + } else if (tok == "endfont") { + finished = true; + } else if (tok == "family") { + lex.next(); + string const ttok = lex.getString(); + setLyXFamily(ttok, f); + } else if (tok == "series") { + lex.next(); + string const ttok = lex.getString(); + setLyXSeries(ttok, f); + } else if (tok == "shape") { + lex.next(); + string const ttok = lex.getString(); + setLyXShape(ttok, f); + } else if (tok == "size") { + lex.next(); + string const ttok = lex.getString(); + setLyXSize(ttok, f); + } else if (tok == "misc") { + lex.next(); + string const ttok = ascii_lowercase(lex.getString()); + + if (ttok == "no_bar") { + f.setUnderbar(FONT_OFF); + } else if (ttok == "no_strikeout") { + f.setStrikeout(FONT_OFF); + } else if (ttok == "no_uuline") { + f.setUuline(FONT_OFF); + } else if (ttok == "no_uwave") { + f.setUwave(FONT_OFF); + } else if (ttok == "no_emph") { + f.setEmph(FONT_OFF); + } else if (ttok == "no_noun") { + f.setNoun(FONT_OFF); + } else if (ttok == "emph") { + f.setEmph(FONT_ON); + } else if (ttok == "underbar") { + f.setUnderbar(FONT_ON); + } else if (ttok == "strikeout") { + f.setStrikeout(FONT_ON); + } else if (ttok == "uuline") { + f.setUuline(FONT_ON); + } else if (ttok == "uwave") { + f.setUwave(FONT_ON); + } else if (ttok == "noun") { + f.setNoun(FONT_ON); + } else { + lex.printError("Illegal misc type"); + } + } else if (tok == "color") { + lex.next(); + string const ttok = lex.getString(); + setLyXColor(ttok, f); + } else { + lex.printError("Unknown tag"); + error = true; + } + } + return f; +} + + } // namespace lyx diff --git a/src/FontInfo.h b/src/FontInfo.h index 0a22f8102e..7e2db94de0 100644 --- a/src/FontInfo.h +++ b/src/FontInfo.h @@ -15,10 +15,6 @@ #ifndef FONT_PROPERTIES_H #define FONT_PROPERTIES_H -#ifdef TEX2LYX -#include "tex2lyx/Font.h" -#else - #include "Color.h" #include "ColorCode.h" #include "FontEnums.h" @@ -26,6 +22,8 @@ namespace lyx { +class Lexer; + /// class FontInfo { @@ -201,7 +199,27 @@ extern FontInfo const inherit_font; /// All ignore font. extern FontInfo const ignore_font; +/// Set family after LyX text format +void setLyXFamily(std::string const &, FontInfo &); + +/// Set series after LyX text format +void setLyXSeries(std::string const &, FontInfo &); + +/// Set shape after LyX text format +void setLyXShape(std::string const &, FontInfo &); + +/// Set size after LyX text format +void setLyXSize(std::string const &, FontInfo &); + +/// Sets color after LyX text format +void setLyXColor(std::string const &, FontInfo &); + +/// Returns misc flag after LyX text format +FontState setLyXMisc(std::string const &); + +/// Read a font specification from Lexer. Used for layout files. +FontInfo lyxRead(Lexer &, FontInfo const & fi = sane_font); + } // namespace lyx -#endif // TEX2LYX_FONT_H #endif diff --git a/src/Layout.cpp b/src/Layout.cpp index 2c48caece9..7e301af6ee 100644 --- a/src/Layout.cpp +++ b/src/Layout.cpp @@ -16,7 +16,7 @@ #include "Language.h" #include "TextClass.h" #include "Lexer.h" -#include "Font.h" +#include "FontInfo.h" #include "support/Messages.h" #include "support/debug.h" @@ -955,10 +955,6 @@ string Layout::defaultCSSClass() const // sorts of margins or padding, for example. But for now we are // going to keep it simple. void Layout::makeDefaultCSS() const { -#ifdef TEX2LYX - // tex2lyx does not have FontInfo::asCSS() - return; -#else // this never needs to be redone, since reloading layouts will // wipe out what we did before. if (!htmldefaultstyle_.empty()) @@ -975,7 +971,6 @@ void Layout::makeDefaultCSS() const { htmldefaultstyle_ += from_ascii(htmllabeltag() + "." + defaultCSSLabelClass() + " {\n") + labelfontCSS + from_ascii("\n}\n"); -#endif } diff --git a/src/Text.cpp b/src/Text.cpp index 1bf7d61135..54ee423d1a 100644 --- a/src/Text.cpp +++ b/src/Text.cpp @@ -361,10 +361,10 @@ void Text::readParToken(Paragraph & par, Lexer & lex, } } else if (token == "\\numeric") { lex.next(); - font.fontInfo().setNumber(font.setLyXMisc(lex.getString())); + font.fontInfo().setNumber(setLyXMisc(lex.getString())); } else if (token == "\\emph") { lex.next(); - font.fontInfo().setEmph(font.setLyXMisc(lex.getString())); + font.fontInfo().setEmph(setLyXMisc(lex.getString())); } else if (token == "\\bar") { lex.next(); string const tok = lex.getString(); @@ -380,16 +380,16 @@ void Text::readParToken(Paragraph & par, Lexer & lex, "`$$Token'"); } else if (token == "\\strikeout") { lex.next(); - font.fontInfo().setStrikeout(font.setLyXMisc(lex.getString())); + font.fontInfo().setStrikeout(setLyXMisc(lex.getString())); } else if (token == "\\uuline") { lex.next(); - font.fontInfo().setUuline(font.setLyXMisc(lex.getString())); + font.fontInfo().setUuline(setLyXMisc(lex.getString())); } else if (token == "\\uwave") { lex.next(); - font.fontInfo().setUwave(font.setLyXMisc(lex.getString())); + font.fontInfo().setUwave(setLyXMisc(lex.getString())); } else if (token == "\\noun") { lex.next(); - font.fontInfo().setNoun(font.setLyXMisc(lex.getString())); + font.fontInfo().setNoun(setLyXMisc(lex.getString())); } else if (token == "\\color") { lex.next(); setLyXColor(lex.getString(), font.fontInfo()); diff --git a/src/insets/InsetLayout.cpp b/src/insets/InsetLayout.cpp index fd1067d767..0659761810 100644 --- a/src/insets/InsetLayout.cpp +++ b/src/insets/InsetLayout.cpp @@ -15,7 +15,6 @@ #include "InsetLayout.h" #include "ColorSet.h" -#include "Font.h" #include "Lexer.h" #include "TextClass.h" diff --git a/src/tex2lyx/Font.cpp b/src/tex2lyx/Font.cpp deleted file mode 100644 index a5a3042683..0000000000 --- a/src/tex2lyx/Font.cpp +++ /dev/null @@ -1,63 +0,0 @@ -/** - * \file tex2lyx/Font.cpp - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Angus Leeming - * - * Full author contact details are available in file CREDITS. - */ - -#include - -#include "Font.h" -#include "Lexer.h" -#include "support/lstrings.h" - -using namespace std; - -namespace lyx { - -using lyx::support::ascii_lowercase; - -/// Sane font. -FontInfo const sane_font; -/// All inherit font. -FontInfo const inherit_font; -/// All ignore font. -FontInfo const ignore_font; - -FontInfo lyxRead(Lexer & lex, FontInfo const &) -{ - bool error = false; - bool finished = false; - while (!finished && lex.isOK() && !error) { - lex.next(); - string const tok = ascii_lowercase(lex.getString()); - - if (tok.empty()) { - continue; - } else if (tok == "endfont") { - finished = true; - } else if (tok == "family") { - lex.next(); - } else if (tok == "series") { - lex.next(); - } else if (tok == "shape") { - lex.next(); - } else if (tok == "size") { - lex.next(); - } else if (tok == "misc") { - lex.next(); - } else if (tok == "color") { - lex.next(); - } else { - lex.printError("Unknown tag `$$Token'"); - error = true; - } - } - return FontInfo(); -} - - -} // namespace lyx diff --git a/src/tex2lyx/Font.h b/src/tex2lyx/Font.h deleted file mode 100644 index b77ead7383..0000000000 --- a/src/tex2lyx/Font.h +++ /dev/null @@ -1,54 +0,0 @@ -// -*- C++ -*- -/** - * \file tex2lyx/Font.h - * This file is part of LyX, the document processor. - * Licence details can be found in the file COPYING. - * - * \author Angus Leeming - * - * Full author contact details are available in file CREDITS. - * - * This class is just a dummy version of that in the main LyX source tree - * to enable tex2lyx to use LyX's textclass classes and not have to - * re-invent the wheel. - * - */ - -#ifndef TEX2LYX_FONT_H -#define TEX2LYX_FONT_H - -//#include "FontInfo.h" - -namespace lyx { - -class Lexer; - -class FontInfo -{ -public: - FontInfo() {} - FontInfo & realize(FontInfo const &) { return *this; } - void setColor(int) {} - bool resolved() const { return true; } -}; - -/// Sane font. -extern FontInfo const sane_font; -/// All inherit font. -extern FontInfo const inherit_font; -/// All ignore font. -extern FontInfo const ignore_font; - -class Font -{ -public: - Font() {} - Font(FontInfo const &) {} -}; - -/// Read a font specification from Lexer. Used for layout files. -FontInfo lyxRead(Lexer &, FontInfo const & fi = sane_font); - -} // namespace lyx - -#endif // TEX2LYX_FONT_H diff --git a/src/tex2lyx/Makefile.am b/src/tex2lyx/Makefile.am index a6bf7b6576..26d342ce14 100644 --- a/src/tex2lyx/Makefile.am +++ b/src/tex2lyx/Makefile.am @@ -29,42 +29,40 @@ TEST_FILES = \ test/test-structure.tex LINKED_FILES = \ + ../Color.cpp \ + ../Counters.cpp \ + ../Encoding.cpp \ ../FloatList.cpp \ ../Floating.cpp \ - ../Counters.cpp \ + ../FontInfo.cpp \ ../insets/InsetLayout.cpp \ ../LayoutFile.h \ ../Layout.h \ ../Layout.cpp \ ../LayoutModuleList.h \ ../LayoutModuleList.cpp \ + ../lengthcommon.cpp \ + ../Lexer.cpp \ ../ModuleList.h \ ../ModuleList.cpp \ ../TextClass.cpp \ - ../TextClass.h \ - ../Lexer.cpp \ - ../lengthcommon.cpp \ - ../Color.cpp \ - ../Color.h \ - ../Encoding.cpp + ../TextClass.h BUILT_SOURCES = $(PCH_FILE) tex2lyx_SOURCES = \ $(LINKED_FILES) \ - Spacing.h \ boost.cpp \ Context.cpp \ Context.h \ - Font.cpp \ - Font.h \ + math.cpp \ Parser.cpp \ Parser.h \ - tex2lyx.cpp \ - tex2lyx.h \ preamble.cpp \ - math.cpp \ + Spacing.h \ table.cpp \ + tex2lyx.cpp \ + tex2lyx.h \ text.cpp tex2lyx_LDADD = \