summaryrefslogtreecommitdiff
path: root/include/editeng/editstat.hxx
blob: ba973a71fc2be02fb7a8e4e952c91314a7c54a40 (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
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/* -*- 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_EDITSTAT_HXX
#define INCLUDED_EDITENG_EDITSTAT_HXX

#include <rtl/ustring.hxx>
#include <tools/solar.h>
#include <i18nlangtag/lang.h>
#include <o3tl/typed_flags_set.hxx>

enum class EEControlBits
{
    NONE               = 0x00000000,
    USECHARATTRIBS     = 0x00000001,  // Use of hard character attributes
    USEPARAATTRIBS     = 0x00000002,  // Using paragraph attributes.
    CRSRLEFTPARA       = 0x00000004,  // Cursor is moved to another paragraph
    DOIDLEFORMAT       = 0x00000008,  // Formatting idle
    PASTESPECIAL       = 0x00000010,  // Allow PasteSpecial
    AUTOINDENTING      = 0x00000020,  // Automatic indenting
    UNDOATTRIBS        = 0x00000040,  // Undo for Attributes....
    ONECHARPERLINE     = 0x00000080,  // One character per line
    NOCOLORS           = 0x00000100,  // Engine: No Color
    OUTLINER           = 0x00000200,  // Special treatment Outliner/Outline mode
    OUTLINER2          = 0x00000400,  // Special treatment Outliner/Page
    ALLOWBIGOBJS       = 0x00000800,  // Portion info in text object
    ONLINESPELLING     = 0x00001000,  // During the edit Spelling
    STRETCHING         = 0x00002000,  // Stretch mode
    MARKFIELDS         = 0x00004000,  // Mark Fields with color
    RESTOREFONT        = 0x00010000,  // Restore Font in OutDev
    RTFSTYLESHEETS     = 0x00020000,  // Use Stylesheets when imported
    AUTOCORRECT        = 0x00080000,  // AutoCorrect
    AUTOCOMPLETE       = 0x00100000,  // AutoComplete
    AUTOPAGESIZEX      = 0x00200000,  // Adjust paper width to Text
    AUTOPAGESIZEY      = 0x00400000,  // Adjust paper height to Text
    AUTOPAGESIZE       = (AUTOPAGESIZEX | AUTOPAGESIZEY),
    TABINDENTING       = 0x00800000,  // Indent with tab
    FORMAT100          = 0x01000000,  // Always format to 100%
    ULSPACESUMMATION   = 0x02000000,  // MS Compat: sum SA and SB, not maximum value
    ULSPACEFIRSTPARA   = 0x04000000,  // MS Compat: evaluate also at the first paragraph
};
namespace o3tl
{
    template<> struct typed_flags<EEControlBits> : is_typed_flags<EEControlBits, 0x07ffffff> {};
}

#define EV_CNTRL_AUTOSCROLL         0x00000001  // Auto scrolling horizontally
#define EV_CNTRL_BIGSCROLL          0x00000002  // Scroll further to the cursor
#define EV_CNTRL_ENABLEPASTE        0x00000004  // Enable Paste
#define EV_CNTRL_SINGLELINEPASTE    0x00000008  // View: Paste in input line ...
#define EV_CNTRL_OVERWRITE          0x00000010  // Overwrite mode
#define EV_CNTRL_INVONEMORE         0x00000020  // Invalidate one pixel more
#define EV_CNTRL_AUTOSIZEX          0x00000040  // Automatically adapt to text width
#define EV_CNTRL_AUTOSIZEY          0x00000080  // Automatically adapt to Text width
#define EV_CNTRL_AUTOSIZE           (EV_CNTRL_AUTOSIZEX|EV_CNTRL_AUTOSIZEY)

#define EE_STAT_HSCROLL             0x00000001
#define EE_STAT_VSCROLL             0x00000002
#define EE_STAT_CURSOROUT           0x00000004
#define EE_STAT_CRSRMOVEFAIL        0x00000008
#define EE_STAT_CRSRLEFTPARA        0x00000010
#define EE_STAT_TEXTWIDTHCHANGED    0x00000020
#define EE_STAT_TEXTHEIGHTCHANGED   0x00000040
#define EE_STAT_WRONGWORDCHANGED    0x00000080

/*
    EE_STAT_CRSRLEFTPARA at the time cursor movement and the enter.
*/

inline void SetFlags( EEControlBits& rBits, EEControlBits nMask, bool bOn )
{
    if ( bOn )
        rBits |= nMask;
    else
        rBits &= ~nMask;
}

inline void SetFlags( sal_uLong& rBits, const sal_uInt32 nMask, bool bOn )
{
    if ( bOn )
        rBits |= nMask;
    else
        rBits &= ~nMask;
}

class EditStatus
{
protected:
    sal_uLong     nStatusBits;
    EEControlBits nControlBits;
    sal_Int32     nPrevPara;                  // for EE_STAT_CRSRLEFTPARA

public:
            EditStatus()                { nStatusBits = 0; nControlBits = EEControlBits::NONE; nPrevPara = -1; }

    void    Clear()                     { nStatusBits = 0; }
    void    SetControlBits( EEControlBits nMask, bool bOn )
                { SetFlags( nControlBits, nMask, bOn ); }

    sal_uLong   GetStatusWord() const       { return nStatusBits; }
    sal_uLong&  GetStatusWord()             { return nStatusBits; }

    EEControlBits  GetControlWord() const      { return nControlBits; }
    EEControlBits& GetControlWord()            { return nControlBits; }

    sal_Int32   GetPrevParagraph() const    { return nPrevPara; }
    sal_Int32&  GetPrevParagraph()          { return nPrevPara; }
};

#define SPELLCMD_IGNOREWORD         0x0001
#define SPELLCMD_STARTSPELLDLG      0x0002
#define SPELLCMD_ADDTODICTIONARY    0x0003
#define SPELLCMD_WORDLANGUAGE       0x0004
#define SPELLCMD_PARALANGUAGE       0x0005

struct SpellCallbackInfo
{
    sal_uInt16      nCommand;
    OUString        aWord;
    LanguageType    eLanguage;

    SpellCallbackInfo( sal_uInt16 nCMD, const OUString& rWord )
    : aWord( rWord )
    {
        nCommand = nCMD;
        eLanguage = LANGUAGE_DONTKNOW;
    }

    SpellCallbackInfo( sal_uInt16 nCMD, LanguageType eLang )
    {
        nCommand = nCMD;
        eLanguage = eLang;
    }
};

#endif // INCLUDED_EDITENG_EDITSTAT_HXX

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