Mercurial > hg > indyvon
changeset 153:291afc2a8ca2
Updated README: replaced Layer with View.
author | Mikhail Kryshen <mikhail@kryshen.net> |
---|---|
date | Mon, 14 Apr 2014 15:37:28 +0400 (2014-04-14) |
parents | 9997ac717c3c |
children | ed36fcf061de |
files | README.rst README.ru |
diffstat | 2 files changed, 33 insertions(+), 30 deletions(-) [+] |
line wrap: on
line diff
--- a/README.rst Mon Apr 07 20:19:02 2014 +0400 +++ b/README.rst Mon Apr 14 15:37:28 2014 +0400 @@ -10,27 +10,27 @@ It is based around the idea of basically stateless UI elements defined by the following simple protocol:: - (defprotocol Layer - (render! [layer] - "Draws the layer.") - (geometry [layer] - "Returns preferred size for the layer.")) + (defprotocol View + (render! [view] + "Draws the view.") + (geometry [view] + "Returns preferred size for the view.")) -Layer functions are called in the Layer context which is defined by +View functions are called in the View context which is defined by bindings to vars including: - ``*graphics*`` — an instance of java.awt.Graphics2D used for drawing; - ``*width*`` and ``*height*`` — size of the drawing bounds; - ``*clip*`` — clipping area (instance of java.awt.geom.Shape). -In the ``render!`` function layer could draw using the provided -Graphics2D instance, display another layers at the specified locations +In the ``render!`` function View could draw using the provided +Graphics2D instance, display another Views at the specified locations relative to it's own context, and register event handlers. Event dispatching is done by remembering the clipping areas and affine -transforms of visible layer contexts after every repaint for the time +transforms of visible View contexts after every repaint for the time until the rendering of the next frame is complete. -It is possible to draw layers asynchronously in parallel threads by -wrapping them in ``async-layer``, which uses two off-screen buffers +It is possible to draw Views asynchronously in parallel threads by +wrapping them in ``async-view``, which uses two off-screen buffers (triple buffering) to avoid locking.
--- a/README.ru Mon Apr 07 20:19:02 2014 +0400 +++ b/README.ru Mon Apr 14 15:37:28 2014 +0400 @@ -11,19 +11,21 @@ - Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð»ÑŒÐ½Ð°Ñ Ð¾Ð±Ð»Ð°Ñть отÑÐµÑ‡ÐµÐ½Ð¸Ñ (форма Ñлементов), ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ ÑƒÑ‡Ð¸Ñ‚Ñ‹Ð²Ð°ÐµÑ‚ÑÑ Ð¿Ñ€Ð¸ обработке Ñобытий. -Базовый Ñлемент пользовательÑкого интерфейÑа опиÑан протоколом Layer -(Ñлой), который Ñодержит вÑего две функции: +Базовый Ñлемент пользовательÑкого интерфейÑа опиÑан протоколом View +(визуальный объект), который Ñодержит вÑего две функции: render! — отриÑовка, geometry — получение предпочтительных размеров Ñлемента. -Слой, в отличии от обычных компонентов интерфейÑа или Ñлементов графов -Ñцены в ÑиÑтемах визуализации, не имеет ÑоÑтоÑÐ½Ð¸Ñ (координаты, размер, -Ñлемент-родитель, дочерние Ñлементы) и может быть изображен по-разному -на каждой итерации цикла отриÑовки. +Визуальный объект в Indyvon, в отличии от обычных компонентов +интерфейÑа или Ñлементов графов Ñцены в ÑиÑтемах визуализации, не +имеет ÑоÑтоÑÐ½Ð¸Ñ (координаты, размер, Ñлемент-родитель, дочерние +Ñлементы) и может быть изображен по-разному на каждой итерации цикла +отриÑовки. -Функции ÑÐ»Ð¾Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑŽÑ‚ÑÑ Ð² контекÑте ÑÐ»Ð¾Ñ (layer context), который -предÑтавлен набором ÑвÑзанных переменных, в том чиÑле: +Функции ÑÐ»Ð¾Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÑÑŽÑ‚ÑÑ Ð² контекÑте визуального объекта (view +context), который предÑтавлен набором ÑвÑзанных переменных, в том +чиÑле: *graphics* — ÑкземплÑÑ€ java.awt.Graphics2D Ð´Ð»Ñ Ñ€Ð¸ÑованиÑ, *width* и *height* — размеры облаÑти риÑованиÑ, @@ -35,27 +37,28 @@ контекÑта. При уÑтановке обработчика контекÑÑ‚ ÑохранÑетÑÑ Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸ Ñобытий до Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ñледующей перериÑовки Ñцены. -Слои могут инициировать перериÑовку Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ механизма +Визуальные объекты могут инициировать перериÑовку Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ механизма уведомлений. Обработчики уведомлений, как и обработчики Ñобытий, уÑтанавливаютÑÑ Ð½Ð° Ð²Ñ€ÐµÐ¼Ñ Ð´Ð¾ Ñледующей перериÑовки. Таким образом, получать ÑÐ¾Ð±Ñ‹Ñ‚Ð¸Ñ Ð²Ð²Ð¾Ð´Ð° и вызывать перериÑовку могут -только те Ñлои, которые в данный момент видны на Ñкране, Ñ‚. е. -учаÑтвовали в поÑледней перериÑовке. +только те визуальные объекты, которые в данный момент видны на Ñкране, +Ñ‚. е. учаÑтвовали в поÑледней перериÑовке. Сцена может ÑтроитьÑÑ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ñ€Ð¸Ñовки (как в IMGUI: "ÑÐµÐ¹Ñ‡Ð°Ñ Ð½Ð°Ñ€Ð¸Ñовать здеÑÑŒ кнопку") или опиÑыватьÑÑ Ð¿ÑƒÑ‚ÐµÐ¼ композиции -Ñлоев (предполагаÑ, что реализованы функции border, vbox, label и -button, которые Ñоздают Ñлои): +визуальных объектов (предполагаÑ, что реализованы функции border, +vbox, label и button, которые возвращают реализации View): (border (hbox (label "Comment:") (button (label "Button")))) -ОтриÑовку можно раÑпараллелить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ функции async-layer, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ -возвращает Ñлой, показывающий результат отриÑовки ÑлоÑ-аргумента. При -Ñтом отриÑовка ÑлоÑ-аргумента выполнÑетÑÑ Ð² параллельной нити в буфер -в памÑти. Ð”Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð¾Ðº иÑпользуетÑÑ Ñ‚Ñ€Ð¾Ð¹Ð½Ð°Ñ -буферизациÑ. Слои, помещенные в async-layer, не будут ограничивать -чаÑтоту кадров и могут обновлÑтьÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½ÐµÐµ, чем оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ñцена. +ОтриÑовку можно раÑпараллелить Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ функции async-view, ÐºÐ¾Ñ‚Ð¾Ñ€Ð°Ñ +возвращает визуальный объект, показывающий результат отриÑовки +объекта-аргумента. При Ñтом отриÑовка аргумента выполнÑетÑÑ Ð² +параллельной нити в буфер в памÑти. Ð”Ð»Ñ Ð¸Ð·Ð±ÐµÐ¶Ð°Ð½Ð¸Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð¾Ðº +иÑпользуетÑÑ Ñ‚Ñ€Ð¾Ð¹Ð½Ð°Ñ Ð±ÑƒÑ„ÐµÑ€Ð¸Ð·Ð°Ñ†Ð¸Ñ. Визуальные объекты, помещенные в +async-view, не будут ограничивать чаÑтоту кадров и могут обновлÑтьÑÑ +медленнее, чем оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ñцена.