summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog1
-rw-r--r--src/tags.h2
-rw-r--r--src/xmlcomposer.cpp43
-rw-r--r--src/xmlcomposer.h13
-rw-r--r--test-files/sample.xml2
5 files changed, 59 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 934a4bd..cffbbb3 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,6 @@
Version 0.9.3
- Code cleanup
+ - Fixed bug with non-existant destinations
Version 0.9.2
- Updated windows version to new sablot library
diff --git a/src/tags.h b/src/tags.h
index ef2cd03..ce1a197 100644
--- a/src/tags.h
+++ b/src/tags.h
@@ -48,6 +48,7 @@ static const char* kAtFix = "i_fix";
static const char* kAtCell = "i_cell";
static const char* kElListtable = "i_listtable";
static const char* kElListdef = "i_listdef";
+static const char* kElFontTable = "i_fonttable";
// All the main tags
static const char* kElPara = "para";
@@ -76,6 +77,7 @@ static const char* kElRow = "row";
static const char* kElTable = "table";
static const char* kElFootNote = "footnote";
static const char* kElRef = "ref";
+static const char* kElFont = "font";
// Attributes
static const char* kAtList = "list";
diff --git a/src/xmlcomposer.cpp b/src/xmlcomposer.cpp
index 73d9521..cce87d4 100644
--- a/src/xmlcomposer.cpp
+++ b/src/xmlcomposer.cpp
@@ -682,6 +682,47 @@ ON_GROUPEND(Style)
}
+// Font Table Analyser --------------------------------------------------------------
+
+ON_INITIALIZE(FontTable)
+{
+ AN_ELEMENT(kElFontTable);
+}
+
+ON_GROUPSTART(FontTable)
+{
+ // Each group should be a style
+ AN_ANALYSER(Font);
+
+ // Without any character data
+ AN_DESTINATION(Null);
+}
+
+
+// Font Analyser --------------------------------------------------------------------
+
+ON_INITIALIZE(Font)
+{
+ AN_ELEMENT(kElFont);
+ AN_DESTINATION_ATTR(kAtName);
+}
+
+ON_CONTROLWORD(Font)
+{
+ // The font id
+ if(cw == "f" && flags & kHasParam)
+ AN_ATTRIBUTE(kAtId, param);
+
+ else
+ DEFAULT_CONTROLWORD;
+}
+
+ON_GROUPSTART(Font)
+{
+ AN_ANALYSER(Skip);
+}
+
+
// List Table Analyser --------------------------------------------------------------
ON_INITIALIZE(ListTable)
@@ -918,7 +959,7 @@ ON_CONTROLWORD(Root)
else if(cw == "info")
AN_ANALYSER(Info);
else if(cw == "fonttbl")
- AN_ANALYSER(Skip);
+ AN_ANALYSER(FontTable);
else if(cw == "colortbl")
AN_ANALYSER(Skip);
else if(cw == "footnote")
diff --git a/src/xmlcomposer.h b/src/xmlcomposer.h
index e857ace..e14ecb7 100644
--- a/src/xmlcomposer.h
+++ b/src/xmlcomposer.h
@@ -243,6 +243,19 @@ protected:
bool haveStyle;
END_ANALYSER
+ // Handle the Font Table
+ ANALYSER(FontTable)
+ INITIALIZE
+ GROUPSTART
+ END_ANALYSER
+
+ // Handle a Font in the Table
+ ANALYSER(Font)
+ INITIALIZE
+ CONTROLWORD
+ GROUPSTART
+ END_ANALYSER
+
// Handle the list definitions
ANALYSER(ListTable)
INITIALIZE
diff --git a/test-files/sample.xml b/test-files/sample.xml
index deb7ae4..963387c 100644
--- a/test-files/sample.xml
+++ b/test-files/sample.xml
@@ -1 +1 @@
-<?xml version="1.0" encoding="UTF-8"?><document><stylesheet><style name="Normal"/><style name="heading 1"/><style name="footnote text"/></stylesheet><info><title>This is a test RTF</title><author>Nate</author><operator>Nate</operator></info><para style="heading 1"><b>This is a test RTF</b></para><para>Hi! I’m a test file. This is some <b>bold</b> text, and some <i>italic</i> text, as well as some <u>underline</u> text. And a bit of <hide>hidden</hide> text. So we’re going to end this paragraph here and go on to a nice little list:</para><para/><list type="disc" ordered="0" start="1"><para>Item 1</para><para>Item 2</para><para>Item 3</para><para>Item 4</para></list><para/><para>And now comes a fun table:</para><para/><table><row><cell><para>Cell 1</para></cell><cell><para>Cell 2</para><para>More in cell 2</para></cell><cell><para>Cell 3</para></cell></row><row><cell><para>Next row</para></cell><cell><para>Next row </para></cell><cell><para>Next row</para></cell></row></table><para/><para>A page break:</para><page/><para>And here we’re on the next page. </para><para>This para has a <ref type="footnote" to="1"><super>1</super></ref>footnote.</para><para>And here’s yet another paragraph. </para><para/><footnote id="1"><para><super>1</super> This is the actual content of the footnote.</para></footnote></document> \ No newline at end of file
+<?xml version="1.0" encoding="UTF-8"?><document><stylesheet><style name="Normal"/><style name="heading 1"/><style name="footnote text"/></stylesheet><info><title>This is a test RTF</title><author>Nate</author><operator>Nate</operator></info><para style="heading 1"><i_fonttable><font id="0"/><font id="1"/><font id="2"/><font id="3"/><font id="10"/><font id="121"/><font id="122"/><font id="124"/><font id="125"/><font id="126"/><font id="127"/><font id="128"/><font id="129"/><font id="131"/><font id="132"/><font id="134"/><font id="135"/><font id="136"/><font id="137"/><font id="138"/><font id="139"/><font id="141"/><font id="142"/><font id="144"/><font id="145"/><font id="146"/><font id="147"/><font id="148"/><font id="149"/></i_fonttable><b>This is a test RTF</b></para><para>Hi! I’m a test file. This is some <b>bold</b> text, and some <i>italic</i> text, as well as some <u>underline</u> text. And a bit of <hide>hidden</hide> text. So we’re going to end this paragraph here and go on to a nice little list:</para><para/><list type="disc" ordered="0" start="1"><para>Item 1</para><para>Item 2</para><para>Item 3</para><para>Item 4</para></list><para/><para>And now comes a fun table:</para><para/><table><row><cell><para>Cell 1</para></cell><cell><para>Cell 2</para><para>More in cell 2</para></cell><cell><para>Cell 3</para></cell></row><row><cell><para>Next row</para></cell><cell><para>Next row </para></cell><cell><para>Next row</para></cell></row></table><para/><para>A page break:</para><page/><para>And here we’re on the next page. </para><para>This para has a <ref type="footnote" to="1"><super>1</super></ref>footnote.</para><para>And here’s yet another paragraph. </para><para/><footnote id="1"><para><super>1</super> This is the actual content of the footnote.</para></footnote></document> \ No newline at end of file