Kaydet (Commit) 87c3fdee authored tarafından Tomaž Vajngerl's avatar Tomaž Vajngerl

sd html: export outline, code simplification

Change-Id: Ic201f4bd7716806edd031a2935d1e859a6b51958
üst af51f3fb
......@@ -1205,9 +1205,8 @@ OUString HtmlExport::CreateTextForTitle( SdrOutliner* pOutliner, SdPage* pPage,
// creates a outliner text for a page
OUString HtmlExport::CreateTextForPage( SdrOutliner* pOutliner,
SdPage* pPage,
bool bHeadLine, const Color& rBackgroundColor )
OUString HtmlExport::CreateTextForPage(SdrOutliner* pOutliner, SdPage* pPage,
bool bHeadLine, const Color& rBackgroundColor)
{
OUStringBuffer aStr;
......@@ -1216,171 +1215,114 @@ OUString HtmlExport::CreateTextForPage( SdrOutliner* pOutliner,
SdrObject* pObject = pPage->GetObj(i);
PresObjKind eKind = pPage->GetPresObjKind(pObject);
if (eKind == PRESOBJ_TABLE)
switch (eKind)
{
SdrTableObj* pTableObject = (SdrTableObj*) pObject;
CellPos aStart, aEnd;
aStart = pTableObject->getFirstCell();
aEnd = pTableObject->getLastCell();
sal_Int32 nColCount = pTableObject->getColumnCount();
aStr.append("<table>\r\n");
for (sal_Int32 nRow = aStart.mnRow; nRow <= aEnd.mnRow; nRow++)
case PRESOBJ_TABLE:
{
aStr.append(" <tr>\r\n");
for (sal_Int32 nCol = aStart.mnCol; nCol <= aEnd.mnCol; nCol++)
{
aStr.append(" <td>\r\n");
sal_Int32 nCellIndex = nRow * nColCount + nCol;
SdrText* pText = pTableObject->getText(nCellIndex);
if (!pText || !pText->GetOutlinerParaObject())
continue;
pOutliner->SetText(*(pText->GetOutlinerParaObject()));
SdrTableObj* pTableObject = (SdrTableObj*) pObject;
sal_Int32 nCount = pOutliner->GetParagraphCount();
CellPos aStart, aEnd;
Paragraph* pPara = NULL;
aStart = pTableObject->getFirstCell();
aEnd = pTableObject->getLastCell();
sal_Int16 nCurrentDepth = -1;
for (sal_Int32 nPara = 0; nPara < nCount; nPara++)
sal_Int32 nColCount = pTableObject->getColumnCount();
aStr.append("<table>\r\n");
for (sal_Int32 nRow = aStart.mnRow; nRow <= aEnd.mnRow; nRow++)
{
aStr.append(" <tr>\r\n");
for (sal_Int32 nCol = aStart.mnCol; nCol <= aEnd.mnCol; nCol++)
{
pPara = pOutliner->GetParagraph(nPara);
if(pPara == 0)
continue;
aStr.append(" <td>\r\n");
sal_Int32 nCellIndex = nRow * nColCount + nCol;
SdrText* pText = pTableObject->getText(nCellIndex);
const sal_Int16 nDepth = (sal_uInt16) pOutliner->GetDepth(nPara);
OUString aParaText = ParagraphToHTMLString(pOutliner, nPara, rBackgroundColor);
if (aParaText.isEmpty())
if (pText == NULL)
continue;
if (nDepth < 0)
{
lclAppendStyle(aStr, "p", getParagraphStyle(pOutliner, nPara));
aStr.append(aParaText);
aStr.append("</p>\r\n");
}
else
{
while(nCurrentDepth < nDepth)
{
aStr.append("<ul>\r\n");
nCurrentDepth++;
}
while(nCurrentDepth > nDepth)
{
aStr.append("</ul>\r\n");
nCurrentDepth--;
}
lclAppendStyle(aStr, "li", getParagraphStyle(pOutliner, nPara));
aStr.append(aParaText);
aStr.append("</li>\r\n");
}
WriteOutlinerParagraph(aStr, pOutliner, pText->GetOutlinerParaObject(), rBackgroundColor, false);
aStr.append(" </td>\r\n");
}
while(nCurrentDepth >= 0)
{
aStr.append("</ul>\r\n");
nCurrentDepth--;
}
pOutliner->Clear();
aStr.append(" </td>\r\n");
aStr.append(" </tr>\r\n");
}
aStr.append(" </tr>\r\n");
aStr.append("</table>\r\n");
}
break;
case PRESOBJ_TEXT:
case PRESOBJ_OUTLINE:
{
SdrTextObj* pTextObject = (SdrTextObj*) pObject;
if (pTextObject->IsEmptyPresObj())
continue;
WriteOutlinerParagraph(aStr, pOutliner, pTextObject->GetOutlinerParaObject(), rBackgroundColor, bHeadLine);
}
aStr.append("</table>\r\n");
break;
default:
break;
}
}
return aStr.makeStringAndClear();
}
SdrTextObj* pTO = (SdrTextObj*)pPage->GetPresObj(PRESOBJ_TEXT);
if(!pTO)
pTO = GetLayoutTextObject(pPage);
void HtmlExport::WriteOutlinerParagraph(OUStringBuffer& aStr, SdrOutliner* pOutliner,
OutlinerParaObject* pOutlinerParagraphObject,
const Color& rBackgroundColor, bool bHeadLine)
{
if (pOutlinerParagraphObject == NULL)
return;
if (pTO && !pTO->IsEmptyPresObj())
{
OutlinerParaObject* pOPO = pTO->GetOutlinerParaObject();
if (pOPO)
{
pOutliner->Clear();
pOutliner->SetText( *pOPO );
pOutliner->SetText(*pOutlinerParagraphObject);
sal_Int32 nCount = pOutliner->GetParagraphCount();
sal_Int32 nCount = pOutliner->GetParagraphCount();
Paragraph* pPara = NULL;
sal_Int16 nActDepth = -1;
Paragraph* pParagraph = NULL;
OUString aParaText;
for (sal_Int32 nPara = 0; nPara < nCount; nPara++)
{
pPara = pOutliner->GetParagraph(nPara);
if(pPara == 0)
continue;
sal_Int16 nCurrentDepth = -1;
const sal_Int16 nDepth = (sal_uInt16) pOutliner->GetDepth( nPara );
aParaText = ParagraphToHTMLString(pOutliner,nPara,rBackgroundColor);
for (sal_Int32 nIndex = 0; nIndex < nCount; nIndex++)
{
pParagraph = pOutliner->GetParagraph(nIndex);
if(pParagraph == NULL)
continue;
if (aParaText.isEmpty())
continue;
const sal_Int16 nDepth = (sal_uInt16) pOutliner->GetDepth(nIndex);
OUString aParaText = ParagraphToHTMLString(pOutliner, nIndex, rBackgroundColor);
if(nDepth < nActDepth )
{
do
{
aStr.append("</ul>");
nActDepth--;
}
while(nDepth < nActDepth);
}
else if(nDepth > nActDepth )
{
do
{
aStr.append("<ul>");
nActDepth++;
}
while( nDepth > nActDepth );
}
if (aParaText.isEmpty())
continue;
OUString sStyle(getParagraphStyle(pOutliner, nPara));
if(nActDepth >= 0 )
{
lclAppendStyle(aStr, "li", sStyle);
}
if (nDepth < 0)
{
OUString aTag = bHeadLine ? OUString("h2") : OUString("p");
lclAppendStyle(aStr, aTag, getParagraphStyle(pOutliner, nIndex));
if(nActDepth <= 0 && bHeadLine)
{
if( nActDepth == 0 )
{
aStr.append("<h2>");
}
else
{
lclAppendStyle(aStr, "h2", sStyle);
}
}
aStr.append(aParaText);
if(nActDepth == 0 && bHeadLine)
aStr.append("</h2>");
if(nActDepth >= 0 )
aStr.append("</li>");
aStr.append("\r\n");
aStr.append(aParaText);
aStr.append("</" + aTag + ">\r\n");
}
else
{
while(nCurrentDepth < nDepth)
{
aStr.append("<ul>\r\n");
nCurrentDepth++;
}
while( nActDepth >= 0 )
while(nCurrentDepth > nDepth)
{
aStr.append("</ul>");
nActDepth--;
};
aStr.append("</ul>\r\n");
nCurrentDepth--;
}
lclAppendStyle(aStr, "li", getParagraphStyle(pOutliner, nIndex));
aStr.append(aParaText);
aStr.append("</li>\r\n");
}
}
return aStr.makeStringAndClear();
while(nCurrentDepth >= 0)
{
aStr.append("</ul>\r\n");
nCurrentDepth--;
}
pOutliner->Clear();
}
// creates a outliner text for a note page
OUString HtmlExport::CreateTextForNotesPage( SdrOutliner* pOutliner,
SdPage* pPage,
......
......@@ -211,6 +211,10 @@ class HtmlExport
bool WriteHtml( const OUString& rFileName, bool bAddExtension, const OUString& rHtmlData );
OUString GetButtonName( int nButton ) const;
void WriteOutlinerParagraph(OUStringBuffer& aStr, SdrOutliner* pOutliner,
OutlinerParaObject* pOutlinerParagraphObject,
const Color& rBackgroundColor, bool bHeadLine);
public:
HtmlExport(const OUString& aPath,
const css::uno::Sequence<css::beans::PropertyValue>& rParams,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment