summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/xmloff/xmltoken.hxx3
-rw-r--r--starmath/source/mathmlexport.cxx42
-rw-r--r--xmloff/source/core/xmltoken.cxx3
3 files changed, 46 insertions, 2 deletions
diff --git a/include/xmloff/xmltoken.hxx b/include/xmloff/xmltoken.hxx
index 5993b740195e..690aad07140c 100644
--- a/include/xmloff/xmltoken.hxx
+++ b/include/xmloff/xmltoken.hxx
@@ -430,6 +430,7 @@ namespace xmloff { namespace token {
XML_COLUMN_NAME,
XML_COLUMN_SEP,
XML_COLUMN_WIDTH,
+ XML_COLUMNALIGN,
XML_COLUMNS,
XML_COLUMNSPLIT_AUTO,
XML_COLUMNSPLIT_AVOID,
@@ -590,6 +591,7 @@ namespace xmloff { namespace token {
XML_DELAY,
XML_DELETION,
XML_DELETIONS,
+ XML_DENOMALIGN,
XML_DENOMINATOR_VALUE,
XML_DEPENDENCE,
XML_DEPENDENCES,
@@ -1276,6 +1278,7 @@ namespace xmloff { namespace token {
XML_NUM_LETTER_SYNC,
XML_NUM_PREFIX,
XML_NUM_SUFFIX,
+ XML_NUMALIGN,
XML_NUMBER,
XML_NUMBER_AND_NAME,
XML_NUMBER_COLUMNS_REPEATED,
diff --git a/starmath/source/mathmlexport.cxx b/starmath/source/mathmlexport.cxx
index fbc1e9747832..34c6050a1bfd 100644
--- a/starmath/source/mathmlexport.cxx
+++ b/starmath/source/mathmlexport.cxx
@@ -799,9 +799,25 @@ void SmXMLExport::ExportExpression(const SmNode *pNode, int nLevel)
void SmXMLExport::ExportBinaryVertical(const SmNode *pNode, int nLevel)
{
OSL_ENSURE(pNode->GetNumSubNodes()==3,"Bad Fraction");
+ const SmNode *pNum = pNode->GetSubNode(0);
+ const SmNode *pDenom = pNode->GetSubNode(2);
+ if (pNum->GetType() == NALIGN && pNum->GetToken().eType != TALIGNC)
+ {
+ // A left or right alignment is specified on the numerator:
+ // attach the corresponding numalign attribute.
+ AddAttribute(XML_NAMESPACE_MATH, XML_NUMALIGN,
+ pNum->GetToken().eType == TALIGNL ? XML_LEFT : XML_RIGHT);
+ }
+ if (pDenom->GetType() == NALIGN && pDenom->GetToken().eType != TALIGNC)
+ {
+ // A left or right alignment is specified on the denominator:
+ // attach the corresponding denomalign attribute.
+ AddAttribute(XML_NAMESPACE_MATH, XML_DENOMALIGN,
+ pDenom->GetToken().eType == TALIGNL ? XML_LEFT : XML_RIGHT);
+ }
SvXMLElementExport aFraction(*this, XML_NAMESPACE_MATH, XML_MFRAC, sal_True, sal_True);
- ExportNodes(pNode->GetSubNode(0), nLevel);
- ExportNodes(pNode->GetSubNode(2), nLevel);
+ ExportNodes(pNum, nLevel);
+ ExportNodes(pDenom, nLevel);
}
void SmXMLExport::ExportBinaryDiagonal(const SmNode *pNode, int nLevel)
@@ -866,6 +882,19 @@ void SmXMLExport::ExportTable(const SmNode *pNode, int nLevel)
if (pTable)
{
pRow = new SvXMLElementExport(*this, XML_NAMESPACE_MATH, XML_MTR, sal_True, sal_True);
+ if (pTemp->GetNumSubNodes() > 0)
+ {
+ const SmNode *pFirstChild = pTemp->GetSubNode(0);
+ if (pFirstChild->GetType() == NALIGN &&
+ pFirstChild->GetToken().eType != TALIGNC)
+ {
+ // If a left or right alignment is specified on this line,
+ // attach the corresponding columnalign attribute.
+ AddAttribute(XML_NAMESPACE_MATH, XML_COLUMNALIGN,
+ pFirstChild->GetToken().eType == TALIGNL ?
+ XML_LEFT : XML_RIGHT);
+ }
+ }
pCell = new SvXMLElementExport(*this, XML_NAMESPACE_MATH, XML_MTD, sal_True, sal_True);
}
ExportNodes(pTemp, nLevel+1);
@@ -1481,6 +1510,15 @@ void SmXMLExport::ExportMatrix(const SmNode *pNode, int nLevel)
for (sal_uLong x = 0; x < pMatrix->GetNumCols(); x++)
if (const SmNode *pTemp = pNode->GetSubNode(i++))
{
+ if (pTemp->GetType() == NALIGN &&
+ pTemp->GetToken().eType != TALIGNC)
+ {
+ // A left or right alignment is specified on this cell,
+ // attach the corresponding columnalign attribute.
+ AddAttribute(XML_NAMESPACE_MATH, XML_COLUMNALIGN,
+ pTemp->GetToken().eType == TALIGNL ?
+ XML_LEFT : XML_RIGHT);
+ }
SvXMLElementExport aCell(*this, XML_NAMESPACE_MATH, XML_MTD, sal_True, sal_True);
ExportNodes(pTemp, nLevel+1);
}
diff --git a/xmloff/source/core/xmltoken.cxx b/xmloff/source/core/xmltoken.cxx
index df208b05fb09..164f03c4b5f7 100644
--- a/xmloff/source/core/xmltoken.cxx
+++ b/xmloff/source/core/xmltoken.cxx
@@ -435,6 +435,7 @@ namespace xmloff { namespace token {
TOKEN( "column-name", XML_COLUMN_NAME ),
TOKEN( "column-sep", XML_COLUMN_SEP ),
TOKEN( "column-width", XML_COLUMN_WIDTH ),
+ TOKEN( "columnalign", XML_COLUMNALIGN ),
TOKEN( "columns", XML_COLUMNS ),
TOKEN( "auto", XML_COLUMNSPLIT_AUTO ),
TOKEN( "avoid", XML_COLUMNSPLIT_AVOID ),
@@ -595,6 +596,7 @@ namespace xmloff { namespace token {
TOKEN( "delay", XML_DELAY ),
TOKEN( "deletion", XML_DELETION ),
TOKEN( "deletions", XML_DELETIONS ),
+ TOKEN( "denomalign" , XML_DENOMALIGN ),
TOKEN( "denominator-value", XML_DENOMINATOR_VALUE ),
TOKEN( "dependence", XML_DEPENDENCE ),
TOKEN( "dependences", XML_DEPENDENCES ),
@@ -1282,6 +1284,7 @@ namespace xmloff { namespace token {
TOKEN( "num-letter-sync", XML_NUM_LETTER_SYNC ),
TOKEN( "num-prefix", XML_NUM_PREFIX ),
TOKEN( "num-suffix", XML_NUM_SUFFIX ),
+ TOKEN( "numalign", XML_NUMALIGN ),
TOKEN( "number", XML_NUMBER ),
TOKEN( "number-and-name", XML_NUMBER_AND_NAME ),
TOKEN( "number-columns-repeated", XML_NUMBER_COLUMNS_REPEATED ),