RE: Cursors System for holding shared informaion on non-content. tag { Position ( first character effected ) Owner ( unique within scope of editor ) Index ( uniquie within scope of owner ) Type ( reference for forign translation ) } Type(s) should be standardized.. 8 bits is reasonable as long as its only used as a type number. Initial types are: 0 = reserved 1 = reserved 2 = Cursor start 3 = Cursor end 4 = BookMark start 5 = BookMark end 8 = Screen top-left 9 = Screen bottom-right 32 = unknown single point 127 = unknown double point start 128 = unknown double point end * not bitmapped Non content dynamic positional markers: cursors bookmarks frameMarker ----- The accumulator is responcable for holding all content related information, this means fonts / colours and that this 'other' system is for information not part of the result when saved. Font / colour inforamtion that is supposed to be saved ( for file types that have that sort of thing) will need a new contentfilter and displayFilter. -------------- stages of cursor hilighting "during screen draw": - finding out what tags apply to the draw region - finding out what the user wants done with the various tags (mapping) - prioratizing the tags - building the resulting attribute map ( colourization ) This is done through several objects from the high level. - The displayfilter draws the text and maybe syntax hilights (not) - A PropsFilter generates supurflious attributes these need to be bound with an object...PropFilter The propfilter needs to also have information as to what to do with what props. This would probably be best done with an attribute map. The map would hold the following: - prop owner - prop index - prop type - background colour - foreground colour - content override A priority would be effectivly generated by the position in the map that matched the tag. Earlier positions take higher priority. ( or later!?) As the propfilter finds props on the field, it would check this list to find out what (if any) modifications it should make to screen attributes. Multiple prop filters may be used to translate custom prop types. (e.g. chaining colourizers) The propfilter should default to something that ignores unknown (tag) types, and sets some default colours to cursors. The storage and access objects should be different PropAccumulator // > = internal - add prop - delete prop - >sort props - get prop - modify prop - clear props (varoius scopes) PropFilter - >prop search (position) - >sort props (user defined z leveling) - >map props (use z leveling to make an attribute map (or as user defined)) - do props ( position ) ( general wrapper ) - SetSource ( accumulator ) how to speed up drawing of 'sequential' characters... draw system should be changed to buffer the screen before its refreshed. **************** The object currently known as contentfilter needs to be broken up into two things: BlockEditor and BufferNavigator -BlockEditor would have the text block interface to the accumulator -BlockNavigator would provide translations between accumulator offset and 2d character positions. with the addition to be able to translate x.y to character offsets. offset->point2d point2d->offset endOfLine() lineLength()