see object_layers for something up-to date with my everchanging structures. This is the new order: O = object P = property M = method ------------------ Local ----------------------------- | ---------- Shared ----------- AKA "vif" | Display M -> WriteText | M -> CursorPos | P -> Width | P -> Height | O -> Helm O -> Mouse P -> focus (window) | P -> Position | O -> Keyboard P -> focus (window) | P -> Position | -----------------^ Hardware ^----------------------------------- O -> Window P -> Scroll Location | V--AKA "viewport" | O -> File filter... O -> Inp. filter o -> Helm... | O -> disp. filter M -> SetDisplay | M -> LineOffset | M -> LineLength | M -> ReDraw | M -> SetScroll | M -> SetSource | M -> GetSel | O -> | FieldProps P -> CursorList O -> Cursor P -> startLoc (ContentBuff) | P -> endLoc (ContentBuff) | P -> Owner M -> ReplaceSel | V--AKA "CXstring" O -> | DataBuff P -> Size P -> Width | M -> LoadFile (should be in file filter) P -> Height | M -> GetSize M -> WriteText | M -> SaveFile (should be in file filter) M -> CursorPos | P -> ContentsBuff M -> WindowPos | M -> WindowSize | ++++++++++++++++++++++++++++++ R 2 ++++++++++++++++++++++++++++++++++++++++++++++++++++ Structure: Accumulator <-> | <- ContentFilter <- ContentGenerator (like a keyboard object) | -> DisplayFilter -> Display | <-> FileFilter <-> File | <-> NetworkFilter <-> Network <-> | <- ContentFilter <- ContentGenerator . | -> DisplayFilter -> Display . | <-> FileFilter <-> File . | DONT EVEN THINK OF ANOTHER NETWORK FILTER. +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ BookMarks: - Owner (editor instance?) - Index - Position (accumulator 1D position) - Type (bitwise: 0 = unassigned, 1 = start, 2 = end, 3 = single ) "CharacterField" is a base class for "Display" and "Window" it has: M -> WriteText M -> CursorPos P -> Width P -> Height Cursor Positioning: Mouse / Keyboard -> filter -> startLoc / endLoc (CursorList[n](dataBuff)) Text Drawing data flow: ContentBuff(of DataBuff) -> filter -> Window -> Display Cursor Drawing data flow: startLoc / endLoc -> Window -> Display Content Modification program flow: Mouse / Keyboard -> filter -> ContentsBuff(DataBuff) ---- filter: translate between screen and file mapping. Cursor: "edit Region" the effected area of data that is modified by application of content. ///////////////////////////////////////////////////////////////////////////////////////////////////// what is what and how things are structured: dependencies: viewport window vif cxstring cestypes descriptions: vif: "visual interface" An abstraction of the device that displays the text. window: An area of a vif at a position. To a viewport this should look like a vif. cxstring: (Accumulator) General string handler functions. viewport: (DisplayFilter) Functionality to take text from a file and format it for an area of limited size. Able to format any "area" of the text. outputs to a vif (or window). ////////////////////////////////////////////////// The Helm has an array of Devices. This is an example of a keyboard and mouse, but anything that can generate content, commands, or a status can be used. L8tr: "All objects are controlled by command calls, details of the command determine content" definitions: content viewable characters commands unviewable characters (that generate events) status things that need to be polled to return extra data