summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@suse.cz>2011-11-24 14:39:13 +0100
committerLuboš Luňák <l.lunak@suse.cz>2011-11-24 18:43:59 +0100
commit944f9e13e3942de7fec0d52c6e6d839e00e77604 (patch)
tree10cd9d511e3340aec1d30a0baca6428980d06e68
parent5b94957f7f25c8a607735d038c4f22e8009b99ea (diff)
mathml docx import, implement m:acc (without the inner m:e)
-rw-r--r--starmath/source/ooxmlimport.cxx76
-rw-r--r--starmath/source/ooxmlimport.hxx2
2 files changed, 78 insertions, 0 deletions
diff --git a/starmath/source/ooxmlimport.cxx b/starmath/source/ooxmlimport.cxx
index 6b30142a8721..746bb6e41791 100644
--- a/starmath/source/ooxmlimport.cxx
+++ b/starmath/source/ooxmlimport.cxx
@@ -77,6 +77,9 @@ OUString SmOoxmlImport::handleStream()
break;
switch( tag.token )
{
+ case OPENING( M_TOKEN( acc )):
+ ret += STR( " " ) + handleAcc();
+ break;
case OPENING( M_TOKEN( f )):
ret += STR( " " ) + handleF();
break;
@@ -89,6 +92,79 @@ OUString SmOoxmlImport::handleStream()
return ret;
}
+OUString SmOoxmlImport::handleAcc()
+{
+ stream.ensureOpeningTag( M_TOKEN( acc ));
+ OUString acc;
+ if( XmlStream::Tag accPr = stream.checkOpeningTag( M_TOKEN( accPr )))
+ {
+ if( XmlStream::Tag chr = stream.checkOpeningTag( M_TOKEN( chr )))
+ {
+ acc = chr.attributes.getString( M_TOKEN( val ), STR( "" ));
+ stream.ensureClosingTag( M_TOKEN( chr ));
+ }
+ stream.ensureClosingTag( M_TOKEN( accPr ));
+ }
+ // see aTokenTable in parse.cxx
+ switch( acc.isEmpty() ? sal_Unicode( MS_ACUTE ) : acc[ 0 ] )
+ {
+ case MS_CHECK:
+ acc = STR( "check" );
+ break;
+ case MS_ACUTE:
+ acc = STR( "acute" );
+ break;
+ case MS_GRAVE:
+ acc = STR( "grave" );
+ break;
+ case MS_BREVE:
+ acc = STR( "breve" );
+ break;
+ case MS_CIRCLE:
+ acc = STR( "circle" );
+ break;
+ case MS_VEC:
+ acc = STR( "vec" );
+ break;
+ case MS_TILDE:
+ acc = STR( "tilde" );
+ break;
+ case MS_HAT:
+ acc = STR( "hat" );
+ break;
+ case MS_DOT:
+ acc = STR( "dot" );
+ break;
+ case MS_DDOT:
+ acc = STR( "ddot" );
+ break;
+ case MS_DDDOT:
+ acc = STR( "dddot" );
+ break;
+// these characters do not exist it seems
+// case MS_WIDETILDE:
+// acc = STR( "widetilde" );
+// break;
+// case TWIDEHAT:
+// acc = STR( "widehat" );
+// break;
+// case TWIDEVEC:
+// acc = STR( "widevec" );
+// break;
+ default:
+ acc = STR( "acute" );
+ break;
+ }
+ OUString e = handleE();
+ stream.ensureClosingTag( M_TOKEN( acc ));
+ return acc + STR( " { " ) + e + STR( " }" );
+}
+
+OUString SmOoxmlImport::handleE()
+{
+// TODO
+}
+
// NOT complete
OUString SmOoxmlImport::handleF()
{
diff --git a/starmath/source/ooxmlimport.hxx b/starmath/source/ooxmlimport.hxx
index 594b8d6a86ed..c3787757a705 100644
--- a/starmath/source/ooxmlimport.hxx
+++ b/starmath/source/ooxmlimport.hxx
@@ -44,6 +44,8 @@ public:
rtl::OUString ConvertToStarMath();
private:
rtl::OUString handleStream();
+ rtl::OUString handleAcc();
+ rtl::OUString handleE();
rtl::OUString handleF();
rtl::OUString readR();
oox::formulaimport::XmlStream& stream;