office-gobmx/include/svx/nbdtmg.hxx
Noel Grandin 1683847f0f loplugin:constantparam
Change-Id: Ibf1f8b8c01333f87f8e8cd73ccb0d62f30fbcd2b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174303
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
2024-10-01 11:17:19 +02:00

208 lines
7.8 KiB
C++

/* -*- 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_NBDTMG_HXX
#define INCLUDED_SVX_NBDTMG_HXX
#include <svx/svxdllapi.h>
#include <memory>
#include <vector>
#include <editeng/numitem.hxx>
#include <vcl/font.hxx>
namespace svx::sidebar {
#define DEFAULT_BULLET_TYPES 8
#define DEFAULT_NUM_VALUSET_COUNT 8
#define DEFAULT_NUMBERING_CACHE_FORMAT_VERSION 0x10
enum class NBOType
{
Bullets = 1, Numbering, Outline
};
class SVX_DLLPUBLIC NumSettings_Impl
{
public:
SvxNumType nNumberType;
short nParentNumbering;
SvxNumberFormat::LabelFollowedBy eLabelFollowedBy;
tools::Long nTabValue;
SvxAdjust eNumAlign;
tools::Long nNumAlignAt;
tools::Long nNumIndentAt;
OUString sPrefix;
OUString sSuffix;
OUString sBulletChar;
OUString sBulletFont;
SvxBrushItem *pBrushItem;
Size aSize;
public:
NumSettings_Impl()
: nNumberType(SVX_NUM_CHARS_UPPER_LETTER)
, nParentNumbering(0)
, eLabelFollowedBy(SvxNumberFormat::NOTHING)
, nTabValue (0)
, eNumAlign(SvxAdjust::Left)
, nNumAlignAt(0)
, nNumIndentAt(0)
, pBrushItem(nullptr)
, aSize(0,0)
{}
};
typedef std::vector< std::shared_ptr<NumSettings_Impl> > NumSettingsArr_Impl;
class SVX_DLLPUBLIC BulletsSettings
{
public:
vcl::Font aFont;
sal_UCS4 cBulletChar;
bool bIsCustomized;
BulletsSettings() : cBulletChar(0), bIsCustomized(false) {}
};
class SVX_DLLPUBLIC NumberSettings_Impl
{
public:
bool bIsCustomized;
OUString sDescription;
NumSettings_Impl* pNumSetting;
public:
NumberSettings_Impl() :
bIsCustomized(false),
pNumSetting(nullptr)
{}
};
typedef std::vector< std::shared_ptr<NumberSettings_Impl> > NumberSettingsArr_Impl;
class SVX_DLLPUBLIC OutlineSettings_Impl
{
public:
bool bIsCustomized;
OUString sDescription;
NumSettingsArr_Impl *pNumSettingsArr;
public:
OutlineSettings_Impl() :
bIsCustomized(false),
pNumSettingsArr(nullptr)
{}
};
class SVX_DLLPUBLIC NBOTypeMgrBase
{
private:
const SfxItemSet* pSet;
MapUnit eCoreUnit;
// store the attributes passed from pSet
OUString aBulletCharFmtName;
OUString aNumCharFmtName;
bool bIsLoading;
NBOTypeMgrBase(const NBOTypeMgrBase&) = delete;
public:
NBOTypeMgrBase()
: pSet(nullptr)
, eCoreUnit(MapUnit::MapTwip)
, bIsLoading(false)
{}
virtual ~NBOTypeMgrBase() {}
virtual void Init()=0;
virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0) = 0;
virtual void ReplaceNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel) = 0;
virtual void ApplyNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel, bool isDefault=false,bool isResetSize=false) = 0;
virtual OUString GetDescription(sal_uInt16 nIndex, bool isDefault)=0;
virtual bool IsCustomized(sal_uInt16 nIndex)=0;
static sal_uInt16 IsSingleLevel(sal_uInt16 nCurLevel);
// store the attributes passed from pSet
void SetItems(const SfxItemSet* pArg);
protected:
const OUString& GetBulletCharFmtName() const { return aBulletCharFmtName;}
const OUString& GetNumCharFmtName() const { return aNumCharFmtName;}
MapUnit GetMapUnit() const { return eCoreUnit;}
protected:
void ImplLoad(std::u16string_view filename);
void ImplStore(std::u16string_view filename);
};
class SVX_DLLPUBLIC BulletsTypeMgr final : public NBOTypeMgrBase
{
friend class OutlineTypeMgr;
friend class NumberingTypeMgr;
private:
BulletsTypeMgr(const BulletsTypeMgr&) = delete;
public:
static sal_Unicode aDynamicBulletTypes[DEFAULT_BULLET_TYPES];
static sal_Unicode aDynamicRTLBulletTypes[DEFAULT_BULLET_TYPES];
static BulletsSettings* pActualBullets[DEFAULT_BULLET_TYPES];
public:
BulletsTypeMgr();
virtual void Init() override;
virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0) override;
virtual void ReplaceNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel) override;
virtual void ApplyNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel, bool isDefault=false,bool isResetSize=false) override;
void ApplyCustomRule(SvxNumRule& aNum, std::u16string_view sBullet, std::u16string_view sFont, sal_uInt16 mLevel);
virtual OUString GetDescription(sal_uInt16 nIndex, bool isDefault) override;
virtual bool IsCustomized(sal_uInt16 nIndex) override;
static BulletsTypeMgr& GetInstance();
};
class NumberingTypeMgr final : public NBOTypeMgrBase
{
NumberingTypeMgr(const NumberingTypeMgr&) = delete;
public:
NumberingTypeMgr();
virtual ~NumberingTypeMgr() override;
virtual void Init() override;
virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0) override;
virtual void ReplaceNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel) override;
virtual void ApplyNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel, bool isDefault=false,bool isResetSize=false) override;
virtual OUString GetDescription(sal_uInt16 nIndex, bool isDefault) override;
virtual bool IsCustomized(sal_uInt16 nIndex) override;
static NumberingTypeMgr& GetInstance();
private:
NumberSettingsArr_Impl maNumberSettingsArr;
NumberSettingsArr_Impl maDefaultNumberSettingsArr;
};
class OutlineTypeMgr final : public NBOTypeMgrBase
{
OutlineTypeMgr(const OutlineTypeMgr&) = delete;
public:
OutlineTypeMgr();
virtual void Init() override;
virtual sal_uInt16 GetNBOIndexForNumRule(SvxNumRule& aNum,sal_uInt16 mLevel,sal_uInt16 nFromIndex=0) override;
virtual void ReplaceNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel) override;
virtual void ApplyNumRule(SvxNumRule& aNum, sal_uInt16 nIndex, sal_uInt16 mLevel, bool isDefault=false,bool isResetSize=false) override;
virtual OUString GetDescription(sal_uInt16 nIndex, bool isDefault) override;
virtual bool IsCustomized(sal_uInt16 nIndex) override;
static OutlineTypeMgr& GetInstance();
private:
OutlineSettings_Impl* pOutlineSettingsArrs[DEFAULT_NUM_VALUSET_COUNT];
OutlineSettings_Impl* pDefaultOutlineSettingsArrs[DEFAULT_NUM_VALUSET_COUNT];
};
}
#endif
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */