/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /* * This file is part of the LibreOffice project. * * This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. * * This file incorporates work covered by the following license notice: * * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed * with this work for additional information regarding copyright * ownership. The ASF licenses this file to you under the Apache * License, Version 2.0 (the "License"); you may not use this file * except in compliance with the License. You may obtain a copy of * the License at http://www.apache.org/licenses/LICENSE-2.0 . */ #ifndef INCLUDED_SVX_AUTOFORMATHELPER_HXX #define INCLUDED_SVX_AUTOFORMATHELPER_HXX #include #include class SvStream; class SvxFontItem; class SvxFontHeightItem; class SvxWeightItem; class SvxPostureItem; class SvxUnderlineItem; class SvxOverlineItem; class SvxCrossedOutItem; class SvxContourItem; class SvxShadowedItem; class SvxColorItem; class SvxBoxItem; class SvxLineItem; class SvxBrushItem; class SvxAdjustItem; class SvxHorJustifyItem; class SvxVerJustifyItem; class SfxBoolItem; class SvxMarginItem; class SfxInt32Item; class SvxRotateModeItem; ////////////////////////////////////////////////////////////////////////////// /// Struct with version numbers of the Items struct SVX_DLLPUBLIC AutoFormatVersions { public: // BlockA sal_uInt16 nFontVersion; sal_uInt16 nFontHeightVersion; sal_uInt16 nWeightVersion; sal_uInt16 nPostureVersion; sal_uInt16 nUnderlineVersion; sal_uInt16 nOverlineVersion; sal_uInt16 nCrossedOutVersion; sal_uInt16 nContourVersion; sal_uInt16 nShadowedVersion; sal_uInt16 nColorVersion; sal_uInt16 nBoxVersion; sal_uInt16 nLineVersion; sal_uInt16 nBrushVersion; sal_uInt16 nAdjustVersion; // BlockB sal_uInt16 nHorJustifyVersion; sal_uInt16 nVerJustifyVersion; sal_uInt16 nOrientationVersion; sal_uInt16 nMarginVersion; sal_uInt16 nBoolVersion; sal_uInt16 nInt32Version; sal_uInt16 nRotateModeVersion; sal_uInt16 nNumFormatVersion; AutoFormatVersions(); void LoadBlockA( SvStream& rStream, sal_uInt16 nVer ); void LoadBlockB( SvStream& rStream, sal_uInt16 nVer ); static void WriteBlockA(SvStream& rStream, sal_uInt16 fileVersion); static void WriteBlockB(SvStream& rStream, sal_uInt16 fileVersion); }; ////////////////////////////////////////////////////////////////////////////// class SVX_DLLPUBLIC AutoFormatBase { protected: // common attributes of Calc and Writer // --- from 641 on: CJK and CTL font settings std::unique_ptr m_aFont; std::unique_ptr m_aHeight; std::unique_ptr m_aWeight; std::unique_ptr m_aPosture; std::unique_ptr m_aCJKFont; std::unique_ptr m_aCJKHeight; std::unique_ptr m_aCJKWeight; std::unique_ptr m_aCJKPosture; std::unique_ptr m_aCTLFont; std::unique_ptr m_aCTLHeight; std::unique_ptr m_aCTLWeight; std::unique_ptr m_aCTLPosture; std::unique_ptr m_aUnderline; std::unique_ptr m_aOverline; std::unique_ptr m_aCrossedOut; std::unique_ptr m_aContour; std::unique_ptr m_aShadowed; std::unique_ptr m_aColor; std::unique_ptr m_aBox; std::unique_ptr m_aTLBR; std::unique_ptr m_aBLTR; std::unique_ptr m_aBackground; // Writer specific std::unique_ptr m_aAdjust; // Calc specific std::unique_ptr m_aHorJustify; std::unique_ptr m_aVerJustify; std::unique_ptr m_aStacked; std::unique_ptr m_aMargin; std::unique_ptr m_aLinebreak; // from SO5, 504k on, rotated text std::unique_ptr m_aRotateAngle; std::unique_ptr m_aRotateMode; // assignment-op is protected due to this being a tooling // class, so callers need to be aware of what they do AutoFormatBase& operator=(const AutoFormatBase&); AutoFormatBase(); AutoFormatBase( const AutoFormatBase& rNew ); ~AutoFormatBase(); /// Comparing based of boxes backgrounds. bool operator==(const AutoFormatBase& rRight) const; public: // The get-methods. const SvxFontItem &GetFont() const { return *m_aFont; } const SvxFontHeightItem &GetHeight() const { return *m_aHeight; } const SvxWeightItem &GetWeight() const { return *m_aWeight; } const SvxPostureItem &GetPosture() const { return *m_aPosture; } const SvxFontItem &GetCJKFont() const { return *m_aCJKFont; } const SvxFontHeightItem &GetCJKHeight() const { return *m_aCJKHeight; } const SvxWeightItem &GetCJKWeight() const { return *m_aCJKWeight; } const SvxPostureItem &GetCJKPosture() const { return *m_aCJKPosture; } const SvxFontItem &GetCTLFont() const { return *m_aCTLFont; } const SvxFontHeightItem &GetCTLHeight() const { return *m_aCTLHeight; } const SvxWeightItem &GetCTLWeight() const { return *m_aCTLWeight; } const SvxPostureItem &GetCTLPosture() const { return *m_aCTLPosture; } const SvxUnderlineItem &GetUnderline() const { return *m_aUnderline; } const SvxOverlineItem &GetOverline() const { return *m_aOverline; } const SvxCrossedOutItem &GetCrossedOut() const { return *m_aCrossedOut; } const SvxContourItem &GetContour() const { return *m_aContour; } const SvxShadowedItem &GetShadowed() const { return *m_aShadowed; } const SvxColorItem &GetColor() const { return *m_aColor; } const SvxBoxItem &GetBox() const { return *m_aBox; } const SvxLineItem& GetTLBR() const { return *m_aTLBR; } const SvxLineItem& GetBLTR() const { return *m_aBLTR; } const SvxBrushItem &GetBackground() const { return *m_aBackground; } const SvxAdjustItem &GetAdjust() const { return *m_aAdjust; } const SvxHorJustifyItem& GetHorJustify() const { return *m_aHorJustify; } const SvxVerJustifyItem& GetVerJustify() const { return *m_aVerJustify; } const SfxBoolItem& GetStacked() const { return *m_aStacked; } const SvxMarginItem& GetMargin() const { return *m_aMargin; } const SfxBoolItem& GetLinebreak() const { return *m_aLinebreak; } const SfxInt32Item& GetRotateAngle() const { return *m_aRotateAngle; } const SvxRotateModeItem& GetRotateMode() const { return *m_aRotateMode; } // The set-methods. void SetFont( const SvxFontItem& rNew ); void SetHeight( const SvxFontHeightItem& rNew ); void SetWeight( const SvxWeightItem& rNew ); void SetPosture( const SvxPostureItem& rNew ); void SetCJKFont( const SvxFontItem& rNew ); void SetCJKHeight( const SvxFontHeightItem& rNew ); void SetCJKWeight( const SvxWeightItem& rNew ); void SetCJKPosture( const SvxPostureItem& rNew ); void SetCTLFont( const SvxFontItem& rNew ); void SetCTLHeight( const SvxFontHeightItem& rNew ); void SetCTLWeight( const SvxWeightItem& rNew ); void SetCTLPosture( const SvxPostureItem& rNew ); void SetUnderline( const SvxUnderlineItem& rNew ); void SetOverline( const SvxOverlineItem& rNew ); void SetCrossedOut( const SvxCrossedOutItem& rNew ); void SetContour( const SvxContourItem& rNew ); void SetShadowed( const SvxShadowedItem& rNew ); void SetColor( const SvxColorItem& rNew ); void SetBox( const SvxBoxItem& rNew ); void SetTLBR( const SvxLineItem& rNew ); void SetBLTR( const SvxLineItem& rNew ); void SetBackground( const SvxBrushItem& rNew ); void SetAdjust( const SvxAdjustItem& rNew ); void SetHorJustify( const SvxHorJustifyItem& rNew ); void SetVerJustify( const SvxVerJustifyItem& rNew ); void SetStacked( const SfxBoolItem& rNew ); void SetMargin( const SvxMarginItem& rNew ); void SetLinebreak( const SfxBoolItem& rNew ); void SetRotateAngle( const SfxInt32Item& rNew ); void SetRotateMode( const SvxRotateModeItem& rNew ); bool LoadBlockA( SvStream& rStream, const AutoFormatVersions& rVersions, sal_uInt16 nVer ); bool LoadBlockB( SvStream& rStream, const AutoFormatVersions& rVersions, sal_uInt16 nVer ); bool SaveBlockA( SvStream& rStream, sal_uInt16 fileVersion ) const; bool SaveBlockB( SvStream& rStream, sal_uInt16 fileVersion ) const; }; #endif // INCLUDED_SVX_AUTOFORMATHELPER_HXX ////////////////////////////////////////////////////////////////////////////// /* vim:set shiftwidth=4 softtabstop=4 expandtab: */