1 // Scintilla source code edit control
2 /** @file ScintillaTypes.h
3 ** Types used to communicate with Scintilla.
5 // Copyright 1998-2019 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
8 /* Most of this file is automatically generated from the Scintilla.iface interface definition
9 * file which contains any comments about the definitions. ScintillaAPIFacer.py does the generation. */
11 #ifndef SCINTILLATYPES_H
12 #define SCINTILLATYPES_H
17 //++Autogenerated -- start of section automatically generated from Scintilla.iface
19 enum class WhiteSpace
{
22 VisibleAfterIndent
= 2,
23 VisibleOnlyInIndent
= 3,
26 enum class TabDrawMode
{
31 enum class EndOfLine
{
37 enum class IMEInteraction
{
48 enum class CursorShape
{
55 enum class MarkerSymbol
{
69 BoxPlusConnected
= 13,
71 BoxMinusConnected
= 15,
75 CirclePlusConnected
= 19,
77 CircleMinusConnected
= 21,
88 VerticalBookmark
= 32,
93 enum class MarkerOutline
{
94 HistoryRevertedToOrigin
= 21,
97 HistoryRevertedToModified
= 24,
107 enum class MarginType
{
117 enum class StylesCommon
{
125 FoldDisplayText
= 39,
130 enum class CharacterSet
{
155 enum class CaseVisible
{
162 enum class FontWeight
{
172 ListSelectedBack
= 3,
175 SelectionAdditionalText
= 12,
176 SelectionAdditionalBack
= 13,
177 SelectionSecondaryText
= 14,
178 SelectionSecondaryBack
= 15,
179 SelectionInactiveText
= 16,
180 SelectionInactiveBack
= 17,
182 CaretAdditional
= 41,
187 HotSpotActiveBack
= 71,
198 enum class IndicatorStyle
{
213 CompositionThick
= 14,
214 CompositionThin
= 15,
224 enum class IndicatorNumbers
{
228 HistoryRevertedToOriginInsertion
= 36,
229 HistoryRevertedToOriginDeletion
= 37,
230 HistorySavedInsertion
= 38,
231 HistorySavedDeletion
= 39,
232 HistoryModifiedInsertion
= 40,
233 HistoryModifiedDeletion
= 41,
234 HistoryRevertedToModifiedInsertion
= 42,
235 HistoryRevertedToModifiedDeletion
= 43,
239 enum class IndicValue
{
244 enum class IndicFlag
{
249 enum class AutoCompleteOption
{
254 enum class IndentView
{
261 enum class PrintOption
{
266 ColourOnWhiteDefaultBG
= 4,
270 enum class FindOption
{
274 WordStart
= 0x00100000,
277 Cxx11RegEx
= 0x00800000,
280 enum class ChangeHistoryOption
{
287 enum class FoldLevel
{
295 enum class FoldDisplayTextStyle
{
301 enum class FoldAction
{
305 ContractEveryLevel
= 4,
308 enum class AutomaticFold
{
315 enum class FoldFlag
{
317 LineBeforeExpanded
= 0x0002,
318 LineBeforeContracted
= 0x0004,
319 LineAfterExpanded
= 0x0008,
320 LineAfterContracted
= 0x0010,
321 LevelNumbers
= 0x0040,
325 enum class IdleStyling
{
339 enum class WrapVisualFlag
{
346 enum class WrapVisualLocation
{
349 StartByText
= 0x0002,
352 enum class WrapIndentMode
{
359 enum class LineCache
{
366 enum class PhasesDraw
{
372 enum class FontQuality
{
375 QualityNonAntialiased
= 1,
376 QualityAntialiased
= 2,
377 QualityLcdOptimized
= 3,
380 enum class MultiPaste
{
385 enum class Accessibility
{
390 enum class EdgeVisualStyle
{
403 enum class DocumentOption
{
417 enum class VisiblePolicy
{
422 enum class CaretPolicy
{
429 enum class SelectionMode
{
436 enum class CaseInsensitiveBehaviour
{
441 enum class MultiAutoComplete
{
446 enum class Ordering
{
452 enum class CaretSticky
{
458 enum class CaretStyle
{
463 OverstrikeBlock
= 0x10,
469 enum class MarginOption
{
474 enum class AnnotationVisible
{
481 enum class UndoFlags
{
486 enum class VirtualSpace
{
488 RectangularSelection
= 1,
493 enum class Technology
{
496 DirectWriteRetain
= 2,
500 enum class LineEndType
{
505 enum class RepresentationAppearance
{
511 enum class EOLAnnotationVisible
{
526 enum class Supports
{
529 FractionalStrokeWidth
= 2,
530 TranslucentStroke
= 3,
531 PixelModification
= 4,
532 ThreadSafeMeasureWidths
= 5,
535 enum class LineCharacterIndexType
{
541 enum class TypeProperty
{
547 enum class ModificationFlags
{
556 MultiStepUndoRedo
= 0x80,
557 LastStepInUndoRedo
= 0x100,
558 ChangeMarker
= 0x200,
559 BeforeInsert
= 0x400,
560 BeforeDelete
= 0x800,
561 MultilineUndoRedo
= 0x1000,
562 StartAction
= 0x2000,
563 ChangeIndicator
= 0x4000,
564 ChangeLineState
= 0x8000,
565 ChangeMargin
= 0x10000,
566 ChangeAnnotation
= 0x20000,
568 LexerState
= 0x80000,
569 InsertCheck
= 0x100000,
570 ChangeTabStops
= 0x200000,
571 ChangeEOLAnnotation
= 0x400000,
572 EventMaskAll
= 0x7FFFFF,
583 enum class FocusChange
{
621 enum class CompletionMethods
{
630 enum class CharacterSource
{
636 enum class Bidirectional
{
642 enum class Notification
{
645 SavePointReached
= 2002,
646 SavePointLeft
= 2003,
647 ModifyAttemptRO
= 2004,
656 UserListSelection
= 2014,
662 HotSpotDoubleClick
= 2020,
664 AutoCSelection
= 2022,
665 IndicatorClick
= 2023,
666 IndicatorRelease
= 2024,
667 AutoCCancelled
= 2025,
668 AutoCCharDeleted
= 2026,
669 HotSpotReleaseClick
= 2027,
672 AutoCCompleted
= 2030,
673 MarginRightClick
= 2031,
674 AutoCSelectionChange
= 2032,
676 //--Autogenerated -- end of section automatically generated from Scintilla.iface
678 using Position
= intptr_t;
679 using Line
= intptr_t;
681 using ColourAlpha
= int;
682 using uptr_t
= uintptr_t;
683 using sptr_t
= intptr_t;
685 //++Autogenerated -- start of section automatically generated from Scintilla.iface
687 constexpr Position InvalidPosition
= -1;
688 constexpr int CpUtf8
= 65001;
689 constexpr int MarkerMax
= 31;
690 constexpr int MaskFolders
= 0xFE000000;
691 constexpr int MaxMargin
= 4;
692 constexpr int FontSizeMultiplier
= 100;
693 constexpr int TimeForever
= 10000000;
694 constexpr int KeywordsetMax
= 8;
696 //--Autogenerated -- end of section automatically generated from Scintilla.iface
698 constexpr int IndicatorMax
= static_cast<int>(IndicatorNumbers::Max
);
700 // Functions to manipulate fields from a MarkerOutline
702 inline int operator<<(int i
, MarkerOutline marker
) noexcept
{
703 return i
<< static_cast<int>(marker
);
706 // Functions to manipulate fields from a FindOption
708 constexpr FindOption
operator|(FindOption a
, FindOption b
) noexcept
{
709 return static_cast<FindOption
>(static_cast<int>(a
) | static_cast<int>(b
));
712 inline FindOption
&operator|=(FindOption
&self
, FindOption a
) noexcept
{
717 // Functions to retrieve and manipulate fields from a FoldLevel
719 constexpr FoldLevel
operator&(FoldLevel lhs
, FoldLevel rhs
) noexcept
{
720 return static_cast<FoldLevel
>(static_cast<int>(lhs
) & static_cast<int>(rhs
));
723 constexpr FoldLevel
LevelNumberPart(FoldLevel level
) noexcept
{
724 return level
& FoldLevel::NumberMask
;
727 constexpr int LevelNumber(FoldLevel level
) noexcept
{
728 return static_cast<int>(LevelNumberPart(level
));
731 constexpr bool LevelIsHeader(FoldLevel level
) noexcept
{
732 return (level
& FoldLevel::HeaderFlag
) == FoldLevel::HeaderFlag
;
735 constexpr bool LevelIsWhitespace(FoldLevel level
) noexcept
{
736 return (level
& FoldLevel::WhiteFlag
) == FoldLevel::WhiteFlag
;
739 // Functions to manipulate fields from a FoldFlag
741 constexpr FoldFlag
operator|(FoldFlag a
, FoldFlag b
) noexcept
{
742 return static_cast<FoldFlag
>(static_cast<int>(a
) | static_cast<int>(b
));
745 // Functions to manipulate fields from a FontQuality
747 constexpr FontQuality
operator&(FontQuality a
, FontQuality b
) noexcept
{
748 return static_cast<FontQuality
>(static_cast<int>(a
) & static_cast<int>(b
));
751 // Functions to manipulate fields from a DocumentOption
753 constexpr DocumentOption
operator|(DocumentOption a
, DocumentOption b
) noexcept
{
754 return static_cast<DocumentOption
>(static_cast<int>(a
) | static_cast<int>(b
));
757 // Functions to manipulate fields from a CaretPolicy
759 constexpr CaretPolicy
operator|(CaretPolicy a
, CaretPolicy b
) noexcept
{
760 return static_cast<CaretPolicy
>(static_cast<int>(a
) | static_cast<int>(b
));
763 // Functions to manipulate fields from a CaretStyle
765 constexpr CaretStyle
operator|(CaretStyle a
, CaretStyle b
) noexcept
{
766 return static_cast<CaretStyle
>(static_cast<int>(a
) | static_cast<int>(b
));
769 constexpr CaretStyle
operator&(CaretStyle a
, CaretStyle b
) noexcept
{
770 return static_cast<CaretStyle
>(static_cast<int>(a
) & static_cast<int>(b
));
773 // Functions to manipulate fields from a LineEndType
775 constexpr LineEndType
operator&(LineEndType a
, LineEndType b
) noexcept
{
776 return static_cast<LineEndType
>(static_cast<int>(a
) & static_cast<int>(b
));
779 // Functions to manipulate fields from a RepresentationAppearance
781 constexpr RepresentationAppearance
operator|(RepresentationAppearance a
, RepresentationAppearance b
) noexcept
{
782 return static_cast<RepresentationAppearance
>(static_cast<int>(a
) | static_cast<int>(b
));
785 // Functions to manipulate fields from a LineCharacterIndexType
787 constexpr LineCharacterIndexType
operator|(LineCharacterIndexType a
, LineCharacterIndexType b
) noexcept
{
788 return static_cast<LineCharacterIndexType
>(static_cast<int>(a
) | static_cast<int>(b
));
791 // Functions to manipulate fields from a ModificationFlags
793 constexpr ModificationFlags
operator|(ModificationFlags a
, ModificationFlags b
) noexcept
{
794 return static_cast<ModificationFlags
>(static_cast<int>(a
) | static_cast<int>(b
));
797 constexpr ModificationFlags
operator&(ModificationFlags a
, ModificationFlags b
) noexcept
{
798 return static_cast<ModificationFlags
>(static_cast<int>(a
) & static_cast<int>(b
));
801 inline ModificationFlags
&operator|=(ModificationFlags
&self
, ModificationFlags a
) noexcept
{
806 // Functions to manipulate fields from a Update
808 constexpr Update
operator|(Update a
, Update b
) noexcept
{
809 return static_cast<Update
>(static_cast<int>(a
) | static_cast<int>(b
));
812 // Functions to manipulate fields from a KeyMod
814 constexpr KeyMod
operator|(KeyMod a
, KeyMod b
) noexcept
{
815 return static_cast<KeyMod
>(static_cast<int>(a
) | static_cast<int>(b
));
818 constexpr KeyMod
operator&(KeyMod a
, KeyMod b
) noexcept
{
819 return static_cast<KeyMod
>(static_cast<int>(a
) & static_cast<int>(b
));
822 constexpr KeyMod
ModifierFlags(bool shift
, bool ctrl
, bool alt
, bool meta
=false, bool super
=false) noexcept
{
824 (shift
? KeyMod::Shift
: KeyMod::Norm
) |
825 (ctrl
? KeyMod::Ctrl
: KeyMod::Norm
) |
826 (alt
? KeyMod::Alt
: KeyMod::Norm
) |
827 (meta
? KeyMod::Meta
: KeyMod::Norm
) |
828 (super
? KeyMod::Super
: KeyMod::Norm
);
831 // Test if an enum class value has some bit flag(s) of test set.
832 template <typename T
>
833 constexpr bool FlagSet(T value
, T test
) {
834 return (static_cast<int>(value
) & static_cast<int>(test
)) != 0;