Tags Redraw Operation -------------------------------------------- ScreenStart Block Selection (line) Translations (tab expansion) Trimming (visable line) Cursors Colorization (syntax hilighting) ------------------------- pos = GetLine(TBuffer, pos) HandleError(Translators.call(TBuffer)) HandleError(Trim(TBuffer) HandleError(Colorizers.call(TBuffer, CBuffer) HandleError(DisplayLine(TBuffer, CBuffer) -------------------- for (LineCounter = 0; LineCounter < Display->Height; LineCounter++ ) { // First we get data from the buffer to be processed Dataf.SelectionStart ( Dataf.SelectionEnd() + 1 ); // Get a line Dataf.SelectionEnd ( Dataf.LineEnd() ); Dataf.Read ( LineBuff, LINEBUFF_SIZE ); // Next we change the colours of things, er go cursors or syntax hilighting // It is important to do this while the data still syncs with the primary buffer positions // it is also important that all the data be fed through any will-be syntax engines PropManager.Colourize( LineBuff, LINEBUFF_SIZE, PropBuff ); // Hilight Props // We then process control characters, like tabs // due to a lack of unification this needs to make corresponding prop buffer changes Translator.Translate ( LineBuff, LINEBUFF_SIZE, PropBuff ); // Translate control characters // We then trim the data according to x scroll and display width // VVVV txtbuff, txtBuffLen, startCrop , CropLen(minSize) , auxbuff ); DisplayModule.Trim ( LineBuff, LINEBUFF_SIZE, ScrollLoc.X, (Display->Width -1), PropBuff ); // Trim to width // Were done, post the result. Display->BufferPos (0, LineCounter + 1); // Write to display Display->BufferText ( LineBuff, PropBuff ); } // end of for Objects needed --------------- Generic Error Handler HandleError(foo) Linked List Function Call CallChain(foo) FunctionChain - Add (function *) - Remove (function *) - Call (function *) - Delete (function *)