=========== Alph design =========== Alph is an implementation of xanalogical hypertext (see e.g. Nelson's writings). The fundamental point in xanalogical hypertext is that each smallest unit of media has a unique identity. Alph does not use the tumbler model in previous implementations, but is rather based on *scrollblocks* - fixed units of fluid media. This allows Alph to exist on top of Storm. The media types handled by Alph are - text - image - pageimage (e.g. PDF files): images of several consecutive pages There additionally exist interfaces for - audio - video but these have not yet been implemented and will not be discussed further in this document. The inheritance hierarchy between the core media type interfaces is as follows: .. UML:: alph_mediatypes class Span "interface" methods intersects(Span s) getScrollId() class Span1D "interface" inherit Span methods int offset() int length() Span1D subSpan(..) Span1D append(Span1D s) class TextSpan "interface" inherit Span1D methods String getText() class PageSpan "interface" inherit Span1D methods PageImageSpan getPage(int ind) dep "create" PageImageSpan class ImageSpan "interface" inherit Span methods Point getLocation() Dimension getSize() ImageSpan subArea(..) class PageImageSpan "interface" inherit ImageSpan methods int getPageIndex() --- Span.c = (0,0); horizontally(20, vs, TextSpan, PageSpan, PageImageSpan, ImageSpan); vs.c = Span.c + (0, -500); Span1D.c = .5[Span.c, TextSpan.c]; Note: Spans are immutable objects - the ``append()`` method returns a new span, if the the object and the parameter were consecutive in the right order.