1 // Scintilla source code edit control
2 /** @file EditModel.h
3  ** Defines the editor state that must be visible to EditorView.
4  **/
5 // Copyright 1998-2014 by Neil Hodgson <neilh@scintilla.org>
6 // The License.txt file describes the conditions under which this software may be distributed.
7 
8 #ifndef EDITMODEL_H
9 #define EDITMODEL_H
10 
11 namespace Scintilla {
12 
13 /**
14 */
15 class Caret {
16 public:
17 	bool active;
18 	bool on;
19 	int period;
20 
21 	Caret();
22 };
23 
24 class EditModel {
25 public:
26 	bool inOverstrike;
27 	int xOffset;		///< Horizontal scrolled amount in pixels
28 	bool trackLineWidth;
29 
30 	SpecialRepresentations reprs;
31 	Caret caret;
32 	SelectionPosition posDrag;
33 	Sci::Position braces[2];
34 	int bracesMatchStyle;
35 	int highlightGuideColumn;
36 	Selection sel;
37 	bool primarySelection;
38 
39 	enum IMEInteraction { imeWindowed, imeInline } imeInteraction;
40 
41 	int foldFlags;
42 	int foldDisplayTextStyle;
43 	std::unique_ptr<IContractionState> pcs;
44 	// Hotspot support
45 	Range hotspot;
46 	Sci::Position hoverIndicatorPos;
47 
48 	// Wrapping support
49 	int wrapWidth;
50 
51 	Document *pdoc;
52 
53 	EditModel();
54 	// Deleted so EditModel objects can not be copied.
55 	EditModel(const EditModel &) = delete;
56 	EditModel(EditModel &&) = delete;
57 	EditModel &operator=(const EditModel &) = delete;
58 	EditModel &operator=(EditModel &&) = delete;
59 	virtual ~EditModel();
60 	virtual Sci::Line TopLineOfMain() const = 0;
61 	virtual Point GetVisibleOriginInMain() const = 0;
62 	virtual Sci::Line LinesOnScreen() const = 0;
63 	virtual Range GetHotSpotRange() const = 0;
64 };
65 
66 }
67 
68 #endif
69