diff options
Diffstat (limited to '')
-rw-r--r-- | include/svx/autoformathelper.hxx | 222 |
1 files changed, 222 insertions, 0 deletions
diff --git a/include/svx/autoformathelper.hxx b/include/svx/autoformathelper.hxx new file mode 100644 index 000000000..2d292b1de --- /dev/null +++ b/include/svx/autoformathelper.hxx @@ -0,0 +1,222 @@ +/* -*- 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 <svx/svxdllapi.h> +#include <memory> + +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<SvxFontItem> m_aFont; + std::unique_ptr<SvxFontHeightItem> m_aHeight; + std::unique_ptr<SvxWeightItem> m_aWeight; + std::unique_ptr<SvxPostureItem> m_aPosture; + + std::unique_ptr<SvxFontItem> m_aCJKFont; + std::unique_ptr<SvxFontHeightItem> m_aCJKHeight; + std::unique_ptr<SvxWeightItem> m_aCJKWeight; + std::unique_ptr<SvxPostureItem> m_aCJKPosture; + + std::unique_ptr<SvxFontItem> m_aCTLFont; + std::unique_ptr<SvxFontHeightItem> m_aCTLHeight; + std::unique_ptr<SvxWeightItem> m_aCTLWeight; + std::unique_ptr<SvxPostureItem> m_aCTLPosture; + + std::unique_ptr<SvxUnderlineItem> m_aUnderline; + std::unique_ptr<SvxOverlineItem> m_aOverline; + std::unique_ptr<SvxCrossedOutItem> m_aCrossedOut; + std::unique_ptr<SvxContourItem> m_aContour; + std::unique_ptr<SvxShadowedItem> m_aShadowed; + std::unique_ptr<SvxColorItem> m_aColor; + std::unique_ptr<SvxBoxItem> m_aBox; + std::unique_ptr<SvxLineItem> m_aTLBR; + std::unique_ptr<SvxLineItem> m_aBLTR; + std::unique_ptr<SvxBrushItem> m_aBackground; + + // Writer specific + std::unique_ptr<SvxAdjustItem> m_aAdjust; + + // Calc specific + std::unique_ptr<SvxHorJustifyItem> m_aHorJustify; + std::unique_ptr<SvxVerJustifyItem> m_aVerJustify; + std::unique_ptr<SfxBoolItem> m_aStacked; + std::unique_ptr<SvxMarginItem> m_aMargin; + std::unique_ptr<SfxBoolItem> m_aLinebreak; + + // from SO5, 504k on, rotated text + std::unique_ptr<SfxInt32Item> m_aRotateAngle; + std::unique_ptr<SvxRotateModeItem> 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: */ |