summaryrefslogtreecommitdiff
path: root/starmath/source/node.cxx
diff options
context:
space:
mode:
authorTakeshi Abe <tabe@fixedpoint.jp>2016-09-25 19:56:52 +0900
committerKhaled Hosny <khaledhosny@eglug.org>2016-09-29 20:13:26 +0000
commit663e26f24f1fa1abadc37838983bebd7407d65f8 (patch)
tree27217b4520199f2fb3eff00d3c02b223563cad44 /starmath/source/node.cxx
parent38d61128467aedc2935443be21c38168f5e00df6 (diff)
tdf#53472, tdf#102268: Reimplement "intd"
This reverts its original implementation introduced with 93e6291c29d547c0c29c6e43b2ca4b36a3e8506f partially, and improves the patch proposed at 746633bd0315939fd5e0b50c90692d356d2ed678 (but reverted at e265ea36df02310881e959a031b74578b323bfa5). Change-Id: If0aa5b985cac45a1cd9ea87bae293243af9d12b2 Reviewed-on: https://gerrit.libreoffice.org/29271 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Khaled Hosny <khaledhosny@eglug.org>
Diffstat (limited to 'starmath/source/node.cxx')
-rw-r--r--starmath/source/node.cxx94
1 files changed, 12 insertions, 82 deletions
diff --git a/starmath/source/node.cxx b/starmath/source/node.cxx
index efd26e70b0fa..e6ee8834d5c9 100644
--- a/starmath/source/node.cxx
+++ b/starmath/source/node.cxx
@@ -775,53 +775,6 @@ void SmRootNode::CreateTextFromNode(OUString &rText)
/**************************************************************************/
-void SmDynIntegralNode::Arrange(OutputDevice &rDev, const SmFormat &rFormat)
-{
- SmNode *pDynIntegralSym = Symbol(),
- *pBody = Body();
- assert(pDynIntegralSym);
- assert(pBody);
-
- pBody->Arrange(rDev, rFormat);
-
- long nHeight = pBody->GetHeight();
- pDynIntegralSym->AdaptToY(rDev, nHeight);
-
- pDynIntegralSym->Arrange(rDev, rFormat);
-
- Point aPos = pDynIntegralSym->AlignTo(*pBody, RectPos::Left, RectHorAlign::Center, RectVerAlign::Baseline);
- //! override calculated vertical position
- aPos.Y() = pDynIntegralSym->GetTop() + pBody->GetBottom() - pDynIntegralSym->GetBottom();
- pDynIntegralSym->MoveTo(aPos);
-
-
- // override its own rectangle with pBody's
- SmRect::operator = (*pBody);
- // extends this rectangle with the symbol's one
- ExtendBy(*pDynIntegralSym, RectCopyMBL::This);
-
-}
-
-
-void SmDynIntegralNode::CreateTextFromNode(OUString &rText)
-{
-
- rText += "intd ";
- SmNode *pBody = Body();
-
- if (pBody->GetNumSubNodes() > 1)
- rText += "{ ";
-
- pBody->CreateTextFromNode(rText);
-
- if (pBody->GetNumSubNodes() > 1)
- rText += "} ";
-}
-
-
-/**************************************************************************/
-
-
void SmBinHorNode::Arrange(OutputDevice &rDev, const SmFormat &rFormat)
{
SmNode *pLeft = LeftOperand(),
@@ -1663,30 +1616,33 @@ void SmOperNode::Arrange(OutputDevice &rDev, const SmFormat &rFormat)
assert(pOper);
assert(pBody);
- //patch pBody->Arrange(rDev,rFormat);
- //patch long nHeight = pBody->GetHeight();
SmNode *pSymbol = GetSymbol();
pSymbol->SetSize(Fraction(CalcSymbolHeight(*pSymbol, rFormat),
pSymbol->GetFont().GetFontSize().Height()));
pBody->Arrange(rDev, rFormat);
+ bool bDynamicallySized = false;
+ if (pSymbol->GetToken().eType == TINTD)
+ {
+ long nBodyHeight = pBody->GetHeight();
+ long nFontHeight = pSymbol->GetFont().GetFontSize().Height();
+ if (nFontHeight < nBodyHeight)
+ {
+ pSymbol->SetSize(Fraction(nBodyHeight, nFontHeight));
+ bDynamicallySized = true;
+ }
+ }
pOper->Arrange(rDev, rFormat);
- //patch pSymbol->AdaptToY(rDev,nHeight);
- //patch pSymbol->Arrange(rDev, rFormat);
- //patch Point aPos= pSymbol->AlignTo(*pBody, RectPos::Left, RectHorAlign::Center, RectVerAlign::Mid);
- //patch aPos.Y() = pSymbol->GetTop()+pBody->GetBottom() - pSymbol->GetBottom();
- //patch pSymbol->MoveTo(aPos);
long nOrigHeight = GetFont().GetFontSize().Height(),
nDist = nOrigHeight
* rFormat.GetDistance(DIS_OPERATORSPACE) / 100L;
- Point aPos = pOper->AlignTo(*pBody, RectPos::Left, RectHorAlign::Center, /*RectVerAlign::CenterY*/RectVerAlign::Mid);
+ Point aPos = pOper->AlignTo(*pBody, RectPos::Left, RectHorAlign::Center, bDynamicallySized ? RectVerAlign::CenterY : RectVerAlign::Mid);
aPos.X() -= nDist;
pOper->MoveTo(aPos);
SmRect::operator = (*pBody);
- //patch ExtendBy(*pSymbol, RectCopyMBL::This);
ExtendBy(*pOper, RectCopyMBL::This);
}
@@ -2040,23 +1996,6 @@ void SmRootSymbolNode::AdaptToY(OutputDevice &rDev, sal_uLong nHeight)
/**************************************************************************/
-void SmDynIntegralSymbolNode::AdaptToY(OutputDevice &rDev, sal_uLong nHeight)
-{
- static const long nFactor = 12L;
-
- // The new height equals (1 + nFactor) * oldHeight
- // nFactor was chosen for keeping the integral sign from becoming too "fat".
- SmMathSymbolNode::AdaptToY(rDev, nHeight + nHeight / nFactor);
-
- // keep the ratio
- long nCurWidth = GetSize().Width();
- SmMathSymbolNode::AdaptToX(rDev, nCurWidth + nCurWidth / nFactor);
-}
-
-
-/**************************************************************************/
-
-
void SmRectangleNode::AdaptToX(OutputDevice &/*rDev*/, sal_uLong nWidth)
{
aToSize.Width() = nWidth;
@@ -2938,15 +2877,6 @@ void SmRootSymbolNode::Accept(SmVisitor* pVisitor) {
pVisitor->Visit(this);
}
-void SmDynIntegralNode::Accept(SmVisitor* pVisitor) {
- pVisitor->Visit(this);
-}
-
-
-void SmDynIntegralSymbolNode::Accept(SmVisitor* pVisitor) {
- pVisitor->Visit(this);
-}
-
void SmRectangleNode::Accept(SmVisitor* pVisitor) {
pVisitor->Visit(this);
}