28 #include <osl/diagnose.h>
37 #include <com/sun/star/ucb/ContentCreationException.hpp>
51 aBuf[--i] =
'0' +
static_cast<char>(nVal % 10);
74 void RemoveFontList(
SwDoc& rDoc );
75 void InsertBkmk( const ::sw::mark::IMark& rBkmk );
97 if(rBkmk.IsExpanded() && rBkmk.GetOtherMarkPos().nNode != nNd)
99 nNd = rBkmk.GetOtherMarkPos().nNode.GetIndex();
119 , m_pOrigFileName(nullptr), m_pDoc(nullptr), m_pOrigPam(nullptr)
120 , m_bHideDeleteRedlines(
false)
190 std::shared_ptr<SwUnoCursor>
197 if( !pCNode &&
nullptr == pNds->
GoNext( &aStt ) )
199 OSL_FAIL(
"No more ContentNode at StartPos" );
208 assert(pCNode &&
"No more ContentNode at StartPos");
210 pNew->GetPoint()->nNode = aStt;
217 assert(
m_pImpl->m_pStream &&
"Oh-oh. Writer with no Stream!");
228 const bool bNeg = nVal < 0;
232 return lcl_OutLongExt(rStrm, static_cast<sal_uLong>(nVal), bNeg);
237 return lcl_OutLongExt(rStrm, nVal,
false);
248 nResult =
Write( rPaM, *aRef, pFName );
252 catch (
const css::ucb::ContentCreationException &)
290 OSL_ENSURE(
false,
"Write in Storages on a stream?" );
296 OSL_ENSURE(
false,
"Write in Storages on a stream?" );
309 if( ! ( INetProtocol::File == aFileUrl.GetProtocol() &&
312 INetProtocol::VndSunStarWebdav >= aTargetUrl.
GetProtocol() ) )
316 std::map<OUString, OUString>::iterator it =
m_pImpl->maFileNameMap.find( rFileNm );
317 if ( it !=
m_pImpl->maFileNameMap.end() )
319 rFileNm = it->second;
323 OUString aSrc = rFileNm;
326 SfxMedium aSrcFile( aSrc, StreamMode::READ );
327 SfxMedium aDstFile( aDest, StreamMode::WRITE | StreamMode::SHARE_DENYNONE );
338 m_pImpl->maFileNameMap.insert( std::make_pair( aSrc, aDest ) );
356 for(
size_t nGet = rListTable.
size(); nGet; )
358 SwNumRule const*
const pRule = rListTable[ --nGet ];
372 if( *pFont == *pDefFont )
375 else if( *pFont == *pDefFont )
379 pFont->GetFamilyName(), pFont->GetStyleName(),
404 if(
nullptr != pFont )
408 AddFontItem( rPool, *static_cast<const SvxFontItem*>(pItem) );
418 pItem = &rPool.
Put( aFont );
421 pItem = &rPool.
Put( rFont );
423 if( 1 < pItem->GetRefCount() )
427 m_pImpl->aFontRemoveLst.push_back( pItem );
446 sal_Int32 nEnd, std::vector< const ::sw::mark::IMark* >& rArr)
448 OSL_ENSURE( rArr.empty(),
"there are still entries available" );
451 std::pair<SwBookmarkNodeTable::const_iterator, SwBookmarkNodeTable::const_iterator> aIterPair
452 =
m_pImpl->aBkmkNodePos.equal_range( nNd );
453 if( aIterPair.first != aIterPair.second )
456 if( !nStt && nEnd == rNd.
Len() )
458 for( SwBookmarkNodeTable::const_iterator it = aIterPair.first; it != aIterPair.second; ++it )
459 rArr.push_back( it->second );
462 for( SwBookmarkNodeTable::const_iterator it = aIterPair.first; it != aIterPair.second; ++it )
464 const ::sw::mark::IMark& rBkmk = *(it->second);
466 if( rBkmk.GetMarkPos().nNode == nNd &&
467 (nContent = rBkmk.GetMarkPos().nContent.GetIndex() ) >= nStt &&
470 rArr.push_back( &rBkmk );
472 else if( rBkmk.IsExpanded() && nNd ==
473 rBkmk.GetOtherMarkPos().nNode.GetIndex() && (nContent =
474 rBkmk.GetOtherMarkPos().nContent.GetIndex() ) >= nStt &&
477 rArr.push_back( &rBkmk );
482 return !rArr.empty();
488 OSL_ENSURE(
false,
"Write in Storages on a stream?" );
SvxNumType GetNumberingType() const
std::shared_ptr< SwUnoCursor > CreateUnoCursor(const SwPosition &rPos, bool bTableCursor=false)
virtual sal_Int32 Len() const
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CJK(EE_CHAR_START+17)
bool IsUsed(const sw::BroadcastingModify &) const
std::map< OUString, OUString > maFileNameMap
GtkMediaStream * m_pStream
Marks a position in the document model.
std::unique_ptr< Writer_Impl > m_pImpl
bool GetBookmarks(const SwContentNode &rNd, sal_Int32 nStt, sal_Int32 nEnd, std::vector< const ::sw::mark::IMark * > &rArr)
#define ERR_SWG_WRITE_ERROR
const SfxPoolItem * GetPoolDefaultItem(sal_uInt16 nWhich) const
wrapper iterator: wraps iterator of implementation while hiding MarkBase class; only IMark instances ...
Provides access to the marks of a document.
virtual const_iterator_t findFirstBookmarkStartsAfter(const SwPosition &rPos) const =0
Finds the first mark that is starting after.
constexpr sal_uInt8 MAXLEVEL
static SwContentNode * GoPrevious(SwNodeIndex *)
virtual ErrCode WriteStream() override
IDocumentMarkAccess * getIDocumentMarkAccess()
void Remove(const SfxPoolItem &)
SvStream & WriteCharPtr(const char *pBuf)
constexpr TypedWhichId< SvxFontItem > RES_CHRATR_FONT(7)
IDocumentSettingAccess & getIDocumentSettingAccess()
void Close(bool bInDestruction=false)
bool m_bWriteOnlyFirstTable
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO_CTL(EE_CHAR_START+18)
IDocumentStylePoolAccess const & getIDocumentStylePoolAccess() const
bool m_bASCII_ParaAsBlank
virtual ErrCode WriteMedium(SfxMedium &)=0
void RemoveFontList(SwDoc &rDoc)
SvStream * GetOutStream()
css::uno::Reference< css::embed::XStorage > m_xStg
virtual ErrCode WriteStorage()=0
virtual ErrCode WriteStream()=0
#define SAL_N_ELEMENTS(arr)
bool m_bWriteClipboardDoc
bool m_bASCII_NoLastLineEnd
PaM is Point and Mark: a selection of the document model.
virtual const_iterator_t getBookmarksEnd() const =0
returns a STL-like random access iterator to the end of the sequence of IBookmarks.
bool CopyNextPam(SwPaM **)
void PutNumFormatFontsInAttrPool()
#define TOOLS_WARN_EXCEPTION(area, stream)
virtual ErrCode Write(SwPaM &, SfxMedium &, const OUString *)
const vcl::Font & GetDefBulletFont()
retrieve font used for the default bullet list characters
std::vector< const SvxFontItem * > aFontRemoveLst
void PutEditEngFontsInAttrPool()
SwContentNode * GetContentNode()
SwNodeOffset GetIndex() const
static std::shared_ptr< SwUnoCursor > NewUnoCursor(SwDoc &rDoc, SwNodeOffset const nStartIdx, SwNodeOffset const nEndIdx)
tools::SvRef< SotStorage > m_pStg
Provides access to settings of a document.
Marks a node in the document model.
void SetStream(SvStream *const pStream)
SwBookmarkNodeTable aBkmkNodePos
void AddFontItem(SfxItemPool &rPool, const SvxFontItem &rFont)
const SfxPoolItem & GetDefaultItem(sal_uInt16 nWhich) const
SvStream & WriteStream(SvStream &rStream)
const SwPosition * Start() const
SfxItemPool * GetSecondaryPool() const
const SwNumFormat & Get(sal_uInt16 i) const
bool m_bUCS2_WithStartChar
void AddFontItems_(SfxItemPool &rPool, sal_uInt16 nWhichId)
virtual ErrCode Write(SwPaM &, const css::uno::Reference< css::embed::XStorage > &, const OUString *, SfxMedium *=nullptr) override
OUString GetPartBeforeLastName() const
const SwNumRuleTable & GetNumRuleTable() const
virtual const_iterator_t getBookmarksBegin() const =0
returns a STL-like random access iterator to the begin of the sequence the IBookmarks.
std::multimap< SwNodeOffset, const ::sw::mark::IMark * > SwBookmarkNodeTable
static SvStream & OutLong(SvStream &rStrm, tools::Long nVal)
INetProtocol GetProtocol() const
bool m_bExportParagraphNumbering
static SvStream & OutULong(SvStream &rStrm, sal_uLong nVal)
IDocumentSettingAccess const & getIDocumentSettingAccess() const
Item2Range GetItemSurrogates(sal_uInt16 nWhich) const
const SwPosition * End() const
const T & Put(std::unique_ptr< T > xItem, sal_uInt16 nWhich=0)
constexpr TypedWhichId< SvxFontItem > EE_CHAR_FONTINFO(EE_CHAR_START+1)
IDocumentStylePoolAccess & getIDocumentStylePoolAccess()
sal_Int32 FindPos_Bkmk(const SwPosition &rPos) const
std::shared_ptr< SwUnoCursor > m_pCurrentPam
const OUString * m_pOrigFileName
Access to the style pool.
virtual void SetupFilterOptions(SfxMedium &rMedium)
virtual bool IsStgWriter() const
SwContentNode * GoNext(SwNodeIndex *) const
void MakeEndIndex(SwIndex *pIdx)
void InsertBkmk(const ::sw::mark::IMark &rBkmk)
const SwAttrPool & GetAttrPool() const
bool CopyLocalFileToINet(OUString &rFileNm)
virtual ~Writer() override
bool m_bDetectedRangeSegmentation false
void CreateBookmarkTable()