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