]> git.saurik.com Git - wxWidgets.git/blobdiff - src/stc/scintilla/include/Accessor.h
1) fixed handling of 48bit colors in XPMs
[wxWidgets.git] / src / stc / scintilla / include / Accessor.h
index 031ad7a91459147c7425fd07d7a7d5c426943e6c..b4b7e62ecf2d8573d18b9d4b8b9c18bbb3df3234 100644 (file)
@@ -5,29 +5,28 @@
 
 enum { wsSpace = 1, wsTab = 2, wsSpaceTab = 4, wsInconsistent=8};
 
+class Accessor;
+
+typedef bool (*PFNIsCommentLeader)(Accessor &styler, int pos, int len);
+
+// Interface to data in a Scintilla
 class Accessor {
 protected:
-       // bufferSize is a trade off between time taken to copy the characters and SendMessage overhead
+       enum {extremePosition=0x7FFFFFFF};
+       // bufferSize is a trade off between time taken to copy the characters and retrieval overhead
        // slopSize positions the buffer before the desired position in case there is some backtracking
        enum {bufferSize=4000, slopSize=bufferSize/8};
        char buf[bufferSize+1];
-       WindowID id;
-       PropSet &props;
        int startPos;
        int endPos;
-       int lenDoc;
-       int offset;     // Optional but including an offset makes GCC generate better code 
        int codePage;   
-       bool InternalIsLeadByte(char ch);
-       void Fill(int position);
+
+       virtual bool InternalIsLeadByte(char ch)=0;
+       virtual void Fill(int position)=0;
 public:
-       Accessor(WindowID id_, PropSet &props_, int offset_=0) : 
-                       id(id_), props(props_), startPos(0x7FFFFFFF), endPos(0), 
-                       lenDoc(-1), offset(offset_), codePage(0) {
-       }
-       void SetCodePage(int codePage_) { codePage = codePage_; }
+       Accessor() : startPos(extremePosition), endPos(0), codePage(0) {}
+       virtual ~Accessor() {}
        char operator[](int position) {
-               position += offset;
                if (position < startPos || position >= endPos) {
                        Fill(position);
                }
@@ -35,7 +34,6 @@ public:
        }
        char SafeGetCharAt(int position, char chDefault=' ') {
                // Safe version of operator[], returning a defined value for invalid position 
-               position += offset;
                if (position < startPos || position >= endPos) {
                        Fill(position);
                        if (position < startPos || position >= endPos) {
@@ -48,41 +46,25 @@ public:
        bool IsLeadByte(char ch) {
                return codePage && InternalIsLeadByte(ch);
        }
-       char StyleAt(int position);
-       int GetLine(int position);
-       int LineStart(int line);
-       int LevelAt(int line);
-       int Length();
-       void Flush() {
-               startPos = 0x7FFFFFFF;
-               lenDoc = -1;
-       }
-       int GetLineState(int line);
-       int SetLineState(int line, int state);
-       PropSet &GetPropSet() { return props; }
-};
-
-class StylingContext;
+       void SetCodePage(int codePage_) { codePage = codePage_; }
 
-typedef bool (*PFNIsCommentLeader)(StylingContext &styler, int pos, int len);
+       virtual char StyleAt(int position)=0;
+       virtual int GetLine(int position)=0;
+       virtual int LineStart(int line)=0;
+       virtual int LevelAt(int line)=0;
+       virtual int Length()=0;
+       virtual void Flush()=0;
+       virtual int GetLineState(int line)=0;
+       virtual int SetLineState(int line, int state)=0;
+       virtual int GetPropertyInt(const char *key, int defaultValue=0)=0;
 
-class StylingContext : public Accessor {
-       char styleBuf[bufferSize];
-       int validLen;
-       char chFlags;
-       char chWhile;
-       unsigned int startSeg;
-public:
-       StylingContext(WindowID id_, PropSet &props_, int offset_=0) : 
-               Accessor(id_,props_,offset_), validLen(0), chFlags(0) {}
-       void StartAt(unsigned int start, char chMask=31);
-       void SetFlags(char chFlags_, char chWhile_) {chFlags = chFlags_; chWhile = chWhile_; };
-       unsigned int GetStartSegment() { return startSeg; }
-       void StartSegment(unsigned int pos);
-       void ColourTo(unsigned int pos, int chAttr);
-       int GetLine(int position);
-       void SetLevel(int line, int level);
-       void Flush();
-       int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0);
+       // Style setting
+       virtual void StartAt(unsigned int start, char chMask=31)=0;
+       virtual void SetFlags(char chFlags_, char chWhile_)=0;
+       virtual unsigned int GetStartSegment()=0;
+       virtual void StartSegment(unsigned int pos)=0;
+       virtual void ColourTo(unsigned int pos, int chAttr)=0;
+       virtual void SetLevel(int line, int level)=0;
+       virtual int IndentAmount(int line, int *flags, PFNIsCommentLeader pfnIsCommentLeader = 0)=0;
 };