ODe_Style_PageLayout* ODe_AutomaticStyles::addPageLayout() { ODe_Style_PageLayout* pStyle; UT_UTF8String styleName; UT_UTF8String_sprintf(styleName, "PLayout%d", m_pageLayouts.size() + 1); pStyle = new ODe_Style_PageLayout(); pStyle->setName(styleName); m_pageLayouts.insert(styleName.utf8_str(), pStyle); return pStyle; }
/** * Do all necessary work before starting to listen the AbiWord document. */ bool ODe_DocumentData::doPreListeningWork() { bool ok; ok = m_styles.fetchRegularStyleStyles(); if (!ok) { return false; } ///// // Creates a <style:page-layout> from the info that goes on the <pagesize> // tag of abw files. ODe_Style_PageLayout* pPageLayout; pPageLayout = new ODe_Style_PageLayout(); pPageLayout->setName("Standard"); m_stylesAutoStyles.addPageLayout(pPageLayout); pPageLayout->fetchAttributesFromAbiDoc(m_pAbiDoc); // Create the "Standard" master page style ODe_Style_MasterPage* pMPStyle; pMPStyle = new ODe_Style_MasterPage("Standard", "Standard"); m_masterStyles.insert("Standard", pMPStyle); m_pOfficeTextTemp = gsf_output_memory_new(); if (m_pOfficeTextTemp == NULL) { return false; } // If we've reached this point, everything is fine. return true; }
void ODe_Frame_Listener::_openODTextbox(const PP_AttrProp& rAP, ODe_ListenerAction& /*rAction*/) { UT_UTF8String output; UT_UTF8String str; bool ok; const gchar* pValue = NULL; ODe_Style_Style* pStyle; pStyle = new ODe_Style_Style(); pStyle->setFamily("graphic"); pStyle->fetchAttributesFromAbiFrame(rAP); // Abi frames have no padding // (no margin between frame borders and its content) pStyle->setPadding("0cm"); // Abi frames are aways positioned from its top-left corner. pStyle->setHorizontalPos("from-left"); pStyle->setVerticalPos("from-top"); // For OOo to recognize a textbox as being a textbox, it will // need to have the parent style name "Frame". I can't find it // in the ODF spec, but without it OOo considers the textbox to // be a generic drawing object (check the Navigator window in OOo). pStyle->setParentStyleName("Frame"); // Make sure an (empty) Frame style exists, for completeness sake // (OOo doesn't seem to care if it exists or not). if (!m_rStyles.getGraphicsStyle("Frame")) { ODe_Style_Style* pFrameStyle = new ODe_Style_Style(); pFrameStyle->setStyleName("Frame"); pFrameStyle->setFamily("graphic"); m_rStyles.addGraphicsStyle(pFrameStyle); } m_rAutomatiStyles.storeGraphicStyle(pStyle); //// // Write <draw:frame> _printSpacesOffset(output); output += "<draw:frame"; UT_UTF8String_sprintf(str, "Frame%u", m_rAuxiliaryData.m_frameCount+1); ODe_writeAttribute(output, "draw:name", str); m_rAuxiliaryData.m_frameCount++; ODe_writeAttribute(output, "draw:style-name", pStyle->getName()); UT_UTF8String_sprintf(str, "%u", m_zIndex); ODe_writeAttribute(output, "draw:z-index", str); ok = rAP.getProperty("position-to", pValue); if (pValue && !strcmp(pValue, "block-above-text")) { ODe_writeAttribute(output, "text:anchor-type", "paragraph"); ok = rAP.getProperty("xpos", pValue); UT_ASSERT(ok && pValue != NULL); ODe_writeAttribute(output, "svg:x", pValue); ok = rAP.getProperty("ypos", pValue); UT_ASSERT(ok && pValue != NULL); ODe_writeAttribute(output, "svg:y", pValue); } else { // Everything else (column and page) will be treated as page // anchored. ODe_writeAttribute(output, "text:anchor-type", "page"); if(pValue && !strcmp(pValue, "column-above-text")) { // // Get the most recent page style so we can do the arithmetic // Won't work for x in multi-columned docs // UT_uint32 numPStyles = m_rAutomatiStyles.getSectionStylesCount(); UT_UTF8String stylePName; UT_UTF8String_sprintf(stylePName, "PLayout%d", numPStyles + 1); ODe_Style_PageLayout * pPageL = m_rAutomatiStyles.getPageLayout(stylePName.utf8_str()); ok = rAP.getProperty("frame-col-xpos", pValue); UT_ASSERT(ok && pValue != NULL); double xCol = UT_convertToInches(pValue); const gchar* pSVal= pPageL->getPageMarginLeft(); double xPageL = UT_convertToInches(pSVal); double xTot = xPageL + xCol; pValue = UT_convertInchesToDimensionString(DIM_IN,xTot,"4"); ODe_writeAttribute(output, "svg:x", pValue); ok = rAP.getProperty("frame-col-ypos", pValue); UT_ASSERT(ok && pValue != NULL); double yCol = UT_convertToInches(pValue); pSVal= pPageL->getPageMarginTop(); double yPageL = UT_convertToInches(pSVal); double yTot = yPageL + yCol; pValue = UT_convertInchesToDimensionString(DIM_IN,yTot,"4"); ODe_writeAttribute(output, "svg:y", pValue); } else { ok = rAP.getProperty("frame-page-xpos", pValue); UT_ASSERT(ok && pValue != NULL); ODe_writeAttribute(output, "svg:x", pValue); ok = rAP.getProperty("frame-page-ypos", pValue); UT_ASSERT(ok && pValue != NULL); ODe_writeAttribute(output, "svg:y", pValue); } } ok = rAP.getProperty("frame-width", pValue); if (ok && pValue != NULL) { ODe_writeAttribute(output, "svg:width", pValue); } output += ">\n"; ODe_writeUTF8String(m_pTextOutput, output); m_spacesOffset++; //// // Write <draw:text-box> output.clear(); _printSpacesOffset(output); output += "<draw:text-box"; ok = rAP.getProperty("frame-height", pValue); if (ok && pValue != NULL) { ODe_writeAttribute(output, "fo:min-height", pValue); } output += ">\n"; ODe_writeUTF8String(m_pTextOutput, output); m_spacesOffset++; }