bool KoPAPastePage::process( const KoXmlElement & body, KoOdfReadStore & odfStore ) { KoOdfLoadingContext loadingContext( odfStore.styles(), odfStore.store(), m_doc->defaultStylesResourcePath() ); KoPALoadingContext paContext(loadingContext, m_doc->resourceManager()); QList<KoPAPageBase *> newMasterPages( m_doc->loadOdfMasterPages( odfStore.styles().masterPages(), paContext ) ); QList<KoPAPageBase *> newPages( m_doc->loadOdfPages( body, paContext ) ); // Check where to start inserting pages KoPAPageBase * insertAfterPage = 0; KoPAPageBase * insertAfterMasterPage = 0; if ( dynamic_cast<KoPAMasterPage *>( m_activePage ) || ( m_activePage == 0 && newPages.empty() ) ) { insertAfterMasterPage = m_activePage; insertAfterPage = m_doc->pages( false ).last(); } else { insertAfterPage = m_activePage; insertAfterMasterPage = m_doc->pages( true ).last(); } if ( !newPages.empty() ) { KoGenStyles mainStyles; QBuffer buffer; buffer.open( QIODevice::WriteOnly ); KoXmlWriter xmlWriter( &buffer ); KoEmbeddedDocumentSaver embeddedSaver; KoPASavingContext savingContext(xmlWriter, mainStyles, embeddedSaver, 1); savingContext.addOption( KoShapeSavingContext::UniqueMasterPages ); QList<KoPAPageBase*> emptyList; QList<KoPAPageBase*> existingMasterPages = m_doc->pages( true ); savingContext.setClearDrawIds( true ); m_doc->saveOdfPages( savingContext, emptyList, existingMasterPages ); QMap<QString, KoPAMasterPage*> masterPageNames; foreach ( KoPAPageBase * page, existingMasterPages ) { KoPAMasterPage * masterPage = dynamic_cast<KoPAMasterPage*>( page ); Q_ASSERT( masterPage ); if ( masterPage ) { QString masterPageName( savingContext.masterPageName( masterPage ) ); if ( !masterPageNames.contains( masterPageName ) ) { masterPageNames.insert( masterPageName, masterPage ); } } }
bool SvgWriter::save(QIODevice &outputDevice) { if (m_toplevelShapes.isEmpty()) return false; QTextStream svgStream(&outputDevice); // standard header: svgStream << "<?xml version=\"1.0\" standalone=\"no\"?>" << endl; svgStream << "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 20010904//EN\" "; svgStream << "\"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd\">" << endl; // add some PR. one line is more than enough. svgStream << "<!-- Created using Karbon, part of Calligra: http://www.calligra.org/karbon -->" << endl; svgStream << "<svg xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\""; svgStream << " width=\"" << m_pageSize.width() << "pt\""; svgStream << " height=\"" << m_pageSize.height() << "pt\">" << endl; { SvgSavingContext savingContext(outputDevice, m_writeInlineImages); // top level shapes Q_FOREACH (KoShape *shape, m_toplevelShapes) { KoShapeLayer *layer = dynamic_cast<KoShapeLayer*>(shape); if(layer) { saveLayer(layer, savingContext); } else { KoShapeGroup *group = dynamic_cast<KoShapeGroup*>(shape); if (group) saveGroup(group, savingContext); else saveShape(shape, savingContext); } } }