Skip to content

Concepts

George Birbilis edited this page Sep 15, 2022 · 16 revisions

Initial Design: https://prezi.com/view/a1tJgWgr4pUiLwyM4eiP/

Current Implementation:

A Story is comprised of multiple StoryItem objects.

The RootStoryItem contains everything, with each StoryItem potentially containing other StoryItems in a parent-child relationship, forming a conceptual (inverse) tree structure. StoryItems are ordered inside their ParentStoryItem, with the ones closer to their parent appearing visually under other siblings if their bounds overlap.

A parent-child relationship means that the lifetime (its additon to and removal from a Story) and the visual position of a StoryItem depends on its parent. Multiple StoryItems can be loaded or saved (stored) from/to a .readcom file by acting on their parent (or grandparent or grand-grand-parent etc.) item and can be moved and resized all together by manipulating an ancestor StoryItem.

The is only one ActiveStoryItem at any time. In Edit mode it appears with a dashed-line border. Edit Actions (like Cut/Copy/Paste) act on the ActiveStoryItem. When in non-Edit mode user actions are confined to the children of the ActiveStoryItem.

A StoryItem can be set to be a StoryPoint. In non-Edit mode the user can only navigate among (activate) StoryPoints. Upon activation of StoryItem that is a StoryPoint, the display gets zoomed to the bounds of that StoryPoint.

There exist different kinds of StoryItems:

  • An ImageStoryItem can be used to group other StoryItems and to (optionally) display a background image (either a bitmap - JPEG or PNG - or a vector - SVG - one) underneath.
  • A TextStoryItem can display text (with word-wrap and autosizing to fit) with a specific style and alignment.
  • An AudioStoryItem is only visible in Edit mode as an icon and in non-Edit mode is hidden but audible.

Parameters of a StoryItem can be edited via a StoryItemOptions popup panel, with common options shared by all StoryItem types and each type having in addition its own specific options (e.g. ImageStoryItemOptions and TextStoryItemOptions).

Clone this wiki locally