$Date$
$Revision$
-- TODO compute width, height and depth from the values in the list
-- (From DS_LINKED_LIST)
-- Routines that ought to be in class ANY
-- (From KL_IMPORTED_ANY_ROUTINES)
-- Equality tester;
-- A void equality tester means that =
-- will be used as comparison criterion.
-- (From DS_SEARCHABLE)
-- Index of current internal cursor position
-- (From DS_LIST)
-- Item at index i
-- (Performance: O(i).)
-- (From DS_INDEXABLE)
-- Item at index i
-- (Performance: O(i).)
-- (From DS_INDEXABLE)
-- New external cursor for traversal
-- (From DS_TRAVERSABLE)
-- Number of items in list
-- (Performance: O(1).)
-- (From DS_CONTAINER)
-- Number of times v appears in list
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- (From DS_SEARCHABLE)
-- Is list equal to other?
-- Do not take cursor positions nor
-- equality_tester into account.
-- (Performance: O(count).)
-- (From ANY)
-- Is there no valid position to left of internal cursor?
-- (From DS_BILINEAR)
-- Can set_equality_tester be called with a_tester
-- as argument in current state of container?
-- (Default answer: True.)
-- (From DS_SEARCHABLE)
-- May list be extended with n items?
-- (From DS_EXTENDIBLE)
-- Does list include v?
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- (From DS_SEARCHABLE)
-- Is container empty?
-- (From DS_CONTAINER)
-- Is internal cursor on first item?
-- (From DS_LINEAR)
-- Is internal cursor on last item?
-- (From DS_BILINEAR)
-- Is there no item at internal cursor position?
-- (From DS_TRAVERSABLE)
-- Does container use the same comparison
-- criterion as other?
-- (From DS_SEARCHABLE)
-- Are v and u considered equal?
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- (From DS_SEARCHABLE)
-- Is internal cursor at same position as a_cursor?
-- (From DS_TRAVERSABLE)
-- Is container sorted according to a_sorter's criterion?
-- (From DS_SORTABLE)
-- Move internal cursor to last position.
-- (From DS_BILINEAR)
-- Move internal cursor to first position at or before current
-- position where item_for_iteration and v are equal.
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- Move before if not found.
-- (From DS_BILINEAR)
-- Move internal cursor to first position at or after current
-- position where item_for_iteration and v are equal.
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- Move after if not found.
-- (From DS_LINEAR)
-- Add items of other at i-th position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Performance: O(i+other.count).)
-- (From DS_INDEXABLE)
-- Add items of other to beginning of list.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Performance: O(other.count).)
-- (From DS_INDEXABLE)
-- Add items of other to end of list.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Performance: O(other.count).)
-- (From DS_EXTENDIBLE)
-- Add items of other to left of internal cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (From DS_LIST)
-- Add items of other to left of a_cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Synonym of a_cursor.extend_left (other).)
-- (Performance: O(other.count).)
-- (From DS_LIST)
-- Add items of other to right of internal cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (From DS_LIST)
-- Add items of other to right of a_cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Synonym of a_cursor.extend_right (other).)
-- (Performance: O(other.count).)
-- (From DS_LIST)
-- Add v to end of list.
-- Do not move cursors.
-- (Performance: O(1).)
-- (From DS_EXTENDIBLE)
-- Add items of other to beginning of list.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Performance: O(other.count).)
-- (From DS_INDEXABLE)
-- Add items of other to end of list.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Performance: O(other.count).)
-- (From DS_EXTENDIBLE)
-- Add items of other to left of internal cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (From DS_LIST)
-- Add items of other to left of a_cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Synonym of a_cursor.extend_left (other).)
-- (Performance: O(other.count).)
-- (From DS_LIST)
-- Add items of other to right of internal cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (From DS_LIST)
-- Add items of other to right of a_cursor position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Synonym of a_cursor.extend_right (other).)
-- (Performance: O(other.count).)
-- (From DS_LIST)
-- Add v at i-th position.
-- Do not move cursors.
-- (Performance: O(i).)
-- (From DS_INDEXABLE)
-- Add v to beginning of list.
-- Do not move cursors.
-- (Performance: O(1).)
-- (From DS_INDEXABLE)
-- Add v to end of list.
-- Do not move cursors.
-- (Performance: O(1).)
-- (From DS_EXTENDIBLE)
-- Add v to left of a_cursor position.
-- Do not move cursors.
-- (Synonym of a_cursor.put_left (v).)
-- (Performance: O(1).)
-- (From DS_LIST)
-- Add v to right of a_cursor position.
-- Do not move cursors.
-- (Synonym of a_cursor.put_right (v).)
-- (Performance: O(1).)
-- (From DS_LIST)
-- Add v at i-th position.
-- Do not move cursors.
-- (Performance: O(i).)
-- (From DS_INDEXABLE)
-- Add v to beginning of list.
-- Do not move cursors.
-- (Performance: O(1).)
-- (From DS_INDEXABLE)
-- Add items of other at i-th position.
-- Keep items of other in the same order.
-- Do not move cursors.
-- (Performance: O(i+other.count).)
-- (From DS_INDEXABLE)
-- Add v to left of internal cursor position.
-- Do not move cursors.
-- (From DS_LIST)
-- Add v to left of a_cursor position.
-- Do not move cursors.
-- (Synonym of a_cursor.put_left (v).)
-- (Performance: O(1).)
-- (From DS_LIST)
-- Add v to right of internal cursor position.
-- Do not move cursors.
-- (From DS_LIST)
-- Add v to right of a_cursor position.
-- Do not move cursors.
-- (Synonym of a_cursor.put_right (v).)
-- (Performance: O(1).)
-- (From DS_LIST)
-- Replace item at index i by v.
-- Do not move cursors.
-- (Performance: O(i).)
-- (From DS_INDEXABLE)
-- Replace item at internal cursor position by v.
-- Do not move cursors.
-- (From DS_LIST)
-- Remove all occurrences of v.
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- Move all cursors off.
-- (Performance: O(count).)
-- (From DS_LIST)
-- Keep n first items in list.
-- Move all cursors off.
-- (Performance: O(n).)
-- (From DS_INDEXABLE)
-- Keep n last items in list.
-- Move all cursors off.
-- (Performance: O(count-n).)
-- (From DS_INDEXABLE)
-- Remove n first items from list.
-- Move all cursors off.
-- (Performance: O(n).)
-- (From DS_INDEXABLE)
-- Remove n last items from list.
-- Move all cursors off.
-- (Performance: O(count-n).)
-- (From DS_INDEXABLE)
-- Remove item at i-th position.
-- Move any cursors at this position forth.
-- (Performance: O(i).)
-- (From DS_INDEXABLE)
-- Remove item at a_cursor position.
-- Move any cursors at this position forth.
-- (Synonym of a_cursor.remove.)
-- (Performance: O(count) if a_cursor.is_last, O(1) otherwise.)
-- (From DS_LIST)
-- Remove item at beginning of list.
-- Move any cursors at this position forth.
-- (Performance: O(1).)
-- (From DS_INDEXABLE)
-- Remove item at end of list.
-- Move any cursors at this position forth.
-- (Performance: O(count).)
-- (From DS_INDEXABLE)
-- Remove item to left of a_cusor position.
-- Move any cursors at this position forth.
-- (Synonym of a_cursor.remove_left.)
-- (Performance: O(a_cursor.index).)
-- (From DS_LIST)
-- Remove item to right of a_cursor position.
-- Move any cursors at this position forth.
-- (Synonym of a_cursor.remove_right.)
-- (Performance: O(1).)
-- (From DS_LIST)
-- Remove all items from list.
-- Move all cursors off.
-- (Performance: O(1).)
-- (From DS_CONTAINER)
-- Clone of current object
-- (From KL_CLONABLE)
-- TODO compute width, height and depth from the values in the list
-- (From DS_LINKED_LIST)
-- Add a_cursor to the list of traversing cursors
-- (i.e. cursors associated with current container
-- and which are not currently off).
-- (From DS_TRAVERSABLE)
-- Is there no valid position to right of a_cursor?
-- (From DS_LINEAR)
-- Move a_cursor to previous position.
-- (Performance: O(a_cursor.index).)
-- (From DS_BILINEAR)
-- Is there no valid position to left of a_cursor?
-- (From DS_BILINEAR)
-- Move a_cursor to last position.
-- (Performance: O(1).)
-- (From DS_BILINEAR)
-- Move a_cursor to next position.
-- (Performance: O(1).)
-- (From DS_LINEAR)
-- Move a_cursor to i-th position.
-- (Performance: O(i).)
-- (From DS_LIST)
-- Move a_cursor to other's position.
-- (Performance: O(1).)
-- (From DS_TRAVERSABLE)
-- Index of a_cursor's current position
-- (Performance: O(count).)
-- (From DS_LIST)
-- Is a_cursor on first item?
-- (From DS_LINEAR)
-- Is a_cursor on last item?
-- (From DS_BILINEAR)
-- Item at a_cursor position
-- (Performance: O(1).)
-- (From DS_TRAVERSABLE)
-- Is there no item at a_cursor position?
-- (From DS_TRAVERSABLE)
-- Is a_cursor at same position as other?
-- (From DS_TRAVERSABLE)
-- Move a_cursor to first position at or before its current
-- position where cursor_item (a_cursor) and v are equal.
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- Move before if not found.
-- (Performance: O(a_cursor.index).)
-- (From DS_BILINEAR)
-- Move a_cursor to first position at or after its current
-- position where cursor_item (a_cursor) and v are equal.
-- (Use equality_tester's comparison criterion
-- if not void, use = criterion otherwise.)
-- Move after if not found.
-- (From DS_LINEAR)
-- Move a_cursor to first position.
-- (Performance: O(1).)
-- (From DS_LINEAR)
-- Remove a_cursor from the list of traversing cursors
-- (i.e. cursors associated with current container
-- and which are not currently off).
-- (From DS_TRAVERSABLE)
-- Sort container using a_sorter's algorithm.
-- (From DS_SORTABLE)
-- Set equality_tester to a_tester.
-- A void equality tester means that =
-- will be used as comparison criterion.
-- (From DS_SEARCHABLE)
-- Draws the object to the framebuffer at the 'origin' position
-- with a given rotation and scales it with the 'scale' vector
-- (From EM_3D_OBJECT)
-- Specify the scale vector
-- (From EM_3D_OBJECT)
-- The angle between the x-axis and our direction
-- (From EM_3D_OBJECT)
-- The angle between the y-axis and our direction
-- (From EM_3D_OBJECT)
-- The angle between the z-axis and our direction
-- (From EM_3D_OBJECT)
-- The size of the bounding box in z-direction
-- (From EM_3D_OBJECT)
-- The size of the bounding box in y-direction
-- (From EM_3D_OBJECT)
-- The start coordinates of the object
-- (From EM_3D_OBJECT)
-- The scale vector of the object
-- (From EM_3D_OBJECT)
-- The size of the bounding box in x-direction
-- (From EM_3D_OBJECT)
-- First cell in list
-- (From DS_LINKED_LIST)
-- Last cell in list
-- (From DS_LINKED_LIST)
A EM_3D_OBJECT_CONTAINER is a DS_LINKED_LIST of EM_3D_OBJECT. The EM_3D_OBJECT_CONTAINER
itself is a EM_3D_OBJECT. If it is drawn all containing EM_3D_OBJECTs are drawn.
First element in the LIST is drawn first, last element is drawn last.
An EM_3D_OBJECT_CONTAINER is a new coordinate system for all its elements. All the
elements are drawn relativ to the x and y position of the
EM_3D_OBJECT_CONTAINER.