changeset 153:291afc2a8ca2

Updated README: replaced Layer with View.
author Mikhail Kryshen <mikhail@kryshen.net>
date Mon, 14 Apr 2014 15:37:28 +0400
parents 9997ac717c3c
children ed36fcf061de
files README.rst README.ru
diffstat 2 files changed, 33 insertions(+), 30 deletions(-) [+]
line diff
     1.1 --- a/README.rst	Mon Apr 07 20:19:02 2014 +0400
     1.2 +++ b/README.rst	Mon Apr 14 15:37:28 2014 +0400
     1.3 @@ -10,27 +10,27 @@
     1.4  It is based around the idea of basically stateless UI elements defined
     1.5  by the following simple protocol::
     1.6  
     1.7 -  (defprotocol Layer
     1.8 -    (render! [layer]
     1.9 -      "Draws the layer.")
    1.10 -    (geometry [layer]
    1.11 -      "Returns preferred size for the layer."))
    1.12 +  (defprotocol View
    1.13 +    (render! [view]
    1.14 +      "Draws the view.")
    1.15 +    (geometry [view]
    1.16 +      "Returns preferred size for the view."))
    1.17  
    1.18 -Layer functions are called in the Layer context which is defined by
    1.19 +View functions are called in the View context which is defined by
    1.20  bindings to vars including:
    1.21  
    1.22  - ``*graphics*`` — an instance of java.awt.Graphics2D used for drawing;
    1.23  - ``*width*`` and ``*height*`` — size of the drawing bounds;
    1.24  - ``*clip*`` — clipping area (instance of java.awt.geom.Shape).
    1.25  
    1.26 -In the ``render!`` function layer could draw using the provided
    1.27 -Graphics2D instance, display another layers at the specified locations
    1.28 +In the ``render!`` function View could draw using the provided
    1.29 +Graphics2D instance, display another Views at the specified locations
    1.30  relative to it's own context, and register event handlers.
    1.31  
    1.32  Event dispatching is done by remembering the clipping areas and affine
    1.33 -transforms of visible layer contexts after every repaint for the time
    1.34 +transforms of visible View contexts after every repaint for the time
    1.35  until the rendering of the next frame is complete.
    1.36  
    1.37 -It is possible to draw layers asynchronously in parallel threads by
    1.38 -wrapping them in ``async-layer``, which uses two off-screen buffers
    1.39 +It is possible to draw Views asynchronously in parallel threads by
    1.40 +wrapping them in ``async-view``, which uses two off-screen buffers
    1.41  (triple buffering) to avoid locking.
     2.1 --- a/README.ru	Mon Apr 07 20:19:02 2014 +0400
     2.2 +++ b/README.ru	Mon Apr 14 15:37:28 2014 +0400
     2.3 @@ -11,19 +11,21 @@
     2.4   - произвольная область отсечения (форма элементов), которая
     2.5     учитывается при обработке событий.
     2.6  
     2.7 -Базовый элемент пользовательского интерфейса описан протоколом Layer
     2.8 -(слой), который содержит всего две функции:
     2.9 +Базовый элемент пользовательского интерфейса описан протоколом View
    2.10 +(визуальный объект), который содержит всего две функции:
    2.11  
    2.12    render! — отрисовка,
    2.13    geometry — получение предпочтительных размеров элемента.
    2.14  
    2.15 -Слой, в отличии от обычных компонентов интерфейса или элементов графов
    2.16 -сцены в системах визуализации, не имеет состояния (координаты, размер,
    2.17 -элемент-родитель, дочерние элементы) и может быть изображен по-разному
    2.18 -на каждой итерации цикла отрисовки.
    2.19 +Визуальный объект в Indyvon, в отличии от обычных компонентов
    2.20 +интерфейса или элементов графов сцены в системах визуализации, не
    2.21 +имеет состояния (координаты, размер, элемент-родитель, дочерние
    2.22 +элементы) и может быть изображен по-разному на каждой итерации цикла
    2.23 +отрисовки.
    2.24  
    2.25 -Функции слоя выполняются в контексте слоя (layer context), который
    2.26 -представлен набором связанных переменных, в том числе:
    2.27 +Функции слоя выполняются в контексте визуального объекта (view
    2.28 +context), который представлен набором связанных переменных, в том
    2.29 +числе:
    2.30  
    2.31    *graphics* — экземпляр java.awt.Graphics2D для рисования,
    2.32    *width* и *height* — размеры области рисования,
    2.33 @@ -35,27 +37,28 @@
    2.34  контекста. При установке обработчика контекст сохраняется для
    2.35  обработки событий до завершения следующей перерисовки сцены.
    2.36  
    2.37 -Слои могут инициировать перерисовку с помощью механизма
    2.38 +Визуальные объекты могут инициировать перерисовку с помощью механизма
    2.39  уведомлений. Обработчики уведомлений, как и обработчики событий,
    2.40  устанавливаются на время до следующей перерисовки.
    2.41  
    2.42  Таким образом, получать события ввода и вызывать перерисовку могут
    2.43 -только те слои, которые в данный момент видны на экране, т. е.
    2.44 -участвовали в последней перерисовке.
    2.45 +только те визуальные объекты, которые в данный момент видны на экране,
    2.46 +т. е.  участвовали в последней перерисовке.
    2.47  
    2.48  Сцена может строиться во время выполнения отрисовки (как в IMGUI:
    2.49  "сейчас нарисовать здесь кнопку") или описываться путем композиции
    2.50 -слоев (предполагая, что реализованы функции border, vbox, label и
    2.51 -button, которые создают слои):
    2.52 +визуальных объектов (предполагая, что реализованы функции border,
    2.53 +vbox, label и button, которые возвращают реализации View):
    2.54  
    2.55    (border
    2.56      (hbox
    2.57        (label "Comment:") 
    2.58        (button (label "Button"))))
    2.59  
    2.60 -Отрисовку можно распараллелить с помощью функции async-layer, которая
    2.61 -возвращает слой, показывающий результат отрисовки слоя-аргумента. При
    2.62 -этом отрисовка слоя-аргумента выполняется в параллельной нити в буфер
    2.63 -в памяти. Для избежания блокировок используется тройная
    2.64 -буферизация. Слои, помещенные в async-layer, не будут ограничивать
    2.65 -частоту кадров и могут обновляться медленнее, чем основная сцена.
    2.66 +Отрисовку можно распараллелить с помощью функции async-view, которая
    2.67 +возвращает визуальный объект, показывающий результат отрисовки
    2.68 +объекта-аргумента. При этом отрисовка аргумента выполняется в
    2.69 +параллельной нити в буфер в памяти. Для избежания блокировок
    2.70 +используется тройная буферизация. Визуальные объекты, помещенные в
    2.71 +async-view, не будут ограничивать частоту кадров и могут обновляться
    2.72 +медленнее, чем основная сцена.