summaryrefslogtreecommitdiffstats
path: root/include/svx/autoformathelper.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'include/svx/autoformathelper.hxx')
-rw-r--r--include/svx/autoformathelper.hxx222
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: */