diff options
Diffstat (limited to 'sw/inc')
55 files changed, 299 insertions, 907 deletions
diff --git a/sw/inc/SwStyleNameMapper.hxx b/sw/inc/SwStyleNameMapper.hxx index e32f6abfb766..cf1d7aed0c64 100644 --- a/sw/inc/SwStyleNameMapper.hxx +++ b/sw/inc/SwStyleNameMapper.hxx @@ -164,7 +164,7 @@ public: // This gets the programmatic Name from the Pool ID static void FillProgName( sal_uInt16 nId, String& rFillName ); - static const String& GetProgName ( sal_uInt16 nId, const String& rName ); + SW_DLLPUBLIC static const String& GetProgName ( sal_uInt16 nId, const String& rName ); // This gets the PoolId from the UI Name SW_DLLPUBLIC static sal_uInt16 GetPoolIdFromUIName( const String& rName, SwGetPoolIdFromName ); diff --git a/sw/inc/anchoreddrawobject.hxx b/sw/inc/anchoreddrawobject.hxx index bb95a8abf7b6..7a52a523d2c2 100644 --- a/sw/inc/anchoreddrawobject.hxx +++ b/sw/inc/anchoreddrawobject.hxx @@ -39,7 +39,7 @@ @author OD */ -class SwAnchoredDrawObject : public SwAnchoredObject +class SW_DLLPUBLIC SwAnchoredDrawObject : public SwAnchoredObject { private: // boolean, indicating that the object position has been invalidated diff --git a/sw/inc/anchoredobject.hxx b/sw/inc/anchoredobject.hxx index 3cbd93d75104..c9c4c55d701e 100644 --- a/sw/inc/anchoredobject.hxx +++ b/sw/inc/anchoredobject.hxx @@ -56,7 +56,7 @@ class SwFmtAnchor; @author OD */ -class SwAnchoredObject +class SW_DLLPUBLIC SwAnchoredObject { private: // drawing object representing the anchored object in the drawing layer diff --git a/sw/inc/bookmrk.hxx b/sw/inc/bookmrk.hxx index a5c58f2bf740..3b459f61c081 100644 --- a/sw/inc/bookmrk.hxx +++ b/sw/inc/bookmrk.hxx @@ -151,7 +151,7 @@ public: const String& rName, const String& rShortName); }; -class SwFieldBookmark : public SwBookmark +class SW_DLLPUBLIC SwFieldBookmark : public SwBookmark { private: int fftype; // Type: 0 = Text, 1 = Check Box, 2 = List diff --git a/sw/inc/bparr.hxx b/sw/inc/bparr.hxx index c6f44647b46a..8a2d320382a7 100644 --- a/sw/inc/bparr.hxx +++ b/sw/inc/bparr.hxx @@ -33,6 +33,7 @@ #include <tools/solar.h> #include <tools/debug.hxx> +#include <swdllapi.h> struct BlockInfo; class BigPtrArray; @@ -73,7 +74,7 @@ struct BlockInfo { // Block-Info: USHORT nElem; // Anzahl Elemente }; -class BigPtrArray +class SW_DLLPUBLIC BigPtrArray { BlockInfo** ppInf; // Block-Infos ULONG nSize; // Anzahl Elemente diff --git a/sw/inc/breakit.hxx b/sw/inc/breakit.hxx index 5614d59e405d..53940bd00e37 100644 --- a/sw/inc/breakit.hxx +++ b/sw/inc/breakit.hxx @@ -36,10 +36,8 @@ #include <com/sun/star/uno/Reference.h> #include <com/sun/star/lang/XMultiServiceFactory.hpp> #include <com/sun/star/i18n/XBreakIterator.hpp> - -#ifndef _COM_SUN_STAR_I18N_FORBIDDENCHARACTERS_HDL_ #include <com/sun/star/i18n/ForbiddenCharacters.hdl> -#endif +#include <swdllapi.h> class String; @@ -48,7 +46,7 @@ class String; *************************************************************************/ -class SwBreakIt +class SW_DLLPUBLIC SwBreakIt { com::sun::star::uno::Reference< com::sun::star::lang::XMultiServiceFactory > m_xMSF; @@ -110,7 +108,7 @@ public: #define SW_XBREAKITER() SW_BREAKITER()->GetBreakIter() // @@@ backward compatibility @@@ -extern SwBreakIt* pBreakIt; +SW_DLLPUBLIC extern SwBreakIt* pBreakIt; #endif diff --git a/sw/inc/calbck.hxx b/sw/inc/calbck.hxx index b5a0819ea897..7a8ff7f8f471 100644 --- a/sw/inc/calbck.hxx +++ b/sw/inc/calbck.hxx @@ -130,7 +130,7 @@ class SW_DLLPUBLIC SwModify: public SwClient friend class SwClientIter; SwClient* pRoot; - SW_DLLPRIVATE SwClient *_Remove(SwClient *pDepend); + SwClient *_Remove(SwClient *pDepend); public: SwModify() : pRoot(0) {} @@ -176,7 +176,7 @@ protected: * abhaengig ist. Diese sollte fuer jede Abhaengigkeit ein Objekt * der Klasse SwDepend als Member haben. */ -class SwDepend: public SwClient +class SW_DLLPUBLIC SwDepend: public SwClient { SwClient *pToTell; @@ -197,7 +197,7 @@ private: }; -class SW_DLLPUBLIC SwClientIter +class SwClientIter { friend SwClient* SwModify::_Remove(SwClient *); // fuer Ptr-Korrektur friend void SwModify::Add(SwClient *); // nur fuer ASSERT ! @@ -213,8 +213,8 @@ class SW_DLLPUBLIC SwClientIter TypeId aSrchId; // fuer First/Next - suche diesen Type public: - SwClientIter( SwModify& ); - ~SwClientIter(); + SW_DLLPUBLIC SwClientIter( SwModify& ); + SW_DLLPUBLIC ~SwClientIter(); const SwModify& GetModify() const { return rRoot; } SwModify& GetModify() { return rRoot; } @@ -236,8 +236,8 @@ public: int IsChanged() const { return pDelNext != pAkt; } - SwClient* First( TypeId nType ); - SwClient* Next(); + SW_DLLPUBLIC SwClient* First( TypeId nType ); + SW_DLLPUBLIC SwClient* Next(); const SwClient* GetWatchClient() const { return mpWatchClient; } void SetWatchClient( SwClient* pWatch ) { mpWatchClient = pWatch; } diff --git a/sw/inc/chpfld.hxx b/sw/inc/chpfld.hxx index 9eb641660672..08ebcf93bd5c 100644 --- a/sw/inc/chpfld.hxx +++ b/sw/inc/chpfld.hxx @@ -65,7 +65,7 @@ public: /*-------------------------------------------------------------------- Beschreibung: Kapitelnummer --------------------------------------------------------------------*/ -class SwChapterField : public SwField +class SW_DLLPUBLIC SwChapterField : public SwField { friend class SwChapterFieldType; BYTE nLevel; diff --git a/sw/inc/dbfld.hxx b/sw/inc/dbfld.hxx index b918a038da72..9b61f001ed12 100644 --- a/sw/inc/dbfld.hxx +++ b/sw/inc/dbfld.hxx @@ -172,7 +172,7 @@ public: Beschreibung: Datenbankfeld Naechster Satz --------------------------------------------------------------------*/ -class SwDBNextSetFieldType : public SwFieldType +class SW_DLLPUBLIC SwDBNextSetFieldType : public SwFieldType { public: SwDBNextSetFieldType(); @@ -286,7 +286,7 @@ public: Beschreibung: Datenbankfeld --------------------------------------------------------------------*/ -class SwDBNameField : public SwDBNameInfField +class SW_DLLPUBLIC SwDBNameField : public SwDBNameInfField { public: SwDBNameField(SwDBNameFieldType*, const SwDBData& rDBData, ULONG nFmt = 0); @@ -301,7 +301,7 @@ public: Beschreibung: Datensatznummer --------------------------------------------------------------------*/ -class SwDBSetNumberFieldType : public SwFieldType +class SW_DLLPUBLIC SwDBSetNumberFieldType : public SwFieldType { public: SwDBSetNumberFieldType(); @@ -313,7 +313,7 @@ public: Beschreibung: Datenbankfeld --------------------------------------------------------------------*/ -class SwDBSetNumberField : public SwDBNameInfField +class SW_DLLPUBLIC SwDBSetNumberField : public SwDBNameInfField { long nNumber; diff --git a/sw/inc/dcontact.hxx b/sw/inc/dcontact.hxx index 2c905275ac84..3bb2fb4f49c0 100644 --- a/sw/inc/dcontact.hxx +++ b/sw/inc/dcontact.hxx @@ -67,7 +67,7 @@ class SwIndex; //Anderfalls ist es eben ein einfaches Zeichenobjekt. Diese hat einen //UserCall und der ist Client vom gesuchten Format. //Implementierung in dcontact.cxx -SwFrmFmt *FindFrmFmt( SdrObject *pObj ); +SW_DLLPUBLIC SwFrmFmt *FindFrmFmt( SdrObject *pObj ); inline const SwFrmFmt *FindFrmFmt( const SdrObject *pObj ) { return ::FindFrmFmt( (SdrObject*)pObj ); } sal_Bool HasWrap( const SdrObject* pObj ); @@ -237,7 +237,7 @@ public: //KontactObjekt fuer die Verbindung zwischen Rahmen bzw. deren Formaten //im StarWriter (SwClient) und den Zeichenobjekten des Drawing (SdrObjUserCall) -class SwFlyDrawContact : public SwContact +class SW_DLLPUBLIC SwFlyDrawContact : public SwContact { private: // OD 2004-04-01 #i26791# diff --git a/sw/inc/doc.hxx b/sw/inc/doc.hxx index dcc17451454f..920f7495a63f 100644 --- a/sw/inc/doc.hxx +++ b/sw/inc/doc.hxx @@ -267,7 +267,7 @@ void SetAllScriptItem( SfxItemSet& rSet, const SfxPoolItem& rItem ); // global function to start grammar checking in the document void StartGrammarChecking( SwDoc &rDoc, SwRootFrm &rRootFrame ); -class SwDoc : +class SW_DLLPUBLIC SwDoc : public IInterface, public IDocumentSettingAccess, public IDocumentDeviceAccess, @@ -966,7 +966,7 @@ public: virtual void DocInfoChgd(); virtual const SwDocStat &GetDocStat() const; virtual void SetDocStat(const SwDocStat& rStat); - SW_DLLPUBLIC virtual void UpdateDocStat(SwDocStat& rStat); + virtual void UpdateDocStat(SwDocStat& rStat); /** IDocumentState */ @@ -1121,7 +1121,7 @@ public: sal_Bool bDelRedlines = sal_True, sal_Bool bCopyFlyAtFly = sal_False ) const; - SW_DLLPUBLIC sal_Bool SetFlyFrmAttr( SwFrmFmt& rFlyFmt, SfxItemSet& rSet ); + sal_Bool SetFlyFrmAttr( SwFrmFmt& rFlyFmt, SfxItemSet& rSet ); sal_Bool SetFrmFmtToFly( SwFrmFmt& rFlyFmt, SwFrmFmt& rNewFmt, SfxItemSet* pSet = 0, sal_Bool bKeepOrient = sal_False ); @@ -1238,7 +1238,7 @@ public: void SetDefault( const SfxItemSet& ); // Erfrage das Default Attribut in diesem Dokument. - SW_DLLPUBLIC const SfxPoolItem& GetDefault( sal_uInt16 nFmtHint ) const; + const SfxPoolItem& GetDefault( sal_uInt16 nFmtHint ) const; // TextAttribute nicht mehr aufspannen lassen sal_Bool DontExpandFmt( const SwPosition& rPos, sal_Bool bFlag = sal_True ); @@ -2092,8 +2092,8 @@ public: // <-- //Update all the page masters - SW_DLLPUBLIC void SetDefaultPageMode(bool bSquaredPageMode); - SW_DLLPUBLIC sal_Bool IsSquaredPageMode() const; + void SetDefaultPageMode(bool bSquaredPageMode); + sal_Bool IsSquaredPageMode() const; // i#78591# void Setn32DummyCompatabilityOptions1( sal_uInt32 CompatabilityOptions1 ) diff --git a/sw/inc/docary.hxx b/sw/inc/docary.hxx index 920d6273f674..649d7b4e650d 100644 --- a/sw/inc/docary.hxx +++ b/sw/inc/docary.hxx @@ -91,7 +91,7 @@ SV_DECL_PTRARR_DEL(SwSectionFmts,SwSectionFmtPtr,0,4) typedef SwNumRule* SwNumRulePtr; -SV_DECL_PTRARR_DEL( SwNumRuleTbl, SwNumRulePtr, 0, 5 ) +SV_DECL_PTRARR_DEL_VISIBILITY( SwNumRuleTbl, SwNumRulePtr, 0, 5, SW_DLLPUBLIC ) typedef SwRedline* SwRedlinePtr; SV_DECL_PTRARR_SORT_DEL( _SwRedlineTbl, SwRedlinePtr, 0, 16 ) diff --git a/sw/inc/docufld.hxx b/sw/inc/docufld.hxx index 3cd0f1bb034f..88c4e650cfd0 100644 --- a/sw/inc/docufld.hxx +++ b/sw/inc/docufld.hxx @@ -169,7 +169,7 @@ public: Beschreibung: Seitennummerierung --------------------------------------------------------------------*/ -class SwPageNumberField : public SwField +class SW_DLLPUBLIC SwPageNumberField : public SwField { String sUserStr; USHORT nSubType; @@ -246,7 +246,7 @@ public: Beschreibung: FileName --------------------------------------------------------------------*/ -class SwFileNameField : public SwField +class SW_DLLPUBLIC SwFileNameField : public SwField { String aContent; @@ -281,7 +281,7 @@ public: Beschreibung: TemplName --------------------------------------------------------------------*/ -class SwTemplNameField : public SwField +class SW_DLLPUBLIC SwTemplNameField : public SwField { public: SwTemplNameField(SwTemplNameFieldType*, sal_uInt32 nFmt = 0); @@ -314,7 +314,7 @@ public: Beschreibung: Dokumentstatistik --------------------------------------------------------------------*/ -class SwDocStatField : public SwField +class SW_DLLPUBLIC SwDocStatField : public SwField { USHORT nSubType; @@ -460,7 +460,7 @@ public: Beschreibung: Macrofeld --------------------------------------------------------------------*/ -class SwMacroField : public SwField +class SW_DLLPUBLIC SwMacroField : public SwField { String aMacro; String aText; @@ -517,7 +517,7 @@ public: Beschreibung: PostIt --------------------------------------------------------------------*/ -class SwPostItField : public SwField +class SW_DLLPUBLIC SwPostItField : public SwField { String sTxt; // die Anmerkung String sAuthor; // der Author @@ -566,7 +566,7 @@ public: virtual SwFieldType* Copy() const; }; -class SwDocInfoField : public SwValueField +class SW_DLLPUBLIC SwDocInfoField : public SwValueField { USHORT nSubType; String aContent; @@ -815,7 +815,7 @@ public: #define MAX_COMBINED_CHARACTERS 6 -class SwCombinedCharField : public SwField +class SW_DLLPUBLIC SwCombinedCharField : public SwField { String sCharacters; // combine these characters diff --git a/sw/inc/expfld.hxx b/sw/inc/expfld.hxx index febde8d8e6f8..83629f8cf6d5 100644 --- a/sw/inc/expfld.hxx +++ b/sw/inc/expfld.hxx @@ -93,7 +93,7 @@ public: Beschreibung: GetExperession --------------------------------------------------------------------*/ -class SwGetExpField : public SwFormulaField +class SW_DLLPUBLIC SwGetExpField : public SwFormulaField { String sExpand; BOOL bIsInBodyTxt; @@ -228,7 +228,7 @@ inline const String& SwSetExpFieldType::GetSetRefName() const Beschreibung: Ausdruck --------------------------------------------------------------------*/ -class SwSetExpField : public SwFormulaField +class SW_DLLPUBLIC SwSetExpField : public SwFormulaField { String sExpand; String aPText; @@ -315,7 +315,7 @@ public: Beschreibung: Eingabefeld --------------------------------------------------------------------*/ -class SwInputField : public SwField +class SW_DLLPUBLIC SwInputField : public SwField { String aContent; String aPText; diff --git a/sw/inc/fchrfmt.hxx b/sw/inc/fchrfmt.hxx index de0334f5ef50..c34d6f484037 100644 --- a/sw/inc/fchrfmt.hxx +++ b/sw/inc/fchrfmt.hxx @@ -42,7 +42,7 @@ class IntlWrapper; // ATT_CHARFMT ********************************************* -class SwFmtCharFmt: public SfxPoolItem, public SwClient +class SW_DLLPUBLIC SwFmtCharFmt: public SfxPoolItem, public SwClient { friend class SwTxtCharFmt; SwTxtCharFmt* pTxtAttr; // mein TextAttribut diff --git a/sw/inc/fldbas.hxx b/sw/inc/fldbas.hxx index 36c352b4429e..11213224844c 100644 --- a/sw/inc/fldbas.hxx +++ b/sw/inc/fldbas.hxx @@ -439,7 +439,7 @@ public: static sal_uInt32 GetSystemFormat(SvNumberFormatter* pFormatter, sal_uInt32 nFmt); }; -class SwFormulaField : public SwValueField +class SW_DLLPUBLIC SwFormulaField : public SwValueField { String sFormula; diff --git a/sw/inc/flddat.hxx b/sw/inc/flddat.hxx index 5f00deb46b08..e2c61cfe8809 100644 --- a/sw/inc/flddat.hxx +++ b/sw/inc/flddat.hxx @@ -113,7 +113,7 @@ public: Beschreibung: Datum/Uhrzeitfeld --------------------------------------------------------------------*/ -class SwDateTimeField : public SwValueField +class SW_DLLPUBLIC SwDateTimeField : public SwValueField { USHORT nSubType; long nOffset; // Offset in Minuten diff --git a/sw/inc/flypos.hxx b/sw/inc/flypos.hxx index 7508816507b0..287e6544712b 100644 --- a/sw/inc/flypos.hxx +++ b/sw/inc/flypos.hxx @@ -32,12 +32,13 @@ #include <svtools/svarray.hxx> +#include <swdllapi.h> class SwFrmFmt; class SwNodeIndex; // Struktur zum Erfragen der akt. freifliegenden Rahmen am Dokument. -class SwPosFlyFrm +class SW_DLLPUBLIC SwPosFlyFrm { const SwFrmFmt* pFrmFmt; // das FlyFrmFmt // SwPosition* pPos; // Position in den ContentNode @@ -57,6 +58,6 @@ public: }; typedef SwPosFlyFrm* SwPosFlyFrmPtr; -SV_DECL_PTRARR_SORT( SwPosFlyFrms, SwPosFlyFrmPtr, 0, 40 ) +SV_DECL_PTRARR_SORT_VISIBILITY( SwPosFlyFrms, SwPosFlyFrmPtr, 0, 40, SW_DLLPUBLIC ) #endif // _FLYPOS_HXX diff --git a/sw/inc/fmtcnct.hxx b/sw/inc/fmtcnct.hxx index 3299beefcb7d..d229f91b8b78 100644 --- a/sw/inc/fmtcnct.hxx +++ b/sw/inc/fmtcnct.hxx @@ -41,7 +41,7 @@ class IntlWrapper; //Verbindung (Textfluss) zwischen zwei FlyFrms -class SwFmtChain: public SfxPoolItem +class SW_DLLPUBLIC SwFmtChain: public SfxPoolItem { SwClient aPrev, //Vorgaenger (SwFlyFrmFmt), wenn es diesen gibt. aNext; //Nachfolger (SwFlyFrmFmt), wenn es diesen gibt. diff --git a/sw/inc/fmtcntnt.hxx b/sw/inc/fmtcntnt.hxx index 703390ad9088..c5b262331e44 100644 --- a/sw/inc/fmtcntnt.hxx +++ b/sw/inc/fmtcntnt.hxx @@ -39,7 +39,7 @@ class SwStartNode; //Cntnt, Inhalt des Frame (Header, Footer, Fly) ---- -class SwFmtCntnt: public SfxPoolItem +class SW_DLLPUBLIC SwFmtCntnt: public SfxPoolItem { SwNodeIndex *pStartNode; diff --git a/sw/inc/fmthbsh.hxx b/sw/inc/fmthbsh.hxx index 663ab703d7dd..32c4df8c4007 100644 --- a/sw/inc/fmthbsh.hxx +++ b/sw/inc/fmthbsh.hxx @@ -53,7 +53,7 @@ public: // ATT_HARDBLANK ****************************** // Attribut fuer geschuetzte Leerzeichen. -class SwFmtHardBlank : public SfxPoolItem +class SW_DLLPUBLIC SwFmtHardBlank : public SfxPoolItem { sal_Unicode cChar; public: diff --git a/sw/inc/fmthdft.hxx b/sw/inc/fmthdft.hxx index 92338d069b9a..d6661c9d4ddc 100644 --- a/sw/inc/fmthdft.hxx +++ b/sw/inc/fmthdft.hxx @@ -42,7 +42,7 @@ class IntlWrapper; //Kopfzeile, fuer Seitenformate //Client von FrmFmt das den Header beschreibt. -class SwFmtHeader: public SfxPoolItem, public SwClient +class SW_DLLPUBLIC SwFmtHeader: public SfxPoolItem, public SwClient { BOOL bActive; //Nur zur Steuerung (Erzeugung des Inhaltes) @@ -74,7 +74,7 @@ public: //Fusszeile, fuer Seitenformate //Client von FrmFmt das den Footer beschreibt. -class SwFmtFooter: public SfxPoolItem, public SwClient +class SW_DLLPUBLIC SwFmtFooter: public SfxPoolItem, public SwClient { BOOL bActive; //Nur zur Steuerung (Erzeugung des Inhaltes) diff --git a/sw/inc/fmtruby.hxx b/sw/inc/fmtruby.hxx index 8f8f53161eea..516d5c3d8eed 100644 --- a/sw/inc/fmtruby.hxx +++ b/sw/inc/fmtruby.hxx @@ -36,7 +36,7 @@ class SwTxtRuby; -class SwFmtRuby : public SfxPoolItem +class SW_DLLPUBLIC SwFmtRuby : public SfxPoolItem { friend class SwTxtRuby; diff --git a/sw/inc/fmtwrapinfluenceonobjpos.hxx b/sw/inc/fmtwrapinfluenceonobjpos.hxx index 6cefcb035fab..b9ece15840e7 100644 --- a/sw/inc/fmtwrapinfluenceonobjpos.hxx +++ b/sw/inc/fmtwrapinfluenceonobjpos.hxx @@ -35,7 +35,7 @@ #include <svtools/poolitem.hxx> #include <com/sun/star/text/WrapInfluenceOnPosition.hpp> -class SwFmtWrapInfluenceOnObjPos: public SfxPoolItem +class SW_DLLPUBLIC SwFmtWrapInfluenceOnObjPos: public SfxPoolItem { private: sal_Int16 mnWrapInfluenceOnPosition; diff --git a/sw/inc/format.hxx b/sw/inc/format.hxx index b68e48042151..b72ca46866d4 100644 --- a/sw/inc/format.hxx +++ b/sw/inc/format.hxx @@ -45,7 +45,7 @@ class IDocumentFieldsAccess; class IDocumentChartDataProviderAccess; class SwDoc; -class SwFmt : public SwModify +class SW_DLLPUBLIC SwFmt : public SwModify { // friend class SwSwgReader; // friend class SwSwgWriter; @@ -105,9 +105,9 @@ public: const SfxPoolItem **ppItem = 0 ) const; // --> OD 2008-03-03 #refactorlists# // methods renamed and made virtual - SW_DLLPUBLIC virtual BOOL SetFmtAttr( const SfxPoolItem& rAttr ); - SW_DLLPUBLIC virtual BOOL SetFmtAttr( const SfxItemSet& rSet ); - SW_DLLPUBLIC virtual BOOL ResetFmtAttr( USHORT nWhich1, USHORT nWhich2 = 0 ); + virtual BOOL SetFmtAttr( const SfxPoolItem& rAttr ); + virtual BOOL SetFmtAttr( const SfxItemSet& rSet ); + virtual BOOL ResetFmtAttr( USHORT nWhich1, USHORT nWhich2 = 0 ); // <-- // --> OD 2007-01-24 #i73790# diff --git a/sw/inc/frmfmt.hxx b/sw/inc/frmfmt.hxx index 07c29b780faf..608ac7ac7174 100644 --- a/sw/inc/frmfmt.hxx +++ b/sw/inc/frmfmt.hxx @@ -141,7 +141,7 @@ public: //Das FlyFrame-Format ------------------------------ -class SwFlyFrmFmt: public SwFrmFmt +class SW_DLLPUBLIC SwFlyFrmFmt: public SwFrmFmt { friend class SwDoc; @@ -207,7 +207,7 @@ public: //Das DrawFrame-Format ----------------------------- -class SwDrawFrmFmt: public SwFrmFmt +class SW_DLLPUBLIC SwDrawFrmFmt: public SwFrmFmt { friend class SwDoc; diff --git a/sw/inc/grfatr.hxx b/sw/inc/grfatr.hxx index 55015099b98e..f9a232bae0ef 100644 --- a/sw/inc/grfatr.hxx +++ b/sw/inc/grfatr.hxx @@ -99,7 +99,7 @@ public: * class SwAttrCropGrf ******************************************************************************/ -class SwCropGrf : public SvxGrfCrop +class SW_DLLPUBLIC SwCropGrf : public SvxGrfCrop { public: TYPEINFO(); @@ -139,7 +139,7 @@ public: const Size& GetUnrotatedSize() const { return aUnrotatedSize; } }; -class SwLuminanceGrf : public SfxInt16Item +class SW_DLLPUBLIC SwLuminanceGrf : public SfxInt16Item { public: SwLuminanceGrf( sal_Int16 nVal = 0 ) @@ -155,7 +155,7 @@ public: const IntlWrapper* pIntl = 0 ) const; }; -class SwContrastGrf : public SfxInt16Item +class SW_DLLPUBLIC SwContrastGrf : public SfxInt16Item { public: SwContrastGrf( sal_Int16 nVal = 0 ) @@ -212,7 +212,7 @@ public: virtual SfxPoolItem* Clone( SfxItemPool *pPool = 0 ) const; }; -class SwGammaGrf : public SfxPoolItem +class SW_DLLPUBLIC SwGammaGrf : public SfxPoolItem { double nValue; public: @@ -285,7 +285,7 @@ public: BYTE nMemberId = 0 ); }; -class SwDrawModeGrf : public SfxEnumItem +class SW_DLLPUBLIC SwDrawModeGrf : public SfxEnumItem { public: SwDrawModeGrf( USHORT nMode = 0 ) diff --git a/sw/inc/hfspacingitem.hxx b/sw/inc/hfspacingitem.hxx index 6b960182c479..17b62c0d4760 100644 --- a/sw/inc/hfspacingitem.hxx +++ b/sw/inc/hfspacingitem.hxx @@ -37,7 +37,7 @@ class IntlWrapper; -class SwHeaderAndFooterEatSpacingItem : public SfxBoolItem +class SW_DLLPUBLIC SwHeaderAndFooterEatSpacingItem : public SfxBoolItem { public: SwHeaderAndFooterEatSpacingItem( USHORT nId = RES_HEADER_FOOTER_EAT_SPACING, diff --git a/sw/inc/hintids.hxx b/sw/inc/hintids.hxx index 8cc1d30603df..f8d6a78f9737 100644 --- a/sw/inc/hintids.hxx +++ b/sw/inc/hintids.hxx @@ -386,15 +386,7 @@ typedef SfxPoolItem* SwDfltAttrTab[ POOLATTR_END - POOLATTR_BEGIN ]; extern SwDfltAttrTab __FAR_DATA aAttrTab; extern SfxItemInfo __FAR_DATA aSlotTab[]; - -#ifndef PRODUCT -const SfxPoolItem* GetDfltAttr( USHORT nWhich ); -#else -inline const SfxPoolItem* GetDfltAttr( USHORT nWhich ) -{ - return aAttrTab[ nWhich - POOLATTR_BEGIN ]; -} -#endif +SW_DLLPUBLIC const SfxPoolItem* GetDfltAttr( USHORT nWhich ); SW_DLLPUBLIC USHORT GetWhichOfScript( USHORT nWhich, USHORT nScript ); @@ -414,7 +406,7 @@ extern USHORT __FAR_DATA aTxtFmtCollSetRange[]; // AttrSet-Range fuer die GrfFmtColl extern USHORT __FAR_DATA aGrfFmtCollSetRange[]; // AttrSet-Range fuer die TextNode -extern USHORT __FAR_DATA aTxtNodeSetRange[]; +SW_DLLPUBLIC extern USHORT __FAR_DATA aTxtNodeSetRange[]; // AttrSet-Range fuer die NoTxtNode extern USHORT __FAR_DATA aNoTxtNodeSetRange[]; // AttrSet-Range fuer die SwTable @@ -424,7 +416,7 @@ extern USHORT __FAR_DATA aTableLineSetRange[]; // AttrSet-Range fuer die SwTableBox extern USHORT __FAR_DATA aTableBoxSetRange[]; // AttrSet-Range fuer die SwFrmFmt -extern USHORT __FAR_DATA aFrmFmtSetRange[]; +SW_DLLPUBLIC extern USHORT __FAR_DATA aFrmFmtSetRange[]; // AttrSet-Range fuer die SwCharFmt extern USHORT __FAR_DATA aCharFmtSetRange[]; // AttrSet-Range fuer die character autostyles diff --git a/sw/inc/index.hxx b/sw/inc/index.hxx index e865fadd6c9f..5a57724f2540 100644 --- a/sw/inc/index.hxx +++ b/sw/inc/index.hxx @@ -34,6 +34,7 @@ #include <tools/solar.h> #include <tools/rtti.hxx> // for RTTI of SwIndexReg #include <tools/string.hxx> // for xub_StrLen +#include <swdllapi.h> #define INVALID_INDEX STRING_NOTFOUND @@ -48,7 +49,7 @@ struct SwPosition; #define INLINE #endif -class SwIndex +class SW_DLLPUBLIC SwIndex { friend class SwIndexReg; diff --git a/sw/inc/iodetect.cxx b/sw/inc/iodetect.cxx deleted file mode 100644 index a340f342b0d7..000000000000 --- a/sw/inc/iodetect.cxx +++ /dev/null @@ -1,697 +0,0 @@ -/************************************************************************* - * - * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. - * - * Copyright 2008 by Sun Microsystems, Inc. - * - * OpenOffice.org - a multi-platform office productivity suite - * - * $RCSfile: iodetect.cxx,v $ - * $Revision: 1.31 $ - * - * This file is part of OpenOffice.org. - * - * OpenOffice.org is free software: you can redistribute it and/or modify - * it under the terms of the GNU Lesser General Public License version 3 - * only, as published by the Free Software Foundation. - * - * OpenOffice.org is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Lesser General Public License version 3 for more details - * (a copy is included in the LICENSE file that accompanied this code). - * - * You should have received a copy of the GNU Lesser General Public License - * version 3 along with OpenOffice.org. If not, see - * <http://www.openoffice.org/license.html> - * for a copy of the LGPLv3 License. - * - ************************************************************************/ - -#ifndef _IODETECT_CXX -#define _IODETECT_CXX - -#include <sfx2/docfilt.hxx> -#include <sfx2/docfile.hxx> -#include <sfx2/fcontnr.hxx> -#include <svtools/parhtml.hxx> -#include <osl/endian.h> -#include <errhdl.hxx> // for ASSERT -#include <tools/string.hxx> -#include <tools/urlobj.hxx> - -#ifdef _DLL_ -#include <shellio.hxx> -#endif - -using namespace com::sun::star; - -class Reader; -USHORT AutoDetec(const String& FileName, USHORT & rVersion); -bool IsDocShellRegistered(); -void GetWW8Writer( const String&, const String&, WriterRef& ); - -typedef void (*FnGetWriter)(const String&, const String& rBaseURL, WriterRef&); - -struct SwIoDetect -{ -// eigentlich privat, aber der Compiler kann sonst die -// Tabelle nicht initialisieren - const sal_Char* pName; - USHORT nLen; - - inline int IsFilter( const String& rNm ) - { - return pName && rNm.EqualsAscii( pName, 0, nLen ); - } - -#ifdef _DLL_ - Reader* pReader; - FnGetWriter fnGetWriter; - BOOL bDelReader; - - inline Reader* GetReader() const { return pReader; } - inline void GetWriter( const String& rNm, const String& rBaseURL, WriterRef& xWrt ) const - { if( fnGetWriter ) (*fnGetWriter)(rNm,rBaseURL,xWrt); else xWrt = WriterRef(0); } -#endif - - const sal_Char* IsReader(const sal_Char* pHeader, ULONG nLen_, - const String &rFileName, const String& rUserData ) const; -}; - - -#ifdef _DLL_ -#define SwIoEntry(sNm, cCharLen, pWrt, bDel) { sNm, cCharLen, 0, pWrt, bDel } -#else -#define SwIoEntry(sNm, cCharLen, pWrt, bDel) { sNm, cCharLen } -#endif - -#ifdef DEBUG_SH - -#define DEB_SH_SwIoEntry(sNm, cCharLen, pWrt, bDel) , SwIoEntry(sNm, cCharLen, pWrt, bDel) -#else -#define DEB_SH_SwIoEntry(sNm, cCharLen, pWrt, bDel) -#endif - -const USHORT MAXFILTER = -#ifdef DEBUG_SH - 1 + -#endif - 11; - -const sal_Char __FAR_DATA FILTER_BAS[] = "BAS"; -const sal_Char __FAR_DATA FILTER_RTF[] = "RTF"; -const sal_Char __FAR_DATA FILTER_SWW4V[] = "CSW4VWEB"; -const sal_Char __FAR_DATA FILTER_SWW5V[] = "CSW5VWEB"; -const sal_Char __FAR_DATA sRtfWH[] = "WH_RTF"; -const sal_Char __FAR_DATA sHTML[] = "HTML"; -const sal_Char __FAR_DATA sWW1[] = "WW1"; -const sal_Char __FAR_DATA sWW5[] = "WW6"; -const sal_Char __FAR_DATA sWW6[] = "CWW6"; -const sal_Char __FAR_DATA FILTER_WW8[] = "CWW8"; -const sal_Char __FAR_DATA FILTER_TEXT_DLG[] = "TEXT_DLG"; -const sal_Char __FAR_DATA FILTER_TEXT[] = "TEXT"; -const sal_Char __FAR_DATA sDebug[] = "DEBUG"; -const sal_Char __FAR_DATA sUndo[] = "UNDO"; -const sal_Char __FAR_DATA FILTER_XML[] = "CXML"; -const sal_Char __FAR_DATA FILTER_XMLV[] = "CXMLV"; -const sal_Char __FAR_DATA FILTER_XMLVW[] = "CXMLVWEB"; - -#ifdef _DLL_ -const sal_Char* GetFILTER_XML() -{ - return FILTER_XML; -} -const sal_Char* GetFILTER_WW8() -{ - return FILTER_WW8; -} -#endif - -SwIoDetect aReaderWriter[ MAXFILTER ] = -{ -///* 0*/ SwIoEntry(FILTER_SW5, 4, &::GetSw3Writer, TRUE), -///* 1*/ SwIoEntry(FILTER_SW4, 4, &::GetSw3Writer, FALSE), -///* 2*/ SwIoEntry(FILTER_SW3, 4, &::GetSw3Writer, FALSE), -///* 3*/ SwIoEntry(FILTER_SWG, STRING_LEN, 0, TRUE), -///* 4*/ SwIoEntry(FILTER_SWGV, 4, 0, FALSE), -/* 5*/ SwIoEntry(FILTER_RTF, STRING_LEN, &::GetRTFWriter, TRUE), -///* 6*/ SwIoEntry(sSwDos, STRING_LEN, 0, TRUE), -/* 7*/ SwIoEntry(FILTER_BAS, STRING_LEN, &::GetASCWriter, FALSE), -/* 8*/ SwIoEntry(sWW6, STRING_LEN, &::GetWW8Writer, TRUE), -/* 9*/ SwIoEntry(FILTER_WW8, STRING_LEN, &::GetWW8Writer, FALSE), -///* 10*/ SwIoEntry(FILTER_W4W, 3, &::GetW4WWriter, TRUE), -/* 11*/ SwIoEntry(sRtfWH, STRING_LEN, &::GetRTFWriter, FALSE), -///* 12*/ SwIoEntry(sCExcel, 5, 0, TRUE), -///* 13*/ SwIoEntry(sExcel, 4, 0, FALSE), -///* 14*/ SwIoEntry(sLotusD, 5, 0, TRUE), -/* 15*/ SwIoEntry(sHTML, 4, &::GetHTMLWriter, TRUE), -/* 16*/ SwIoEntry(sWW1, STRING_LEN, 0, TRUE), -/* 17*/ SwIoEntry(sWW5, STRING_LEN, 0, FALSE), -///* 18*/ SwIoEntry(sSwg1, 4, 0, FALSE), -/* 19*/ SwIoEntry(FILTER_XML, 4, &::GetXMLWriter, TRUE), -/*20*/ SwIoEntry(FILTER_TEXT_DLG, 8, &::GetASCWriter, TRUE), -/*last*/ SwIoEntry(FILTER_TEXT, 4, &::GetASCWriter, TRUE) -}; - -const char* pSw = "swriter"; -const char* pSwWeb = "swriter/web"; - -// Filter erkennung -struct W1_FIB -{ - SVBT16 wIdent; // 0x0 int magic number - SVBT16 nFib; // 0x2 FIB version written - SVBT16 nProduct; // 0x4 product version written by - SVBT16 nlocale; // 0x6 language stamp---localized version; - SVBT16 pnNext; // 0x8 - SVBT16 fFlags; - - USHORT nFibGet() { return SVBT16ToShort(nFib); } - USHORT wIdentGet() { return SVBT16ToShort(wIdent); } - USHORT fFlagsGet() { return SVBT16ToShort(fFlags); } - // SVBT16 fComplex :1;// 0004 when 1, file is in complex, fast-saved format. - BOOL fComplexGet() { return static_cast< BOOL >((fFlagsGet() >> 2) & 1); } -}; - -const sal_Char* SwIoDetect::IsReader(const sal_Char* pHeader, ULONG nLen_, - const String & /*rFileName*/, const String& /*rUserData*/) const -{ - int bRet = FALSE; - if( sHTML == pName ) - bRet = HTMLParser::IsHTMLFormat( pHeader, TRUE, RTL_TEXTENCODING_DONTKNOW ); - else if( FILTER_RTF == pName ) - bRet = 0 == strncmp( "{\\rtf", pHeader, 5 ); - else if( sWW5 == pName ) - { - W1_FIB *pW1Header = (W1_FIB*)pHeader; - if (pW1Header->wIdentGet() == 0xA5DC && pW1Header->nFibGet() == 0x65) - bRet = true; /*WW5*/ - else if (pW1Header->wIdentGet() == 0xA5DB && pW1Header->nFibGet() == 0x2D) - bRet = true; /*WW2*/ - } - else if( sWW1 == pName ) - { - bRet = (( ((W1_FIB*)pHeader)->wIdentGet() == 0xA59C - && ((W1_FIB*)pHeader)->nFibGet() == 0x21) - && ((W1_FIB*)pHeader)->fComplexGet() == 0); - } - else if (FILTER_TEXT == pName) - bRet = SwIoSystem::IsDetectableText(pHeader, nLen_); - else if( FILTER_TEXT_DLG == pName) - bRet = SwIoSystem::IsDetectableText( pHeader, nLen_, 0, 0, 0, true); - return bRet ? pName : 0; -} - -const String SwIoSystem::GetSubStorageName( const SfxFilter& rFltr ) -{ - /* bei den StorageFiltern noch den SubStorageNamen setzen */ - const String& rUserData = rFltr.GetUserData(); - if( rUserData.EqualsAscii(FILTER_XML) || - rUserData.EqualsAscii(FILTER_XMLV) || - rUserData.EqualsAscii(FILTER_XMLVW) ) - return String::CreateFromAscii( - RTL_CONSTASCII_STRINGPARAM( "content.xml" )); - if( rUserData.EqualsAscii(sWW6) || rUserData.EqualsAscii(FILTER_WW8) ) - return String::CreateFromAscii( - RTL_CONSTASCII_STRINGPARAM( "WordDocument" )); - return String::CreateFromAscii( RTL_CONSTASCII_STRINGPARAM( "" )); -} -const SfxFilter* SwIoSystem::GetFilterOfFormat(const String& rFmtNm, - const SfxFilterContainer* pCnt) -{ - SfxFilterContainer aCntSw( String::CreateFromAscii( pSw ) ); - SfxFilterContainer aCntSwWeb( String::CreateFromAscii( pSwWeb ) ); - const SfxFilterContainer* pFltCnt = pCnt ? pCnt : ( IsDocShellRegistered() ? &aCntSw : &aCntSwWeb ); - - do { - if( pFltCnt ) - { - SfxFilterMatcher aMatcher( pFltCnt->GetName() ); - SfxFilterMatcherIter aIter( &aMatcher ); - const SfxFilter* pFilter = aIter.First(); - while ( pFilter ) - { - if( pFilter->GetUserData() == rFmtNm ) - return pFilter; - pFilter = aIter.Next(); - } - } - if( pCnt || pFltCnt == &aCntSwWeb ) - break; - pFltCnt = &aCntSwWeb; - } while( TRUE ); - return 0; -} - -BOOL SwIoSystem::IsValidStgFilter( const uno::Reference < embed::XStorage >& rStg, const SfxFilter& rFilter) -{ - BOOL bRet = FALSE; - try - { - ULONG nStgFmtId = SotStorage::GetFormatID( rStg ); - bRet = rStg->isStreamElement( ::rtl::OUString::createFromAscii("content.xml") ); - if ( bRet ) - bRet = ( nStgFmtId && ( rFilter.GetFormat() == nStgFmtId ) ); - } - catch ( uno::Exception& ) - { - } - - return bRet; -} - -BOOL SwIoSystem::IsValidStgFilter(SotStorage& rStg, const SfxFilter& rFilter) -{ - ULONG nStgFmtId = rStg.GetFormat(); - /*#i8409# We cannot trust the clipboard id anymore :-(*/ - if( rFilter.GetUserData().EqualsAscii(FILTER_WW8) || - rFilter.GetUserData().EqualsAscii(sWW6) ) - { - nStgFmtId = 0; - } - - BOOL bRet = SVSTREAM_OK == rStg.GetError() && - ( !nStgFmtId || rFilter.GetFormat() == nStgFmtId ) && - ( rStg.IsContained( SwIoSystem::GetSubStorageName( rFilter )) ); - if( bRet ) - { - /* Bug 53445 - es gibt Excel Docs ohne ClipBoardId! */ - /* Bug 62703 - und auch WinWord Docs ohne ClipBoardId! */ - if( rFilter.GetUserData().EqualsAscii(FILTER_WW8) || - rFilter.GetUserData().EqualsAscii(sWW6) ) - { - bRet = !((rStg.IsContained( String::CreateFromAscii("0Table" )) || - rStg.IsContained( String::CreateFromAscii("1Table" ))) ^ - rFilter.GetUserData().EqualsAscii(FILTER_WW8)); - if (bRet && !rFilter.IsAllowedAsTemplate()) - { - SotStorageStreamRef xRef = - rStg.OpenSotStream(String::CreateFromAscii("WordDocument"), - STREAM_STD_READ | STREAM_NOCREATE ); - xRef->Seek(10); - BYTE nByte; - *xRef >> nByte; - bRet = !(nByte & 1); - } - } -// else if( !rFilter.GetUserData().EqualsAscii(sCExcel) ) -// bRet = rFilter.GetFormat() == nStgFmtId; - } - return bRet; -} - -void TerminateBuffer(sal_Char *pBuffer, ULONG nBytesRead, ULONG nBufferLen) -{ - ASSERT(nBytesRead <= nBufferLen - 2, - "what you read must be less than the max + null termination"); - ASSERT(!(nBufferLen & 0x00000001), "nMaxReadBuf must be an even number"); - if (nBytesRead <= nBufferLen - 2) - { - pBuffer[nBytesRead] = '\0'; - pBuffer[nBytesRead+1] = '\0'; - if (nBytesRead & 0x00000001) - pBuffer[nBytesRead+2] = '\0'; - } -} - - /* Feststellen ob das File in dem entsprechenden Format vorliegt. */ - /* Z.z werden nur unsere eigene Filter unterstuetzt */ -BOOL SwIoSystem::IsFileFilter( SfxMedium& rMedium, const String& rFmtName, - const SfxFilter** ppFilter ) -{ - BOOL bRet = FALSE; - - SfxFilterContainer aCntSw( String::CreateFromAscii( pSw ) ); - SfxFilterContainer aCntSwWeb( String::CreateFromAscii( pSwWeb ) ); - const SfxFilterContainer& rFltContainer = IsDocShellRegistered() ? aCntSw : aCntSwWeb; - - uno::Reference < embed::XStorage > xStor; - SotStorageRef xStg; - if (rMedium.IsStorage()) - xStor = rMedium.GetStorage(); - else - { - SvStream* pStream = rMedium.GetInStream(); - if ( pStream && SotStorage::IsStorageFile(pStream) ) - xStg = new SotStorage( pStream, FALSE ); - } - - SfxFilterMatcher aMatcher( rFltContainer.GetName() ); - SfxFilterMatcherIter aIter( &aMatcher ); - const SfxFilter* pFltr = aIter.First(); - while ( pFltr ) - { - if( pFltr->GetUserData() == rFmtName ) - { - const String& rUserData = pFltr->GetUserData(); - if( 'C' == *rUserData.GetBuffer() ) - { - if ( xStor.is() ) - bRet = IsValidStgFilter( xStor, *pFltr ); - else if ( xStg.Is() ) - bRet = xStg.Is() && IsValidStgFilter( *xStg, *pFltr ); - bRet = bRet && (pFltr->GetUserData() == rFmtName); - } - else if( !xStg.Is() && !xStor.is() ) - { - SvStream* pStrm = rMedium.GetInStream(); - if( pStrm && !pStrm->GetError() ) - { - sal_Char aBuffer[4098]; - const ULONG nMaxRead = sizeof(aBuffer) - 2; - ULONG nBytesRead = pStrm->Read(aBuffer, nMaxRead); - pStrm->Seek(STREAM_SEEK_TO_BEGIN); - TerminateBuffer(aBuffer, nBytesRead, sizeof(aBuffer)); - for (USHORT i = 0; i < MAXFILTER; ++i) - { - if (aReaderWriter[i].IsFilter(rFmtName)) - { - bRet = 0 != aReaderWriter[i].IsReader( aBuffer, nBytesRead, - rMedium.GetPhysicalName(), rUserData ); - break; - } - } - } - } - - if( bRet && ppFilter ) - *ppFilter = pFltr; - } - - pFltr = aIter.Next(); - } - - return bRet; -} - -/* die Methode stellt fest, von welchem Typ der stream (File) ist. */ -/* Es wird versucht, eine dem Filter entsprechende Byte-Folge zu finden. */ -/* Wird kein entsprechender gefunden, wird zur Zeit der ASCII-Reader */ -/* returnt !! Der Returnwert ist der interne Filtername! */ -/* rPrefFltName ist der interne Name des Filters, den der Benutzer im */ -/* Open-Dialog eingestellt hat. */ -const SfxFilter* SwIoSystem::GetFileFilter(const String& rFileName, - const String& rPrefFltName, SfxMedium* pMedium) -{ - SfxFilterContainer aCntSw( String::CreateFromAscii( pSw ) ); - SfxFilterContainer aCntSwWeb( String::CreateFromAscii( pSwWeb ) ); - const SfxFilterContainer* pFCntnr = IsDocShellRegistered() ? &aCntSw : &aCntSwWeb; - - if( !pFCntnr ) - return 0; - - SfxFilterMatcher aMatcher( pFCntnr->GetName() ); - SfxFilterMatcherIter aIter( &aMatcher ); - const SfxFilter* pFilter = aIter.First(); - if ( !pFilter ) - return 0; - - if( pMedium ? ( pMedium->IsStorage() || SotStorage::IsStorageFile( pMedium->GetInStream() ) ) : SotStorage::IsStorageFile( rFileName ) ) - { - // package storage or OLEStorage based format - SotStorageRef xStg; - BOOL bDeleteMedium = FALSE; - if (!pMedium ) - { - INetURLObject aObj; - aObj.SetSmartProtocol( INET_PROT_FILE ); - aObj.SetSmartURL( rFileName ); - pMedium = new SfxMedium( aObj.GetMainURL( INetURLObject::NO_DECODE ), STREAM_STD_READ, FALSE ); - bDeleteMedium = TRUE; - } - - // templates should not get precedence over "normal" filters (#i35508, #i33168) - const SfxFilter* pTemplateFilter = 0; - const SfxFilter* pOldFilter = pFCntnr->GetFilter4FilterName( rPrefFltName ); - BOOL bLookForTemplate = pOldFilter && pOldFilter->IsOwnTemplateFormat(); - if ( pMedium->IsStorage() ) - { - uno::Reference < embed::XStorage > xStor = pMedium->GetStorage(); - if ( xStor.is() ) - { - while ( pFilter ) - { - if( 'C' == *pFilter->GetUserData().GetBuffer() && IsValidStgFilter( xStor, *pFilter ) ) - { - if ( pFilter->IsOwnTemplateFormat() && !bLookForTemplate ) - // found template filter; maybe there's a "normal" one also - pTemplateFilter = pFilter; - else - return pFilter; - } - - pFilter = aIter.Next(); - } - - // there's only a template filter that could be found - if ( pTemplateFilter ) - pFilter = pTemplateFilter; - } - } - else - { - SvStream* pStream = pMedium->GetInStream(); - if ( pStream && SotStorage::IsStorageFile(pStream) ) - xStg = new SotStorage( pStream, FALSE ); - - if( xStg.Is() && ( xStg->GetError() == SVSTREAM_OK ) ) - { - while ( pFilter ) - { - if( 'C' == *pFilter->GetUserData().GetBuffer() && IsValidStgFilter( *xStg, *pFilter ) ) - { - if ( pFilter->IsOwnTemplateFormat() && !bLookForTemplate ) - // found template filter; maybe there's a "normal" one also - pTemplateFilter = pFilter; - else - return pFilter; - } - - pFilter = aIter.Next(); - } - - // there's only a template filter that could be found - if ( pTemplateFilter ) - pFilter = pTemplateFilter; - - } - } - - return pFilter; - } - - sal_Char aBuffer[4098]; - const ULONG nMaxRead = sizeof(aBuffer) - 2; - ULONG nBytesRead = 0; - if (pMedium) - { - SvStream* pIStrm = pMedium->GetInStream(); - if( !pIStrm || SVSTREAM_OK != pIStrm->GetError() ) - return 0; - ULONG nCurrPos = pIStrm->Tell(); - nBytesRead = pIStrm->Read(aBuffer, nMaxRead); - pIStrm->Seek( nCurrPos ); - } - /* - else - { - SvFileStream aStrm( rFileName, STREAM_READ ); - - // ohne FileName oder ohne Stream gibts nur den ANSI-Filter - if( !rFileName.Len() || SVSTREAM_OK != aStrm.GetError() ) - return 0; - - nBytesRead = aStrm.Read(aBuffer, nMaxRead); - aStrm.Close(); - }*/ - - TerminateBuffer(aBuffer, nBytesRead, sizeof(aBuffer)); - - - /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ - /* suche nach dem bestimmten Filter, falls kein entsprechender */ - /* gefunden wird, so wird der ASCII-Filter returnt. */ - /* Gibt es Filter ohne einen Identifizierungs-String, so werden diese */ - /* nie erkannt und es wird auch der ASCII-Filter returnt. */ - /* !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!*/ - { - const SfxFilter* pFilterTmp = 0; - const sal_Char* pNm; - for( USHORT n = 0; n < MAXFILTER; ++n ) - { - String sEmptyUserData; - pNm = aReaderWriter[n].IsReader(aBuffer, nBytesRead, rFileName, sEmptyUserData); - pFilterTmp = pNm ? SwIoSystem::GetFilterOfFormat(String::CreateFromAscii(pNm), pFCntnr) : 0; - if (pNm && pFilterTmp) - { - return pFilterTmp; - } - } - } - - /* Ok, bis jetzt kein Filter gefunden, also befrage mal die */ - /* "WORD 4 WORD" Filter */ - if( rFileName.Len() ) - { - if( pMedium ) - pMedium->CloseInStream(); - - } - return SwIoSystem::GetTextFilter( aBuffer, nBytesRead); -} - -bool SwIoSystem::IsDetectableText(const sal_Char* pBuf, ULONG &rLen, - CharSet *pCharSet, bool *pSwap, LineEnd *pLineEnd, bool bEncodedFilter) -{ - bool bSwap = false; - CharSet eCharSet = RTL_TEXTENCODING_DONTKNOW; - bool bLE = true; - ULONG nHead=0; - /*See if its a known unicode type*/ - if (rLen >= 2) - { - if (rLen > 2 && BYTE(pBuf[0]) == 0xEF && BYTE(pBuf[1]) == 0xBB && - BYTE(pBuf[2]) == 0xBF) - { - eCharSet = RTL_TEXTENCODING_UTF8; - nHead = 3; - } - else if (BYTE(pBuf[0]) == 0xFE && BYTE(pBuf[1]) == 0xFF) - { - eCharSet = RTL_TEXTENCODING_UCS2; - bLE = false; - nHead = 2; - } - else if (BYTE(pBuf[1]) == 0xFE && BYTE(pBuf[0]) == 0xFF) - { - eCharSet = RTL_TEXTENCODING_UCS2; - nHead = 2; - } - pBuf+=nHead; - rLen-=nHead; - } - - bool bCR = false, bLF = false, bNoNormalChar = false, - bIsBareUnicode = false; - - if (eCharSet != RTL_TEXTENCODING_DONTKNOW) - { - String sWork; - sal_Unicode *pNewBuf = sWork.AllocBuffer( static_cast< xub_StrLen >(rLen)); - sal_Size nNewLen; - if (eCharSet != RTL_TEXTENCODING_UCS2) - { - nNewLen = rLen; - rtl_TextToUnicodeConverter hConverter = - rtl_createTextToUnicodeConverter(eCharSet); - rtl_TextToUnicodeContext hContext = - rtl_createTextToUnicodeContext(hConverter); - - sal_Size nCntBytes; - sal_uInt32 nInfo; - nNewLen = rtl_convertTextToUnicode( hConverter, hContext, pBuf, - rLen, pNewBuf, nNewLen, - (RTL_TEXTTOUNICODE_FLAGS_UNDEFINED_DEFAULT | - RTL_TEXTTOUNICODE_FLAGS_MBUNDEFINED_DEFAULT | - RTL_TEXTTOUNICODE_FLAGS_INVALID_DEFAULT), &nInfo, &nCntBytes); - - rtl_destroyTextToUnicodeContext(hConverter, hContext); - rtl_destroyTextToUnicodeConverter(hConverter); - } - else - { - nNewLen = rLen/2; - memcpy(pNewBuf, pBuf, rLen); -#ifdef OSL_LITENDIAN - bool bNativeLE = true; -#else - bool bNativeLE = false; -#endif - if (bLE != bNativeLE) - { - bSwap = true; - sal_Char* pF = (sal_Char*)pNewBuf; - sal_Char* pN = pF+1; - for(xub_StrLen n = 0; n < nNewLen; ++n, pF+=2, pN+=2) - { - sal_Char c = *pF; - *pF = *pN; - *pN = c; - } - } - } - - sWork.ReleaseBufferAccess( static_cast< xub_StrLen >(nNewLen) ); - pNewBuf = sWork.GetBufferAccess(); - - for (ULONG nCnt = 0; nCnt < nNewLen; ++nCnt, ++pNewBuf) - { - switch (*pNewBuf) - { - case 0xA: - bLF = true; - break; - case 0xD: - bCR = true; - break; - default: - break; - } - } - } - else - { - for( ULONG nCnt = 0; nCnt < rLen; ++nCnt, ++pBuf ) - { - switch (*pBuf) - { - case 0x0: - if( nCnt + 1 < rLen && !*(pBuf+1) ) - return 0; - bIsBareUnicode = true; - break; - case 0xA: - bLF = true; - break; - case 0xD: - bCR = true; - break; - case 0xC: - case 0x1A: - case 0x9: - break; - default: - if (0x20 > (BYTE)*pBuf) - bNoNormalChar = true; - break; - } - } - } - - LineEnd eSysLE = GetSystemLineEnd(); - LineEnd eLineEnd; - if (!bCR && !bLF) - eLineEnd = eSysLE; - else - eLineEnd = bCR ? ( bLF ? LINEEND_CRLF : LINEEND_CR ) : LINEEND_LF; - - if (pCharSet) - *pCharSet = eCharSet; - if (pSwap) - *pSwap = bSwap; - if (pLineEnd) - *pLineEnd = eLineEnd; - - return bEncodedFilter || (!bIsBareUnicode && eSysLE == eLineEnd); -} - -const SfxFilter* SwIoSystem::GetTextFilter( const sal_Char* pBuf, ULONG nLen) -{ - bool bAuto = IsDetectableText(pBuf, nLen); - const sal_Char* pNm = bAuto ? FILTER_TEXT : FILTER_TEXT_DLG; - return SwIoSystem::GetFilterOfFormat( String::CreateFromAscii(pNm), 0 ); -} - - -#endif diff --git a/sw/inc/iodetect.hxx b/sw/inc/iodetect.hxx new file mode 100644 index 000000000000..24467f7ad537 --- /dev/null +++ b/sw/inc/iodetect.hxx @@ -0,0 +1,130 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2008 by Sun Microsystems, Inc. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * $RCSfile: iodetect.cxx,v $ + * $Revision: 1.31 $ + * + * This file is part of OpenOffice.org. + * + * OpenOffice.org is free software: you can redistribute it and/or modify + * it under the terms of the GNU Lesser General Public License version 3 + * only, as published by the Free Software Foundation. + * + * OpenOffice.org is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU Lesser General Public License version 3 for more details + * (a copy is included in the LICENSE file that accompanied this code). + * + * You should have received a copy of the GNU Lesser General Public License + * version 3 along with OpenOffice.org. If not, see + * <http://www.openoffice.org/license.html> + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _IODETECT_HXX_ +#define _IODETECT_HXX_ + +#include <sfx2/docfilt.hxx> +#include <sfx2/docfile.hxx> +#include <sfx2/fcontnr.hxx> +#include <osl/endian.h> +#include <errhdl.hxx> // for ASSERT +#include <tools/string.hxx> +#include <swdllapi.h> + +#define FILTER_RTF "RTF" // RTF-Filter +#define sRtfWH "WH_RTF" +#define FILTER_TEXT "TEXT" // Text-Filter mit Default-CodeSet +#define FILTER_BAS "BAS" // StarBasic (identisch mit ANSI) +#define FILTER_WW8 "CWW8" // WinWord 97-Filter +#define FILTER_TEXT_DLG "TEXT_DLG" // text filter with encoding dialog +#define FILTER_XML "CXML" // XML filter +#define FILTER_XMLV "CXMLV" // XML filter +#define FILTER_XMLVW "CXMLVWEB" // XML filter +#define sHTML "HTML" +#define sWW1 "WW1" +#define sWW5 "WW6" +#define sWW6 "CWW6" + +#define sSWRITER "swriter" +#define sSWRITERWEB "swriter/web" + +struct SwIoDetect +{ + const sal_Char* pName; + USHORT nLen; + + inline SwIoDetect( const sal_Char *pN, USHORT nL ) + : pName( pN ), nLen( nL ) + {} + + inline int IsFilter( const String& rNm ) const + { + return pName && rNm.EqualsAscii( pName, 0, nLen ); + } + + const sal_Char* IsReader( const sal_Char* pHeader, ULONG nLen_, + const String &rFileName, const String& rUserData ) const; +}; + +enum ReaderWriterEnum { + READER_WRITER_RTF, + READER_WRITER_BAS, + READER_WRITER_WW6, + READER_WRITER_WW8, + READER_WRITER_RTF_WH, + READER_WRITER_HTML, + READER_WRITER_WW1, + READER_WRITER_WW5, + READER_WRITER_XML, + READER_WRITER_TEXT_DLG, + READER_WRITER_TEXT, + MAXFILTER +}; + +extern SwIoDetect aFilterDetect[]; + +// Die folgende Klasse ist ein Wrappe fuer die Basic-I/O-Funktionen +// des Writer 3.0. Alles ist statisch. Alle u.a. Filternamen sind die +// Writer-internen Namen, d.h. die namen, die in INSTALL.INI vor dem +// Gleichheitszeichen stehen, z.b. SWG oder ASCII. + +class SwIoSystem +{ +public: + // suche ueber den internen FormatNamen den Filtereintrag + SW_DLLPUBLIC static const SfxFilter* GetFilterOfFormat( const String& rFormat, + const SfxFilterContainer* pCnt = 0 ); + + // Feststellen des zu verwendenden Filters fuer die uebergebene + // Datei. Der Filtername wird zurueckgeliefert. Konnte kein Filter + // zurueckgeliefert werden, wird der Name des ASCII-Filters geliefert! + static const SfxFilter* GetFileFilter( const String& rFileName, + const String& rPrefFltName, + SfxMedium* pMedium = 0 ); + + // Feststellen ob das File in dem vorgegebenen Format vorliegt. + // Z.z werden nur unsere eigene Filter unterstuetzt!! + static BOOL IsFileFilter( SfxMedium& rMedium, const String& rFmtName, + const SfxFilter** ppFlt = 0 ); + + static BOOL IsValidStgFilter( SotStorage& , const SfxFilter& ); + static BOOL IsValidStgFilter( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& rStg, const SfxFilter& rFilter); + + static bool IsDetectableText( const sal_Char* pBuf, ULONG &rLen, + CharSet *pCharSet=0, bool *pSwap=0, LineEnd *pLineEnd=0, bool bEncodedFilter = false ); + // static bool IsDetectableW4W(const String& rFileName, const String& rUserData); + + static const SfxFilter* GetTextFilter( const sal_Char* pBuf, ULONG nLen ); + + static const String GetSubStorageName( const SfxFilter& rFltr ); +}; + +#endif diff --git a/sw/inc/mdiexp.hxx b/sw/inc/mdiexp.hxx index 69dc79bf5380..31df17358a77 100644 --- a/sw/inc/mdiexp.hxx +++ b/sw/inc/mdiexp.hxx @@ -32,6 +32,8 @@ #include <tools/solar.h> #include <tblenum.hxx> +#include <swdllapi.h> + class UniString; class SwRect; class Size; @@ -53,9 +55,9 @@ extern void PageNumNotify( ViewShell* pVwSh, enum FlyMode { FLY_DRAG_START, FLY_DRAG, FLY_DRAG_END }; extern void FrameNotify( ViewShell* pVwSh, FlyMode eMode = FLY_DRAG ); -void StartProgress ( USHORT nMessId, long nStartVal, long nEndVal, SwDocShell *pDocSh = 0 ); -void EndProgress ( SwDocShell *pDocSh = 0 ); -void SetProgressState ( long nPosition, SwDocShell *pDocShell ); +SW_DLLPUBLIC void StartProgress ( USHORT nMessId, long nStartVal, long nEndVal, SwDocShell *pDocSh = 0 ); +SW_DLLPUBLIC void EndProgress ( SwDocShell *pDocSh = 0 ); +SW_DLLPUBLIC void SetProgressState ( long nPosition, SwDocShell *pDocShell ); void SetProgressText ( USHORT nMessId, SwDocShell *pDocShell ); void RescheduleProgress( SwDocShell *pDocShell ); diff --git a/sw/inc/ndarr.hxx b/sw/inc/ndarr.hxx index 536061940fd1..55b38090545a 100644 --- a/sw/inc/ndarr.hxx +++ b/sw/inc/ndarr.hxx @@ -84,7 +84,7 @@ typedef BOOL (*FnForEach_SwNodes)( const SwNodePtr&, void* pArgs ); SV_DECL_PTRARR_SORT( SwOutlineNodes, SwNodePtr, 0, 10 ) -class SwNodes: private BigPtrArray +class SW_DLLPUBLIC SwNodes: private BigPtrArray { friend class SwDoc; friend class SwNode; diff --git a/sw/inc/ndgrf.hxx b/sw/inc/ndgrf.hxx index 1d8a3940c46b..45ecea30a9c0 100644 --- a/sw/inc/ndgrf.hxx +++ b/sw/inc/ndgrf.hxx @@ -48,7 +48,7 @@ class SvStorage; // -------------------- // SwGrfNode // -------------------- -class SwGrfNode: public SwNoTxtNode +class SW_DLLPUBLIC SwGrfNode: public SwNoTxtNode { friend class SwNodes; diff --git a/sw/inc/ndindex.hxx b/sw/inc/ndindex.hxx index d1d66028a4aa..0942621991e8 100644 --- a/sw/inc/ndindex.hxx +++ b/sw/inc/ndindex.hxx @@ -39,7 +39,7 @@ class SwNode; class SwNodes; -class SwNodeIndex +class SW_DLLPUBLIC SwNodeIndex { friend void SwNodes::RegisterIndex( SwNodeIndex& ); friend void SwNodes::DeRegisterIndex( SwNodeIndex& ); @@ -112,7 +112,7 @@ public: /* * SwRange */ -class SwNodeRange +class SW_DLLPUBLIC SwNodeRange { public: SwNodeIndex aStart; diff --git a/sw/inc/ndnotxt.hxx b/sw/inc/ndnotxt.hxx index 5d7cab19f4b2..b123bfd70cb3 100644 --- a/sw/inc/ndnotxt.hxx +++ b/sw/inc/ndnotxt.hxx @@ -38,7 +38,7 @@ class PolyPolygon; // SwNoTxtNode // -------------------- -class SwNoTxtNode : public SwCntntNode +class SW_DLLPUBLIC SwNoTxtNode : public SwCntntNode { friend class SwNodes; friend class SwNoTxtFrm; diff --git a/sw/inc/ndole.hxx b/sw/inc/ndole.hxx index 6e0838d06671..41dde811bc40 100644 --- a/sw/inc/ndole.hxx +++ b/sw/inc/ndole.hxx @@ -40,7 +40,7 @@ class SwOLENode; class SwOLEListener_Impl; class SwEmbedObjectLink; -class SwOLEObj +class SW_DLLPUBLIC SwOLEObj { friend class SwOLENode; @@ -82,7 +82,7 @@ public: // SwOLENode // -------------------- -class SwOLENode: public SwNoTxtNode +class SW_DLLPUBLIC SwOLENode: public SwNoTxtNode { friend class SwNodes; mutable SwOLEObj aOLEObj; diff --git a/sw/inc/node.hxx b/sw/inc/node.hxx index fc15c370db3e..029e8a8b8454 100644 --- a/sw/inc/node.hxx +++ b/sw/inc/node.hxx @@ -367,7 +367,7 @@ private: // -------------------- // SwCntntNode // -------------------- -class SwCntntNode: public SwModify, public SwNode, public SwIndexReg +class SW_DLLPUBLIC SwCntntNode: public SwModify, public SwNode, public SwIndexReg { // Der Reader darf NewAttrSet() aufrufen! // friend class SwSwgReader; @@ -510,7 +510,7 @@ private: //--------- // SwTableNode //--------- -class SwTableNode : public SwStartNode +class SW_DLLPUBLIC SwTableNode : public SwStartNode { friend class SwNodes; SwTable* pTable; diff --git a/sw/inc/numrule.hxx b/sw/inc/numrule.hxx index 8715cba74ae5..9b3714c806bf 100644 --- a/sw/inc/numrule.hxx +++ b/sw/inc/numrule.hxx @@ -347,7 +347,7 @@ namespace numfunc @author OD */ - const Font& GetDefBulletFont(); + SW_DLLPUBLIC const Font& GetDefBulletFont(); /** retrieve unicode of character used for the default bullet list for the given list level diff --git a/sw/inc/pam.hxx b/sw/inc/pam.hxx index f4237c6b964b..b568a474cd7c 100644 --- a/sw/inc/pam.hxx +++ b/sw/inc/pam.hxx @@ -55,7 +55,7 @@ namespace utl { class TextSearch; } -struct SwPosition +struct SW_DLLPUBLIC SwPosition { SwNodeIndex nNode; SwIndex nContent; @@ -113,12 +113,12 @@ SwComparePosition ComparePosition( struct SwMoveFnCollection; typedef SwMoveFnCollection* SwMoveFn; SW_DLLPUBLIC extern SwMoveFn fnMoveForward; // SwPam::Move()/Find() default argument. -extern SwMoveFn fnMoveBackward; +SW_DLLPUBLIC extern SwMoveFn fnMoveBackward; typedef BOOL (*SwGoInDoc)( SwPaM& rPam, SwMoveFn fnMove ); -extern SwGoInDoc fnGoDoc; +SW_DLLPUBLIC extern SwGoInDoc fnGoDoc; extern SwGoInDoc fnGoSection; -extern SwGoInDoc fnGoNode; +SW_DLLPUBLIC extern SwGoInDoc fnGoNode; SW_DLLPUBLIC extern SwGoInDoc fnGoCntnt; // SwPam::Move() default argument. extern SwGoInDoc fnGoCntntCells; extern SwGoInDoc fnGoCntntSkipHidden; @@ -126,7 +126,7 @@ extern SwGoInDoc fnGoCntntCellsSkipHidden; void _InitPam(); -class SwPaM : public Ring +class SW_DLLPUBLIC SwPaM : public Ring { SwPosition aBound1; SwPosition aBound2; diff --git a/sw/inc/redline.hxx b/sw/inc/redline.hxx index b05f132b5e23..871c9f477f9a 100644 --- a/sw/inc/redline.hxx +++ b/sw/inc/redline.hxx @@ -91,7 +91,7 @@ public: }; -class SwRedlineData +class SW_DLLPUBLIC SwRedlineData { friend class SwRedline; SwRedlineData* pNext; // Verweis auf weitere Daten @@ -169,7 +169,7 @@ public: }; -class SwRedline : public SwPaM +class SW_DLLPUBLIC SwRedline : public SwPaM { SwRedlineData* pRedlineData; SwNodeIndex* pCntntSect; diff --git a/sw/inc/shellio.hxx b/sw/inc/shellio.hxx index d40320cf0543..bc1453b561df 100644 --- a/sw/inc/shellio.hxx +++ b/sw/inc/shellio.hxx @@ -32,17 +32,22 @@ #include <com/sun/star/uno/Reference.h> #include <com/sun/star/embed/XStorage.hpp> +#include <sfx2/docfile.hxx> +#include <sfx2/fcontnr.hxx> +#include <sot/formats.hxx> +#include <sot/storage.hxx> +#include <svtools/parhtml.hxx> #include <tools/string.hxx> #include <tools/date.hxx> #include <tools/time.hxx> #include <tools/datetime.hxx> #include <tools/ref.hxx> -#include <sot/formats.hxx> -#include "swdllapi.h" +#include <tools/urlobj.hxx> +#include <swdllapi.h> #include <swtypes.hxx> #include <docfac.hxx> // SwDocFac - -#include <sot/storage.hxx> +#include <errhdl.hxx> +#include <iodetect.hxx> // einige Forward - Deklarationen class SfxFilterContainer; @@ -210,7 +215,7 @@ protected: #define SW_STREAM_READER 1 #define SW_STORAGE_READER 2 -class Reader +class SW_DLLPUBLIC Reader { friend class SwReader; SwDoc* pTemplate; @@ -292,12 +297,6 @@ private: virtual int SetStrmStgPtr(); }; -class RtfReader: public Reader -{ - virtual ULONG Read( SwDoc &, const String& rBaseURL, SwPaM &,const String &); -}; - - class AsciiReader: public Reader { friend class SwReader; @@ -311,7 +310,7 @@ public: virtual ULONG Read( SwDoc &, const String& rBaseURL, SwPaM &,const String &); }; */ -class StgReader : public Reader +class SW_DLLPUBLIC StgReader : public Reader { String aFltName; @@ -411,7 +410,7 @@ public: extern void _InitFilter(); extern void _FinitFilter(); -extern SwRead ReadRtf, ReadAscii, /*ReadSwg, ReadSw3, */ReadHTML, ReadXML; +extern SwRead ReadAscii, /*ReadSwg, ReadSw3, */ReadHTML, ReadXML; //SW_DLLPUBLIC SwRead SwGetReaderSw3(); SW_DLLPUBLIC SwRead SwGetReaderXML(); @@ -435,7 +434,7 @@ extern BOOL SetHTMLTemplate( SwDoc &rDoc ); //Fuer Vorlagen aus HTML.vor laden s class IDocumentSettingAccess; class IDocumentStylePoolAccess; -class Writer : public SvRefBase +class SW_DLLPUBLIC Writer : public SvRefBase { SwAsciiOptions aAscOpts; String sBaseURL; @@ -555,7 +554,7 @@ SV_DECL_REF(Writer) SV_IMPL_REF(Writer) // Basisklasse fuer alle Storage-Writer -class StgWriter : public Writer +class SW_DLLPUBLIC StgWriter : public Writer { protected: String aFltName; @@ -636,81 +635,44 @@ public: /* */ ///////////////////////////////////////////////////////////////////////////// -void GetRTFWriter( const String&, const String&, WriterRef& ); -void GetASCWriter( const String&, const String&, WriterRef& ); -//void GetSw3Writer( const String&, const String&, WriterRef& ); -void GetHTMLWriter( const String&, const String&, WriterRef& ); -void GetXMLWriter( const String&, const String&, WriterRef& ); - -// Die folgende Klasse ist ein Wrappe fuer die Basic-I/O-Funktionen -// des Writer 3.0. Alles ist statisch. Alle u.a. Filternamen sind die -// Writer-internen Namen, d.h. die namen, die in INSTALL.INI vor dem -// Gleichheitszeichen stehen, z.b. SWG oder ASCII. +typedef Reader* (*FnGetReader)(); +typedef void (*FnGetWriter)(const String&, const String& rBaseURL, WriterRef&); -class SW_DLLPUBLIC SwIoSystem +struct SwReaderWriterEntry { -public: - // suche ueber den internen FormatNamen den Filtereintrag - static const SfxFilter* GetFilterOfFormat( const String& rFormat, - const SfxFilterContainer* pCnt = 0 ); - - // Feststellen des zu verwendenden Filters fuer die uebergebene - // Datei. Der Filtername wird zurueckgeliefert. Konnte kein Filter - // zurueckgeliefert werden, wird der Name des ASCII-Filters geliefert! - static const SfxFilter* GetFileFilter( const String& rFileName, - const String& rPrefFltName, - SfxMedium* pMedium = 0 ); - - // Feststellen ob das File in dem vorgegebenen Format vorliegt. - // Z.z werden nur unsere eigene Filter unterstuetzt!! - static BOOL IsFileFilter( SfxMedium& rMedium, const String& rFmtName, - const SfxFilter** ppFlt = 0 ); - - static BOOL IsValidStgFilter( SotStorage& , const SfxFilter& ); - static BOOL IsValidStgFilter( const com::sun::star::uno::Reference < com::sun::star::embed::XStorage >& rStg, const SfxFilter& rFilter); - - static bool IsDetectableText(const sal_Char* pBuf, ULONG &rLen, - CharSet *pCharSet=0, bool *pSwap=0, LineEnd *pLineEnd=0, bool bEncodedFilter = false); -// static bool IsDetectableW4W(const String& rFileName, const String& rUserData); - - static const SfxFilter* GetTextFilter(const sal_Char* pBuf, ULONG nLen); - // gebe einen bestimmten Reader zurueck - static Reader* GetReader( const String& rFltName ); - // gebe einen bestimmten Writer zurueck - static void GetWriter( const String& rFltName, const String& rBaseURL, WriterRef& xWrt ); - - static const String GetSubStorageName( const SfxFilter& rFltr ); + Reader* pReader; + FnGetReader fnGetReader; + FnGetWriter fnGetWriter; + BOOL bDelReader; + + SwReaderWriterEntry( const FnGetReader fnReader, const FnGetWriter fnWriter, BOOL bDel ) + : pReader( NULL ), fnGetReader( fnReader ), fnGetWriter( fnWriter ), bDelReader( bDel ) + {} + + /// Get access to the reader + Reader* GetReader(); + + /// Get access to the writer + void GetWriter( const String& rNm, const String& rBaseURL, WriterRef& xWrt ) const; }; +namespace SwReaderWriter +{ + /// Return reader based on ReaderWriterEnum + Reader* GetReader( ReaderWriterEnum eReader ); + + /// Return reader based on the name + Reader* GetReader( const String& rFltName ); + + /// Return writer based on the name + void GetWriter( const String& rFltName, const String& rBaseURL, WriterRef& xWrt ); +} -// ---------------------------------- -// diese Filter sind immer vorhanden und koennen ueber die -// Formatnamen gesucht werden. Alle anderen Filter sind nur intern -// bekannt. Die UI-Seite benutzt die GetReader()/GetWriter() -Funktionen, -// um die speziellen zu erhalten. - -//extern const sal_Char __FAR_DATA FILTER_SWG[]; // SWG-Filter -extern const sal_Char __FAR_DATA FILTER_RTF[]; // RTF-Filter -extern const sal_Char __FAR_DATA FILTER_TEXT[]; // Text-Filter mit Default-CodeSet -extern const sal_Char __FAR_DATA FILTER_BAS[]; // StarBasic (identisch mit ANSI) -//extern const sal_Char __FAR_DATA FILTER_W4W[]; // W4W-Filter -extern const sal_Char __FAR_DATA FILTER_WW8[]; // WinWord 97-Filter -//extern const sal_Char __FAR_DATA FILTER_SW3[]; // SW3-Storage Filter -//extern const sal_Char __FAR_DATA FILTER_SW4[]; // SW4-Storage Filter -//extern const sal_Char __FAR_DATA FILTER_SW4[]; // SW4-Storage Filter -//extern const sal_Char __FAR_DATA FILTER_SW5[]; // SW5-Storage Filter -//extern const sal_Char __FAR_DATA FILTER_SWGV[]; // SWG-Vorlagen Filter -//extern const sal_Char __FAR_DATA FILTER_SW3V[]; // SW3-Storage Vorlagen Filter -//extern const sal_Char __FAR_DATA FILTER_SW4V[]; // SW4-Storage Vorlagen Filter -//extern const sal_Char __FAR_DATA FILTER_SW5V[]; // SW5-Storage Vorlagen Filter -//extern const sal_Char __FAR_DATA FILTER_SWW4V[]; // SW/Web Storage Vorlagen Filter -//extern const sal_Char __FAR_DATA FILTER_SWW5V[]; // SW/Web Storage Vorlagen Filter -extern const sal_Char __FAR_DATA FILTER_TEXT_DLG[]; // text filter with encoding dialog -extern const sal_Char __FAR_DATA FILTER_XML[]; // XML filter -extern const sal_Char __FAR_DATA FILTER_XMLV[]; // XML filter -extern const sal_Char __FAR_DATA FILTER_XMLVW[]; // XML filter - -SW_DLLPUBLIC const sal_Char* GetFILTER_XML(); -SW_DLLPUBLIC const sal_Char* GetFILTER_WW8(); +void GetRTFWriter( const String&, const String&, WriterRef& ); +void GetASCWriter( const String&, const String&, WriterRef& ); +//void GetSw3Writer( const String&, const String&, WriterRef& ); +void GetHTMLWriter( const String&, const String&, WriterRef& ); +void GetXMLWriter( const String&, const String&, WriterRef& ); +void GetWW8Writer( const String&, const String&, WriterRef& ); #endif diff --git a/sw/inc/shellres.hxx b/sw/inc/shellres.hxx index be63a2984742..4c7bb09ebe45 100644 --- a/sw/inc/shellres.hxx +++ b/sw/inc/shellres.hxx @@ -42,7 +42,7 @@ #include <svtools/svstdarr.hxx> #endif -struct ShellResource : public Resource +struct SW_DLLPUBLIC ShellResource : public Resource { String aPostItAuthor; String aPostItPage; diff --git a/sw/inc/sw.mk b/sw/inc/sw.mk index dffaeea33716..e827ec156025 100644 --- a/sw/inc/sw.mk +++ b/sw/inc/sw.mk @@ -37,6 +37,8 @@ CDEFS+=-DACCESSIBLE_LAYOUT # define SW_DLLIMPLEMENTATION (see @ swdllapi.h) +.IF "$(MAKING_LIBMSWORD)" != "TRUE" CDEFS += -DSW_DLLIMPLEMENTATION +.ENDIF VISIBILITY_HIDDEN=TRUE diff --git a/sw/inc/swatrset.hxx b/sw/inc/swatrset.hxx index e420a4db5f2d..3c5df0617713 100644 --- a/sw/inc/swatrset.hxx +++ b/sw/inc/swatrset.hxx @@ -33,7 +33,7 @@ #include <tools/mempool.hxx> #include <svtools/itemset.hxx> #include <svtools/itempool.hxx> - +#include <swdllapi.h> class SwModify; class SwDoc; @@ -171,7 +171,7 @@ public: }; -class SwAttrSet : public SfxItemSet +class SW_DLLPUBLIC SwAttrSet : public SfxItemSet { // Pointer fuers Modify-System SwAttrSet *pOldSet, *pNewSet; @@ -344,7 +344,7 @@ public: }; //Helper for filters to find true lineheight of a font -long AttrSetToLineHeight( const IDocumentSettingAccess& rIDocumentSettingAccess, +SW_DLLPUBLIC long AttrSetToLineHeight( const IDocumentSettingAccess& rIDocumentSettingAccess, const SwAttrSet &rSet, const OutputDevice &rOut, sal_Int16 nScript); #endif diff --git a/sw/inc/swfltopt.hxx b/sw/inc/swfltopt.hxx index 94ef51c83617..8b7e9c2ea451 100644 --- a/sw/inc/swfltopt.hxx +++ b/sw/inc/swfltopt.hxx @@ -32,7 +32,7 @@ #include <unotools/configitem.hxx> -class SwFilterOptions : public utl::ConfigItem +class SW_DLLPUBLIC SwFilterOptions : public utl::ConfigItem { public: SwFilterOptions( sal_uInt16 nCnt, const sal_Char** ppNames, diff --git a/sw/inc/swmodule.hxx b/sw/inc/swmodule.hxx index 03aad91d2242..ab3311e2fee2 100644 --- a/sw/inc/swmodule.hxx +++ b/sw/inc/swmodule.hxx @@ -77,7 +77,7 @@ namespace com{ namespace sun{ namespace star{ namespace scanner{ class XScannerManager; }}}} -class SwModule: public SfxModule, public SfxListener +class SW_DLLPUBLIC SwModule: public SfxModule, public SfxListener { String sActAuthor; @@ -157,29 +157,29 @@ public: void ExecOther(SfxRequest &); // Felder, Formel .. // Benutzereinstellungen modifizieren - SW_DLLPUBLIC const SwMasterUsrPref *GetUsrPref(sal_Bool bWeb) const; + const SwMasterUsrPref *GetUsrPref(sal_Bool bWeb) const; const SwViewOption* GetViewOption(sal_Bool bWeb); void ApplyUsrPref(const SwViewOption &, SwView*, sal_uInt16 nDest = VIEWOPT_DEST_VIEW ); void ApplyUserMetric( FieldUnit eMetric, BOOL bWeb ); - SW_DLLPUBLIC void ApplyFldUpdateFlags(SwFldUpdateFlags eFldFlags); - SW_DLLPUBLIC void ApplyLinkMode(sal_Int32 nNewLinkMode); + void ApplyFldUpdateFlags(SwFldUpdateFlags eFldFlags); + void ApplyLinkMode(sal_Int32 nNewLinkMode); //default page mode for text grid - SW_DLLPUBLIC void ApplyDefaultPageMode(sal_Bool bIsSquaredPageMode); + void ApplyDefaultPageMode(sal_Bool bIsSquaredPageMode); // ConfigItems erzeugen SwModuleOptions* GetModuleConfig() { return pModuleConfig;} - SW_DLLPUBLIC SwPrintOptions* GetPrtOptions(sal_Bool bWeb); - SW_DLLPUBLIC SwChapterNumRules* GetChapterNumRules(); + SwPrintOptions* GetPrtOptions(sal_Bool bWeb); + SwChapterNumRules* GetChapterNumRules(); SwStdFontConfig* GetStdFontConfig() { return pStdFontConfig; } SwNavigationConfig* GetNavigationConfig(); SwToolbarConfigItem*GetToolbarConfig() { return pToolbarConfig; } SwToolbarConfigItem*GetWebToolbarConfig() { return pWebToolbarConfig; } - SW_DLLPUBLIC SwDBConfig* GetDBConfig(); + SwDBConfig* GetDBConfig(); svtools::ColorConfig& GetColorConfig(); - SW_DLLPUBLIC SvtAccessibilityOptions& GetAccessibilityOptions(); - SW_DLLPUBLIC SvtCTLOptions& GetCTLOptions(); + SvtAccessibilityOptions& GetAccessibilityOptions(); + SvtCTLOptions& GetCTLOptions(); SvtUserOptions& GetUserOptions(); SvtUndoOptions& GetUndoOptions(); diff --git a/sw/inc/swtable.hxx b/sw/inc/swtable.hxx index 40aa72ec3d7c..1a62bb3d4dfd 100644 --- a/sw/inc/swtable.hxx +++ b/sw/inc/swtable.hxx @@ -85,7 +85,7 @@ typedef SwTableBox* SwTableBoxPtr; SV_DECL_PTRARR_SORT( SwTableSortBoxes, SwTableBoxPtr, 25, 50 ) typedef SwTableLine* SwTableLinePtr; -class SwTable: public SwClient //Client vom FrmFmt +class SW_DLLPUBLIC SwTable: public SwClient //Client vom FrmFmt { using SwClient::IsModifyLocked; @@ -328,7 +328,7 @@ public: #endif }; -class SwTableLine: public SwClient // Client vom FrmFmt +class SW_DLLPUBLIC SwTableLine: public SwClient // Client vom FrmFmt { SwTableBoxes aBoxes; SwTableBox *pUpper; @@ -367,7 +367,7 @@ public: bool hasSoftPageBreak() const; }; -class SwTableBox: public SwClient //Client vom FrmFmt +class SW_DLLPUBLIC SwTableBox: public SwClient //Client vom FrmFmt { friend class SwNodes; // um den Index umzusetzen ! friend void DelBoxNode(SwTableSortBoxes&); // um den StartNode* zu loeschen ! diff --git a/sw/inc/swtypes.hxx b/sw/inc/swtypes.hxx index 9f23da9fdfa6..f19df7fd1894 100644 --- a/sw/inc/swtypes.hxx +++ b/sw/inc/swtypes.hxx @@ -103,9 +103,9 @@ const SwTwips lMinBorder = 1134; #define UNDO_ACTION_COUNT 20 // Konstante Strings -extern UniString aEmptyStr; // "" +SW_DLLPUBLIC extern UniString aEmptyStr; // "" extern ByteString aEmptyByteStr; // "" -extern UniString aDotStr; // '.' +SW_DLLPUBLIC extern UniString aDotStr; // '.' //Zum Einfuegen von Beschriftungen (wie bzw. wo soll eingefuegt werden). //Hier weil ein eigenes hxx nicht lohnt und es sonst nirgendwo so recht @@ -208,7 +208,7 @@ const sal_Unicode cMarkSeperator = '|'; extern const sal_Char* __FAR_DATA pMarkToTable; // Strings stehen extern const sal_Char* __FAR_DATA pMarkToFrame; // im Init.cxx extern const sal_Char* __FAR_DATA pMarkToRegion; -extern const sal_Char* __FAR_DATA pMarkToOutline; +SW_DLLPUBLIC extern const sal_Char* __FAR_DATA pMarkToOutline; extern const sal_Char* __FAR_DATA pMarkToText; extern const sal_Char* __FAR_DATA pMarkToGraphic; extern const sal_Char* __FAR_DATA pMarkToOLE; diff --git a/sw/inc/txtatr.hxx b/sw/inc/txtatr.hxx index fd9957c09e6d..50914169d6fc 100644 --- a/sw/inc/txtatr.hxx +++ b/sw/inc/txtatr.hxx @@ -81,7 +81,7 @@ public: // ****************************** -class SwTxtRuby : public SwTxtAttrEnd, public SwClient +class SW_DLLPUBLIC SwTxtRuby : public SwTxtAttrEnd, public SwClient { SwTxtNode* pMyTxtNd; diff --git a/sw/inc/txtftn.hxx b/sw/inc/txtftn.hxx index 80c372aad3e6..c2011babf8a9 100644 --- a/sw/inc/txtftn.hxx +++ b/sw/inc/txtftn.hxx @@ -39,7 +39,7 @@ class SwDoc; // ATT_FTN ********************************************************** -class SwTxtFtn : public SwTxtAttr +class SW_DLLPUBLIC SwTxtFtn : public SwTxtAttr { SwNodeIndex *pStartNode; SwTxtNode* pMyTxtNd; diff --git a/sw/inc/txtinet.hxx b/sw/inc/txtinet.hxx index ac404ad5ac12..ef55bf69d5c9 100644 --- a/sw/inc/txtinet.hxx +++ b/sw/inc/txtinet.hxx @@ -38,7 +38,7 @@ class Color; // ATT_INETFMT ********************************************* -class SwTxtINetFmt : public SwTxtAttrEnd, public SwClient +class SW_DLLPUBLIC SwTxtINetFmt : public SwTxtAttrEnd, public SwClient { SwTxtNode* pMyTxtNd; BOOL bVisited : 1; // Besuchter Link? diff --git a/sw/inc/unoobj.hxx b/sw/inc/unoobj.hxx index c7ec5d4ef73e..7893d198309c 100644 --- a/sw/inc/unoobj.hxx +++ b/sw/inc/unoobj.hxx @@ -710,7 +710,7 @@ public: /*-----------------23.02.98 12:05------------------- --------------------------------------------------*/ -class SwXTextRange : public cppu::WeakImplHelper8 +class SW_DLLPUBLIC SwXTextRange : public cppu::WeakImplHelper8 < ::com::sun::star::text::XTextRange, ::com::sun::star::lang::XUnoTunnel, diff --git a/sw/inc/usrfld.hxx b/sw/inc/usrfld.hxx index 30e7b9e7d741..55fb2ebd3d98 100644 --- a/sw/inc/usrfld.hxx +++ b/sw/inc/usrfld.hxx @@ -105,7 +105,7 @@ inline void SwUserFieldType::SetType(USHORT nSub) Beschreibung: Benutzerfelder --------------------------------------------------------------------*/ -class SwUserField : public SwValueField +class SW_DLLPUBLIC SwUserField : public SwValueField { USHORT nSubType; |