summaryrefslogtreecommitdiff
path: root/include/editeng/editobj.hxx
blob: 5badaf8e8a2a2817567787af8070496f0cf7d7f5 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
/* -*- 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_EDITENG_EDITOBJ_HXX
#define INCLUDED_EDITENG_EDITOBJ_HXX

#include <svl/style.hxx>
#include <editeng/editengdllapi.h>
#include <editeng/macros.hxx>
#include <svl/languageoptions.hxx>

#include <com/sun/star/text/textfield/Type.hpp>

#include <vector>
#include <memory>

class SfxItemPool;
class SfxItemSet;
class SvxFieldItem;
class SvxFieldData;
enum class OutlinerMode;
struct EECharAttrib;
typedef struct _xmlTextWriter* xmlTextWriterPtr;

namespace editeng {

class FieldUpdater;
struct Section;

}

namespace svl {

class SharedString;
class SharedStringPool;

}

enum class TextRotation { NONE, TOPTOBOTTOM, BOTTOMTOTOP };

class EDITENG_DLLPUBLIC EditTextObject
{
public:
    virtual ~EditTextObject();

    /**
     * Set paragraph strings to the shared string pool.
     *
     * @param rPool shared string pool.
     */
    virtual void NormalizeString( svl::SharedStringPool& rPool ) = 0;

    virtual std::vector<svl::SharedString> GetSharedStrings() const = 0;

    virtual const SfxItemPool* GetPool() const = 0;
    virtual OutlinerMode GetUserType() const = 0;    // For OutlinerMode, it can however not save in compatible format
    virtual void SetUserType( OutlinerMode n ) = 0;

    virtual bool IsEffectivelyVertical() const = 0;
    virtual bool GetVertical() const = 0;
    virtual bool IsTopToBottom() const = 0;
    virtual void SetVertical( bool bVertical ) = 0;
    virtual void SetRotation( TextRotation nRotation ) = 0;
    virtual TextRotation    GetRotation() const = 0;

    virtual SvtScriptType GetScriptType() const = 0;

    virtual std::unique_ptr<EditTextObject> Clone() const = 0;

    virtual sal_Int32 GetParagraphCount() const = 0;

    virtual OUString GetText(sal_Int32 nPara) const = 0;

    virtual void ClearPortionInfo() = 0;

    virtual bool HasOnlineSpellErrors() const = 0;

    virtual void GetCharAttribs( sal_Int32 nPara, std::vector<EECharAttrib>& rLst ) const = 0;

    virtual bool RemoveCharAttribs( sal_uInt16 nWhich ) = 0;

    /**
     * Get all text sections in this content.  Sections are non-overlapping
     * segments of text split either by paragraph boundaries or format
     * boundaries.  Each section object contains all applied formats and/or a
     * field item.
     */
    virtual void GetAllSections( std::vector<editeng::Section>& rAttrs ) const = 0;

    virtual bool IsFieldObject() const = 0;
    virtual const SvxFieldItem* GetField() const = 0;
    virtual const SvxFieldData* GetFieldData(sal_Int32 nPara, size_t nPos, sal_Int32 nType) const = 0;
    virtual bool HasField( sal_Int32 nType = css::text::textfield::Type::UNSPECIFIED ) const = 0;

    virtual const SfxItemSet& GetParaAttribs(sal_Int32 nPara) const = 0;

    virtual void GetStyleSheet(sal_Int32 nPara, OUString& rName, SfxStyleFamily& eFamily) const = 0;
    virtual void SetStyleSheet(sal_Int32 nPara, const OUString& rName, const SfxStyleFamily& eFamily) = 0;
    virtual bool ChangeStyleSheets(
        std::u16string_view rOldName, SfxStyleFamily eOldFamily, const OUString& rNewName, SfxStyleFamily eNewFamily) = 0;
    virtual void ChangeStyleSheetName(SfxStyleFamily eFamily, std::u16string_view rOldName, const OUString& rNewName) = 0;

    virtual editeng::FieldUpdater GetFieldUpdater() = 0;

    virtual bool operator==( const EditTextObject& rCompare ) const = 0;

    /** Compare, ignoring SfxItemPool pointer.
     */
    bool Equals( const EditTextObject& rCompare ) const;

    // #i102062#
    virtual bool isWrongListEqual(const EditTextObject& rCompare) const = 0;

#if DEBUG_EDIT_ENGINE
    virtual void Dump() const = 0;
#endif
    virtual void dumpAsXml(xmlTextWriterPtr pWriter) const = 0;
};

#endif // INCLUDED_EDITENG_EDITOBJ_HXX

/* vim:set shiftwidth=4 softtabstop=4 expandtab: */