本文整理汇总了C++中librevenge::RVNGPropertyList::child方法的典型用法代码示例。如果您正苦于以下问题:C++ RVNGPropertyList::child方法的具体用法?C++ RVNGPropertyList::child怎么用?C++ RVNGPropertyList::child使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类librevenge::RVNGPropertyList
的用法示例。
在下文中一共展示了RVNGPropertyList::child方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: openTable
void IE_Imp_WordPerfect::openTable(const librevenge::RVNGPropertyList &propList)
{
if (m_bHdrFtrOpenCount) return; // HACK
// TODO: handle 'marginLeftOffset' and 'marginRightOffset'
UT_DEBUGMSG(("AbiWordPerfect: openTable\n"));
UT_String propBuffer;
if (propList["table:align"])
{
// no need to support left: default behaviour
//if (strcmp(propList["table:align"]->getStr().cstr(), "right"))
// abiword does not support this I think
//if (strcmp(propList["table:align"]->getStr().cstr(), "center"))
// abiword does not support this I think
//if (strcmp(propList["table:align"]->getStr().cstr(), "margins"))
// abiword does not support this I think
if (strcmp(propList["table:align"]->getStr().cstr(), "margins"))
{
if (propList["fo:margin-left"])
UT_String_sprintf(propBuffer, "table-column-leftpos:%s; ", propList["fo:margin-left"]->getStr().cstr());
}
}
const librevenge::RVNGPropertyListVector *columns = propList.child("librevenge:table-columns");
if (columns)
{
propBuffer += "table-column-props:";
librevenge::RVNGPropertyListVector::Iter i(*columns);
for (i.rewind(); i.next();)
{
UT_String tmpBuffer;
if (i()["style:column-width"])
UT_String_sprintf(tmpBuffer, "%s/", i()["style:column-width"]->getStr().cstr());
propBuffer += tmpBuffer;
}
}
const PP_PropertyVector propsArray = {
"props", propBuffer.c_str()
};
X_CheckDocumentError(appendStrux(PTX_SectionTable, propsArray));
}
示例2: openSection
void IE_Imp_WordPerfect::openSection(const librevenge::RVNGPropertyList &propList)
{
if (m_bHdrFtrOpenCount) return; // HACK
UT_DEBUGMSG(("AbiWordPerfect: openSection\n"));
float marginLeft = 0.0f, marginRight = 0.0f;
const librevenge::RVNGPropertyListVector *columns = propList.child("style:columns");
int columnsCount = ((!columns || !columns->count()) ? 1 : columns->count());
// TODO: support spaceAfter
if (propList["fo:start-indent"])
marginLeft = propList["fo:start-indent"]->getDouble();
if (propList["fo:end-indent"])
marginRight = propList["fo:end-indent"]->getDouble();
if (marginLeft != m_leftSectionMargin || marginRight != m_rightSectionMargin || m_sectionColumnsCount != columnsCount)
m_bSectionChanged = true;
m_leftSectionMargin = marginLeft;
m_rightSectionMargin = marginRight;
m_sectionColumnsCount = columnsCount;
_appendSection(columnsCount, m_leftPageMargin + m_leftSectionMargin, m_rightPageMargin + m_rightSectionMargin);
}
示例3: openParagraph
void IE_Imp_WordPerfect::openParagraph(const librevenge::RVNGPropertyList &propList)
{
if (m_bHdrFtrOpenCount) return; // HACK
UT_DEBUGMSG(("AbiWordPerfect: openParagraph()\n"));
// for now, we always append these options
float marginTop = 0.0f, marginBottom = 0.0f;
float marginLeft = 0.0f, marginRight = 0.0f, textIndent = 0.0f;
if (propList["fo:margin-top"])
marginTop = propList["fo:margin-top"]->getDouble();
if (propList["fo:margin-bottom"])
marginBottom = propList["fo:margin-bottom"]->getDouble();
if (propList["fo:margin-left"])
marginLeft = propList["fo:margin-left"]->getDouble();
if (propList["fo:margin-right"])
marginRight = propList["fo:margin-right"]->getDouble();
if (propList["fo:text-indent"])
textIndent = propList["fo:text-indent"]->getDouble();
m_topMargin = marginTop;
m_bottomMargin = marginBottom;
m_leftMarginOffset = marginLeft;
m_rightMarginOffset = marginRight;
m_textIndent = textIndent;
UT_String propBuffer;
propBuffer += "text-align:";
if (propList["fo:text-align"])
{
// AbiWord follows xsl:fo, except here, for some reason..
if (propList["fo:text-align"]->getStr() == "end")
propBuffer += "right";
else
propBuffer += propList["fo:text-align"]->getStr().cstr();
}
else
propBuffer += "left";
float lineSpacing = 1.0f;
if (propList["fo:line-height"])
lineSpacing = propList["fo:line-height"]->getDouble();
UT_String tmpBuffer;
UT_String_sprintf(tmpBuffer, "; margin-top:%dpt; margin-bottom:%dpt; margin-left:%.4fin; margin-right:%.4fin; text-indent:%.4fin; line-height:%.4f",
(int)(m_topMargin*72), (int)(m_bottomMargin*72), m_leftMarginOffset, m_rightMarginOffset, m_textIndent, lineSpacing);
propBuffer += tmpBuffer;
const librevenge::RVNGPropertyListVector *tabStops = propList.child("style:tab-stops");
if (tabStops && tabStops->count()) // Append the tabstop information
{
propBuffer += "; tabstops:";
tmpBuffer = "";
librevenge::RVNGPropertyListVector::Iter i(*tabStops);
for (i.rewind(); i.next();)
{
propBuffer += tmpBuffer;
if (i()["style:position"])
{
UT_String_sprintf(tmpBuffer, "%.4fin", i()["style:position"]->getDouble());
propBuffer += tmpBuffer;
}
if (i()["style:type"])
if (i()["style:type"]->getStr() == "right")
propBuffer += "/R";
else if (i()["style:type"]->getStr() == "center")
propBuffer += "/C";
else if (i()["style:type"]->getStr() == "char")
propBuffer += "/D";
else
propBuffer += "/L";
else // Left aligned is default
propBuffer += "/L";
if (i()["style:leader-text"])
if (i()["style:leader-text"]->getStr() == "-")
propBuffer += "2";
else if (i()["style:leader-text"]->getStr() == "_")
propBuffer += "3";
else // default to dot leader if the given leader is dot or is not supported by AbiWord
propBuffer += "1";
else
propBuffer += "0";
tmpBuffer = ",";
}
}
UT_DEBUGMSG(("AbiWordPerfect: Appending paragraph properties: %s\n", propBuffer.c_str()));
const PP_PropertyVector propsArray = {
"props", propBuffer.c_str()
};
X_CheckDocumentError(appendStrux(PTX_Block, propsArray));
m_bRequireBlock = false;
if (propList["fo:break-before"])
{
if (strcmp(propList["fo:break-before"]->getStr().cstr(), "page") == 0)
{
//.........这里部分代码省略.........