aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/PositionCache.h
diff options
context:
space:
mode:
authorNeil <nyamatongwe@gmail.com>2013-08-07 15:52:25 +1000
committerNeil <nyamatongwe@gmail.com>2013-08-07 15:52:25 +1000
commit85441d442a67ecae557e7ec74409d0dc1e3c1cac (patch)
treee603496a70f0391882ca1d29f7e0fc47b6636f94 /src/PositionCache.h
parent445144addd4854d8f99d9c87a9c4955556faaa19 (diff)
downloadscintilla-mirror-85441d442a67ecae557e7ec74409d0dc1e3c1cac.tar.gz
Optimize performance with many control characters such as when opening
a binary file. Simplify use of BreakFinder and use for layout as well as drawing.
Diffstat (limited to 'src/PositionCache.h')
-rw-r--r--src/PositionCache.h14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/PositionCache.h b/src/PositionCache.h
index 10afbd972..a0b805743 100644
--- a/src/PositionCache.h
+++ b/src/PositionCache.h
@@ -134,6 +134,15 @@ public:
void Clear();
};
+struct TextSegment {
+ int start;
+ int length;
+ Representation *repr;
+ TextSegment(int start_=0, int length_=0, Representation *repr_=0) :
+ start(start_), length(length_), repr(repr_) {
+ }
+};
+
// Class to break a line of text into shorter runs at sensible places.
class BreakFinder {
LineLayout *ll;
@@ -146,6 +155,7 @@ class BreakFinder {
int saeNext;
int subBreak;
Document *pdoc;
+ EncodingFamily encodingFamily;
SpecialRepresentations *preprs;
void Insert(int val);
// Private so BreakFinder objects can not be copied
@@ -159,8 +169,8 @@ public:
BreakFinder(LineLayout *ll_, int lineStart_, int lineEnd_, int posLineStart_,
int xStart, bool breakForSelection, Document *pdoc_, SpecialRepresentations *preprs_);
~BreakFinder();
- int First() const;
- int Next();
+ TextSegment Next();
+ bool More() const;
};
class PositionCache {