Merge branch 'master' of github.com:buggins/dlangui

This commit is contained in:
Vadim Lopatin 2014-05-22 16:58:35 +04:00
commit d012c97dc3
64 changed files with 392 additions and 5081 deletions

3
.gitignore vendored
View File

@ -1,6 +1,7 @@
Debug
Release
Unittest
docs
ui.log
obj
*.suo
@ -8,3 +9,5 @@ Thumbs.db
.dub
bin
*.obj
*.~*
*.*~

View File

@ -3,7 +3,10 @@ Dlang UI
GUI for D programming language, written in D.
Alpha stage of development.
Project page: http://buggins.github.io/dlangui/
Some screenshots: http://buggins.github.io/dlangui/screenshots.html
* Crossplatform (Win32 and Linux are supported in current version); can use SDL2 as a backend.
* Mostly inspired by Android UI API (layouts, styles, two phase layout, ...)
@ -17,7 +20,6 @@ Alpha stage of development.
* Non thread safe
Widgets
-------

View File

@ -45,6 +45,8 @@
<String>USE_OPENGL</String>
</VersionIds>
</VersionIds>
<ExtraCompilerArguments>project.ddoc -c -Dddocs</ExtraCompilerArguments>
<DDocDirectory>docs</DDocDirectory>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
<OutputPath>bin\Release</OutputPath>
@ -94,5 +96,11 @@
<Compile Include="src\dlangui\widgets\widget.d" />
<Compile Include="src\dlangui\all.d" />
<Compile Include="src\dlangui\platforms\sdl\sdlapp.d" />
<Compile Include="src\dlangui\core\stdaction.d" />
<Compile Include="src\dlangui\dialogs\dialog.d" />
<Compile Include="src\dlangui\dialogs\filedlg.d" />
<Compile Include="src\index.d" />
<Compile Include="src\api.d" />
<Compile Include="src\screenshots.d" />
</ItemGroup>
</Project>

View File

@ -1,58 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.all</title>
</head><body>
<h1>dlangui.all</h1>
<!-- Generated by Ddoc from src/dlangui/all.d -->
DLANGUI library.
<br><br>
This module is just to simplify import of most useful DLANGUI modules.
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=green>// helloworld
</font><font color=blue>import</font> dlangui.<u>all</u>;
<font color=green>// required in one of modules
</font><font color=blue>mixin</font> APP_ENTRY_POINT;
<font color=green>/// entry point for dlangui based application
</font><font color=blue>extern</font> (C) <font color=blue>int</font> UIAppMain(string[] args) {
<font color=green>// resource directory search paths
</font> string[] resourceDirs = [
appendPath(exePath, <font color=red>"../../../res/"</font>), <font color=green>// for Visual D and DUB builds
</font> appendPath(exePath, <font color=red>"../../../../res/"</font>), <font color=green>// for Mono-D builds
</font> appendPath(exePath, <font color=red>"res/"</font>) <font color=green>// when res dir is located at the same directory as executable
</font> ];
<font color=green>// setup resource directories - will use only existing directories
</font> drawableCache.setResourcePaths(resourceDirs);
<font color=green>// setup i18n - look for i18n directory inside one of passed directories
</font> i18n.findTranslationsDir(resourceDirs);
<font color=green>// select translation file - for english language
</font> i18n.load(<font color=red>"en.ini"</font>); <font color=green>//"ru.ini", "en.ini"
</font>
<font color=green>// create window
</font> Window window = Platform.instance.createWindow(<font color=red>"My Window"</font>, <font color=blue>null</font>);
<font color=green>// create some widget to show in window
</font> window.mainWidget = (<font color=blue>new</font> Button()).text(<font color=red>"Hello world"d</font>);
<font color=green>// show window
</font> window.show();
<font color=green>// run message loop
</font> <font color=blue>return</font> Platform.instance.enterMessageLoop();
}
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,154 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.core.collections</title>
</head><body>
<h1>dlangui.core.collections</h1>
<!-- Generated by Ddoc from src/dlangui/core/collections.d -->
DLANGUI library.
<br><br>
This module implements array based collection.
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.core.<u>collections</u>;
<font color=green>// add
</font>Collection!Widget widgets;
widgets ~= <font color=blue>new</font> Widget(<font color=red>"id1"</font>);
widgets ~= <font color=blue>new</font> Widget(<font color=red>"id2"</font>);
Widget w3 = <font color=blue>new</font> Widget(<font color=red>"id3"</font>);
widgets ~= w3;
<font color=green>// remove by index
</font>widgets.remove(1);
<font color=green>// foreach
</font><font color=blue>foreach</font>(w; widgets)
writeln(<font color=red>"widget: "</font>, w.id);
<font color=green>// remove by value
</font>widgets -= w3;
writeln(widgets[0].id);
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="Collection"></a>struct <u>Collection</u>(T, bool ownItems = false);
</big></dt>
<dd>array based collection of items
retains item order when during add/remove operations<br><br>
<dl><dt><big><a name="empty"></a>bool <u>empty</u>();
</big></dt>
<dd>returns <b>true</b> if there are no items in collection<br><br>
</dd>
<dt><big><a name="length"></a>size_t <u>length</u>();
</big></dt>
<dd>returns number of items in collection<br><br>
</dd>
<dt><big><a name="size"></a>size_t <u>size</u>();
</big></dt>
<dd>returns currently allocated capacity (may be more than length)<br><br>
</dd>
<dt><big><a name="size"></a>void <u>size</u>(size_t <i>newSize</i>);
</big></dt>
<dd>change capacity (e.g. to reserve big space to avoid multiple reallocations)<br><br>
</dd>
<dt><big><a name="length"></a>void <u>length</u>(size_t <i>newSize</i>);
</big></dt>
<dd>returns number of items in collection<br><br>
</dd>
<dt><big><a name="opIndex"></a>T <u>opIndex</u>(size_t <i>index</i>);
</big></dt>
<dd>access item by <i>index</i><br><br>
</dd>
<dt><big><a name="add"></a>void <u>add</u>(T <i>item</i>, size_t <i>index</i> = size_t.max);
</big></dt>
<dd>insert new <i>item</i> in specified position<br><br>
</dd>
<dt><big><a name="addAll"></a>void <u>addAll</u>(ref Collection!(T, ownItems) <i>v</i>);
</big></dt>
<dd>add all items from other collection<br><br>
</dd>
<dt><big><a name="opOpAssign"></a>Collection <u>opOpAssign</u>(string op)(T <i>item</i>);
</big></dt>
<dd>support for appending (~=, +=) and removing by value (-=)<br><br>
</dd>
<dt><big><a name="indexOf"></a>size_t <u>indexOf</u>(T <i>item</i>);
</big></dt>
<dd>returns index of first occurence of <i>item</i>, size_t.max if not found<br><br>
</dd>
<dt><big><a name="remove"></a>T <u>remove</u>(size_t <i>index</i>);
</big></dt>
<dd><u>remove</u> single item, returning removed item<br><br>
</dd>
<dt><big><a name="removeValue"></a>bool <u>removeValue</u>(T <i>value</i>);
</big></dt>
<dd>remove single item by <i>value</i> - if present in collection, returning <b>true</b> if item was found and removed<br><br>
</dd>
<dt><big><a name="opApply"></a>int <u>opApply</u>(int delegate(ref T param) <i>op</i>);
</big></dt>
<dd>support of foreach with reference<br><br>
</dd>
<dt><big><a name="clear"></a>void <u>clear</u>();
</big></dt>
<dd>remove all items<br><br>
</dd>
<dt><big><a name="popFront"></a>T <u>popFront</u>();
</big></dt>
<dd>remove first item<br><br>
</dd>
<dt><big><a name="pushFront"></a>void <u>pushFront</u>(T <i>item</i>);
</big></dt>
<dd>insert <i>item</i> at beginning of collection<br><br>
</dd>
<dt><big><a name="popBack"></a>T <u>popBack</u>();
</big></dt>
<dd>remove last item<br><br>
</dd>
<dt><big><a name="pushBack"></a>void <u>pushBack</u>(T <i>item</i>);
</big></dt>
<dd>insert <i>item</i> at end of collection<br><br>
</dd>
<dt><big><a name="front"></a>T <u>front</u>();
</big></dt>
<dd>peek first item<br><br>
</dd>
<dt><big><a name="back"></a>T <u>back</u>();
</big></dt>
<dd>peek last item<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,215 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.controls</title>
</head><body>
<h1>dlangui.widgets.controls</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/controls.d -->
DLANGUI library.
<br><br>
This module contains simple <u>controls</u> widgets implementation.
<br><br>
TextWidget
<br><br>
ImageWidget
<br><br>
Button
<br><br>
ImageButton
<br><br>
ScrollBar
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>controls</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="VSpacer"></a>class <u>VSpacer</u>: dlangui.widgets.widget.Widget;
</big></dt>
<dd>vertical spacer to fill empty space in vertical layouts<br><br>
</dd>
<dt><big><a name="HSpacer"></a>class <u>HSpacer</u>: dlangui.widgets.widget.Widget;
</big></dt>
<dd>horizontal spacer to fill empty space in horizontal layouts<br><br>
</dd>
<dt><big><a name="TextWidget"></a>class <u>TextWidget</u>: dlangui.widgets.widget.Widget;
</big></dt>
<dd>static text widget<br><br>
<dl><dt><big><a name="TextWidget.text"></a>@property dstring <u>text</u>();
</big></dt>
<dd>get widget <u>text</u><br><br>
</dd>
<dt><big><a name="TextWidget.text"></a>@property Widget <u>text</u>(dstring <i>s</i>);
</big></dt>
<dd>set <u>text</u> to show<br><br>
</dd>
<dt><big><a name="TextWidget.text"></a>@property Widget <u>text</u>(UIString <i>s</i>);
</big></dt>
<dd>set <u>text</u> to show<br><br>
</dd>
<dt><big><a name="TextWidget.textResource"></a>@property Widget <u>textResource</u>(string <i>s</i>);
</big></dt>
<dd>set text resource ID to show<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ImageWidget"></a>class <u>ImageWidget</u>: dlangui.widgets.widget.Widget;
</big></dt>
<dd>static image widget<br><br>
<dl><dt><big><a name="ImageWidget.drawableId"></a>@property string <u>drawableId</u>();
</big></dt>
<dd>get drawable image id<br><br>
</dd>
<dt><big><a name="ImageWidget.drawableId"></a>@property ImageWidget <u>drawableId</u>(string <i>id</i>);
</big></dt>
<dd>set drawable image <i>id</i><br><br>
</dd>
<dt><big><a name="ImageWidget.drawable"></a>@property ref DrawableRef <u>drawable</u>();
</big></dt>
<dd>get <u>drawable</u><br><br>
</dd>
<dt><big><a name="ImageWidget.drawable"></a>@property ImageWidget <u>drawable</u>(DrawableRef <i>img</i>);
</big></dt>
<dd>set custom <u>drawable</u> (not one from resources)<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ImageButton"></a>class <u>ImageButton</u>: dlangui.widgets.controls.ImageWidget;
</big></dt>
<dd>button with image only<br><br>
</dd>
<dt><big><a name="ImageTextButton"></a>class <u>ImageTextButton</u>: dlangui.widgets.layouts.HorizontalLayout;
</big></dt>
<dd>button with image and text<br><br>
</dd>
<dt><big><a name="CheckBox"></a>class <u>CheckBox</u>: dlangui.widgets.controls.ImageTextButton;
</big></dt>
<dd>checkbox<br><br>
</dd>
<dt><big><a name="RadioButton"></a>class <u>RadioButton</u>: dlangui.widgets.controls.ImageTextButton;
</big></dt>
<dd>radio button<br><br>
</dd>
<dt><big><a name="Button"></a>class <u>Button</u>: dlangui.widgets.widget.Widget;
</big></dt>
<dd>Text only button<br><br>
</dd>
<dt><big><a name="OnScrollHandler"></a>interface <u>OnScrollHandler</u>;
</big></dt>
<dd>scroll event handler interface<br><br>
<dl><dt><big><a name="OnScrollHandler.onScrollEvent"></a>abstract bool <u>onScrollEvent</u>(AbstractSlider <i>source</i>, ScrollEvent <i>event</i>);
</big></dt>
<dd>handle scroll <i>event</i><br><br>
</dd>
</dl>
</dd>
<dt><big><a name="AbstractSlider"></a>class <u>AbstractSlider</u>: dlangui.widgets.widget.WidgetGroup;
</big></dt>
<dd>base class for widgets like scrollbars and sliders<br><br>
<dl><dt><big><a name="AbstractSlider.onScrollEventListener"></a>Signal!OnScrollHandler <u>onScrollEventListener</u>;
</big></dt>
<dd>scroll event listeners<br><br>
</dd>
<dt><big><a name="AbstractSlider.position"></a>const @property int <u>position</u>();
</big></dt>
<dd>returns slider <u>position</u><br><br>
</dd>
<dt><big><a name="AbstractSlider.position"></a>@property AbstractSlider <u>position</u>(int <i>newPosition</i>);
</big></dt>
<dd>sets new slider <u>position</u><br><br>
</dd>
<dt><big><a name="AbstractSlider.minValue"></a>const @property int <u>minValue</u>();
</big></dt>
<dd>returns slider range min value<br><br>
</dd>
<dt><big><a name="AbstractSlider.maxValue"></a>const @property int <u>maxValue</u>();
</big></dt>
<dd>returns slider range max value<br><br>
</dd>
<dt><big><a name="AbstractSlider.pageSize"></a>const @property int <u>pageSize</u>();
</big></dt>
<dd>page size (visible area size)<br><br>
</dd>
<dt><big><a name="AbstractSlider.pageSize"></a>@property AbstractSlider <u>pageSize</u>(int <i>size</i>);
</big></dt>
<dd>set page <i>size</i> (visible area <i>size</i>)<br><br>
</dd>
<dt><big><a name="AbstractSlider.setRange"></a>AbstractSlider <u>setRange</u>(int <i>min</i>, int <i>max</i>);
</big></dt>
<dd>set new range (<i>min</i> and <i>max</i> values for slider)<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ScrollBar"></a>class <u>ScrollBar</u>: dlangui.widgets.controls.AbstractSlider, dlangui.widgets.widget.OnClickHandler;
</big></dt>
<dd>scroll bar - either vertical or horizontal<br><br>
<dl><dt><big><a name="ScrollBar.orientation"></a>@property Orientation <u>orientation</u>();
</big></dt>
<dd>returns scrollbar <u>orientation</u> (Vertical, Horizontal)<br><br>
</dd>
<dt><big><a name="ScrollBar.orientation"></a>@property ScrollBar <u>orientation</u>(Orientation <i>value</i>);
</big></dt>
<dd>sets scrollbar <u>orientation</u><br><br>
</dd>
<dt><big><a name="ScrollBar.onMouseEvent"></a>bool <u>onMouseEvent</u>(MouseEvent <i>event</i>);
</big></dt>
<dd>handle mouse wheel events<br><br>
</dd>
<dt><big><a name="ScrollBar.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>Draw widget at its position to buffer<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,223 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.graphics.drawbuf</title>
</head><body>
<h1>dlangui.graphics.drawbuf</h1>
<!-- Generated by Ddoc from src/dlangui/graphics/drawbuf.d -->
DLANGUI library.
<br><br>
This module contains drawing buffer implementation.
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.graphics.<u>drawbuf</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="blendARGB"></a>uint <u>blendARGB</u>(uint <i>dst</i>, uint <i>src</i>, uint <i>alpha</i>);
</big></dt>
<dd>blend two RGB pixels using <i>alpha</i><br><br>
</dd>
<dt><big><a name="blendAlpha"></a>uint <u>blendAlpha</u>(uint <i>a1</i>, uint <i>a2</i>);
</big></dt>
<dd>blend two alpha values 0..255 (255 is fully transparent, 0 is opaque)<br><br>
</dd>
<dt><big><a name="blendGray"></a>ubyte <u>blendGray</u>(ubyte <i>dst</i>, ubyte <i>src</i>, uint <i>alpha</i>);
</big></dt>
<dd>blend two RGB pixels using <i>alpha</i><br><br>
</dd>
<dt><big><a name="isFullyTransparentColor"></a>pure nothrow bool <u>isFullyTransparentColor</u>(uint <i>color</i>);
</big></dt>
<dd>returns <b>true</b> if <i>color</i> is #FFxxxxxx (<i>color</i> alpha is 255)<br><br>
</dd>
<dt><big><a name="NinePatch"></a>struct <u>NinePatch</u>;
</big></dt>
<dd>9-patch image scaling information (see Android documentation).
<br><br>
<dl><dt><big><a name="NinePatch.frame"></a>Rect <u>frame</u>;
</big></dt>
<dd><u>frame</u> (non-scalable) part size for left, top, right, bottom edges.<br><br>
</dd>
<dt><big><a name="NinePatch.padding"></a>Rect <u>padding</u>;
</big></dt>
<dd><u>padding</u> (distance to content area) for left, top, right, bottom edges.<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="DrawBuf"></a>abstract class <u>DrawBuf</u>: dlangui.core.types.RefCountedObject;
</big></dt>
<dd>drawing buffer - image container which allows to perform some drawing operations<br><br>
<dl><dt><big><a name="DrawBuf.alpha"></a>@property uint <u>alpha</u>();
</big></dt>
<dd>get current <u>alpha</u> setting (to be applied to all drawing operations)<br><br>
</dd>
<dt><big><a name="DrawBuf.alpha"></a>@property void <u>alpha</u>(uint <u>alpha</u>);
</big></dt>
<dd>set new <u>alpha</u> setting (to be applied to all drawing operations)<br><br>
</dd>
<dt><big><a name="DrawBuf.addAlpha"></a>void <u>addAlpha</u>(uint <i>alpha</i>);
</big></dt>
<dd>apply additional transparency to current drawbuf <i>alpha</i> value<br><br>
</dd>
<dt><big><a name="DrawBuf.applyAlpha"></a>uint <u>applyAlpha</u>(uint <i>argb</i>);
</big></dt>
<dd>applies current drawbuf alpha to <i>argb</i> color value<br><br>
</dd>
<dt><big><a name="DrawBuf.id"></a>@property uint <u>id</u>();
</big></dt>
<dd>unique ID of drawbug instance, for using with hardware accelerated rendering for caching<br><br>
</dd>
<dt><big><a name="DrawBuf.ninePatch"></a>const @property const(NinePatch)* <u>ninePatch</u>();
</big></dt>
<dd>get nine patch information pointer, <b>null</b> if this is not a nine patch image buffer<br><br>
</dd>
<dt><big><a name="DrawBuf.ninePatch"></a>@property void <u>ninePatch</u>(NinePatch* <u>ninePatch</u>);
</big></dt>
<dd>set nine patch information pointer, <b>null</b> if this is not a nine patch image buffer<br><br>
</dd>
<dt><big><a name="DrawBuf.hasNinePatch"></a>@property bool <u>hasNinePatch</u>();
</big></dt>
<dd>check whether there is nine-patch information available for drawing buffer<br><br>
</dd>
<dt><big><a name="DrawBuf.detectNinePatch"></a>bool <u>detectNinePatch</u>();
</big></dt>
<dd>override to detect nine patch using image 1-pixel border; returns <b>true</b> if 9-patch markup is found in image.<br><br>
</dd>
<dt><big><a name="DrawBuf.width"></a>@property int <u>width</u>();
</big></dt>
<dd>returns current <u>width</u><br><br>
</dd>
<dt><big><a name="DrawBuf.height"></a>@property int <u>height</u>();
</big></dt>
<dd>returns current <u>height</u><br><br>
</dd>
<dt><big><a name="DrawBuf.clipRect"></a>@property ref Rect <u>clipRect</u>();
</big></dt>
<dd>returns clipping rectangle, when <u>clipRect</u>.isEmpty == <b>true</b> -- means no clipping.<br><br>
</dd>
<dt><big><a name="DrawBuf.clipOrFullRect"></a>@property Rect <u>clipOrFullRect</u>();
</big></dt>
<dd>returns clipping rectangle, or (0,0,dx,dy) when no clipping.<br><br>
</dd>
<dt><big><a name="DrawBuf.clipRect"></a>@property void <u>clipRect</u>(ref const Rect <i>rect</i>);
</big></dt>
<dd>sets new clipping rectangle, when <u>clipRect</u>.isEmpty == <b>true</b> -- means no clipping.<br><br>
</dd>
<dt><big><a name="DrawBuf.intersectClipRect"></a>@property void <u>intersectClipRect</u>(ref const Rect <i>rect</i>);
</big></dt>
<dd>sets new clipping rectangle, when clipRect.isEmpty == <b>true</b> -- means no clipping.<br><br>
</dd>
<dt><big><a name="DrawBuf.applyClipping"></a>bool <u>applyClipping</u>(ref Rect <i>rc</i>);
</big></dt>
<dd>apply clipRect and buffer bounds clipping to rectangle<br><br>
</dd>
<dt><big><a name="DrawBuf.applyClipping"></a>bool <u>applyClipping</u>(ref Rect <i>rc</i>, ref Rect <i>rc2</i>);
</big></dt>
<dd>apply clipRect and buffer bounds clipping to rectangle; if clippinup applied to first rectangle, reduce second rectangle bounds proportionally.<br><br>
</dd>
<dt><big><a name="DrawBuf.beforeDrawing"></a>void <u>beforeDrawing</u>();
</big></dt>
<dd>reserved for hardware-accelerated drawing - begins drawing batch<br><br>
</dd>
<dt><big><a name="DrawBuf.afterDrawing"></a>void <u>afterDrawing</u>();
</big></dt>
<dd>reserved for hardware-accelerated drawing - ends drawing batch<br><br>
</dd>
<dt><big><a name="DrawBuf.bpp"></a>@property int <u>bpp</u>();
</big></dt>
<dd>returns buffer bits per pixel<br><br>
</dd>
<dt><big><a name="DrawBuf.resize"></a>abstract void <u>resize</u>(int <i>width</i>, int <i>height</i>);
</big></dt>
<dd><u>resize</u> buffer<br><br>
</dd>
<dt><big><a name="DrawBuf.fill"></a>abstract void <u>fill</u>(uint <i>color</i>);
</big></dt>
<dd><u>fill</u> the whole buffer with solid <i>color</i> (no clipping applied)<br><br>
</dd>
<dt><big><a name="DrawBuf.fillRect"></a>abstract void <u>fillRect</u>(Rect <i>rc</i>, uint <i>color</i>);
</big></dt>
<dd>fill rectangle with solid <i>color</i> (clipping is applied)<br><br>
</dd>
<dt><big><a name="DrawBuf.drawGlyph"></a>abstract void <u>drawGlyph</u>(int <i>x</i>, int <i>y</i>, Glyph* <i>glyph</i>, uint <i>color</i>);
</big></dt>
<dd>draw 8bit alpha image - usually font <i>glyph</i> using specified <i>color</i> (clipping is applied)<br><br>
</dd>
<dt><big><a name="DrawBuf.drawFragment"></a>abstract void <u>drawFragment</u>(int <i>x</i>, int <i>y</i>, DrawBuf <i>src</i>, Rect <i>srcrect</i>);
</big></dt>
<dd>draw source buffer rectangle contents to destination buffer<br><br>
</dd>
<dt><big><a name="DrawBuf.drawRescaled"></a>abstract void <u>drawRescaled</u>(Rect <i>dstrect</i>, DrawBuf <i>src</i>, Rect <i>srcrect</i>);
</big></dt>
<dd>draw source buffer rectangle contents to destination buffer rectangle applying rescaling<br><br>
</dd>
<dt><big><a name="DrawBuf.drawImage"></a>void <u>drawImage</u>(int <i>x</i>, int <i>y</i>, DrawBuf <i>src</i>);
</big></dt>
<dd>draw unscaled image at specified coordinates<br><br>
</dd>
<dt><big><a name="DrawBuf.drawFrame"></a>void <u>drawFrame</u>(Rect <i>rc</i>, uint <i>frameColor</i>, Rect <i>frameSideWidths</i>, uint <i>innerAreaColor</i> = 4294967295u);
</big></dt>
<dd>draws rectangle frame of specified color and widths (per side), and optinally fills inner area<br><br>
</dd>
<dt><big><a name="DrawBuf.transformColors"></a>DrawBuf <u>transformColors</u>(ref ColorTransform <i>transform</i>);
</big></dt>
<dd>create drawbuf with copy of current buffer with changed colors (returns this if not supported)<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ClipRectSaver"></a>struct <u>ClipRectSaver</u>;
</big></dt>
<dd>RAII setting/restoring of clip rectangle<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,752 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.editors</title>
</head><body>
<h1>dlangui.widgets.editors</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/editors.d -->
DLANGUI library.
<br><br>
This module contains implementation of <u>editors</u>.
<br><br>
<br><br>
EditLine - single line editor.
<br><br>
EditBox - multiline editor
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>editors</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="EditorActions"></a>enum <u>EditorActions</u>: int;
</big></dt>
<dd>Editor action codes<br><br>
<dl><dt><big><a name="EditorActions.Left"></a><u>Left</u></big></dt>
<dd>move cursor one char left<br><br>
</dd>
<dt><big><a name="EditorActions.SelectLeft"></a><u>SelectLeft</u></big></dt>
<dd>move cursor one char left with selection<br><br>
</dd>
<dt><big><a name="EditorActions.Right"></a><u>Right</u></big></dt>
<dd>move cursor one char right<br><br>
</dd>
<dt><big><a name="EditorActions.SelectRight"></a><u>SelectRight</u></big></dt>
<dd>move cursor one char right with selection<br><br>
</dd>
<dt><big><a name="EditorActions.Up"></a><u>Up</u></big></dt>
<dd>move cursor one line up<br><br>
</dd>
<dt><big><a name="EditorActions.SelectUp"></a><u>SelectUp</u></big></dt>
<dd>move cursor one line up with selection<br><br>
</dd>
<dt><big><a name="EditorActions.Down"></a><u>Down</u></big></dt>
<dd>move cursor one line down<br><br>
</dd>
<dt><big><a name="EditorActions.SelectDown"></a><u>SelectDown</u></big></dt>
<dd>move cursor one line down with selection<br><br>
</dd>
<dt><big><a name="EditorActions.WordLeft"></a><u>WordLeft</u></big></dt>
<dd>move cursor one word left<br><br>
</dd>
<dt><big><a name="EditorActions.SelectWordLeft"></a><u>SelectWordLeft</u></big></dt>
<dd>move cursor one word left with selection<br><br>
</dd>
<dt><big><a name="EditorActions.WordRight"></a><u>WordRight</u></big></dt>
<dd>move cursor one word right<br><br>
</dd>
<dt><big><a name="EditorActions.SelectWordRight"></a><u>SelectWordRight</u></big></dt>
<dd>move cursor one word right with selection<br><br>
</dd>
<dt><big><a name="EditorActions.PageUp"></a><u>PageUp</u></big></dt>
<dd>move cursor one page up<br><br>
</dd>
<dt><big><a name="EditorActions.SelectPageUp"></a><u>SelectPageUp</u></big></dt>
<dd>move cursor one page up with selection<br><br>
</dd>
<dt><big><a name="EditorActions.PageDown"></a><u>PageDown</u></big></dt>
<dd>move cursor one page down<br><br>
</dd>
<dt><big><a name="EditorActions.SelectPageDown"></a><u>SelectPageDown</u></big></dt>
<dd>move cursor one page down with selection<br><br>
</dd>
<dt><big><a name="EditorActions.PageBegin"></a><u>PageBegin</u></big></dt>
<dd>move cursor to the beginning of page<br><br>
</dd>
<dt><big><a name="EditorActions.SelectPageBegin"></a><u>SelectPageBegin</u></big></dt>
<dd>move cursor to the beginning of page with selection<br><br>
</dd>
<dt><big><a name="EditorActions.PageEnd"></a><u>PageEnd</u></big></dt>
<dd>move cursor to the end of page<br><br>
</dd>
<dt><big><a name="EditorActions.SelectPageEnd"></a><u>SelectPageEnd</u></big></dt>
<dd>move cursor to the end of page with selection<br><br>
</dd>
<dt><big><a name="EditorActions.LineBegin"></a><u>LineBegin</u></big></dt>
<dd>move cursor to the beginning of line<br><br>
</dd>
<dt><big><a name="EditorActions.SelectLineBegin"></a><u>SelectLineBegin</u></big></dt>
<dd>move cursor to the beginning of line with selection<br><br>
</dd>
<dt><big><a name="EditorActions.LineEnd"></a><u>LineEnd</u></big></dt>
<dd>move cursor to the end of line<br><br>
</dd>
<dt><big><a name="EditorActions.SelectLineEnd"></a><u>SelectLineEnd</u></big></dt>
<dd>move cursor to the end of line with selection<br><br>
</dd>
<dt><big><a name="EditorActions.DocumentBegin"></a><u>DocumentBegin</u></big></dt>
<dd>move cursor to the beginning of document<br><br>
</dd>
<dt><big><a name="EditorActions.SelectDocumentBegin"></a><u>SelectDocumentBegin</u></big></dt>
<dd>move cursor to the beginning of document with selection<br><br>
</dd>
<dt><big><a name="EditorActions.DocumentEnd"></a><u>DocumentEnd</u></big></dt>
<dd>move cursor to the end of document<br><br>
</dd>
<dt><big><a name="EditorActions.SelectDocumentEnd"></a><u>SelectDocumentEnd</u></big></dt>
<dd>move cursor to the end of document with selection<br><br>
</dd>
<dt><big><a name="EditorActions.DelPrevChar"></a><u>DelPrevChar</u></big></dt>
<dd>delete char before cursor (backspace)<br><br>
</dd>
<dt><big><a name="EditorActions.DelNextChar"></a><u>DelNextChar</u></big></dt>
<dd>delete char after cursor (del key)<br><br>
</dd>
<dt><big><a name="EditorActions.DelPrevWord"></a><u>DelPrevWord</u></big></dt>
<dd>delete word before cursor (ctrl + backspace)<br><br>
</dd>
<dt><big><a name="EditorActions.DelNextWord"></a><u>DelNextWord</u></big></dt>
<dd>delete char after cursor (ctrl + del key)<br><br>
</dd>
<dt><big><a name="EditorActions.InsertNewLine"></a><u>InsertNewLine</u></big></dt>
<dd>insert new line (Enter)<br><br>
</dd>
<dt><big><a name="EditorActions.PrependNewLine"></a><u>PrependNewLine</u></big></dt>
<dd>insert new line after current position (Ctrl+Enter)<br><br>
</dd>
<dt><big><a name="EditorActions.ToggleReplaceMode"></a><u>ToggleReplaceMode</u></big></dt>
<dd>Turn On/Off replace mode<br><br>
</dd>
<dt><big><a name="EditorActions.Copy"></a><u>Copy</u></big></dt>
<dd><u>Copy</u> selection to clipboard<br><br>
</dd>
<dt><big><a name="EditorActions.Cut"></a><u>Cut</u></big></dt>
<dd><u>Cut</u> selection to clipboard<br><br>
</dd>
<dt><big><a name="EditorActions.Paste"></a><u>Paste</u></big></dt>
<dd><u>Paste</u> selection from clipboard<br><br>
</dd>
<dt><big><a name="EditorActions.Undo"></a><u>Undo</u></big></dt>
<dd><u>Undo</u> last change<br><br>
</dd>
<dt><big><a name="EditorActions.Redo"></a><u>Redo</u></big></dt>
<dd><u>Redo</u> last undoed change<br><br>
</dd>
<dt><big><a name="EditorActions.Tab"></a><u>Tab</u></big></dt>
<dd><u>Tab</u> (e.g., <u>Tab</u> key to insert tab character or indent text)<br><br>
</dd>
<dt><big><a name="EditorActions.BackTab"></a><u>BackTab</u></big></dt>
<dd>Tab (unindent text, or remove whitespace before cursor, usually Shift+Tab)<br><br>
</dd>
<dt><big><a name="EditorActions.SelectAll"></a><u>SelectAll</u></big></dt>
<dd>Select whole content (usually, Ctrl+A)<br><br>
</dd>
<dt><big><a name="EditorActions.ScrollLineUp"></a><u>ScrollLineUp</u></big></dt>
<dd>Scroll one line up (not changing cursor)<br><br>
</dd>
<dt><big><a name="EditorActions.ScrollLineDown"></a><u>ScrollLineDown</u></big></dt>
<dd>Scroll one line down (not changing cursor)<br><br>
</dd>
<dt><big><a name="EditorActions.ScrollPageUp"></a><u>ScrollPageUp</u></big></dt>
<dd>Scroll one page up (not changing cursor)<br><br>
</dd>
<dt><big><a name="EditorActions.ScrollPageDown"></a><u>ScrollPageDown</u></big></dt>
<dd>Scroll one page down (not changing cursor)<br><br>
</dd>
<dt><big><a name="EditorActions.ScrollLeft"></a><u>ScrollLeft</u></big></dt>
<dd>Scroll window left<br><br>
</dd>
<dt><big><a name="EditorActions.ScrollRight"></a><u>ScrollRight</u></big></dt>
<dd>Scroll window right<br><br>
</dd>
<dt><big><a name="EditorActions.ZoomIn"></a><u>ZoomIn</u></big></dt>
<dd>Zoom in editor font<br><br>
</dd>
<dt><big><a name="EditorActions.ZoomOut"></a><u>ZoomOut</u></big></dt>
<dd>Zoom out editor font<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="splitDString"></a>dstring[] <u>splitDString</u>(dstring <i>source</i>, dchar <i>delimiter</i> = EOL);
</big></dt>
<dd>split dstring by delimiters<br><br>
</dd>
<dt><big><a name="concatDStrings"></a>dstring <u>concatDStrings</u>(dstring[] <i>lines</i>, dstring <i>delimiter</i> = SYSTEM_DEFAULT_EOL);
</big></dt>
<dd>concat strings from array using <i>delimiter</i><br><br>
</dd>
<dt><big><a name="replaceEolsWithSpaces"></a>dstring <u>replaceEolsWithSpaces</u>(dstring <i>source</i>);
</big></dt>
<dd>replace end of lines with spaces<br><br>
</dd>
<dt><big><a name="TextPosition"></a>struct <u>TextPosition</u>;
</big></dt>
<dd>text content position<br><br>
<dl><dt><big><a name="TextPosition.line"></a>int <u>line</u>;
</big></dt>
<dd><u>line</u> number, zero based<br><br>
</dd>
<dt><big><a name="TextPosition.pos"></a>int <u>pos</u>;
</big></dt>
<dd>character position in line (0 == before first character)<br><br>
</dd>
<dt><big><a name="TextPosition.opCmp"></a>const int <u>opCmp</u>(ref const TextPosition <i>v</i>);
</big></dt>
<dd>compares two positions<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="TextRange"></a>struct <u>TextRange</u>;
</big></dt>
<dd>text content range<br><br>
<dl><dt><big><a name="TextRange.empty"></a>const @property bool <u>empty</u>();
</big></dt>
<dd>returns <b>true</b> if range is <u>empty</u><br><br>
</dd>
<dt><big><a name="TextRange.singleLine"></a>const @property bool <u>singleLine</u>();
</big></dt>
<dd>returns <b>true</b> if start and end located at the same line<br><br>
</dd>
<dt><big><a name="TextRange.lines"></a>const @property int <u>lines</u>();
</big></dt>
<dd>returns count of <u>lines</u> in range<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="EditAction"></a>enum <u>EditAction</u>: int;
</big></dt>
<dd>action performed with editable contents<br><br>
<dl><dt><big><a name="EditAction.Replace"></a><u>Replace</u></big></dt>
<dd>insert content into specified position (range.start)
delete content in range
replace range content with new content<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="EditOperation"></a>class <u>EditOperation</u>;
</big></dt>
<dd>edit operation details for EditableContent<br><br>
<dl><dt><big><a name="EditOperation.action"></a>@property EditAction <u>action</u>();
</big></dt>
<dd><u>action</u> performed<br><br>
</dd>
<dt><big><a name="EditOperation.range"></a>@property ref TextRange <u>range</u>();
</big></dt>
<dd>source <u>range</u> to replace with new content<br><br>
</dd>
<dt><big><a name="EditOperation.newRange"></a>@property ref TextRange <u>newRange</u>();
</big></dt>
<dd>new range after operation applied<br><br>
</dd>
<dt><big><a name="EditOperation._content"></a>protected dstring[] <u>_content</u>;
</big></dt>
<dd>new content for range (if required for this action)<br><br>
</dd>
<dt><big><a name="EditOperation._oldContent"></a>protected dstring[] <u>_oldContent</u>;
</big></dt>
<dd>old content for range<br><br>
</dd>
<dt><big><a name="EditOperation.merge"></a>bool <u>merge</u>(EditOperation <i>op</i>);
</big></dt>
<dd>try to <u>merge</u> two operations (simple entering of characters in the same line), return <b>true</b> if succeded<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="UndoBuffer"></a>class <u>UndoBuffer</u>;
</big></dt>
<dd>Undo/Redo buffer<br><br>
<dl><dt><big><a name="UndoBuffer.hasUndo"></a>@property bool <u>hasUndo</u>();
</big></dt>
<dd>returns <b>true</b> if buffer contains any undo items<br><br>
</dd>
<dt><big><a name="UndoBuffer.hasRedo"></a>@property bool <u>hasRedo</u>();
</big></dt>
<dd>returns <b>true</b> if buffer contains any redo items<br><br>
</dd>
<dt><big><a name="UndoBuffer.saveForUndo"></a>void <u>saveForUndo</u>(EditOperation <i>op</i>);
</big></dt>
<dd>adds undo operation<br><br>
</dd>
<dt><big><a name="UndoBuffer.undo"></a>EditOperation <u>undo</u>();
</big></dt>
<dd>returns operation to be undone (put it to redo), <b>null</b> if no <u>undo</u> ops available<br><br>
</dd>
<dt><big><a name="UndoBuffer.redo"></a>EditOperation <u>redo</u>();
</big></dt>
<dd>returns operation to be redone (put it to undo), <b>null</b> if no undo ops available<br><br>
</dd>
<dt><big><a name="UndoBuffer.clear"></a>void <u>clear</u>();
</big></dt>
<dd>clears both undo and redo buffers<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="EditableContentListener"></a>interface <u>EditableContentListener</u>;
</big></dt>
<dd>Editable Content change listener<br><br>
</dd>
<dt><big><a name="EditableContent"></a>class <u>EditableContent</u>;
</big></dt>
<dd>editable plain text (singleline/multiline)<br><br>
<dl><dt><big><a name="EditableContent.contentChangeListeners"></a>Signal!EditableContentListener <u>contentChangeListeners</u>;
</big></dt>
<dd>listeners for edit operations<br><br>
</dd>
<dt><big><a name="EditableContent.multiline"></a>@property bool <u>multiline</u>();
</big></dt>
<dd>returns <b>true</b> if miltyline content is supported<br><br>
</dd>
<dt><big><a name="EditableContent.text"></a>@property dstring <u>text</u>();
</big></dt>
<dd>returns all lines concatenated delimited by '\n'<br><br>
</dd>
<dt><big><a name="EditableContent.text"></a>@property EditableContent <u>text</u>(dstring <i>newContent</i>);
</big></dt>
<dd>replace whole <u>text</u> with another content<br><br>
</dd>
<dt><big><a name="EditableContent.length"></a>@property int <u>length</u>();
</big></dt>
<dd>returns line text<br><br>
</dd>
<dt><big><a name="EditableContent.line"></a>dstring <u>line</u>(int <i>index</i>);
</big></dt>
<dd>returns <u>line</u> text by <i>index</i>, "" if <i>index</i> is out of bounds<br><br>
</dd>
<dt><big><a name="EditableContent.lineEnd"></a>TextPosition <u>lineEnd</u>(int <i>lineIndex</i>);
</big></dt>
<dd>returns text position for end of line <i>lineIndex</i><br><br>
</dd>
<dt><big><a name="EditableContent.firstNonSpace"></a>TextPosition <u>firstNonSpace</u>(int <i>lineIndex</i>);
</big></dt>
<dd>returns position before first non-space character of line, returns 0 position if no non-space chars<br><br>
</dd>
<dt><big><a name="EditableContent.lastNonSpace"></a>TextPosition <u>lastNonSpace</u>(int <i>lineIndex</i>);
</big></dt>
<dd>returns position after last non-space character of line, returns 0 position if no non-space chars on line<br><br>
</dd>
<dt><big><a name="EditableContent.lineLength"></a>int <u>lineLength</u>(int <i>lineIndex</i>);
</big></dt>
<dd>returns text position for end of line <i>lineIndex</i><br><br>
</dd>
<dt><big><a name="EditableContent.maxLineLength"></a>int <u>maxLineLength</u>();
</big></dt>
<dd>returns maximum length of line<br><br>
</dd>
<dt><big><a name="EditableContent.rangeText"></a>dstring[] <u>rangeText</u>(TextRange <i>range</i>);
</big></dt>
<dd>return text for specified <i>range</i><br><br>
</dd>
<dt><big><a name="EditableContent.correctPosition"></a>void <u>correctPosition</u>(ref TextPosition <i>position</i>);
</big></dt>
<dd>when <i>position</i> is out of content bounds, fix it to nearest valid <i>position</i><br><br>
</dd>
<dt><big><a name="EditableContent.correctRange"></a>void <u>correctRange</u>(ref TextRange <i>range</i>);
</big></dt>
<dd>when <i>range</i> positions is out of content bounds, fix it to nearest valid position<br><br>
</dd>
<dt><big><a name="EditableContent.removeLines"></a>protected void <u>removeLines</u>(int <i>start</i>, int <i>removedCount</i>);
</big></dt>
<dd>removes <i>removedCount</i> lines starting from <i>start</i><br><br>
</dd>
<dt><big><a name="EditableContent.insertLines"></a>protected void <u>insertLines</u>(int <i>start</i>, int <i>count</i>);
</big></dt>
<dd>inserts <i>count</i> empty lines at specified position<br><br>
</dd>
<dt><big><a name="EditableContent.replaceRange"></a>protected void <u>replaceRange</u>(TextRange <i>before</i>, TextRange <i>after</i>, dstring[] <i>newContent</i>);
</big></dt>
<dd>inserts or removes lines, removes text in range<br><br>
</dd>
<dt><big><a name="EditableContent.moveByWord"></a>TextPosition <u>moveByWord</u>(TextPosition <i>p</i>, int <i>direction</i>, bool <i>camelCasePartsAsWords</i>);
</big></dt>
<dd>change text position to nearest word bound (<i>direction</i> &lt; 0 - back, &gt; 0 - forward)<br><br>
</dd>
<dt><big><a name="EditableContent.performOperation"></a>bool <u>performOperation</u>(EditOperation <i>op</i>, Object <i>source</i>);
</big></dt>
<dd>edit content<br><br>
</dd>
<dt><big><a name="EditableContent.hasUndo"></a>@property bool <u>hasUndo</u>();
</big></dt>
<dd>return <b>true</b> if there is at least one operation in undo buffer<br><br>
</dd>
<dt><big><a name="EditableContent.hasRedo"></a>@property bool <u>hasRedo</u>();
</big></dt>
<dd>return <b>true</b> if there is at least one operation in redo buffer<br><br>
</dd>
<dt><big><a name="EditableContent.undo"></a>bool <u>undo</u>();
</big></dt>
<dd>undoes last change<br><br>
</dd>
<dt><big><a name="EditableContent.redo"></a>bool <u>redo</u>();
</big></dt>
<dd>redoes last undone change<br><br>
</dd>
<dt><big><a name="EditableContent.clearUndo"></a>void <u>clearUndo</u>();
</big></dt>
<dd>clear undo/redp history<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="EditWidgetBase"></a>abstract class <u>EditWidgetBase</u>: dlangui.widgets.widget.WidgetGroup, dlangui.widgets.editors.EditableContentListener, dlangui.widgets.menu.MenuItemActionHandler;
</big></dt>
<dd>base for all editor widgets<br><br>
<dl><dt><big><a name="EditWidgetBase.onMenuItemAction"></a>bool <u>onMenuItemAction</u>(const Action <i>action</i>);
</big></dt>
<dd><br><br>
</dd>
<dt><big><a name="EditWidgetBase.canShowPopupMenu"></a>bool <u>canShowPopupMenu</u>(int <i>x</i>, int <i>y</i>);
</big></dt>
<dd>returns <b>true</b> if widget can show popup (e.g. by mouse right click at point <i>x</i>,<i>y</i>)<br><br>
</dd>
<dt><big><a name="EditWidgetBase.isActionEnabled"></a>bool <u>isActionEnabled</u>(const Action <i>action</i>);
</big></dt>
<dd>override to change popup menu items state<br><br>
</dd>
<dt><big><a name="EditWidgetBase.showPopupMenu"></a>void <u>showPopupMenu</u>(int <i>x</i>, int <i>y</i>);
</big></dt>
<dd>shows popup at (<i>x</i>,<i>y</i>)<br><br>
</dd>
<dt><big><a name="EditWidgetBase.getCursorType"></a>uint <u>getCursorType</u>(int <i>x</i>, int <i>y</i>);
</big></dt>
<dd>returns mouse cursor type for widget<br><br>
</dd>
<dt><big><a name="EditWidgetBase.wantTabs"></a>@property bool <u>wantTabs</u>();
</big></dt>
<dd>when <b>true</b>, Tab / Shift+Tab presses are processed internally in widget (e.g. insert tab character) instead of focus change navigation.<br><br>
</dd>
<dt><big><a name="EditWidgetBase.wantTabs"></a>@property EditWidgetBase <u>wantTabs</u>(bool <u>wantTabs</u>);
</big></dt>
<dd>sets tab size (in number of spaces)<br><br>
</dd>
<dt><big><a name="EditWidgetBase.readOnly"></a>@property bool <u>readOnly</u>();
</big></dt>
<dd>readonly flag (when <b>true</b>, user cannot change content of editor)<br><br>
</dd>
<dt><big><a name="EditWidgetBase.readOnly"></a>@property EditWidgetBase <u>readOnly</u>(bool <u>readOnly</u>);
</big></dt>
<dd>sets readonly flag<br><br>
</dd>
<dt><big><a name="EditWidgetBase.replaceMode"></a>@property bool <u>replaceMode</u>();
</big></dt>
<dd>replace mode flag (when <b>true</b>, entered character replaces character under cursor)<br><br>
</dd>
<dt><big><a name="EditWidgetBase.replaceMode"></a>@property EditWidgetBase <u>replaceMode</u>(bool <u>replaceMode</u>);
</big></dt>
<dd>sets replace mode flag<br><br>
</dd>
<dt><big><a name="EditWidgetBase.useSpacesForTabs"></a>@property bool <u>useSpacesForTabs</u>();
</big></dt>
<dd>when <b>true</b>, spaces will be inserted instead of tabs<br><br>
</dd>
<dt><big><a name="EditWidgetBase.useSpacesForTabs"></a>@property EditWidgetBase <u>useSpacesForTabs</u>(bool <u>useSpacesForTabs</u>);
</big></dt>
<dd>set new Tab key behavior flag: when <b>true</b>, spaces will be inserted instead of tabs<br><br>
</dd>
<dt><big><a name="EditWidgetBase.tabSize"></a>@property int <u>tabSize</u>();
</big></dt>
<dd>returns tab size (in number of spaces)<br><br>
</dd>
<dt><big><a name="EditWidgetBase.tabSize"></a>@property EditWidgetBase <u>tabSize</u>(int <i>newTabSize</i>);
</big></dt>
<dd>sets tab size (in number of spaces)<br><br>
</dd>
<dt><big><a name="EditWidgetBase.content"></a>@property EditableContent <u>content</u>();
</big></dt>
<dd>editor <u>content</u> object<br><br>
</dd>
<dt><big><a name="EditWidgetBase._ownContent"></a>protected bool <u>_ownContent</u>;
</big></dt>
<dd>when ownContent is <b>false</b>, content should not be destroyed in editor destructor<br><br>
</dd>
<dt><big><a name="EditWidgetBase.content"></a>@property EditWidgetBase <u>content</u>(EditableContent <u>content</u>);
</big></dt>
<dd>set <u>content</u> object<br><br>
</dd>
<dt><big><a name="EditWidgetBase.text"></a>@property dstring <u>text</u>();
</big></dt>
<dd>get widget <u>text</u><br><br>
</dd>
<dt><big><a name="EditWidgetBase.text"></a>@property Widget <u>text</u>(dstring <i>s</i>);
</big></dt>
<dd>set <u>text</u><br><br>
</dd>
<dt><big><a name="EditWidgetBase.text"></a>@property Widget <u>text</u>(UIString <i>s</i>);
</big></dt>
<dd>set <u>text</u><br><br>
</dd>
<dt><big><a name="EditWidgetBase.caretRect"></a>protected Rect <u>caretRect</u>();
</big></dt>
<dd>returns cursor rectangle<br><br>
</dd>
<dt><big><a name="EditWidgetBase.drawCaret"></a>protected void <u>drawCaret</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>draws caret<br><br>
</dd>
<dt><big><a name="EditWidgetBase.updateScrollbars"></a>protected void <u>updateScrollbars</u>();
</big></dt>
<dd>override to update scrollbars - if necessary<br><br>
</dd>
<dt><big><a name="EditWidgetBase.correctCaretPos"></a>protected void <u>correctCaretPos</u>();
</big></dt>
<dd>when cursor position or selection is out of content bounds, fix it to nearest valid position<br><br>
</dd>
<dt><big><a name="EditWidgetBase.spacesForTab"></a>protected dstring <u>spacesForTab</u>(int <i>currentPos</i>);
</big></dt>
<dd>generate string of spaces, to reach next tab position<br><br>
</dd>
<dt><big><a name="EditWidgetBase.wholeLinesSelected"></a>protected bool <u>wholeLinesSelected</u>();
</big></dt>
<dd>returns <b>true</b> if one or more lines selected fully<br><br>
</dd>
<dt><big><a name="EditWidgetBase.indentLine"></a>protected dstring <u>indentLine</u>(dstring <i>src</i>, bool <i>back</i>);
</big></dt>
<dd>change line indent<br><br>
</dd>
<dt><big><a name="EditWidgetBase.indentRange"></a>protected void <u>indentRange</u>(bool <i>back</i>);
</big></dt>
<dd>indent / unindent range<br><br>
</dd>
<dt><big><a name="EditWidgetBase.findKeyAction"></a>protected Action <u>findKeyAction</u>(uint <i>keyCode</i>, uint <i>flags</i>);
</big></dt>
<dd>map key to action<br><br>
</dd>
<dt><big><a name="EditWidgetBase.onKeyEvent"></a>bool <u>onKeyEvent</u>(KeyEvent <i>event</i>);
</big></dt>
<dd>handle keys<br><br>
</dd>
<dt><big><a name="EditWidgetBase.onMouseEvent"></a>bool <u>onMouseEvent</u>(MouseEvent <i>event</i>);
</big></dt>
<dd>process mouse <i>event</i>; return <b>true</b> if <i>event</i> is processed by widget.<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="EditLine"></a>class <u>EditLine</u>: dlangui.widgets.editors.EditWidgetBase;
</big></dt>
<dd>single line editor<br><br>
<dl><dt><big><a name="EditLine.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd><u>measure</u><br><br>
</dd>
<dt><big><a name="EditLine.onKeyEvent"></a>bool <u>onKeyEvent</u>(KeyEvent <i>event</i>);
</big></dt>
<dd>handle keys<br><br>
</dd>
<dt><big><a name="EditLine.onMouseEvent"></a>bool <u>onMouseEvent</u>(MouseEvent <i>event</i>);
</big></dt>
<dd>process mouse <i>event</i>; return <b>true</b> if <i>event</i> is processed by widget.<br><br>
</dd>
<dt><big><a name="EditLine.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="EditLine.drawLineBackground"></a>protected void <u>drawLineBackground</u>(DrawBuf <i>buf</i>, Rect <i>lineRect</i>, Rect <i>visibleRect</i>);
</big></dt>
<dd>override to custom highlight of line background<br><br>
</dd>
<dt><big><a name="EditLine.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>draw content<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="EditBox"></a>class <u>EditBox</u>: dlangui.widgets.editors.EditWidgetBase, dlangui.widgets.controls.OnScrollHandler;
</big></dt>
<dd>single line editor<br><br>
<dl><dt><big><a name="EditBox.onScrollEvent"></a>bool <u>onScrollEvent</u>(AbstractSlider <i>source</i>, ScrollEvent <i>event</i>);
</big></dt>
<dd>handle scroll <i>event</i><br><br>
</dd>
<dt><big><a name="EditBox.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd><u>measure</u><br><br>
</dd>
<dt><big><a name="EditBox.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="EditBox.drawLineBackground"></a>protected void <u>drawLineBackground</u>(DrawBuf <i>buf</i>, int <i>lineIndex</i>, Rect <i>lineRect</i>, Rect <i>visibleRect</i>);
</big></dt>
<dd>override to custom highlight of line background<br><br>
</dd>
<dt><big><a name="EditBox.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>draw content<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,154 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.core.events</title>
</head><body>
<h1>dlangui.core.events</h1>
<!-- Generated by Ddoc from src/dlangui/core/events.d -->
DLANGUI library.
<br><br>
This module contains dlangui event types declarations.
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.core.<u>events</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="Action"></a>class <u>Action</u>;
</big></dt>
<dd>UI action<br><br>
<dl><dt><big><a name="Action.this"></a> this(int <i>id</i>, uint <i>keyCode</i>, uint <i>keyFlags</i> = 0);
</big></dt>
<dd>action with accelerator, w/o label<br><br>
</dd>
<dt><big><a name="Action.this"></a> this(int <i>id</i>, dstring <i>label</i>, string <i>iconResourceId</i> = null, uint <i>keyCode</i> = 0, uint <i>keyFlags</i> = 0);
</big></dt>
<dd>action with <i>label</i>, icon, and accelerator<br><br>
</dd>
<dt><big><a name="Action.accelerators"></a>@property Accelerator[] <u>accelerators</u>();
</big></dt>
<dd>returs array of <u>accelerators</u><br><br>
</dd>
<dt><big><a name="Action.acceleratorText"></a>@property dstring <u>acceleratorText</u>();
</big></dt>
<dd>returns text description for first accelerator of action; <b>null</b> if no accelerators<br><br>
</dd>
<dt><big><a name="Action.checkAccelerator"></a>bool <u>checkAccelerator</u>(uint <i>keyCode</i>, uint <i>keyFlags</i>);
</big></dt>
<dd>returns <b>true</b> if accelerator matches provided key code and flags<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ButtonDetails"></a>struct <u>ButtonDetails</u>;
</big></dt>
<dd>mouse button state details<br><br>
<dl><dt><big><a name="ButtonDetails._downTs"></a>long <u>_downTs</u>;
</big></dt>
<dd>Clock.currStdTime() for down event of this button (0 if button is up).<br><br>
</dd>
<dt><big><a name="ButtonDetails._upTs"></a>long <u>_upTs</u>;
</big></dt>
<dd>Clock.currStdTime() for up event of this button (0 if button is still down).<br><br>
</dd>
<dt><big><a name="ButtonDetails._downX"></a>short <u>_downX</u>;
</big></dt>
<dd>x coordinates of down event<br><br>
</dd>
<dt><big><a name="ButtonDetails._downY"></a>short <u>_downY</u>;
</big></dt>
<dd>y coordinates of down event<br><br>
</dd>
<dt><big><a name="ButtonDetails._downFlags"></a>ushort <u>_downFlags</u>;
</big></dt>
<dd>mouse button flags when down event occured<br><br>
</dd>
<dt><big><a name="ButtonDetails.down"></a>void <u>down</u>(short <i>x</i>, short <i>y</i>, ushort <i>flags</i>);
</big></dt>
<dd>update for button <u>down</u><br><br>
</dd>
<dt><big><a name="ButtonDetails.up"></a>void <u>up</u>(short <i>x</i>, short <i>y</i>, ushort <i>flags</i>);
</big></dt>
<dd>update for button <u>up</u><br><br>
</dd>
<dt><big><a name="ButtonDetails.downDuration"></a>@property int <u>downDuration</u>();
</big></dt>
<dd>returns button down state duration in hnsecs (1/10000 of second).<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="KeyEvent"></a>class <u>KeyEvent</u>;
</big></dt>
<dd>keyboard event<br><br>
<dl><dt><big><a name="KeyEvent.action"></a>@property KeyAction <u>action</u>();
</big></dt>
<dd>key <u>action</u> (KeyDown, KeyUp, Text, Repeat)<br><br>
</dd>
<dt><big><a name="KeyEvent.keyCode"></a>@property uint <u>keyCode</u>();
</big></dt>
<dd>key code<br><br>
</dd>
<dt><big><a name="KeyEvent.flags"></a>@property uint <u>flags</u>();
</big></dt>
<dd><u>flags</u> (shift, ctrl, alt...)<br><br>
</dd>
<dt><big><a name="KeyEvent.text"></a>@property dstring <u>text</u>();
</big></dt>
<dd>entered <u>text</u>, for Text action<br><br>
</dd>
<dt><big><a name="KeyEvent.this"></a> this(KeyAction <i>action</i>, uint <i>keyCode</i>, uint <i>flags</i>, dstring <i>text</i> = null);
</big></dt>
<dd>create key event<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ScrollEvent"></a>class <u>ScrollEvent</u>;
</big></dt>
<dd>slider/scrollbar event<br><br>
<dl><dt><big><a name="ScrollEvent.position"></a>@property void <u>position</u>(int <i>newPosition</i>);
</big></dt>
<dd>change <u>position</u> in event handler to update slider <u>position</u><br><br>
</dd>
<dt><big><a name="ScrollEvent.defaultUpdatePosition"></a>int <u>defaultUpdatePosition</u>();
</big></dt>
<dd>default update position for actions like PageUp/PageDown, LineUp/LineDown<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,364 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.graphics.fonts</title>
</head><body>
<h1>dlangui.graphics.fonts</h1>
<!-- Generated by Ddoc from src/dlangui/graphics/fonts.d -->
DLANGUI library.
<br><br>
This module contains base <u>fonts</u> access interface and common implementation.
<br><br>
Font - base class for <u>fonts</u>.
<br><br>
FontManager - base class for font managers - provides access to available <u>fonts</u>.
<br><br>
<br><br>
Actual implementation is:
<br><br>
dlangui.graphics.ftfonts - FreeType based font manager.
<br><br>
dlangui.platforms.windows.w32fonts - Win32 API based font manager.
<br><br>
<br><br>
To enable OpenGL support, build with version(USE_OPENGL);
<br><br>
<b>See Also:</b><br>
dlangui.graphics.drawbuf, DrawBuf, drawbuf, drawbuf.html
<br><br>
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.graphics.<u>fonts</u>;
<font color=green>// find suitable font of size 25, normal, preferrable Arial, or, if not available, any SansSerif font
</font>FontRef font = FontManager.instance.getFont(25, FontWeight.Normal, <font color=blue>false</font>, FontFamily.SansSerif, <font color=red>"Arial"</font>);
dstring sampleText = <font color=red>"Sample text to draw"d</font>;
<font color=green>// measure text string width and height (one line)
</font>Point sz = font.textSize(sampleText);
<font color=green>// draw red text at center of DrawBuf buf
</font>font.drawText(buf, buf.width / 2 - sz.x/2, buf.height / 2 - sz.y / 2, sampleText, 0xFF0000);
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="FontFamily"></a>enum <u>FontFamily</u>: ubyte;
</big></dt>
<dd>font families enum<br><br>
<dl><dt><big><a name="FontFamily.Unspecified"></a><u>Unspecified</u></big></dt>
<dd>Unknown / not set / does not matter<br><br>
</dd>
<dt><big><a name="FontFamily.SansSerif"></a><u>SansSerif</u></big></dt>
<dd>Sans Serif font, e.g. Arial<br><br>
</dd>
<dt><big><a name="FontFamily.Serif"></a><u>Serif</u></big></dt>
<dd><u>Serif</u> font, e.g. Times New Roman<br><br>
</dd>
<dt><big><a name="FontFamily.Fantasy"></a><u>Fantasy</u></big></dt>
<dd><u>Fantasy</u> font<br><br>
</dd>
<dt><big><a name="FontFamily.Cursive"></a><u>Cursive</u></big></dt>
<dd><u>Cursive</u> font<br><br>
</dd>
<dt><big><a name="FontFamily.MonoSpace"></a><u>MonoSpace</u></big></dt>
<dd>Monospace font (fixed pitch font), e.g. Courier New<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="FontWeight"></a>enum <u>FontWeight</u>: int;
</big></dt>
<dd>font weight constants (0..1000)<br><br>
<dl><dt><big><a name="FontWeight.Normal"></a><u>Normal</u></big></dt>
<dd>normal font weight<br><br>
</dd>
<dt><big><a name="FontWeight.Bold"></a><u>Bold</u></big></dt>
<dd>bold font<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="glyphDestroyCallback"></a>@property void function(uint id) <u>glyphDestroyCallback</u>();
</big></dt>
<dd>get glyph destroy callback (to cleanup OpenGL caches)
<br><br>
Used for resource management. Usually you don't have to call it manually.<br><br>
</dd>
<dt><big><a name="glyphDestroyCallback"></a>@property void <u>glyphDestroyCallback</u>(void function(uint id) <i>callback</i>);
</big></dt>
<dd>Set glyph destroy <i>callback</i> (to cleanup OpenGL caches)
This <i>callback</i> is used to tell OpenGL glyph cache that glyph is not more used - to let OpenGL glyph cache delete texture if all glyphs in it are no longer used.
<br><br>
Used for resource management. Usually you don't have to call it manually.<br><br>
</dd>
<dt><big><a name="nextGlyphId"></a>uint <u>nextGlyphId</u>();
</big></dt>
<dd>ID generator for glyphs
<br><br>
Generates next glyph ID. Unique IDs are being used to control OpenGL glyph cache items lifetime.
<br><br>
Used for resource management. Usually you don't have to call it manually.<br><br>
</dd>
<dt><big><a name="MAX_WIDTH_UNSPECIFIED"></a>immutable int <u>MAX_WIDTH_UNSPECIFIED</u>;
</big></dt>
<dd>constant for measureText maxWidth paramenter - to tell that all characters of text string should be measured.<br><br>
</dd>
<dt><big><a name="Font"></a>abstract class <u>Font</u>: dlangui.core.types.RefCountedObject;
</big></dt>
<dd>Instance of font with specific size, weight, face, etc.
<br><br>
Allows to measure text string and draw it on DrawBuf
<br><br>
Use FontManager.instance.getFont() to retrieve font instance.<br><br>
<dl><dt><big><a name="Font.size"></a>abstract @property int <u>size</u>();
</big></dt>
<dd>returns font <u>size</u> (as requested from font engine)<br><br>
</dd>
<dt><big><a name="Font.height"></a>abstract @property int <u>height</u>();
</big></dt>
<dd>returns actual font <u>height</u> including interline space<br><br>
</dd>
<dt><big><a name="Font.weight"></a>abstract @property int <u>weight</u>();
</big></dt>
<dd>returns font <u>weight</u><br><br>
</dd>
<dt><big><a name="Font.baseline"></a>abstract @property int <u>baseline</u>();
</big></dt>
<dd>returns <u>baseline</u> offset<br><br>
</dd>
<dt><big><a name="Font.italic"></a>abstract @property bool <u>italic</u>();
</big></dt>
<dd>returns <b>true</b> if font is <u>italic</u><br><br>
</dd>
<dt><big><a name="Font.face"></a>abstract @property string <u>face</u>();
</big></dt>
<dd>returns font <u>face</u> name<br><br>
</dd>
<dt><big><a name="Font.family"></a>abstract @property FontFamily <u>family</u>();
</big></dt>
<dd>returns font <u>family</u><br><br>
</dd>
<dt><big><a name="Font.isNull"></a>abstract @property bool <u>isNull</u>();
</big></dt>
<dd>returns <b>true</b> if font object is not yet initialized / loaded<br><br>
</dd>
<dt><big><a name="Font.isFixed"></a>@property bool <u>isFixed</u>();
</big></dt>
<dd>returns <b>true</b> if font has fixed pitch (all characters have equal width)<br><br>
</dd>
<dt><big><a name="Font.spaceWidth"></a>@property int <u>spaceWidth</u>();
</big></dt>
<dd>returns <b>true</b> if font is fixed<br><br>
</dd>
<dt><big><a name="Font.charWidth"></a>int <u>charWidth</u>(dchar <i>ch</i>);
</big></dt>
<dd>returns character width<br><br>
</dd>
<dt><big><a name="Font.measureText"></a>int <u>measureText</u>(const dchar[] <i>text</i>, ref int[] <i>widths</i>, int <i>maxWidth</i> = MAX_WIDTH_UNSPECIFIED, int <i>tabSize</i> = 4, int <i>tabOffset</i> = 0, uint <i>textFlags</i> = 0);
</big></dt>
<dd>Measure <i>text</i> string, return accumulated <i>widths</i>[] (distance to end of n-th character), returns number of measured chars.
<br><br>
Supports Tab character processing and processing of menu item labels like '&File'.
<br><br>
<b>Params:</b><br>
<table><tr><td>dchar[] <i>text</i></td>
<td><i>text</i> string to measure</td></tr>
<tr><td>int[] <i>widths</i></td>
<td>output buffer to put measured <i>widths</i> (<i>widths</i>[i] will be set to cumulative <i>widths</i> <i>text</i>[0..i])</td></tr>
<tr><td>int <i>maxWidth</i></td>
<td>maximum width to measure - measure is stopping if max width is reached (pass MAX_WIDTH_UNSPECIFIED to measure all characters)</td></tr>
<tr><td>int <i>tabSize</i></td>
<td>tabulation size, in number of spaces</td></tr>
<tr><td>int <i>tabOffset</i></td>
<td>when string is drawn not from left position, use to move tab stops left/right</td></tr>
<tr><td>uint <i>textFlags</i></td>
<td>TextFlag bit set - to control underline, hotkey label processing, etc...</td></tr>
</table><br>
<b>Returns:</b><br>
number of characters measured (may be less than <i>text</i>.length if <i>maxWidth</i> is reached)<br><br>
</dd>
<dt><big><a name="Font.textSize"></a>Point <u>textSize</u>(const dchar[] <i>text</i>, int <i>maxWidth</i> = MAX_WIDTH_UNSPECIFIED, int <i>tabSize</i> = 4, int <i>tabOffset</i> = 0, uint <i>textFlags</i> = 0);
</big></dt>
<dd>Measure <i>text</i> string as single line, returns width and height
<br><br>
<b>Params:</b><br>
<table><tr><td>dchar[] <i>text</i></td>
<td><i>text</i> string to measure</td></tr>
<tr><td>int <i>maxWidth</i></td>
<td>maximum width - measure is stopping if max width is reached</td></tr>
<tr><td>int <i>tabSize</i></td>
<td>tabulation size, in number of spaces</td></tr>
<tr><td>int <i>tabOffset</i></td>
<td>when string is drawn not from left position, use to move tab stops left/right</td></tr>
<tr><td>uint <i>textFlags</i></td>
<td>TextFlag bit set - to control underline, hotkey label processing, etc...</td></tr>
</table><br>
</dd>
<dt><big><a name="Font.drawText"></a>void <u>drawText</u>(DrawBuf <i>buf</i>, int <i>x</i>, int <i>y</i>, const dchar[] <i>text</i>, uint <i>color</i>, int <i>tabSize</i> = 4, int <i>tabOffset</i> = 0, uint <i>textFlags</i> = 0);
</big></dt>
<dd>Draw <i>text</i> string to buffer.
<br><br>
<b>Params:</b><br>
<table><tr><td>DrawBuf <i>buf</i></td>
<td>graphics buffer to draw <i>text</i> to</td></tr>
<tr><td>int <i>x</i></td>
<td><i>x</i> coordinate to draw first character at</td></tr>
<tr><td>int <i>y</i></td>
<td><i>y</i> coordinate to draw first character at</td></tr>
<tr><td>dchar[] <i>text</i></td>
<td><i>text</i> string to draw</td></tr>
<tr><td>uint <i>color</i></td>
<td><i>color</i> for drawing of glyphs</td></tr>
<tr><td>int <i>tabSize</i></td>
<td>tabulation size, in number of spaces</td></tr>
<tr><td>int <i>tabOffset</i></td>
<td>when string is drawn not from left position, use to move tab stops left/right</td></tr>
<tr><td>uint <i>textFlags</i></td>
<td>set of TextFlag bit fields</td></tr>
</table><br>
</dd>
<dt><big><a name="Font.getCharGlyph"></a>abstract Glyph* <u>getCharGlyph</u>(dchar <i>ch</i>, bool <i>withImage</i> = true);
</big></dt>
<dd>get character glyph information<br><br>
</dd>
<dt><big><a name="Font.checkpoint"></a>abstract void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries<br><br>
</dd>
<dt><big><a name="Font.cleanup"></a>abstract void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="FontList"></a>struct <u>FontList</u>;
</big></dt>
<dd>font instance collection - utility class, for font manager implementations<br><br>
</dd>
<dt><big><a name="FontManager"></a>abstract class <u>FontManager</u>;
</big></dt>
<dd>Access points to fonts.<br><br>
<dl><dt><big><a name="FontManager.instance"></a>static @property void <u>instance</u>(FontManager <i>manager</i>);
</big></dt>
<dd>sets new font <i>manager</i> singleton <u>instance</u><br><br>
</dd>
<dt><big><a name="FontManager.instance"></a>static @property FontManager <u>instance</u>();
</big></dt>
<dd>returns font manager singleton <u>instance</u><br><br>
</dd>
<dt><big><a name="FontManager.getFont"></a>abstract ref FontRef <u>getFont</u>(int <i>size</i>, int <i>weight</i>, bool <i>italic</i>, FontFamily <i>family</i>, string <i>face</i>);
</big></dt>
<dd>get font instance best matched specified parameters<br><br>
</dd>
<dt><big><a name="FontManager.checkpoint"></a>abstract void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries -- for cleanup of unused fonts<br><br>
</dd>
<dt><big><a name="FontManager.cleanup"></a>abstract void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="GlyphCache"></a>struct <u>GlyphCache</u>;
</big></dt>
<dd>Glyph image cache
<br><br>
Recently used glyphs are marked with glyph.lastUsage = 1
<br><br>
checkpoint() call clears usage marks
<br><br>
cleanup() removes all items not accessed since last checkpoint()<br><br>
<dl><dt><big><a name="GlyphCache.find"></a>Glyph* <u>find</u>(dchar <i>ch</i>);
</big></dt>
<dd>try to <u>find</u> glyph for character in cache, returns <b>null</b> if not found<br><br>
</dd>
<dt><big><a name="GlyphCache.put"></a>Glyph* <u>put</u>(dchar <i>ch</i>, Glyph* <i>glyph</i>);
</big></dt>
<dd><u>put</u> character <i>glyph</i> to cache<br><br>
</dd>
<dt><big><a name="GlyphCache.cleanup"></a>void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
<dt><big><a name="GlyphCache.checkpoint"></a>void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries<br><br>
</dd>
<dt><big><a name="GlyphCache.clear"></a>void <u>clear</u>();
</big></dt>
<dd>removes all entries (when built with USE_OPENGL version, notify OpenGL cache about removed glyphs)<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,90 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.graphics.ftfonts</title>
</head><body>
<h1>dlangui.graphics.ftfonts</h1>
<!-- Generated by Ddoc from src/dlangui/graphics/ftfonts.d -->
DLANGUI library.
<br><br>
This file contains FontManager implementation based on FreeType library.
<br><br>
<br><br>
<br><br>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="FreeTypeFont"></a>class <u>FreeTypeFont</u>: dlangui.graphics.fonts.Font;
</big></dt>
<dd>Font implementation based on Win32 API system fonts.<br><br>
<dl><dt><big><a name="FreeTypeFont.this"></a> this(FontFileItem <i>item</i>, int <i>size</i>);
</big></dt>
<dd>need to call create() after construction to initialize font<br><br>
</dd>
<dt><big><a name="FreeTypeFont.clear"></a>void <u>clear</u>();
</big></dt>
<dd>cleanup resources<br><br>
</dd>
<dt><big><a name="FreeTypeFont.findGlyph"></a>bool <u>findGlyph</u>(dchar <i>code</i>, dchar <i>def_char</i>, ref FT_UInt <i>index</i>, ref FreeTypeFontFile <i>file</i>);
</big></dt>
<dd>find glyph <i>index</i> for character<br><br>
</dd>
<dt><big><a name="FreeTypeFont.create"></a>bool <u>create</u>();
</big></dt>
<dd>load font files<br><br>
</dd>
<dt><big><a name="FreeTypeFont.checkpoint"></a>void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries<br><br>
</dd>
<dt><big><a name="FreeTypeFont.cleanup"></a>void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="FreeTypeFontManager"></a>class <u>FreeTypeFontManager</u>: dlangui.graphics.fonts.FontManager;
</big></dt>
<dd>FreeType based font manager.<br><br>
<dl><dt><big><a name="FreeTypeFontManager.getFont"></a>ref FontRef <u>getFont</u>(int <i>size</i>, int <i>weight</i>, bool <i>italic</i>, FontFamily <i>family</i>, string <i>face</i>);
</big></dt>
<dd>get font instance with specified parameters<br><br>
</dd>
<dt><big><a name="FreeTypeFontManager.checkpoint"></a>void <u>checkpoint</u>();
</big></dt>
<dd>clear usage flags for all entries<br><br>
</dd>
<dt><big><a name="FreeTypeFontManager.cleanup"></a>void <u>cleanup</u>();
</big></dt>
<dd>removes entries not used after last call of checkpoint() or <u>cleanup</u>()<br><br>
</dd>
<dt><big><a name="FreeTypeFontManager.registerFont"></a>bool <u>registerFont</u>(string <i>filename</i>, FontFamily <i>family</i> = FontFamily.SansSerif, string <i>face</i> = null, bool <i>italic</i> = false, int <i>weight</i> = 0);
</big></dt>
<dd>register freetype font by <i>filename</i> - optinally font properties can be passed if known (e.g. from libfontconfig).<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,133 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.graphics.gldrawbuf</title>
</head><body>
<h1>dlangui.graphics.gldrawbuf</h1>
<!-- Generated by Ddoc from src/dlangui/graphics/gldrawbuf.d -->
DLANGUI library.
<br><br>
This module contains opengl based drawing buffer implementation.
<br><br>
To enable OpenGL support, build with version(USE_OPENGL);
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.graphics.<u>gldrawbuf</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="GLDrawBuf"></a>class <u>GLDrawBuf</u>: dlangui.graphics.drawbuf.DrawBuf;
</big></dt>
<dd>drawing buffer - image container which allows to perform some drawing operations<br><br>
<dl><dt><big><a name="GLDrawBuf.scene"></a>@property Scene <u>scene</u>();
</big></dt>
<dd>get current <u>scene</u> (exists only between beforeDrawing() and afterDrawing() calls)<br><br>
</dd>
<dt><big><a name="GLDrawBuf.width"></a>@property int <u>width</u>();
</big></dt>
<dd>returns current <u>width</u><br><br>
</dd>
<dt><big><a name="GLDrawBuf.height"></a>@property int <u>height</u>();
</big></dt>
<dd>returns current <u>height</u><br><br>
</dd>
<dt><big><a name="GLDrawBuf.beforeDrawing"></a>void <u>beforeDrawing</u>();
</big></dt>
<dd>reserved for hardware-accelerated drawing - begins drawing batch<br><br>
</dd>
<dt><big><a name="GLDrawBuf.afterDrawing"></a>void <u>afterDrawing</u>();
</big></dt>
<dd>reserved for hardware-accelerated drawing - ends drawing batch<br><br>
</dd>
<dt><big><a name="GLDrawBuf.resize"></a>void <u>resize</u>(int <i>width</i>, int <i>height</i>);
</big></dt>
<dd><u>resize</u> buffer<br><br>
</dd>
<dt><big><a name="GLDrawBuf.fill"></a>void <u>fill</u>(uint <i>color</i>);
</big></dt>
<dd><u>fill</u> the whole buffer with solid <i>color</i> (no clipping applied)<br><br>
</dd>
<dt><big><a name="GLDrawBuf.fillRect"></a>void <u>fillRect</u>(Rect <i>rc</i>, uint <i>color</i>);
</big></dt>
<dd>fill rectangle with solid <i>color</i> (clipping is applied)<br><br>
</dd>
<dt><big><a name="GLDrawBuf.drawGlyph"></a>void <u>drawGlyph</u>(int <i>x</i>, int <i>y</i>, Glyph* <i>glyph</i>, uint <i>color</i>);
</big></dt>
<dd>draw 8bit alpha image - usually font <i>glyph</i> using specified <i>color</i> (clipping is applied)<br><br>
</dd>
<dt><big><a name="GLDrawBuf.drawFragment"></a>void <u>drawFragment</u>(int <i>x</i>, int <i>y</i>, DrawBuf <i>src</i>, Rect <i>srcrect</i>);
</big></dt>
<dd>draw source buffer rectangle contents to destination buffer<br><br>
</dd>
<dt><big><a name="GLDrawBuf.drawRescaled"></a>void <u>drawRescaled</u>(Rect <i>dstrect</i>, DrawBuf <i>src</i>, Rect <i>srcrect</i>);
</big></dt>
<dd>draw source buffer rectangle contents to destination buffer rectangle applying rescaling<br><br>
</dd>
<dt><big><a name="GLDrawBuf.clear"></a>void <u>clear</u>();
</big></dt>
<dd>cleanup resources<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="SceneItem"></a>abstract class <u>SceneItem</u>;
</big></dt>
<dd>base class for all drawing scene items.<br><br>
</dd>
<dt><big><a name="Scene"></a>class <u>Scene</u>;
</big></dt>
<dd>Drawing scene (operations sheduled for drawing)<br><br>
<dl><dt><big><a name="Scene.add"></a>void <u>add</u>(SceneItem <i>item</i>);
</big></dt>
<dd><u>add</u> new scene <i>item</i> to scene<br><br>
</dd>
<dt><big><a name="Scene.draw"></a>void <u>draw</u>();
</big></dt>
<dd>draws all scene items and removes them from list<br><br>
</dd>
<dt><big><a name="Scene.reset"></a>void <u>reset</u>();
</big></dt>
<dd>resets scene for new drawing - deletes all items<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="onObjectDestroyedCallback"></a>void <u>onObjectDestroyedCallback</u>(uint <i>pobject</i>);
</big></dt>
<dd>object deletion listener callback function type<br><br>
</dd>
<dt><big><a name="onGlyphDestroyedCallback"></a>void <u>onGlyphDestroyedCallback</u>(uint <i>pobject</i>);
</big></dt>
<dd>object deletion listener callback function type<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,51 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.graphics.glsupport</title>
</head><body>
<h1>dlangui.graphics.glsupport</h1>
<!-- Generated by Ddoc from src/dlangui/graphics/glsupport.d -->
DLANGUI library.
<br><br>
This module contains OpenGL access layer.
<br><br>
To enable OpenGL support, build with version(USE_OPENGL);
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.graphics.<u>glsupport</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="genTexture"></a>uint <u>genTexture</u>();
</big></dt>
<dd>generate new texture ID<br><br>
</dd>
<dt><big><a name="deleteTexture"></a>void <u>deleteTexture</u>(ref uint <i>textureId</i>);
</big></dt>
<dd>delete OpenGL texture<br><br>
</dd>
<dt><big><a name="flushGL"></a>void <u>flushGL</u>();
</big></dt>
<dd>call glFlush<br><br>
</dd>
<dt><big><a name="createFramebuffer"></a>bool <u>createFramebuffer</u>(ref uint <i>textureId</i>, ref uint <i>framebufferId</i>, int <i>dx</i>, int <i>dy</i>);
</big></dt>
<dd>returns texture ID for buffer, 0 if failed<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,122 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.core.i18n</title>
</head><body>
<h1>dlangui.core.i18n</h1>
<!-- Generated by Ddoc from src/dlangui/core/i18n.d -->
DLANGUI library.
<br><br>
This module contains internationalization support implementation.
<br><br>
Translation files contain of simple key=value pair lines.
<br><br>
STRING_RESOURCE_ID=Translation text.
<br><br>
Supports fallback to another translation file (e.g. default language).
<br><br>
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.core.<u>i18n</u>;
<font color=green>// use global i18n object to get translation for string ID
</font>dstring translated = <u>i18n</u>.get(<font color=red>"STR_FILE_OPEN"</font>);
<font color=green>// UIString type can hold either string resource id or dstring raw value.
</font>UIString text;
<font color=green>// assign resource id as string
</font>text = <font color=red>"ID_FILE_EXIT"</font>;
<font color=green>// or assign raw value as dstring
</font>text = <font color=red>"some text"d</font>;
<font color=green>// i18n.get() will automatically be invoked when getting UIString value (e.g. using alias this).
</font>dstring translated = text;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="UIString"></a>struct <u>UIString</u>;
</big></dt>
<dd>container for UI string - either raw value or string resource ID<br><br>
<dl><dt><big><a name="UIString.this"></a> this(string <i>id</i>);
</big></dt>
<dd>create string with i18n resource <i>id</i><br><br>
</dd>
<dt><big><a name="UIString.this"></a> this(dstring <i>value</i>);
</big></dt>
<dd>create string with raw <i>value</i><br><br>
</dd>
<dt><big><a name="UIString.value"></a>const @property dstring <u>value</u>();
</big></dt>
<dd>get <u>value</u> (either raw or translated by id)<br><br>
</dd>
<dt><big><a name="UIString.value"></a>@property void <u>value</u>(dstring <i>newValue</i>);
</big></dt>
<dd>set raw <u>value</u><br><br>
</dd>
<dt><big><a name="UIString.opAssign"></a>ref UIString <u>opAssign</u>(dstring <i>rawValue</i>);
</big></dt>
<dd>assign raw value<br><br>
</dd>
<dt><big><a name="UIString.opAssign"></a>ref UIString <u>opAssign</u>(string <i>ID</i>);
</big></dt>
<dd>assign <i>ID</i><br><br>
</dd>
</dl>
</dd>
<dt><big><a name="UIStringList"></a>class <u>UIStringList</u>;
</big></dt>
<dd>UI string translator<br><br>
<dl><dt><big><a name="UIStringList.clear"></a>void <u>clear</u>();
</big></dt>
<dd>remove all items<br><br>
</dd>
<dt><big><a name="UIStringList.set"></a>void <u>set</u>(string <i>id</i>, dstring <i>value</i>);
</big></dt>
<dd><u>set</u> item <i>value</i><br><br>
</dd>
<dt><big><a name="UIStringList.get"></a>const dstring <u>get</u>(string <i>id</i>);
</big></dt>
<dd><u>get</u> item value, <b>null</b> if translation is not found for <i>id</i><br><br>
</dd>
<dt><big><a name="UIStringList.load"></a>bool <u>load</u>(std.<i>stream</i>.InputStream <i>stream</i>);
</big></dt>
<dd><u>load</u> strings from <i>stream</i><br><br>
</dd>
<dt><big><a name="UIStringList.load"></a>bool <u>load</u>(string <i>filename</i>);
</big></dt>
<dd><u>load</u> strings from file (utf8, id=value lines)<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,44 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.graphics.images</title>
</head><body>
<h1>dlangui.graphics.images</h1>
<!-- Generated by Ddoc from src/dlangui/graphics/images.d -->
DLANGUI library.
<br><br>
This module contains image loading functions.
<br><br>
Currently uses FreeImage.
<br><br>
Usage of libpng is not feasible under linux due to conflicts of library and binding versions.
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.graphics.<u>images</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="loadImage"></a>ColorDrawBuf <u>loadImage</u>(string <i>filename</i>);
</big></dt>
<dd>load and decode image from file to ColorDrawBuf, returns <b>null</b> if loading or decoding is failed<br><br>
</dd>
<dt><big><a name="loadImage"></a>ColorDrawBuf <u>loadImage</u>(InputStream <i>stream</i>);
</big></dt>
<dd>load and decode image from <i>stream</i> to ColorDrawBuf, returns <b>null</b> if loading or decoding is failed<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,124 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.layouts</title>
</head><body>
<h1>dlangui.widgets.layouts</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/layouts.d -->
DLANGUI library.
<br><br>
This module contains common <u>layouts</u> implementations.
<br><br>
Layouts are similar to the same in Android.
<br><br>
LinearLayout - either VerticalLayout or HorizontalLayout.
VerticalLayout - just LinearLayout with orientation=Orientation.Vertical
HorizontalLayout - just LinearLayout with orientation=Orientation.Vertical
FrameLayout - children occupy the same place, usually one one is visible at a time
TableLayout - children aligned into rows and columns
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>layouts</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="LayoutItem"></a>struct <u>LayoutItem</u>;
</big></dt>
<dd>helper for layouts<br><br>
<dl><dt><big><a name="LayoutItem.set"></a>void <u>set</u>(Widget <i>widget</i>, Orientation <i>orientation</i>);
</big></dt>
<dd>sets item for <i>widget</i><br><br>
</dd>
<dt><big><a name="LayoutItem.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>set item and <u>measure</u> it<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="LayoutItems"></a>class <u>LayoutItems</u>;
</big></dt>
<dd>helper class for layouts<br><br>
<dl><dt><big><a name="LayoutItems.measure"></a>Point <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>fill widget layout list with Visible or Invisible items, <u>measure</u> them<br><br>
</dd>
<dt><big><a name="LayoutItems.setWidgets"></a>void <u>setWidgets</u>(ref WidgetList <i>widgets</i>);
</big></dt>
<dd>fill widget layout list with Visible or Invisible items, measure them<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="FrameLayout"></a>class <u>FrameLayout</u>: dlangui.widgets.widget.WidgetGroup;
</big></dt>
<dd>place all children into same place (usually, only one child should be visible at a time)<br><br>
<dl><dt><big><a name="FrameLayout.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>Measure widget according to desired width and height constraints. (Step 1 of two phase layout).<br><br>
</dd>
<dt><big><a name="FrameLayout.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="FrameLayout.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>Draw widget at its position to buffer<br><br>
</dd>
<dt><big><a name="FrameLayout.showChild"></a>bool <u>showChild</u>(string <i>ID</i>, Visibility <i>otherChildrenVisibility</i> = Visibility.Invisible, bool <i>updateFocus</i> = false);
</big></dt>
<dd>make one of children (with specified <i>ID</i>) visible, for the rest, set visibility to <i>otherChildrenVisibility</i><br><br>
</dd>
</dl>
</dd>
<dt><big><a name="TableLayout"></a>class <u>TableLayout</u>: dlangui.widgets.widget.WidgetGroup;
</big></dt>
<dd>layout children as table with rows and columns<br><br>
<dl><dt><big><a name="TableLayout.colCount"></a>@property int <u>colCount</u>();
</big></dt>
<dd>number of columns<br><br>
</dd>
<dt><big><a name="TableLayout.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>Measure widget according to desired width and height constraints. (Step 1 of two phase layout).<br><br>
</dd>
<dt><big><a name="TableLayout.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="TableLayout.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>Draw widget at its position to buffer<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,62 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.core.linestream</title>
</head><body>
<h1>dlangui.core.linestream</h1>
<!-- Generated by Ddoc from src/dlangui/core/linestream.d -->
DLANGUI library.
<br><br>
This module contains text file reader implementation.
<br><br>
Support utf8, utf16, utf32 be and le encodings, and line endings - according to D language source file specification.
<br><br>
Low resource consuming. Doesn't flood with GC allocations. Dup line if you want to store it somewhere.
<br><br>
Tracks line number.
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.core.<u>linestream</u>;
<font color=blue>import</font> std.stdio;
<font color=blue>import</font> std.conv;
<font color=blue>import</font> std.utf;
string fname = <font color=red>"somefile.d"</font>;
writeln(<font color=red>"opening file"</font>);
std.stream.File f = <font color=blue>new</font> std.stream.File(fname);
<font color=blue>scope</font>(exit) { f.close(); }
<font color=blue>try</font> {
LineStream lines = LineStream.create(f, fname);
<font color=blue>for</font> (;;) {
<font color=blue>dchar</font>[] s = lines.readLine();
<font color=blue>if</font> (s <font color=blue>is</font> <font color=blue>null</font>)
<font color=blue>break</font>;
writeln(<font color=red>"line "</font> ~ to!string(lines.line()) ~ <font color=red>":"</font> ~ toUTF8(s));
}
<font color=blue>if</font> (lines.errorCode != 0) {
writeln(<font color=red>"Error "</font>, lines.errorCode, <font color=red>" "</font>, lines.errorMessage, <font color=red>" -- at line "</font>, lines.errorLine, <font color=red>" position "</font>, lines.errorPos);
} <font color=blue>else</font> {
writeln(<font color=red>"EOF reached"</font>);
}
} <font color=blue>catch</font> (Exception e) {
writeln(<font color=red>"Exception "</font> ~ e.toString);
}
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,279 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.lists</title>
</head><body>
<h1>dlangui.widgets.lists</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/lists.d -->
DLANGUI library.
<br><br>
This module contains list widgets implementation.
<br><br>
Similar to <u>lists</u> implementation in Android UI API.
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>lists</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="ListAdapter"></a>interface <u>ListAdapter</u>;
</big></dt>
<dd>list widget adapter provides items for list widgets<br><br>
<dl><dt><big><a name="ListAdapter.itemCount"></a>abstract @property int <u>itemCount</u>();
</big></dt>
<dd>returns number of widgets in list<br><br>
</dd>
<dt><big><a name="ListAdapter.itemWidget"></a>abstract Widget <u>itemWidget</u>(int <i>index</i>);
</big></dt>
<dd>return list item widget by item <i>index</i><br><br>
</dd>
<dt><big><a name="ListAdapter.itemState"></a>abstract uint <u>itemState</u>(int <i>index</i>);
</big></dt>
<dd>return list item's state flags<br><br>
</dd>
<dt><big><a name="ListAdapter.setItemState"></a>abstract uint <u>setItemState</u>(int <i>index</i>, uint <i>flags</i>);
</big></dt>
<dd>set one or more list item's state <i>flags</i>, returns updated state<br><br>
</dd>
<dt><big><a name="ListAdapter.resetItemState"></a>abstract uint <u>resetItemState</u>(int <i>index</i>, uint <i>flags</i>);
</big></dt>
<dd>reset one or more list item's state <i>flags</i>, returns updated state<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="WidgetListAdapter"></a>class <u>WidgetListAdapter</u>: dlangui.widgets.lists.ListAdapter;
</big></dt>
<dd>List adapter for simple list of widget instances<br><br>
<dl><dt><big><a name="WidgetListAdapter.widgets"></a>@property ref WidgetList <u>widgets</u>();
</big></dt>
<dd>list of <u>widgets</u> to display<br><br>
</dd>
<dt><big><a name="WidgetListAdapter.itemCount"></a>@property int <u>itemCount</u>();
</big></dt>
<dd>returns number of widgets in list<br><br>
</dd>
<dt><big><a name="WidgetListAdapter.itemWidget"></a>Widget <u>itemWidget</u>(int <i>index</i>);
</big></dt>
<dd>return list item widget by item <i>index</i><br><br>
</dd>
<dt><big><a name="WidgetListAdapter.itemState"></a>uint <u>itemState</u>(int <i>index</i>);
</big></dt>
<dd>return list item's state flags<br><br>
</dd>
<dt><big><a name="WidgetListAdapter.setItemState"></a>uint <u>setItemState</u>(int <i>index</i>, uint <i>flags</i>);
</big></dt>
<dd>set one or more list item's state <i>flags</i>, returns updated state<br><br>
</dd>
<dt><big><a name="WidgetListAdapter.resetItemState"></a>uint <u>resetItemState</u>(int <i>index</i>, uint <i>flags</i>);
</big></dt>
<dd>reset one or more list item's state <i>flags</i>, returns updated state<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ListWidget"></a>class <u>ListWidget</u>: dlangui.widgets.widget.WidgetGroup, dlangui.widgets.controls.OnScrollHandler;
</big></dt>
<dd>List<br><br>
<dl><dt><big><a name="ListWidget.orientation"></a>@property Orientation <u>orientation</u>();
</big></dt>
<dd>returns linear layout <u>orientation</u> (Vertical, Horizontal)<br><br>
</dd>
<dt><big><a name="ListWidget.orientation"></a>@property ListWidget <u>orientation</u>(Orientation <i>value</i>);
</big></dt>
<dd>sets linear layout <u>orientation</u><br><br>
</dd>
<dt><big><a name="ListWidget._firstVisibleItem"></a>protected int <u>_firstVisibleItem</u>;
</big></dt>
<dd>first visible item index<br><br>
</dd>
<dt><big><a name="ListWidget._scrollPosition"></a>protected int <u>_scrollPosition</u>;
</big></dt>
<dd>scroll position - offset of scroll area<br><br>
</dd>
<dt><big><a name="ListWidget._maxScrollPosition"></a>protected int <u>_maxScrollPosition</u>;
</big></dt>
<dd>maximum scroll position<br><br>
</dd>
<dt><big><a name="ListWidget._clientRc"></a>protected Rect <u>_clientRc</u>;
</big></dt>
<dd>client area rectangle (counting padding, margins, and scrollbar)<br><br>
</dd>
<dt><big><a name="ListWidget._totalSize"></a>protected int <u>_totalSize</u>;
</big></dt>
<dd>total height of all items for Vertical orientation, or width for Horizontal<br><br>
</dd>
<dt><big><a name="ListWidget._hoverItemIndex"></a>protected int <u>_hoverItemIndex</u>;
</big></dt>
<dd>item with Hover state, -1 if no such item<br><br>
</dd>
<dt><big><a name="ListWidget._selectedItemIndex"></a>protected int <u>_selectedItemIndex</u>;
</big></dt>
<dd>item with Selected state, -1 if no such item<br><br>
</dd>
<dt><big><a name="ListWidget._selectOnHover"></a>protected bool <u>_selectOnHover</u>;
</big></dt>
<dd>when <b>true</b>, mouse hover selects underlying item<br><br>
</dd>
<dt><big><a name="ListWidget.selectOnHover"></a>@property bool <u>selectOnHover</u>();
</big></dt>
<dd>when <b>true</b>, mouse hover selects underlying item<br><br>
</dd>
<dt><big><a name="ListWidget.selectOnHover"></a>@property ListWidget <u>selectOnHover</u>(bool <i>select</i>);
</big></dt>
<dd>when <b>true</b>, mouse hover selects underlying item<br><br>
</dd>
<dt><big><a name="ListWidget._clickOnButtonDown"></a>protected bool <u>_clickOnButtonDown</u>;
</big></dt>
<dd>if <b>true</b>, generate itemClicked on mouse down instead mouse up event<br><br>
</dd>
<dt><big><a name="ListWidget.itemRectNoScroll"></a>Rect <u>itemRectNoScroll</u>(int <i>index</i>);
</big></dt>
<dd>returns rectangle for item (not scrolled, first item starts at 0,0)<br><br>
</dd>
<dt><big><a name="ListWidget.itemRect"></a>Rect <u>itemRect</u>(int <i>index</i>);
</big></dt>
<dd>returns rectangle for item (scrolled)<br><br>
</dd>
<dt><big><a name="ListWidget.itemByPosition"></a>int <u>itemByPosition</u>(int <i>pos</i>);
</big></dt>
<dd>returns item index by 0-based offset from top/left of list content<br><br>
</dd>
<dt><big><a name="ListWidget._ownAdapter"></a>protected bool <u>_ownAdapter</u>;
</big></dt>
<dd>when <b>true</b>, need to destroy adapter on list destroy<br><br>
</dd>
<dt><big><a name="ListWidget.adapter"></a>@property ListAdapter <u>adapter</u>();
</big></dt>
<dd>get <u>adapter</u><br><br>
</dd>
<dt><big><a name="ListWidget.adapter"></a>@property ListWidget <u>adapter</u>(ListAdapter <u>adapter</u>);
</big></dt>
<dd>set <u>adapter</u><br><br>
</dd>
<dt><big><a name="ListWidget.ownAdapter"></a>@property ListWidget <u>ownAdapter</u>(ListAdapter <i>adapter</i>);
</big></dt>
<dd>set <i>adapter</i>, which will be owned by list (destroy will be called for <i>adapter</i> on widget destroy)<br><br>
</dd>
<dt><big><a name="ListWidget.itemCount"></a>@property int <u>itemCount</u>();
</big></dt>
<dd>returns number of widgets in list<br><br>
</dd>
<dt><big><a name="ListWidget.itemWidget"></a>Widget <u>itemWidget</u>(int <i>index</i>);
</big></dt>
<dd>return list item widget by item <i>index</i><br><br>
</dd>
<dt><big><a name="ListWidget.itemEnabled"></a>bool <u>itemEnabled</u>(int <i>index</i>);
</big></dt>
<dd>returns <b>true</b> if item with corresponding <i>index</i> is enabled<br><br>
</dd>
<dt><big><a name="ListWidget.selectionChanged"></a>protected void <u>selectionChanged</u>(int <i>index</i>, int <i>previouslySelectedItem</i> = -1);
</big></dt>
<dd>override to handle change of selection<br><br>
</dd>
<dt><big><a name="ListWidget.itemClicked"></a>protected void <u>itemClicked</u>(int <i>index</i>);
</big></dt>
<dd>override to handle mouse up on item<br><br>
</dd>
<dt><big><a name="ListWidget.handleFocusChange"></a>protected void <u>handleFocusChange</u>(bool <i>focused</i>);
</big></dt>
<dd>override to handle focus changes<br><br>
</dd>
<dt><big><a name="ListWidget.makeSelectionVisible"></a>void <u>makeSelectionVisible</u>();
</big></dt>
<dd>ensure selected item is visible (scroll if necessary)<br><br>
</dd>
<dt><big><a name="ListWidget.makeItemVisible"></a>void <u>makeItemVisible</u>(int <i>itemIndex</i>);
</big></dt>
<dd>ensure item is visible<br><br>
</dd>
<dt><big><a name="ListWidget.moveSelection"></a>bool <u>moveSelection</u>(int <i>direction</i>, bool <i>wrapAround</i> = true);
</big></dt>
<dd>move selection<br><br>
</dd>
<dt><big><a name="ListWidget.onScrollEvent"></a>bool <u>onScrollEvent</u>(AbstractSlider <i>source</i>, ScrollEvent <i>event</i>);
</big></dt>
<dd>handle scroll <i>event</i><br><br>
</dd>
<dt><big><a name="ListWidget.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>Measure widget according to desired width and height constraints. (Step 1 of two phase layout).<br><br>
</dd>
<dt><big><a name="ListWidget.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="ListWidget.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>Draw widget at its position to buffer<br><br>
</dd>
<dt><big><a name="ListWidget.onKeyEvent"></a>bool <u>onKeyEvent</u>(KeyEvent <i>event</i>);
</big></dt>
<dd>list navigation using keys<br><br>
</dd>
<dt><big><a name="ListWidget.onMouseEvent"></a>bool <u>onMouseEvent</u>(MouseEvent <i>event</i>);
</big></dt>
<dd>process mouse <i>event</i>; return <b>true</b> if <i>event</i> is processed by widget.<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,40 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.core.logger</title>
</head><body>
<h1>dlangui.core.logger</h1>
<!-- Generated by Ddoc from src/dlangui/core/logger.d -->
DLANGUI library.
<br><br>
This module contains <u>logger</u> implementation.
<br><br>
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.core.<u>logger</u>;
<font color=green>// use stderror for logging
</font>setStderrLogger();
<font color=green>// set log level
</font>setLogLevel(LogLeve.Debug);
<font color=green>// log debug message
</font>Log.d(<font color=red>"mouse clicked at "</font>, x, <font color=red>","</font>, y);
<font color=green>// log error message
</font>Log.d(<font color=red>"exception while reading file"</font>, e);
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,303 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.menu</title>
</head><body>
<h1>dlangui.widgets.menu</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/menu.d -->
DLANGUI library.
<br><br>
This module contains <u>menu</u> widgets implementation.
<br><br>
MenuItem - <u>menu</u> item properties container - to hold hierarchy of <u>menu</u>.
MainMenu - main <u>menu</u> widget
PopupMenu - popup <u>menu</u> widget
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.popup;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="MenuItemType"></a>enum <u>MenuItemType</u>: int;
</big></dt>
<dd>menu item type<br><br>
<dl><dt><big><a name="MenuItemType.Normal"></a><u>Normal</u></big></dt>
<dd>normal menu item<br><br>
</dd>
<dt><big><a name="MenuItemType.Check"></a><u>Check</u></big></dt>
<dd>menu item - checkbox<br><br>
</dd>
<dt><big><a name="MenuItemType.Radio"></a><u>Radio</u></big></dt>
<dd>menu item - radio button<br><br>
</dd>
<dt><big><a name="MenuItemType.Separator"></a><u>Separator</u></big></dt>
<dd>menu separator (horizontal line)<br><br>
</dd>
<dt><big><a name="MenuItemType.Submenu"></a><u>Submenu</u></big></dt>
<dd>submenu - contains child items<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="MenuItemClickHandler"></a>interface <u>MenuItemClickHandler</u>;
</big></dt>
<dd>interface to handle menu item click<br><br>
</dd>
<dt><big><a name="MenuItemActionHandler"></a>interface <u>MenuItemActionHandler</u>;
</big></dt>
<dd>interface to handle menu item action<br><br>
</dd>
<dt><big><a name="MenuItem"></a>class <u>MenuItem</u>;
</big></dt>
<dd>menu item properties<br><br>
<dl><dt><big><a name="MenuItem.onMenuItemClick"></a>Signal!MenuItemClickHandler <u>onMenuItemClick</u>;
</big></dt>
<dd>handle menu item click (parameter is MenuItem)<br><br>
</dd>
<dt><big><a name="MenuItem.onMenuItemAction"></a>Signal!MenuItemActionHandler <u>onMenuItemAction</u>;
</big></dt>
<dd>handle menu item click action (parameter is Action)<br><br>
</dd>
<dt><big><a name="MenuItem.id"></a>@property int <u>id</u>();
</big></dt>
<dd>item action <u>id</u>, 0 if no action<br><br>
</dd>
<dt><big><a name="MenuItem.subitemCount"></a>@property int <u>subitemCount</u>();
</big></dt>
<dd>returns count of submenu items<br><br>
</dd>
<dt><big><a name="MenuItem.subitemIndex"></a>@property int <u>subitemIndex</u>(MenuItem <i>item</i>);
</big></dt>
<dd>returns subitem index for <i>item</i>, -1 if <i>item</i> is not direct subitem of this<br><br>
</dd>
<dt><big><a name="MenuItem.subitem"></a>MenuItem <u>subitem</u>(int <i>index</i>);
</big></dt>
<dd>returns submenu item by <i>index</i><br><br>
</dd>
<dt><big><a name="MenuItem.type"></a>@property MenuItem <u>type</u>(MenuItemType <u>type</u>);
</big></dt>
<dd>set new MenuItemType<br><br>
</dd>
<dt><big><a name="MenuItem.checked"></a>@property bool <u>checked</u>();
</big></dt>
<dd>get check for checkbox or radio button item<br><br>
</dd>
<dt><big><a name="MenuItem.checkRadioButton"></a>protected void <u>checkRadioButton</u>(int <i>index</i>);
</big></dt>
<dd>check radio button with specified <i>index</i>, uncheck other radio buttons in group (group consists of sequence of radio button items; other item type - end of group)<br><br>
</dd>
<dt><big><a name="MenuItem.checked"></a>@property MenuItem <u>checked</u>(bool <i>flg</i>);
</big></dt>
<dd>set check for checkbox or radio button item<br><br>
</dd>
<dt><big><a name="MenuItem.getHotkey"></a>dchar <u>getHotkey</u>();
</big></dt>
<dd>get hotkey character from label (e.g. 'F' for item labeled "&File"), 0 if no hotkey<br><br>
</dd>
<dt><big><a name="MenuItem.findSubitemByHotkey"></a>int <u>findSubitemByHotkey</u>(dchar <i>ch</i>);
</big></dt>
<dd>find subitem by hotkey character, returns subitem index, -1 if not found<br><br>
</dd>
<dt><big><a name="MenuItem.add"></a>MenuItem <u>add</u>(MenuItem <i>subitem</i>);
</big></dt>
<dd>adds submenu item<br><br>
</dd>
<dt><big><a name="MenuItem.add"></a>MenuItem <u>add</u>(Action <i>subitemAction</i>);
</big></dt>
<dd>adds submenu item from action<br><br>
</dd>
<dt><big><a name="MenuItem.acceleratorText"></a>@property dstring <u>acceleratorText</u>();
</big></dt>
<dd>returns text description for first accelerator of action; <b>null</b> if no accelerators<br><br>
</dd>
<dt><big><a name="MenuItem.isSubmenu"></a>@property bool <u>isSubmenu</u>();
</big></dt>
<dd>returns <b>true</b> if item is submenu (contains subitems)<br><br>
</dd>
<dt><big><a name="MenuItem.label"></a>@property UIString <u>label</u>();
</big></dt>
<dd>returns item <u>label</u><br><br>
</dd>
<dt><big><a name="MenuItem.action"></a>const @property const(Action) <u>action</u>();
</big></dt>
<dd>returns item <u>action</u><br><br>
</dd>
<dt><big><a name="MenuItem.action"></a>@property MenuItem <u>action</u>(Action <i>a</i>);
</big></dt>
<dd>sets item <u>action</u><br><br>
</dd>
<dt><big><a name="MenuItem.enabled"></a>@property bool <u>enabled</u>();
</big></dt>
<dd>menu item Enabled flag<br><br>
</dd>
<dt><big><a name="MenuItem.enabled"></a>@property MenuItem <u>enabled</u>(bool <u>enabled</u>);
</big></dt>
<dd>menu item Enabled flag<br><br>
</dd>
<dt><big><a name="MenuItem.onMenuItem"></a>Signal!(void, MenuItem) <u>onMenuItem</u>;
</big></dt>
<dd>handle menu item click<br><br>
</dd>
<dt><big><a name="MenuItem.onBeforeOpeningSubmenu"></a>Signal!(bool, MenuItem) <u>onBeforeOpeningSubmenu</u>;
</big></dt>
<dd>prepare for opening of submenu, return <b>true</b> if opening is allowed<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="MenuItemWidget"></a>class <u>MenuItemWidget</u>: dlangui.widgets.widget.WidgetGroup;
</big></dt>
<dd>widget to draw menu item<br><br>
<dl><dt><big><a name="MenuItemWidget.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>Measure widget according to desired width and height constraints. (Step 1 of two phase layout).<br><br>
</dd>
<dt><big><a name="MenuItemWidget.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="MenuItemWidget.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>Draw widget at its position to buffer<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="MenuWidgetBase"></a>class <u>MenuWidgetBase</u>: dlangui.widgets.lists.ListWidget;
</big></dt>
<dd>base class for menus<br><br>
<dl><dt><big><a name="MenuWidgetBase.onMenuItemClickListener"></a>Signal!MenuItemClickHandler <u>onMenuItemClickListener</u>;
</big></dt>
<dd>menu item click listener<br><br>
</dd>
<dt><big><a name="MenuWidgetBase.onMenuItemActionListener"></a>Signal!MenuItemActionHandler <u>onMenuItemActionListener</u>;
</big></dt>
<dd>menu item action listener<br><br>
</dd>
<dt><big><a name="MenuWidgetBase.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>Measure widget according to desired width and height constraints. (Step 1 of two phase layout).<br><br>
</dd>
<dt><big><a name="MenuWidgetBase.selectionChanged"></a>protected void <u>selectionChanged</u>(int <i>index</i>, int <i>previouslySelectedItem</i> = -1);
</big></dt>
<dd>override to handle change of selection<br><br>
</dd>
<dt><big><a name="MenuWidgetBase.itemClicked"></a>protected void <u>itemClicked</u>(int <i>index</i>);
</big></dt>
<dd>override to handle mouse up on item<br><br>
</dd>
<dt><big><a name="MenuWidgetBase.thisPopup"></a>@property PopupWidget <u>thisPopup</u>();
</big></dt>
<dd>returns popup this menu is located in<br><br>
</dd>
<dt><big><a name="MenuWidgetBase.onKeyEvent"></a>bool <u>onKeyEvent</u>(KeyEvent <i>event</i>);
</big></dt>
<dd>list navigation using keys<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="MainMenu"></a>class <u>MainMenu</u>: dlangui.widgets.menu.MenuWidgetBase;
</big></dt>
<dd>main menu (horizontal)<br><br>
<dl><dt><big><a name="MainMenu.wantsKeyTracking"></a>@property bool <u>wantsKeyTracking</u>();
</big></dt>
<dd>override and return <b>true</b> to track key events even when not focused<br><br>
</dd>
<dt><big><a name="MainMenu.textFlags"></a>@property uint <u>textFlags</u>();
</big></dt>
<dd>get text flags (bit set of TextFlag enum values)<br><br>
</dd>
<dt><big><a name="MainMenu.activated"></a>@property bool <u>activated</u>();
</big></dt>
<dd>return <b>true</b> if main menu is <u>activated</u> (focused or has open submenu)<br><br>
</dd>
<dt><big><a name="MainMenu.activate"></a>void <u>activate</u>();
</big></dt>
<dd>bring focus to main menu, if not yet activated<br><br>
</dd>
<dt><big><a name="MainMenu.deactivate"></a>void <u>deactivate</u>(bool <i>force</i> = false);
</big></dt>
<dd>close and remove focus, if activated<br><br>
</dd>
<dt><big><a name="MainMenu.toggle"></a>bool <u>toggle</u>();
</big></dt>
<dd>activate or deactivate main menu, return <b>true</b> if it has been activated<br><br>
</dd>
<dt><big><a name="MainMenu.handleFocusChange"></a>protected void <u>handleFocusChange</u>(bool <i>focused</i>);
</big></dt>
<dd>override to handle focus changes<br><br>
</dd>
<dt><big><a name="MainMenu.onKeyEvent"></a>bool <u>onKeyEvent</u>(KeyEvent <i>event</i>);
</big></dt>
<dd>list navigation using keys<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="PopupMenu"></a>class <u>PopupMenu</u>: dlangui.widgets.menu.MenuWidgetBase;
</big></dt>
<dd>popup menu widget (vertical layout of items)<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,252 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.platforms.common.platform</title>
</head><body>
<h1>dlangui.platforms.common.platform</h1>
<!-- Generated by Ddoc from src/dlangui/platforms/common/platform.d -->
DLANGUI library.
<br><br>
This module contains common Plaform definitions.
<br><br>
Platform is abstraction layer for application.
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.platforms.common.<u>platform</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="WindowFlag"></a>enum <u>WindowFlag</u>: uint;
</big></dt>
<dd>window creation flags<br><br>
<dl><dt><big><a name="WindowFlag.Resizable"></a><u>Resizable</u></big></dt>
<dd>window can be resized<br><br>
</dd>
<dt><big><a name="WindowFlag.Fullscreen"></a><u>Fullscreen</u></big></dt>
<dd>window should be shown in fullscreen mode<br><br>
</dd>
<dt><big><a name="WindowFlag.Modal"></a><u>Modal</u></big></dt>
<dd>modal window - grabs input focus<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="Window"></a>abstract class <u>Window</u>;
</big></dt>
<dd><u>Window</u> abstraction layer. Widgets can be shown only inside window.
<br><br>
<dl><dt><big><a name="Window.windowCaption"></a>abstract @property dstring <u>windowCaption</u>();
</big></dt>
<dd>returns window caption<br><br>
</dd>
<dt><big><a name="Window.windowCaption"></a>abstract @property void <u>windowCaption</u>(dstring <i>caption</i>);
</big></dt>
<dd>sets window <i>caption</i><br><br>
</dd>
<dt><big><a name="Window.requestLayout"></a>void <u>requestLayout</u>();
</big></dt>
<dd>requests layout for main widget and popups<br><br>
</dd>
<dt><big><a name="Window.showPopup"></a>PopupWidget <u>showPopup</u>(Widget <i>content</i>, Widget <i>anchor</i> = null, uint <i>alignment</i> = PopupAlign.Center, int <i>x</i> = 0, int <i>y</i> = 0);
</big></dt>
<dd>show new popup<br><br>
</dd>
<dt><big><a name="Window.removePopup"></a>bool <u>removePopup</u>(PopupWidget <i>popup</i>);
</big></dt>
<dd>remove <i>popup</i><br><br>
</dd>
<dt><big><a name="Window.isChild"></a>bool <u>isChild</u>(Widget <i>w</i>);
</big></dt>
<dd>returns <b>true</b> if widget is child of either main widget or one of popups<br><br>
</dd>
<dt><big><a name="Window.scheduleAnimation"></a>void <u>scheduleAnimation</u>();
</big></dt>
<dd>after drawing, call to schedule redraw if animation is active<br><br>
</dd>
<dt><big><a name="Window.focusedWidget"></a>@property Widget <u>focusedWidget</u>();
</big></dt>
<dd>returns current focused widget<br><br>
</dd>
<dt><big><a name="Window.setFocus"></a>Widget <u>setFocus</u>(Widget <i>newFocus</i>);
</big></dt>
<dd>change focus to widget<br><br>
</dd>
<dt><big><a name="Window.dispatchKeyEvent"></a>bool <u>dispatchKeyEvent</u>(KeyEvent <i>event</i>);
</big></dt>
<dd>dispatch keyboard <i>event</i><br><br>
</dd>
<dt><big><a name="Window._mouseTrackingWidgets"></a>protected Widget[] <u>_mouseTrackingWidgets</u>;
</big></dt>
<dd>widget which tracks Move events<br><br>
</dd>
<dt><big><a name="Window._mouseCaptureWidget"></a>protected Widget <u>_mouseCaptureWidget</u>;
</big></dt>
<dd>widget which tracks all events after processed ButtonDown<br><br>
</dd>
<dt><big><a name="Window._mouseCaptureFocusedOutTrackMovements"></a>protected bool <u>_mouseCaptureFocusedOutTrackMovements</u>;
</big></dt>
<dd>does current capture widget want to receive move events even if pointer left it<br><br>
</dd>
<dt><big><a name="Window.dispatchMouseEvent"></a>bool <u>dispatchMouseEvent</u>(MouseEvent <i>event</i>);
</big></dt>
<dd>dispatch mouse <i>event</i> to window content widgets<br><br>
</dd>
<dt><big><a name="Window.checkUpdateNeeded"></a>protected void <u>checkUpdateNeeded</u>(Widget <i>root</i>, ref bool <i>needDraw</i>, ref bool <i>needLayout</i>, ref bool <i>animationActive</i>);
</big></dt>
<dd>checks content widgets for necessary redraw and/or layout<br><br>
</dd>
<dt><big><a name="Window.setCursorType"></a>protected void <u>setCursorType</u>(uint <i>cursorType</i>);
</big></dt>
<dd>sets cursor type for window<br><br>
</dd>
<dt><big><a name="Window.checkUpdateNeeded"></a>bool <u>checkUpdateNeeded</u>(ref bool <i>needDraw</i>, ref bool <i>needLayout</i>, ref bool <i>animationActive</i>);
</big></dt>
<dd>checks content widgets for necessary redraw and/or layout<br><br>
</dd>
<dt><big><a name="Window.update"></a>void <u>update</u>(bool <i>force</i> = false);
</big></dt>
<dd>requests <u>update</u> for window (unless <i>force</i> is <b>true</b>, <u>update</u> will be performed only if layout, redraw or animation is required).<br><br>
</dd>
<dt><big><a name="Window.invalidate"></a>abstract void <u>invalidate</u>();
</big></dt>
<dd>request window redraw<br><br>
</dd>
<dt><big><a name="Window.close"></a>abstract void <u>close</u>();
</big></dt>
<dd><u>close</u> window<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="Platform"></a>abstract class <u>Platform</u>;
</big></dt>
<dd><u>Platform</u> abstraction layer.
<br><br>
Represents application.<br><br>
<dl><dt><big><a name="Platform.createWindow"></a>abstract Window <u>createWindow</u>(dstring <i>windowCaption</i>, Window <i>parent</i>, uint <i>flags</i> = WindowFlag.Resizable);
</big></dt>
<dd>create window
<br><br>
<b>Args:</b><br>
<i>windowCaption</i> = window caption text
<i>parent</i> = <i>parent</i> Window, or <b>null</b> if no <i>parent</i>
<i>flags</i> = WindowFlag bit set, combination of Resizable, Modal, Fullscreen
<br><br>
Window w/o Resizable nor Fullscreen will be created with size based on measurement of its content widget<br><br>
</dd>
<dt><big><a name="Platform.closeWindow"></a>abstract void <u>closeWindow</u>(Window <i>w</i>);
</big></dt>
<dd>close window
<br><br>
Closes window earlier created with createWindow()<br><br>
</dd>
<dt><big><a name="Platform.enterMessageLoop"></a>abstract int <u>enterMessageLoop</u>();
</big></dt>
<dd>Starts application message loop.
<br><br>
When returned from this method, application is shutting down.<br><br>
</dd>
<dt><big><a name="Platform.getClipboardText"></a>abstract dstring <u>getClipboardText</u>(bool <i>mouseBuffer</i> = false);
</big></dt>
<dd>retrieves text from clipboard (when <i>mouseBuffer</i> == <b>true</b>, use mouse selection clipboard - under linux)<br><br>
</dd>
<dt><big><a name="Platform.setClipboardText"></a>abstract void <u>setClipboardText</u>(dstring <i>text</i>, bool <i>mouseBuffer</i> = false);
</big></dt>
<dd>sets <i>text</i> to clipboard (when <i>mouseBuffer</i> == <b>true</b>, use mouse selection clipboard - under linux)<br><br>
</dd>
<dt><big><a name="Platform.requestLayout"></a>abstract void <u>requestLayout</u>();
</big></dt>
<dd>calls request layout for all windows<br><br>
</dd>
<dt><big><a name="Platform.uiLanguage"></a>@property string <u>uiLanguage</u>();
</big></dt>
<dd>returns currently selected UI language code<br><br>
</dd>
<dt><big><a name="Platform.uiLanguage"></a>@property Platform <u>uiLanguage</u>(string <i>langCode</i>);
</big></dt>
<dd>set UI language (e.g. "en", "fr", "ru") - will relayout content of all windows if language has been changed<br><br>
</dd>
<dt><big><a name="Platform.uiTheme"></a>@property Platform <u>uiTheme</u>(string <i>themeResourceId</i>);
</big></dt>
<dd>sets application UI theme - will relayout content of all windows if theme has been changed<br><br>
</dd>
<dt><big><a name="Platform.resourceDirs"></a>@property string[] <u>resourceDirs</u>();
</big></dt>
<dd>returns list of resource directories<br><br>
</dd>
<dt><big><a name="Platform.resourceDirs"></a>@property Platform <u>resourceDirs</u>(string[] <i>dirs</i>);
</big></dt>
<dd>set list of directories to load resources from<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="platform"></a>@property Platform <u>platform</u>();
</big></dt>
<dd>get current <u>platform</u> object instance<br><br>
</dd>
<dt><big><a name="openglEnabled"></a>@property bool <u>openglEnabled</u>();
</big></dt>
<dd>check if hardware acceleration is enabled<br><br>
</dd>
<dt><big><a name="setOpenglEnabled"></a>void <u>setOpenglEnabled</u>();
</big></dt>
<dd>call on app initialization if OpenGL support is detected<br><br>
</dd>
<dt><big><a name="APP_ENTRY_POINT"></a>template <u>APP_ENTRY_POINT</u>()</big></dt>
<dd>put "mixin <u>APP_ENTRY_POINT</u>;" to main module of your dlangui based app<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,132 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.popup</title>
</head><body>
<h1>dlangui.widgets.popup</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/popup.d -->
DLANGUI library.
<br><br>
This module contains <u>popup</u> widgets implementation.
<br><br>
Popups appear above other widgets inside window.
<br><br>
Useful for <u>popup</u> menus, notification popups, etc.
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>popup</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="PopupAlign"></a>enum <u>PopupAlign</u>: uint;
</big></dt>
<dd>popup alignment option flags<br><br>
<dl><dt><big><a name="PopupAlign.Center"></a><u>Center</u></big></dt>
<dd>center popup around anchor widget center<br><br>
</dd>
<dt><big><a name="PopupAlign.Below"></a><u>Below</u></big></dt>
<dd>place popup below anchor widget close to lower bound<br><br>
</dd>
<dt><big><a name="PopupAlign.Right"></a><u>Right</u></big></dt>
<dd>place popup below anchor widget close to right bound (when no space enough, align near left bound)<br><br>
</dd>
<dt><big><a name="PopupAlign.Point"></a><u>Point</u></big></dt>
<dd>align to specified point<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="PopupFlags"></a>enum <u>PopupFlags</u>: uint;
</big></dt>
<dd>popup behavior flags - for PopupWidget.flags property<br><br>
<dl><dt><big><a name="PopupFlags.CloseOnClickOutside"></a><u>CloseOnClickOutside</u></big></dt>
<dd>close popup when mouse button clicked outside of its bounds<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="PopupWidget"></a>class <u>PopupWidget</u>: dlangui.widgets.layouts.LinearLayout;
</big></dt>
<dd>popup widget container<br><br>
<dl><dt><big><a name="PopupWidget.onPopupCloseListener"></a>@property void delegate(PopupWidget popup) <u>onPopupCloseListener</u>();
</big></dt>
<dd>popup close listener (called right before closing)<br><br>
</dd>
<dt><big><a name="PopupWidget.onPopupCloseListener"></a>@property PopupWidget <u>onPopupCloseListener</u>(void delegate(PopupWidget popup) <i>listener</i>);
</big></dt>
<dd>set popup close <i>listener</i> (to call right before closing)<br><br>
</dd>
<dt><big><a name="PopupWidget.flags"></a>@property uint <u>flags</u>();
</big></dt>
<dd>returns popup behavior <u>flags</u> (combination of PopupFlags)<br><br>
</dd>
<dt><big><a name="PopupWidget.flags"></a>@property PopupWidget <u>flags</u>(uint <u>flags</u>);
</big></dt>
<dd>set popup behavior <u>flags</u> (combination of PopupFlags)<br><br>
</dd>
<dt><big><a name="PopupWidget.anchor"></a>@property ref PopupAnchor <u>anchor</u>();
</big></dt>
<dd>access to popup <u>anchor</u><br><br>
</dd>
<dt><big><a name="PopupWidget.modal"></a>bool <u>modal</u>();
</big></dt>
<dd>returns <b>true</b> if popup is <u>modal</u><br><br>
</dd>
<dt><big><a name="PopupWidget.modal"></a>PopupWidget <u>modal</u>(bool <u>modal</u>);
</big></dt>
<dd>set modality flag<br><br>
</dd>
<dt><big><a name="PopupWidget.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>Measure widget according to desired width and height constraints. (Step 1 of two phase layout).<br><br>
</dd>
<dt><big><a name="PopupWidget.close"></a>void <u>close</u>();
</big></dt>
<dd><u>close</u> and destroy popup<br><br>
</dd>
<dt><big><a name="PopupWidget.onClose"></a>void <u>onClose</u>();
</big></dt>
<dd>just call on close listener<br><br>
</dd>
<dt><big><a name="PopupWidget.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="PopupWidget.onMouseEventOutside"></a>bool <u>onMouseEventOutside</u>(MouseEvent <i>event</i>);
</big></dt>
<dd>called for mouse activity outside shown popup bounds<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,127 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.graphics.resources</title>
</head><body>
<h1>dlangui.graphics.resources</h1>
<!-- Generated by Ddoc from src/dlangui/graphics/resources.d -->
DLANGUI library.
<br><br>
This module contains resource management and drawables implementation.
<br><br>
imageCache is RAM cache of decoded images (as DrawBuf).
<br><br>
drawableCache is cache of Drawables.
<br><br>
Supports nine-patch PNG images in .9.png files (like in Android).
<br><br>
Supports state drawables using XML files similar to ones in Android.
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.graphics.<u>resources</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="FrameDrawable"></a>class <u>FrameDrawable</u>: dlangui.graphics.resources.Drawable;
</big></dt>
<dd>solid borders (may be of different width) and, optionally, solid inner area<br><br>
</dd>
<dt><big><a name="decodeHexColor"></a>static uint <u>decodeHexColor</u>(string <i>s</i>);
</big></dt>
<dd>decode color string #AARRGGBB, e.g. #5599AA<br><br>
</dd>
<dt><big><a name="decodeDimension"></a>static uint <u>decodeDimension</u>(string <i>s</i>);
</big></dt>
<dd>decode size string, e.g. 1px or 2 or 3pt<br><br>
</dd>
<dt><big><a name="createColorDrawable"></a>static Drawable <u>createColorDrawable</u>(string <i>s</i>);
</big></dt>
<dd>decode solid color / gradient / frame drawable from string like #AARRGGBB, e.g. #5599AA
<br><br>
<b>SolidFillDrawable:</b><br>
#AARRGGBB - e.g. #8090A0 or #80ffffff
<br><br>
<b>FrameDrawable:</b><br>
#frameColor,frameWidth[,#middleColor]
or #frameColor,leftBorderWidth,topBorderWidth,rightBorderWidth,bottomBorderWidth[,#middleColor]
e.g. #000000,2,#C0FFFFFF - black frame of width 2 with 75% transparent white middle
e.g. #0000FF,2,3,4,5,#FFFFFF - blue frame with left,top,right,bottom borders of width 2,3,4,5 and white inner area<br><br>
</dd>
<dt><big><a name="extractStateFlags"></a>void <u>extractStateFlags</u>(ref string[string] <i>attr</i>, ref uint <i>stateMask</i>, ref uint <i>stateValue</i>);
</big></dt>
<dd>converts XML attribute name to State (see http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList)<br><br>
</dd>
<dt><big><a name="StateDrawable"></a>class <u>StateDrawable</u>: dlangui.graphics.resources.Drawable;
</big></dt>
<dd>Drawable which is drawn depending on state (see http://developer.android.com/guide/topics/resources/drawable-resource.html#StateList)<br><br>
<dl><dt><big><a name="StateDrawable.parseList4"></a>bool <u>parseList4</u>(T)(string <i>value</i>, ref T[4] <i>items</i>);
</big></dt>
<dd>parse 4 comma delimited integers<br><br>
</dd>
<dt><big><a name="StateDrawable.load"></a>bool <u>load</u>(string <i>filename</i>);
</big></dt>
<dd><u>load</u> from XML file<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="ImageCache"></a>class <u>ImageCache</u>;
</big></dt>
<dd>decoded raster images cache (png, jpeg) -- access by filenames<br><br>
<dl><dt><big><a name="ImageCache.get"></a>ref DrawBufRef <u>get</u>(string <i>filename</i>);
</big></dt>
<dd><u>get</u> and cache image<br><br>
</dd>
<dt><big><a name="ImageCache.get"></a>ref DrawBufRef <u>get</u>(string <i>filename</i>, ref ColorTransform <i>transform</i>);
</big></dt>
<dd><u>get</u> and cache color transformed image<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="imageCache"></a>@property ImageCache <u>imageCache</u>();
</big></dt>
<dd>image cache singleton<br><br>
</dd>
<dt><big><a name="imageCache"></a>@property void <u>imageCache</u>(ImageCache <i>cache</i>);
</big></dt>
<dd>image <i>cache</i> singleton<br><br>
</dd>
<dt><big><a name="drawableCache"></a>@property DrawableCache <u>drawableCache</u>();
</big></dt>
<dd>drawable cache singleton<br><br>
</dd>
<dt><big><a name="drawableCache"></a>@property void <u>drawableCache</u>(DrawableCache <i>cache</i>);
</big></dt>
<dd>drawable <i>cache</i> singleton<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,29 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>src.dlangui.platforms.sdl.sdlapp</title>
</head><body>
<h1>src.dlangui.platforms.sdl.sdlapp</h1>
<!-- Generated by Ddoc from src/dlangui/platforms/sdl/sdlapp.d -->
DLANGUI library.
<br><br>
This module contains implementation of SDL2 based backend for dlang library.
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.platforms.sdl.<u>sdlapp</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,236 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.core.signals</title>
</head><body>
<h1>dlangui.core.signals</h1>
<!-- Generated by Ddoc from src/dlangui/core/signals.d -->
DLANGUI library.
<br><br>
This module contains definition of <u>signals</u> / listeners.
<br><br>
Similar to std.<u>signals</u>.
<br><br>
Unlike std.<u>signals</u>, supports any types of delegates, and as well interfaces with single method.
<br><br>
Unlike std.<u>signals</u>, can support return types for slots.
<br><br>
<b>Caution:</b><br>
unlike std.<u>signals</u>, does not disconnect signal from slots belonging to destroyed objects.
<br><br>
Listener here stand for holder of single delegate (slot).
Signal is the same but supports multiple slots.
<br><br>
Can be declared either using list of result value and argument types, or by interface name with single method.
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.core.<u>signals</u>;
<font color=blue>interface</font> SomeInterface {
<font color=blue>bool</font> someMethod(string s, <font color=blue>int</font> n);
}
<font color=blue>class</font> Foo : SomeInterface {
<font color=blue>override</font> <font color=blue>bool</font> someMethod(string s, <font color=blue>int</font> n) {
writeln(<font color=red>"someMethod called "</font>, s, <font color=red>", "</font>, n);
<font color=blue>return</font> n &gt; 10; <font color=green>// can return value
</font> }
}
<font color=green>// Listener! can hold arbitrary number of connected slots
</font>
<font color=green>// declare using list of return value and parameter types
</font>Listener!(<font color=blue>bool</font>, string, n) signal1;
Foo f = <font color=blue>new</font> Foo();
<font color=green>// when signal is defined as type list, you can use delegate
</font>signal1 = <font color=blue>bool</font> <font color=blue>delegate</font>(string s, <font color=blue>int</font> n) { writeln(<font color=red>"inside delegate - "</font>, s, n); <font color=blue>return</font> <font color=blue>false</font>; }
<font color=green>// or method reference
</font>signal1 = &amp;f.someMethod;
<font color=green>// declare using interface with single method
</font>Listener!SomeInterface signal2;
<font color=green>// you still can use any delegate
</font>signal2 = <font color=blue>bool</font> <font color=blue>delegate</font>(string s, <font color=blue>int</font> n) { writeln(<font color=red>"inside delegate - "</font>, s, n); <font color=blue>return</font> <font color=blue>false</font>; }
<font color=green>// but for class method which overrides interface method, you can use simple syntax
</font>signal2 = f; <font color=green>// it will automatically take &amp;f.someMethod
</font>
<font color=green>// call listener(s) either by opcall or explicit emit
</font>signal1(<font color=red>"text"</font>, 1);
signal1.emit(<font color=red>"text"</font>, 2);
signal2.emit(<font color=red>"text"</font>, 3);
<font color=green>// check if any slit is connected
</font><font color=blue>if</font> (signal1.assigned)
writeln(<font color=red>"has listeners"</font>);
<font color=green>// Signal! can hold arbitrary number of connected slots
</font>
<font color=green>// declare using list of return value and parameter types
</font>Signal!(<font color=blue>bool</font>, string, n) signal3;
<font color=green>// add listeners via connect call
</font>signal3.connect(<font color=blue>bool</font> <font color=blue>delegate</font>(string, <font color=blue>int</font>) { <font color=blue>return</font> <font color=blue>false</font>; });
<font color=green>// or via ~= operator
</font>signal3 ~= <font color=blue>bool</font> <font color=blue>delegate</font>(string, <font color=blue>int</font>) { <font color=blue>return</font> <font color=blue>false</font>; };
<font color=green>// declare using interface with single method
</font>Signal!SomeInterface signal4;
<font color=green>// you can connect several slots to signal
</font>signal4 ~= f;
signal4 ~= <font color=blue>bool</font> <font color=blue>delegate</font>(string, <font color=blue>int</font>) { <font color=blue>return</font> <font color=blue>true</font>; }
<font color=green>// calling of listeners of Signal! is similar to Listener!
</font><font color=green>// using opCall
</font><font color=blue>bool</font> res = signal4(<font color=red>"blah"</font>, 5);
<font color=green>// call listeners using emit
</font><font color=blue>bool</font> res = signal4.emit(<font color=red>"blah"</font>, 5);
<font color=green>// you can disconnect individual slots
</font><font color=green>// using disconnect()
</font>signal4.disconnect(f);
<font color=green>// or -= operator
</font>signal4 -= f;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="Listener"></a>struct <u>Listener</u>(T1) if (is(T1 == interface) &amp;&amp; __traits(allMembers, T1).length == 1);
</big></dt>
<dd>Single listener; parameter is interface with single method<br><br>
<dl><dt><big><a name="assigned"></a>bool <u>assigned</u>();
</big></dt>
<dd>returns <b>true</b> if listener is <u>assigned</u><br><br>
</dd>
<dt><big><a name="opAssign"></a>void <u>opAssign</u>(slot_t <i>listenerDelegate</i>);
</big></dt>
<dd>assign delegate<br><br>
</dd>
<dt><big><a name="opAssign"></a>void <u>opAssign</u>(T1 <i>listenerObject</i>);
</big></dt>
<dd>assign object implementing interface<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="Listener"></a>struct <u>Listener</u>(RETURN_T, T1...);
</big></dt>
<dd>Single listener; implicitly specified return and parameter types<br><br>
<dl><dt><big><a name="assigned"></a>bool <u>assigned</u>();
</big></dt>
<dd>returns <b>true</b> if listener is <u>assigned</u><br><br>
</dd>
</dl>
</dd>
<dt><big><a name="Signal"></a>struct <u>Signal</u>(T1) if (is(T1 == interface) &amp;&amp; __traits(allMembers, T1).length == 1);
</big></dt>
<dd>Multiple listeners; implicitly specified return and parameter types<br><br>
<dl><dt><big><a name="assigned"></a>bool <u>assigned</u>();
</big></dt>
<dd>returns <b>true</b> if listener is <u>assigned</u><br><br>
</dd>
<dt><big><a name="opAssign"></a>void <u>opAssign</u>(slot_t <i>listener</i>);
</big></dt>
<dd>replace all previously assigned listeners with new one (if <b>null</b> passed, remove all listeners)<br><br>
</dd>
<dt><big><a name="opAssign"></a>void <u>opAssign</u>(T1 <i>listener</i>);
</big></dt>
<dd>replace all previously assigned listeners with new one (if <b>null</b> passed, remove all listeners)<br><br>
</dd>
<dt><big><a name="opCall"></a>return_t <u>opCall</u>(params_t <i>params</i>);
</big></dt>
<dd>call all listeners; for signals having non-void return type, stop iterating when first return value is nonzero<br><br>
</dd>
<dt><big><a name="emit"></a>return_t <u>emit</u>(params_t <i>params</i>);
</big></dt>
<dd>call all listeners; for signals having non-void return type, stop iterating when first return value is nonzero<br><br>
</dd>
<dt><big><a name="connect"></a>void <u>connect</u>(slot_t <i>listener</i>);
</big></dt>
<dd>add <i>listener</i><br><br>
</dd>
<dt><big><a name="disconnect"></a>void <u>disconnect</u>(slot_t <i>listener</i>);
</big></dt>
<dd>remove <i>listener</i><br><br>
</dd>
<dt><big><a name="connect"></a>void <u>connect</u>(T1 <i>listener</i>);
</big></dt>
<dd>add <i>listener</i> - as interface member<br><br>
</dd>
<dt><big><a name="disconnect"></a>void <u>disconnect</u>(T1 <i>listener</i>);
</big></dt>
<dd>add <i>listener</i> - as interface member<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="Signal"></a>struct <u>Signal</u>(RETURN_T, T1...);
</big></dt>
<dd>Multiple listeners; implicitly specified return and parameter types<br><br>
<dl><dt><big><a name="assigned"></a>bool <u>assigned</u>();
</big></dt>
<dd>returns <b>true</b> if listener is <u>assigned</u><br><br>
</dd>
<dt><big><a name="opAssign"></a>void <u>opAssign</u>(slot_t <i>listener</i>);
</big></dt>
<dd>replace all previously assigned listeners with new one (if <b>null</b> passed, remove all listeners)<br><br>
</dd>
<dt><big><a name="opCall"></a>RETURN_T <u>opCall</u>(T1 <i>params</i>);
</big></dt>
<dd>call all listeners; for signals having non-void return type, stop iterating when first return value is nonzero<br><br>
</dd>
<dt><big><a name="emit"></a>RETURN_T <u>emit</u>(T1 <i>params</i>);
</big></dt>
<dd>call all listeners; for signals having non-void return type, stop iterating when first return value is nonzero<br><br>
</dd>
<dt><big><a name="connect"></a>void <u>connect</u>(slot_t <i>listener</i>);
</big></dt>
<dd>add <i>listener</i><br><br>
</dd>
<dt><big><a name="disconnect"></a>void <u>disconnect</u>(slot_t <i>listener</i>);
</big></dt>
<dd>remove <i>listener</i><br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,476 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.styles</title>
</head><body>
<h1>dlangui.widgets.styles</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/styles.d -->
DLANGUI library.
<br><br>
This module contains declaration of themes and <u>styles</u> implementation.
<br><br>
Style - style container
Theme - parent for all <u>styles</u>
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>styles</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="COLOR_TRANSPARENT"></a>immutable uint <u>COLOR_TRANSPARENT</u>;
</big></dt>
<dd>transparent color constant<br><br>
</dd>
<dt><big><a name="FONT_SIZE_UNSPECIFIED"></a>immutable ushort <u>FONT_SIZE_UNSPECIFIED</u>;
</big></dt>
<dd>unspecified font size constant - to take parent style property value<br><br>
</dd>
<dt><big><a name="FONT_WEIGHT_UNSPECIFIED"></a>immutable ushort <u>FONT_WEIGHT_UNSPECIFIED</u>;
</big></dt>
<dd>unspecified font weight constant - to take parent style property value<br><br>
</dd>
<dt><big><a name="FONT_STYLE_UNSPECIFIED"></a>immutable ubyte <u>FONT_STYLE_UNSPECIFIED</u>;
</big></dt>
<dd>unspecified font style constant - to take parent style property value<br><br>
</dd>
<dt><big><a name="FONT_STYLE_NORMAL"></a>immutable ubyte <u>FONT_STYLE_NORMAL</u>;
</big></dt>
<dd>normal font style constant<br><br>
</dd>
<dt><big><a name="FONT_STYLE_ITALIC"></a>immutable ubyte <u>FONT_STYLE_ITALIC</u>;
</big></dt>
<dd>italic font style constant<br><br>
</dd>
<dt><big><a name="SIZE_UNSPECIFIED"></a>immutable int <u>SIZE_UNSPECIFIED</u>;
</big></dt>
<dd>use as widget.layout() param to avoid applying of parent size<br><br>
</dd>
<dt><big><a name="TEXT_FLAGS_UNSPECIFIED"></a>immutable uint <u>TEXT_FLAGS_UNSPECIFIED</u>;
</big></dt>
<dd>use text flags from parent style<br><br>
</dd>
<dt><big><a name="TEXT_FLAGS_USE_PARENT"></a>immutable uint <u>TEXT_FLAGS_USE_PARENT</u>;
</big></dt>
<dd>use text flags from parent widget<br><br>
</dd>
<dt><big><a name="FILL_PARENT"></a>immutable int <u>FILL_PARENT</u>;
</big></dt>
<dd>layout option, to occupy all available place<br><br>
</dd>
<dt><big><a name="WRAP_CONTENT"></a>immutable int <u>WRAP_CONTENT</u>;
</big></dt>
<dd>layout option, for size based on content<br><br>
</dd>
<dt><big><a name="WEIGHT_UNSPECIFIED"></a>immutable int <u>WEIGHT_UNSPECIFIED</u>;
</big></dt>
<dd>to take layout weight from parent<br><br>
</dd>
<dt><big><a name="Align"></a>enum <u>Align</u>: ubyte;
</big></dt>
<dd><u>Align</u> option bit constants<br><br>
<dl><dt><big><a name="Align.Unspecified"></a><u>Unspecified</u></big></dt>
<dd>alignment is not specified<br><br>
</dd>
<dt><big><a name="Align.Left"></a><u>Left</u></big></dt>
<dd>horizontally align to the left of box<br><br>
</dd>
<dt><big><a name="Align.Right"></a><u>Right</u></big></dt>
<dd>horizontally align to the right of box<br><br>
</dd>
<dt><big><a name="Align.HCenter"></a><u>HCenter</u></big></dt>
<dd>horizontally align to the center of box<br><br>
</dd>
<dt><big><a name="Align.Top"></a><u>Top</u></big></dt>
<dd>vertically align to the top of box<br><br>
</dd>
<dt><big><a name="Align.Bottom"></a><u>Bottom</u></big></dt>
<dd>vertically align to the bottom of box<br><br>
</dd>
<dt><big><a name="Align.VCenter"></a><u>VCenter</u></big></dt>
<dd>vertically align to the center of box<br><br>
</dd>
<dt><big><a name="Align.Center"></a><u>Center</u></big></dt>
<dd>align to the center of box (VCenter | HCenter)<br><br>
</dd>
<dt><big><a name="Align.TopLeft"></a><u>TopLeft</u></big></dt>
<dd>align to the top left corner of box (Left | Top)<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="TextFlag"></a>enum <u>TextFlag</u>: uint;
</big></dt>
<dd>text drawing flag bits<br><br>
<dl><dt><big><a name="TextFlag.HotKeys"></a><u>HotKeys</u></big></dt>
<dd>text contains hot key prefixed with &amp; char (e.g. "&File")<br><br>
</dd>
<dt><big><a name="TextFlag.UnderlineHotKeys"></a><u>UnderlineHotKeys</u></big></dt>
<dd>underline hot key when drawing<br><br>
</dd>
<dt><big><a name="TextFlag.UnderlineHotKeysWhenAltPressed"></a><u>UnderlineHotKeysWhenAltPressed</u></big></dt>
<dd>underline hot key when drawing<br><br>
</dd>
<dt><big><a name="TextFlag.Underline"></a><u>Underline</u></big></dt>
<dd>underline text when drawing<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="DrawableAttribute"></a>class <u>DrawableAttribute</u>;
</big></dt>
<dd>custom drawable attribute container for styles<br><br>
</dd>
<dt><big><a name="Style"></a>class <u>Style</u>;
</big></dt>
<dd>style properties<br><br>
<dl><dt><big><a name="Style.parentStyle"></a>const @property const(Style) <u>parentStyle</u>();
</big></dt>
<dd>access to parent style for this style<br><br>
</dd>
<dt><big><a name="Style.parentStyle"></a>@property Style <u>parentStyle</u>();
</big></dt>
<dd>access to parent style for this style<br><br>
</dd>
<dt><big><a name="Style.customDrawable"></a>@property ref DrawableRef <u>customDrawable</u>(string <i>id</i>);
</big></dt>
<dd>get custom drawable attribute<br><br>
</dd>
<dt><big><a name="Style.customDrawableId"></a>const @property string <u>customDrawableId</u>(string <i>id</i>);
</big></dt>
<dd>get custom drawable attribute<br><br>
</dd>
<dt><big><a name="Style.setCustomDrawable"></a>Style <u>setCustomDrawable</u>(string <i>id</i>, string <i>resourceId</i>);
</big></dt>
<dd>sets custom drawable attribute for style<br><br>
</dd>
<dt><big><a name="Style.fontFamily"></a>const @property FontFamily <u>fontFamily</u>();
</big></dt>
<dd>font size<br><br>
</dd>
<dt><big><a name="Style.fontFace"></a>const @property string <u>fontFace</u>();
</big></dt>
<dd>font size<br><br>
</dd>
<dt><big><a name="Style.fontItalic"></a>const @property bool <u>fontItalic</u>();
</big></dt>
<dd>font style - italic<br><br>
</dd>
<dt><big><a name="Style.fontWeight"></a>const @property ushort <u>fontWeight</u>();
</big></dt>
<dd>font weight<br><br>
</dd>
<dt><big><a name="Style.fontSize"></a>const @property ushort <u>fontSize</u>();
</big></dt>
<dd>font size<br><br>
</dd>
<dt><big><a name="Style.padding"></a>const @property ref const(Rect) <u>padding</u>();
</big></dt>
<dd><u>padding</u><br><br>
</dd>
<dt><big><a name="Style.margins"></a>const @property ref const(Rect) <u>margins</u>();
</big></dt>
<dd><u>margins</u><br><br>
</dd>
<dt><big><a name="Style.alpha"></a>const @property uint <u>alpha</u>();
</big></dt>
<dd><u>alpha</u> (0=opaque .. 255=transparent)<br><br>
</dd>
<dt><big><a name="Style.textColor"></a>const @property uint <u>textColor</u>();
</big></dt>
<dd>text color<br><br>
</dd>
<dt><big><a name="Style.textFlags"></a>const @property uint <u>textFlags</u>();
</big></dt>
<dd>text flags<br><br>
</dd>
<dt><big><a name="Style.backgroundColor"></a>const @property uint <u>backgroundColor</u>();
</big></dt>
<dd>background color<br><br>
</dd>
<dt><big><a name="Style.backgroundImageId"></a>const @property string <u>backgroundImageId</u>();
</big></dt>
<dd>font size<br><br>
</dd>
<dt><big><a name="Style.minWidth"></a>const @property uint <u>minWidth</u>();
</big></dt>
<dd>minimal width constraint, 0 if limit is not set<br><br>
</dd>
<dt><big><a name="Style.maxWidth"></a>const @property uint <u>maxWidth</u>();
</big></dt>
<dd>max width constraint, returns SIZE_UNSPECIFIED if limit is not set<br><br>
</dd>
<dt><big><a name="Style.minHeight"></a>const @property uint <u>minHeight</u>();
</big></dt>
<dd>minimal height constraint, 0 if limit is not set<br><br>
</dd>
<dt><big><a name="Style.maxHeight"></a>const @property uint <u>maxHeight</u>();
</big></dt>
<dd>max height constraint, SIZE_UNSPECIFIED if limit is not set<br><br>
</dd>
<dt><big><a name="Style.minWidth"></a>@property Style <u>minWidth</u>(int <i>value</i>);
</big></dt>
<dd>set min width constraint<br><br>
</dd>
<dt><big><a name="Style.maxWidth"></a>@property Style <u>maxWidth</u>(int <i>value</i>);
</big></dt>
<dd>set max width constraint<br><br>
</dd>
<dt><big><a name="Style.minHeight"></a>@property Style <u>minHeight</u>(int <i>value</i>);
</big></dt>
<dd>set min height constraint<br><br>
</dd>
<dt><big><a name="Style.maxHeight"></a>@property Style <u>maxHeight</u>(int <i>value</i>);
</big></dt>
<dd>set max height constraint<br><br>
</dd>
<dt><big><a name="Style.layoutWidth"></a>const @property uint <u>layoutWidth</u>();
</big></dt>
<dd>layout width parameter<br><br>
</dd>
<dt><big><a name="Style.layoutHeight"></a>const @property uint <u>layoutHeight</u>();
</big></dt>
<dd>layout height parameter<br><br>
</dd>
<dt><big><a name="Style.layoutWeight"></a>const @property uint <u>layoutWeight</u>();
</big></dt>
<dd>layout weight parameter<br><br>
</dd>
<dt><big><a name="Style.layoutHeight"></a>@property Style <u>layoutHeight</u>(int <i>value</i>);
</big></dt>
<dd>set layout height<br><br>
</dd>
<dt><big><a name="Style.layoutWidth"></a>@property Style <u>layoutWidth</u>(int <i>value</i>);
</big></dt>
<dd>set layout width<br><br>
</dd>
<dt><big><a name="Style.layoutWeight"></a>@property Style <u>layoutWeight</u>(int <i>value</i>);
</big></dt>
<dd>set layout weight<br><br>
</dd>
<dt><big><a name="Style.alignment"></a>const @property ubyte <u>alignment</u>();
</big></dt>
<dd>get full <u>alignment</u> (both vertical and horizontal)<br><br>
</dd>
<dt><big><a name="Style.valign"></a>const @property ubyte <u>valign</u>();
</big></dt>
<dd>vertical alignment: Top / VCenter / Bottom<br><br>
</dd>
<dt><big><a name="Style.halign"></a>const @property ubyte <u>halign</u>();
</big></dt>
<dd>horizontal alignment: Left / HCenter / Right<br><br>
</dd>
<dt><big><a name="Style.alignment"></a>@property Style <u>alignment</u>(ubyte <i>value</i>);
</big></dt>
<dd>set <u>alignment</u><br><br>
</dd>
<dt><big><a name="Style.createSubstyle"></a>Style <u>createSubstyle</u>(string <i>id</i>);
</big></dt>
<dd>create named substyle of this style<br><br>
</dd>
<dt><big><a name="Style.createState"></a>Style <u>createState</u>(uint <i>stateMask</i> = 0, uint <i>stateValue</i> = 0);
</big></dt>
<dd>create state substyle for this style<br><br>
</dd>
<dt><big><a name="Style.forState"></a>const const(Style) <u>forState</u>(uint <i>state</i>);
</big></dt>
<dd>find substyle based on widget <i>state</i> (e.g. focused, pressed, ...)<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="Theme"></a>class <u>Theme</u>: dlangui.widgets.styles.Style;
</big></dt>
<dd><u>Theme</u> - root for style hierarhy.<br><br>
<dl><dt><big><a name="Theme.modifyStyle"></a>Style <u>modifyStyle</u>(string <i>id</i>);
</big></dt>
<dd>create wrapper style which will have currentTheme.get(<i>id</i>) as parent instead of fixed parent - to modify some base style properties in widget<br><br>
</dd>
<dt><big><a name="Theme.backgroundImageId"></a>const @property string <u>backgroundImageId</u>();
</big></dt>
<dd>font size<br><br>
</dd>
<dt><big><a name="Theme.minWidth"></a>const @property uint <u>minWidth</u>();
</big></dt>
<dd>minimal width constraint, 0 if limit is not set<br><br>
</dd>
<dt><big><a name="Theme.maxWidth"></a>const @property uint <u>maxWidth</u>();
</big></dt>
<dd>max width constraint, returns SIZE_UNSPECIFIED if limit is not set<br><br>
</dd>
<dt><big><a name="Theme.minHeight"></a>const @property uint <u>minHeight</u>();
</big></dt>
<dd>minimal height constraint, 0 if limit is not set<br><br>
</dd>
<dt><big><a name="Theme.maxHeight"></a>const @property uint <u>maxHeight</u>();
</big></dt>
<dd>max height constraint, SIZE_UNSPECIFIED if limit is not set<br><br>
</dd>
<dt><big><a name="Theme.createSubstyle"></a>Style <u>createSubstyle</u>(string <i>id</i>);
</big></dt>
<dd>create new named style or get existing<br><br>
</dd>
<dt><big><a name="Theme.get"></a>@property Style <u>get</u>(string <i>id</i>);
</big></dt>
<dd>find style by <i>id</i>, returns theme if not style with specified ID is not found<br><br>
</dd>
<dt><big><a name="Theme.forState"></a>const const(Style) <u>forState</u>(uint <i>state</i>);
</big></dt>
<dd>find substyle based on widget <i>state</i> (e.g. focused, pressed, ...)<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="currentTheme"></a>@property Theme <u>currentTheme</u>();
</big></dt>
<dd>current theme accessor<br><br>
</dd>
<dt><big><a name="currentTheme"></a>@property void <u>currentTheme</u>(Theme <i>theme</i>);
</big></dt>
<dd>set new current <i>theme</i><br><br>
</dd>
<dt><big><a name="decodeRect"></a>Rect <u>decodeRect</u>(string <i>s</i>);
</big></dt>
<dd>decode comma delimited dimension list or single value - and put to Rect<br><br>
</dd>
<dt><big><a name="decodeAlignment"></a>ubyte <u>decodeAlignment</u>(string <i>s</i>);
</big></dt>
<dd>parses string like "Left|VCenter" to bit set of Align flags<br><br>
</dd>
<dt><big><a name="decodeTextFlags"></a>uint <u>decodeTextFlags</u>(string <i>s</i>);
</big></dt>
<dd>parses string like "HotKeys|UnderlineHotKeysWhenAltPressed" to bit set of TextFlag flags<br><br>
</dd>
<dt><big><a name="decodeFontFamily"></a>FontFamily <u>decodeFontFamily</u>(string <i>s</i>);
</big></dt>
<dd>decode FontFamily item name to value<br><br>
</dd>
<dt><big><a name="decodeLayoutDimension"></a>int <u>decodeLayoutDimension</u>(string <i>s</i>);
</big></dt>
<dd>decode layout dimension (FILL_PARENT, WRAP_CONTENT, or just size)<br><br>
</dd>
<dt><big><a name="loadStyleAttributes"></a>bool <u>loadStyleAttributes</u>(Style <i>style</i>, Element <i>elem</i>, bool <i>allowStates</i>);
</big></dt>
<dd>load <i>style</i> attributes from XML element<br><br>
</dd>
<dt><big><a name="loadTheme"></a>bool <u>loadTheme</u>(Theme <i>theme</i>, Element <i>doc</i>, int <i>level</i> = 0);
</big></dt>
<dd>load <i>theme</i> from XML document
<br><br>
<b>Sample:</b><br>
<pre class="d_code">&lt;?xml <font color=blue>version</font>=<font color=red>"1.0"</font> encoding=<font color=red>"utf-8"</font>?&gt;
&lt;<i>theme</i> id=<font color=red>"theme_custom"</font> parent=<font color=red>"theme_default"</font>&gt;
&lt;style id=<font color=red>"BUTTON"</font>
backgroundImageId=<font color=red>"btn_default_small"</font>
&gt;
&lt;/style&gt;
&lt;/<i>theme</i>&gt;
</pre>
<br><br>
</dd>
<dt><big><a name="loadTheme"></a>bool <u>loadTheme</u>(Theme <i>theme</i>, string <i>resourceId</i>, int <i>level</i> = 0);
</big></dt>
<dd>load <i>theme</i> from file<br><br>
</dd>
<dt><big><a name="loadTheme"></a>Theme <u>loadTheme</u>(string <i>resourceId</i>);
</big></dt>
<dd>load theme from XML file (<b>null</b> if failed)<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,235 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.tabs</title>
</head><body>
<h1>dlangui.widgets.tabs</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/tabs.d -->
DLANGUI library.
<br><br>
This module contains declaration of tabbed view controls.
<br><br>
TabItemWidget - single tab header in tab control
TabWidget
TabHost
TabControl
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>tabs</u>;
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="TabItem"></a>class <u>TabItem</u>;
</big></dt>
<dd>tab item metadata<br><br>
</dd>
<dt><big><a name="TabItemWidget"></a>class <u>TabItemWidget</u>: dlangui.widgets.layouts.HorizontalLayout;
</big></dt>
<dd>tab item widget - to show tab header<br><br>
</dd>
<dt><big><a name="TabItemList"></a>class <u>TabItemList</u>;
</big></dt>
<dd>tab item list helper class<br><br>
<dl><dt><big><a name="TabItemList.get"></a>TabItem <u>get</u>(int <i>index</i>);
</big></dt>
<dd><u>get</u> item by <i>index</i><br><br>
</dd>
<dt><big><a name="TabItemList.get"></a>TabItem <u>get</u>(string <i>id</i>);
</big></dt>
<dd><u>get</u> item by <i>id</i><br><br>
</dd>
<dt><big><a name="TabItemList.add"></a>TabItemList <u>add</u>(TabItem <i>item</i>);
</big></dt>
<dd>append new <i>item</i><br><br>
</dd>
<dt><big><a name="TabItemList.insert"></a>TabItemList <u>insert</u>(TabItem <i>item</i>, int <i>index</i>);
</big></dt>
<dd><u>insert</u> new <i>item</i> to specified position<br><br>
</dd>
<dt><big><a name="TabItemList.remove"></a>TabItem <u>remove</u>(int <i>index</i>);
</big></dt>
<dd><u>remove</u> item by <i>index</i><br><br>
</dd>
<dt><big><a name="TabItemList.indexById"></a>int <u>indexById</u>(string <i>id</i>);
</big></dt>
<dd>find tab index by <i>id</i><br><br>
</dd>
</dl>
</dd>
<dt><big><a name="TabControl"></a>class <u>TabControl</u>: dlangui.widgets.widget.WidgetGroup;
</big></dt>
<dd>tab header - tab labels, with optional More button<br><br>
<dl><dt><big><a name="TabControl.onTabChangedListener"></a>Signal!TabHandler <u>onTabChangedListener</u>;
</big></dt>
<dd>signal of tab change (e.g. by clicking on tab header)<br><br>
</dd>
<dt><big><a name="TabControl.tabCount"></a>const @property int <u>tabCount</u>();
</big></dt>
<dd>returns tab count<br><br>
</dd>
<dt><big><a name="TabControl.tab"></a>TabItem <u>tab</u>(int <i>index</i>);
</big></dt>
<dd>returns <u>tab</u> item by id (<b>null</b> if <i>index</i> out of range)<br><br>
</dd>
<dt><big><a name="TabControl.tab"></a>TabItem <u>tab</u>(string <i>id</i>);
</big></dt>
<dd>returns <u>tab</u> item by <i>id</i> (<b>null</b> if not found)<br><br>
</dd>
<dt><big><a name="TabControl.tabIndex"></a>int <u>tabIndex</u>(string <i>id</i>);
</big></dt>
<dd>get tab index by tab <i>id</i> (-1 if not found)<br><br>
</dd>
<dt><big><a name="TabControl.removeTab"></a>TabControl <u>removeTab</u>(string <i>id</i>);
</big></dt>
<dd>remove tab<br><br>
</dd>
<dt><big><a name="TabControl.addTab"></a>TabControl <u>addTab</u>(TabItem <i>item</i>, int <i>index</i> = -1, bool <i>enableCloseButton</i> = false);
</big></dt>
<dd>add new tab<br><br>
</dd>
<dt><big><a name="TabControl.addTab"></a>TabControl <u>addTab</u>(string <i>id</i>, dstring <i>label</i>, string <i>iconId</i> = null, bool <i>enableCloseButton</i> = false);
</big></dt>
<dd>add new tab by <i>id</i> and <i>label</i> string<br><br>
</dd>
<dt><big><a name="TabControl.addTab"></a>TabControl <u>addTab</u>(string <i>id</i>, string <i>labelResourceId</i>, string <i>iconId</i> = null, bool <i>enableCloseButton</i> = false);
</big></dt>
<dd>add new tab by <i>id</i> and label string resource <i>id</i><br><br>
</dd>
<dt><big><a name="TabControl.measure"></a>void <u>measure</u>(int <i>parentWidth</i>, int <i>parentHeight</i>);
</big></dt>
<dd>Measure widget according to desired width and height constraints. (Step 1 of two phase layout).<br><br>
</dd>
<dt><big><a name="TabControl.layout"></a>void <u>layout</u>(Rect <i>rc</i>);
</big></dt>
<dd>Set widget rectangle to specified value and <u>layout</u> widget contents. (Step 2 of two phase <u>layout</u>).<br><br>
</dd>
<dt><big><a name="TabControl.onDraw"></a>void <u>onDraw</u>(DrawBuf <i>buf</i>);
</big></dt>
<dd>Draw widget at its position to buffer<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="TabHost"></a>class <u>TabHost</u>: dlangui.widgets.layouts.FrameLayout, dlangui.widgets.tabs.TabHandler;
</big></dt>
<dd>container for widgets controlled by TabControl<br><br>
<dl><dt><big><a name="TabHost.tabControl"></a>@property TabControl <u>tabControl</u>();
</big></dt>
<dd>get currently set control widget<br><br>
</dd>
<dt><big><a name="TabHost.tabControl"></a>@property TabHost <u>tabControl</u>(TabControl <i>newWidget</i>);
</big></dt>
<dd>set new control widget<br><br>
</dd>
<dt><big><a name="TabHost.onTabChangedListener"></a>Signal!TabHandler <u>onTabChangedListener</u>;
</big></dt>
<dd>signal of tab change (e.g. by clicking on tab header)<br><br>
</dd>
<dt><big><a name="TabHost.removeTab"></a>TabHost <u>removeTab</u>(string <i>id</i>);
</big></dt>
<dd>remove tab<br><br>
</dd>
<dt><big><a name="TabHost.addTab"></a>TabHost <u>addTab</u>(Widget <i>widget</i>, dstring <i>label</i>, string <i>iconId</i> = null, bool <i>enableCloseButton</i> = false);
</big></dt>
<dd>add new tab by id and <i>label</i> string<br><br>
</dd>
<dt><big><a name="TabHost.addTab"></a>TabHost <u>addTab</u>(Widget <i>widget</i>, string <i>labelResourceId</i>, string <i>iconId</i> = null, bool <i>enableCloseButton</i> = false);
</big></dt>
<dd>add new tab by id and label string resource id<br><br>
</dd>
<dt><big><a name="TabHost.selectTab"></a>void <u>selectTab</u>(string <i>ID</i>);
</big></dt>
<dd>select tab<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="TabWidget"></a>class <u>TabWidget</u>: dlangui.widgets.layouts.VerticalLayout, dlangui.widgets.tabs.TabHandler;
</big></dt>
<dd>compound widget - contains from TabControl widget (tabs header) and TabHost (content pages)<br><br>
<dl><dt><big><a name="TabWidget.onTabChangedListener"></a>Signal!TabHandler <u>onTabChangedListener</u>;
</big></dt>
<dd>signal of tab change (e.g. by clicking on tab header)<br><br>
</dd>
<dt><big><a name="TabWidget.addTab"></a>TabWidget <u>addTab</u>(Widget <i>widget</i>, string <i>labelResourceId</i>, string <i>iconId</i> = null, bool <i>enableCloseButton</i> = false);
</big></dt>
<dd>add new tab by id and label string resource id<br><br>
</dd>
<dt><big><a name="TabWidget.addTab"></a>TabWidget <u>addTab</u>(Widget <i>widget</i>, dstring <i>label</i>, string <i>iconId</i> = null, bool <i>enableCloseButton</i> = false);
</big></dt>
<dd>add new tab by id and <i>label</i> (raw value)<br><br>
</dd>
<dt><big><a name="TabWidget.removeTab"></a>TabWidget <u>removeTab</u>(string <i>id</i>);
</big></dt>
<dd>remove tab by <i>id</i><br><br>
</dd>
<dt><big><a name="TabWidget.selectTab"></a>void <u>selectTab</u>(string <i>ID</i>);
</big></dt>
<dd>select tab<br><br>
</dd>
<dt><big><a name="TabWidget.tab"></a>TabItem <u>tab</u>(int <i>index</i>);
</big></dt>
<dd>returns <u>tab</u> item by id (<b>null</b> if <i>index</i> out of range)<br><br>
</dd>
<dt><big><a name="TabWidget.tab"></a>TabItem <u>tab</u>(string <i>id</i>);
</big></dt>
<dd>returns <u>tab</u> item by <i>id</i> (<b>null</b> if not found)<br><br>
</dd>
<dt><big><a name="TabWidget.tabIndex"></a>int <u>tabIndex</u>(string <i>id</i>);
</big></dt>
<dd>get tab index by tab <i>id</i> (-1 if not found)<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,147 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.core.types</title>
</head><body>
<h1>dlangui.core.types</h1>
<!-- Generated by Ddoc from src/dlangui/core/types.d -->
DLANGUI library.
<br><br>
This module declares basic data <u>types</u> for usage in dlangui library.
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.core.<u>types</u>;
<font color=green>// points
</font>Point p(5, 10);
<font color=green>// rectangles
</font>Rect r(5, 13, 120, 200);
writeln(r);
<font color=green>// reference counted objects, useful for RAII / resource management.
</font><font color=blue>class</font> Foo : RefCountedObject {
<font color=blue>int</font>[] resource;
~<font color=blue>this</font>() {
writeln(<font color=red>"freeing Foo resources"</font>);
}
}
{
Ref!Foo ref1;
{
Ref!Foo fooRef = <font color=blue>new</font> RefCountedObject();
ref1 = fooRef;
}
<font color=green>// RAII: will destroy object when no more references
</font>}
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="Glyph"></a>struct <u>Glyph</u>;
</big></dt>
<dd>character glyph<br><br>
<dl><dt><big><a name="Glyph.id"></a>uint <u>id</u>;
</big></dt>
<dd>&lt; 0: unique <u>id</u> of glyph (for drawing in hardware accelerated scenes)<br><br>
</dd>
<dt><big><a name="Glyph.blackBoxX"></a>ubyte <u>blackBoxX</u>;
</big></dt>
<dd>&lt; 4: width of glyph black box<br><br>
</dd>
<dt><big><a name="Glyph.blackBoxY"></a>ubyte <u>blackBoxY</u>;
</big></dt>
<dd>&lt; 5: height of glyph black box<br><br>
</dd>
<dt><big><a name="Glyph.originX"></a>byte <u>originX</u>;
</big></dt>
<dd>&lt; 6: X origin for glyph<br><br>
</dd>
<dt><big><a name="Glyph.originY"></a>byte <u>originY</u>;
</big></dt>
<dd>&lt; 7: Y origin for glyph<br><br>
</dd>
<dt><big><a name="Glyph.width"></a>ubyte <u>width</u>;
</big></dt>
<dd>&lt; 8: full <u>width</u> of glyph<br><br>
</dd>
<dt><big><a name="Glyph.lastUsage"></a>ubyte <u>lastUsage</u>;
</big></dt>
<dd>&lt; 9: usage flag, to handle cleanup of unused glyphs<br><br>
</dd>
<dt><big><a name="Glyph.glyph"></a>ubyte[] <u>glyph</u>;
</big></dt>
<dd>&lt; 12: <u>glyph</u> data, arbitrary size<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="RefCountedObject"></a>class <u>RefCountedObject</u>;
</big></dt>
<dd>base class for reference counted objects, maintains reference counter inplace.<br><br>
</dd>
<dt><big><a name="State"></a>enum <u>State</u>: uint;
</big></dt>
<dd>widget state flags - bits<br><br>
<dl><dt><big><a name="State.Normal"></a><u>Normal</u></big></dt>
<dd>state not specified / normal<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="dcharToUpper"></a>dchar <u>dcharToUpper</u>(dchar <i>ch</i>);
</big></dt>
<dd>uppercase unicode character<br><br>
</dd>
<dt><big><a name="isPathDelimiter"></a>bool <u>isPathDelimiter</u>(char <i>ch</i>);
</big></dt>
<dd>returns <b>true</b> if char <i>ch</i> is / or \ slash<br><br>
</dd>
<dt><big><a name="exePath"></a>@property string <u>exePath</u>();
</big></dt>
<dd>returns current executable path only, including last path delimiter<br><br>
</dd>
<dt><big><a name="convertPathDelimiters"></a>char[] <u>convertPathDelimiters</u>(char[] <i>buf</i>);
</big></dt>
<dd>converts path delimiters to standard for platform inplace in buffer(e.g. / to \ on windows, \ to / on posix), returns <i>buf</i><br><br>
</dd>
<dt><big><a name="convertPathDelimiters"></a>string <u>convertPathDelimiters</u>(string <i>src</i>);
</big></dt>
<dd>converts path delimiters to standard for platform (e.g. / to \ on windows, \ to / on posix)<br><br>
</dd>
<dt><big><a name="appendPath"></a>string <u>appendPath</u>(string[] <i>pathItems</i>...);
</big></dt>
<dd>appends file path parts with proper delimiters e.g. <u>appendPath</u>("/home/user", ".myapp", "config") =&gt; "/home/user/.myapp/config"<br><br>
</dd>
<dt><big><a name="appendPath"></a>char[] <u>appendPath</u>(char[] <i>buf</i>, string[] <i>pathItems</i>...);
</big></dt>
<dd>appends file path parts with proper delimiters (as well converts delimiters inside path to system) to buffer e.g. <u>appendPath</u>("/home/user", ".myapp", "config") =&gt; "/home/user/.myapp/config"<br><br>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -1,211 +0,0 @@
<html><head>
<META http-equiv="content-type" content="text/html; charset=utf-8">
<title>dlangui.widgets.widget</title>
</head><body>
<h1>dlangui.widgets.widget</h1>
<!-- Generated by Ddoc from src/dlangui/widgets/widget.d -->
DLANGUI library.
<br><br>
This module contains declaration of Widget class - base class for all widgets.
<br><br>
Widgets are styleable. Use styleId property to set style to use from current Theme.
<br><br>
When any of styleable attributes is being overriden, <u>widget</u>'s own copy of style is being created to hold modified attributes (defaults to parent style).
<br><br>
Two phase layout model (like in Android UI) is used - measure() call is followed by layout() is used to measure and layout <u>widget</u> and its children.abstract
<br><br>
Method onDraw will be called to draw <u>widget</u> on some surface. Widget.onDraw() draws <u>widget</u> background (if any).
<br><br>
<br><br>
<b>Synopsis:</b><br>
<pre class="d_code"><font color=blue>import</font> dlangui.widgets.<u>widget</u>;
<font color=green>// access attributes as properties
</font><font color=blue>auto</font> w = <font color=blue>new</font> Widget(<font color=red>"id1"</font>);
w.backgroundColor = 0xFFFF00;
w.layoutWidth = FILL_PARENT;
w.layoutHeight = FILL_PARENT;
w.padding(Rect(10,10,10,10));
<font color=green>// same, but using chained method call
</font><font color=blue>auto</font> w = <font color=blue>new</font> Widget(<font color=red>"id1"</font>).backgroundColor(0xFFFF00).layoutWidth(FILL_PARENT).layoutHeight(FILL_PARENT).padding(Rect(10,10,10,10));
</pre>
<br><br>
<b>License:</b><br>
Boost License 1.0
<br><br>
<b>Authors:</b><br>
Vadim Lopatin, coolreader.org@gmail.com<br><br>
<dl><dt><big><a name="Visibility"></a>enum <u>Visibility</u>: ubyte;
</big></dt>
<dd><u>Visibility</u> (see Android View <u>Visibility</u>)<br><br>
<dl><dt><big><a name="Visibility.Visible"></a><u>Visible</u></big></dt>
<dd><u>Visible</u> on screen (default)<br><br>
</dd>
<dt><big><a name="Visibility.Invisible"></a><u>Invisible</u></big></dt>
<dd>Not visible, but occupies a space in layout<br><br>
</dd>
<dt><big><a name="Visibility.Gone"></a><u>Gone</u></big></dt>
<dd>Completely hidden, as not has been added<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="OnClickHandler"></a>interface <u>OnClickHandler</u>;
</big></dt>
<dd>interface - slot for onClick<br><br>
</dd>
<dt><big><a name="OnCheckHandler"></a>interface <u>OnCheckHandler</u>;
</big></dt>
<dd>interface - slot for onCheckChanged<br><br>
</dd>
<dt><big><a name="OnFocusHandler"></a>interface <u>OnFocusHandler</u>;
</big></dt>
<dd>interface - slot for onFocusChanged<br><br>
</dd>
<dt><big><a name="FocusMovement"></a>enum <u>FocusMovement</u>: int;
</big></dt>
<dd>focus movement options<br><br>
<dl><dt><big><a name="FocusMovement.None"></a><u>None</u></big></dt>
<dd>no focus movement<br><br>
</dd>
<dt><big><a name="FocusMovement.Next"></a><u>Next</u></big></dt>
<dd>next focusable (Tab)<br><br>
</dd>
<dt><big><a name="FocusMovement.Previous"></a><u>Previous</u></big></dt>
<dd>previous focusable (Shift+Tab)<br><br>
</dd>
<dt><big><a name="FocusMovement.Up"></a><u>Up</u></big></dt>
<dd>move to nearest above<br><br>
</dd>
<dt><big><a name="FocusMovement.Down"></a><u>Down</u></big></dt>
<dd>move to nearest below<br><br>
</dd>
<dt><big><a name="FocusMovement.Left"></a><u>Left</u></big></dt>
<dd>move to nearest at left<br><br>
</dd>
<dt><big><a name="FocusMovement.Right"></a><u>Right</u></big></dt>
<dd>move to nearest at right<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="CursorType"></a>enum <u>CursorType</u>: int;
</big></dt>
<dd>standard mouse cursor types<br><br>
<dl><dt><big><a name="CursorType.Parent"></a><u>Parent</u></big></dt>
<dd>use parent's cursor<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="WidgetList"></a>struct <u>WidgetList</u>;
</big></dt>
<dd>widget list holder<br><br>
<dl><dt><big><a name="WidgetList.count"></a>const @property int <u>count</u>();
</big></dt>
<dd>returns <u>count</u> of items<br><br>
</dd>
<dt><big><a name="WidgetList.get"></a>Widget <u>get</u>(int <i>index</i>);
</big></dt>
<dd><u>get</u> item by <i>index</i><br><br>
</dd>
<dt><big><a name="WidgetList.add"></a>Widget <u>add</u>(Widget <i>item</i>);
</big></dt>
<dd><u>add</u> <i>item</i> to list<br><br>
</dd>
<dt><big><a name="WidgetList.insert"></a>Widget <u>insert</u>(Widget <i>item</i>, int <i>index</i> = -1);
</big></dt>
<dd>add <i>item</i> to list<br><br>
</dd>
<dt><big><a name="WidgetList.indexOf"></a>int <u>indexOf</u>(Widget <i>item</i>);
</big></dt>
<dd>find child index for <i>item</i>, return -1 if not found<br><br>
</dd>
<dt><big><a name="WidgetList.indexOf"></a>int <u>indexOf</u>(string <i>id</i>);
</big></dt>
<dd>find child index for item by <i>id</i>, return -1 if not found<br><br>
</dd>
<dt><big><a name="WidgetList.remove"></a>Widget <u>remove</u>(int <i>index</i>);
</big></dt>
<dd><u>remove</u> item from list, return removed item<br><br>
</dd>
<dt><big><a name="WidgetList.clear"></a>void <u>clear</u>();
</big></dt>
<dd>remove and destroy all items<br><br>
</dd>
</dl>
</dd>
<dt><big><a name="WidgetGroup"></a>class <u>WidgetGroup</u>: dlangui.widgets.widget.Widget;
</big></dt>
<dd>base class for widgets which have children<br><br>
<dl><dt><big><a name="WidgetGroup.childCount"></a>@property int <u>childCount</u>();
</big></dt>
<dd>returns number of children of this widget<br><br>
</dd>
<dt><big><a name="WidgetGroup.child"></a>Widget <u>child</u>(int <i>index</i>);
</big></dt>
<dd>returns <u>child</u> by <i>index</i><br><br>
</dd>
<dt><big><a name="WidgetGroup.addChild"></a>Widget <u>addChild</u>(Widget <i>item</i>);
</big></dt>
<dd>adds child, returns added <i>item</i><br><br>
</dd>
<dt><big><a name="WidgetGroup.removeChild"></a>Widget <u>removeChild</u>(int <i>index</i>);
</big></dt>
<dd>removes child, returns removed item<br><br>
</dd>
<dt><big><a name="WidgetGroup.removeChild"></a>Widget <u>removeChild</u>(string <i>ID</i>);
</big></dt>
<dd>removes child by <i>ID</i>, returns removed item<br><br>
</dd>
<dt><big><a name="WidgetGroup.childIndex"></a>int <u>childIndex</u>(Widget <i>item</i>);
</big></dt>
<dd>returns index of widget in child list, -1 if passed widget is not a child of this widget<br><br>
</dd>
</dl>
</dd>
</dl>
<hr><small>Page generated by <a href="http://dlang.org/ddoc.html">Ddoc</a>. Vadim Lopatin, 2014
</small>
</body></html>

View File

@ -22,6 +22,10 @@
"targetPath": "lib",
"targetType": "staticLibrary",
"sourceFiles": [
"project.ddoc"
],
"sourceFiles-windows": [
"3rdparty/win32/basetsd.d",
"3rdparty/win32/basetyps.d",

View File

@ -1,3 +1,18 @@
// Written in the D programming language.
/**
This app is a demo for most of DlangUI library features.
Synopsis:
----
dub run dlangui:example1
----
Copyright: Vadim Lopatin, 2014
License: Boost License 1.0
Authors: Vadim Lopatin, coolreader.org@gmail.com
*/
module main;
import dlangui.all;

95
project.ddoc Normal file
View File

@ -0,0 +1,95 @@
PROJECT = dlangui
DDOC = <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
<meta charset='utf-8'>
<meta http-equiv="X-UA-Compatible" content="chrome=1">
<link href='https://fonts.googleapis.com/css?family=Chivo:900' rel='stylesheet' type='text/css'>
<link rel="stylesheet" type="text/css" href="stylesheets/stylesheet.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/pygment_trac.css" media="screen" />
<link rel="stylesheet" type="text/css" href="stylesheets/print.css" media="print" />
<!--[if lt IE 9]>
<script src="//html5shiv.googlecode.com/svn/trunk/html5.js"></script>
<![endif]-->
<title>DlangUI - cross platform GUI library for D programming language - $(TITLE)</title>
</head>
<body>
<div id="container">
<div class="inner">
<header>
<h1>DlangUI</h1>
<h2>Cross Platform GUI for D programming language</h2>
</header>
<section id="downloads" class="clearfix">
<a href="index.html" id="home" class="button"><span>Home</span></a>
<a href="api.html" id="home" class="button"><span>API Docs</span></a>
<a href="screenshots.html" id="home" class="button"><span>Screenshots</span></a>
<a href="https://github.com/buggins/dlangui/zipball/master" id="download-zip" class="button"><span>Download .zip</span></a>
<!--a href="https://github.com/buggins/dlangui/tarball/master" id="download-tar-gz" class="button"><span>Download .tar.gz</span></a-->
<a href="https://github.com/buggins/dlangui" id="view-on-github" class="button"><span>View on GitHub</span></a>
</section>
<hr>
<section id="main_content">
<h1>$(TITLE)</h1>
$(BODY)
</section>
<footer>
Dlangui is maintained by <a href="https://github.com/buggins">buggins</a><br>
This page was generated by <a href="http://pages.github.com">GitHub Pages</a>. Tactile theme by <a href="https://twitter.com/jasonlong">Jason Long</a>.
</footer>
</div>
</div>
</body>
</html>
MODULE_TREE = <ul>
<li>dlangui.core
<ul>
<li><a href="types.html">types</a></li>
<li><a href="events.html">events</a></li>
<li><a href="i18n.html">i18n</a></li>
<li><a href="logger.html">logger</a></li>
<li><a href="signals.html">signals</a></li>
<li><a href="stdaction.html">stdaction</a></li>
<li><a href="collections.html">collections</a></li>
<li><a href="linestream.html">linestream</a></li>
</ul></li>
<li>dlangui.graphics
<ul>
<li><a href="drawbuf.html">drawbuf</a></li>
<li><a href="fonts.html">fonts</a></li>
<li><a href="images.html">images</a></li>
<li><a href="resources.html">resources</a></li>
<li><a href="ftfonts.html">ftfonts</a></li>
<li><a href="gldrawbuf.html">gldrawbuf</a></li>
<li><a href="glsupport.html">glsupport</a></li>
</ul></li>
<li>dlangui.widgets
<ul>
<li><a href="widget.html">widget</a></li>
<li><a href="styles.html">styles</a></li>
<li><a href="controls.html">controls</a></li>
<li><a href="layouts.html">layouts</a></li>
<li><a href="lists.html">lists</a></li>
<li><a href="editors.html">editors</a></li>
<li><a href="menu.html">menu</a></li>
<li><a href="popup.html">popup</a></li>
<li><a href="tabs.html">tabs</a></li>
</ul></li>
<li>dlangui.dialogs
<ul>
<li><a href="dialog.html">dialog</a></li>
<li><a href="filedlg.html">filedlg</a></li>
</ul></li>
<li>dlangui.platforms.common
<ul>
<li><a href="platform.html">platform</a></li>
</ul></li>
<li>dlangui
<ul>
<li><a href="all.html">all</a></li>
</ul></li>

6
src/api.d Normal file
View File

@ -0,0 +1,6 @@
Ddoc
<h2>By Modules</h2>
$(MODULE_TREE)

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module is just to simplify import of most useful DLANGUI modules.
Synopsis:
@ -23,12 +21,11 @@ extern (C) int UIAppMain(string[] args) {
];
// setup resource directories - will use only existing directories
drawableCache.setResourcePaths(resourceDirs);
// setup i18n - look for i18n directory inside one of passed directories
i18n.findTranslationsDir(resourceDirs);
Platform.instance.resourceDirs = resourceDirs;
// select translation file - for english language
i18n.load("en.ini"); //"ru.ini", "en.ini"
Platform.instance.uiLanguage = "en";
// load theme from file "theme_default.xml"
Platform.instance.uiTheme = "theme_default";
// create window
Window window = Platform.instance.createWindow("My Window", null);

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module implements array based collection.
Synopsis:

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains dlangui event types declarations.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains internationalization support implementation.
Translation files contain of simple key=value pair lines.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains text file reader implementation.
Support utf8, utf16, utf32 be and le encodings, and line endings - according to D language source file specification.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains logger implementation.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains definition of signals / listeners.
Similar to std.signals.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
Definition of standard actions commonly used in dialogs and controls.
Synopsis:

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module declares basic data types for usage in dlangui library.
Synopsis:

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains common Dialog implementation.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains FileDialog implementation.
Can show dialog for open / save.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains drawing buffer implementation.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains base fonts access interface and common implementation.
Font - base class for fonts.

View File

@ -1,13 +1,8 @@
// Written in the D programming language.
/**
DLANGUI library.
This file contains FontManager implementation based on FreeType library.
Copyright: Vadim Lopatin, 2014
License: Boost License 1.0
Authors: Vadim Lopatin, coolreader.org@gmail.com

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains opengl based drawing buffer implementation.
To enable OpenGL support, build with version(USE_OPENGL);

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains OpenGL access layer.
To enable OpenGL support, build with version(USE_OPENGL);

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains image loading functions.
Currently uses FreeImage.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains resource management and drawables implementation.
imageCache is RAM cache of decoded images (as DrawBuf).

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains common Plaform definitions.
Platform is abstraction layer for application.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains implementation of SDL2 based backend for dlang library.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains simple controls widgets implementation.
TextWidget

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains implementation of editors.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains common layouts implementations.
Layouts are similar to the same in Android.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains list widgets implementation.
Similar to lists implementation in Android UI API.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains menu widgets implementation.
MenuItem - menu item properties container - to hold hierarchy of menu.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains popup widgets implementation.
Popups appear above other widgets inside window.

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains declaration of themes and styles implementation.
Style - style container

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains declaration of tabbed view controls.
TabItemWidget - single tab header in tab control

View File

@ -1,8 +1,6 @@
// Written in the D programming language.
/**
DLANGUI library.
This module contains declaration of Widget class - base class for all widgets.
Widgets are styleable. Use styleId property to set style to use from current Theme.

232
src/index.d Normal file
View File

@ -0,0 +1,232 @@
Ddoc
<h1>
<a name="dlang-ui" class="anchor" href="#dlang-ui"><span class="octicon octicon-link"></span></a>Dlang UI</h1>
<p>GUI for D programming language, written in D.</p>
Alpha stage of development.
<ul>
<li>Crossplatform (Win32 and Linux are supported in current version); can use SDL2 as a backend.</li>
<li>Mostly inspired by Android UI API (layouts, styles, two phase layout, ...)</li>
<li>Supports highly customizable UI themes and styles</li>
<li>Supports internationalization</li>
<li>Hardware acceleration using OpenGL (when built with version USE_OPENGL)</li>
<li>Fallback to Win32 API / XCB when OpenGL is not available</li>
<li>Actually it's a port (with major refactoring) of GUI library for cross platform OpenGL based implementation of Cool Reader app project from C++.</li>
<li>Almost ready for 2D games development</li>
<li>Goal: provide set of widgets suitable for building of IDE.</li>
<li>Non thread safe</li>
</ul>
<h2><a name="widgets" class="anchor" href="#widgets"><span class="octicon octicon-link"></span></a>Widgets</h2>
<ul>
<li>Widget - base class for all widgets and widget containers, similar to Android's View</li>
</ul><p>Currently implemented widgets:</p>
<ul>
<li>TextWidget - simple static text (TODO: implement multiline formatting)</li>
<li>ImageWidget - static image</li>
<li>Button - simple button with text label</li>
<li>ImageButton - image only button</li>
<li>TextImageButton - button with icon and label</li>
<li>CheckBox - check button with label</li>
<li>RadioButton - radio button with label</li>
<li>EditLine - single line edit</li>
<li>EditBox - multiline editor</li>
<li>VSpacer - vertical spacer - just an empty widget with layoutHeight == FILL_PARENT, to fill vertical space in layouts</li>
<li>HSpacer - horizontal spacer - just an empty widget with layoutWidth == FILL_PARENT, to fill horizontal space in layouts</li>
<li>ScrollBar - scroll bar</li>
<li>TabControl - tabs widget, allows to select one of tabs</li>
<li>TabHost - container for pages controlled by TabControl</li>
<li>TabWidget - combination of TabControl and TabHost</li>
</ul>
<h2><a name="layouts" class="anchor" href="#layouts"><span class="octicon octicon-link"></span></a>Layouts</h2>
Similar to layouts in Android
<ul>
<li>LinearLayout - layout children horizontally or vertically depending on orientation</li>
<li>VerticalLayout - just a LinearLayout with vertical orientation</li>
<li>HorizontalLayout - just a LinearLayout with vertical orientation</li>
<li>FrameLayout - all children occupy the same place; usually onle one of them is visible</li>
<li>TableLayout - children are aligned into rows and columns of table</li>
</ul><h2>
<a name="list-views" class="anchor" href="#list-views"><span class="octicon octicon-link"></span></a>List Views</h2>
<p>Lists are implemented similar to Android UI API.</p>
<ul>
<li>ListWidget - layout dynamic items horizontally or vertically (one in row/column) with automatic scrollbar; can reuse widgets for similar items</li>
<li>ListAdapter - interface to provide data and widgets for ListWidget</li>
<li>WidgetListAdapter - simple implementation of ListAdapter interface - just a list of widgets (one per list item) to show</li>
</ul><p>TODOs:</p>
<ul>
<li>Multicolumn lists</li>
<li>Tree view</li>
</ul><h2>
<a name="resources" class="anchor" href="#resources"><span class="octicon octicon-link"></span></a>Resources</h2>
<p>Resources like fonts and images use reference counting. For proper resource freeing, always destroy widgets implicitly.</p>
<ul>
<li>FontManager: provides access to fonts</li>
<li>Images: .png or .jpg images; if filename ends with .9.png, it's autodetected as nine-patch image (see Android drawables description)</li>
<li>StateDrawables: .xml file can describe list of other drawables to choose based on widget's State (.xml files from android themes can be used directly)</li>
<li>imageCache allows to cache unpacked images</li>
<li>drawableCache provides access by resource id (string, usually filename w/o extension) to drawables located in specified list of resource directories.</li>
</ul><h2>
<a name="styles-and-themes" class="anchor" href="#styles-and-themes"><span class="octicon octicon-link"></span></a>Styles and Themes</h2>
<p>Styles and themes are a bit similar to ones in Android API.</p>
<ul>
<li>Theme is a container for styles. Can be load from XML theme resource file.</li>
<li>Styles are accessible in theme by string ID.</li>
<li>Styles can be nested to form hiararchy - when some attribute is missing in style, value from base style will be used.</li>
<li>State substyles are supported: allow to change widget appearance dynamically based on its state.</li>
<li>Widgets use style attributes directly from assigned style. When some attribute is being changed in widget, it creates its own copy of base style,
which allows to modify some of attributes, while getting base style attributes if they are not changed in widget. This trick can minimize memory usage for widget attributes when
standard values are used.</li>
</ul><h2>
<a name="win32-builds" class="anchor" href="#win32-builds"><span class="octicon octicon-link"></span></a>Win32 builds</h2>
<ul>
<li>Under windows, uses SDL2 or Win32 API as backend.</li>
<li>Optionally, may use OpenGL acceleration via DerelictGL3/WGL.</li>
<li>Uses Win32 API for font rendering.</li>
<li>Optinally can use FreeType for font rendering.</li>
</ul><p>Build and run using DUB:</p>
-----------------------
git clone https://github.com/buggins/dlangui.git
cd dlangui
dub run dlangui:example1
-----------------------
<p>To develop using Visual-D, download sources for dlabgui and dependencies into some directory:</p>
-----------------------
git clone https://github.com/buggins/dlangui.git
git clone https://github.com/DerelictOrg/DerelictUtil.git
git clone https://github.com/DerelictOrg/DerelictGL3.git
git clone https://github.com/DerelictOrg/DerelictFI.git
git clone https://github.com/DerelictOrg/DerelictFT.git
git clone https://github.com/DerelictOrg/DerelictSDL2.git
-----------------------
<p>Then open .sln using Visual D.</p>
<h2>
<a name="linux-builds" class="anchor" href="#linux-builds"><span class="octicon octicon-link"></span></a>Linux builds</h2>
<ul>
<li>Uses SDL2 or XCB as a backend (SDL2 is recommended, since has better support now).</li>
<li>Uses shared memory images for faster drawing.</li>
<li>Uses FreeType for font rendering.</li>
<li>TODO: Use FontConfig to get font list.</li>
<li>OpenGL is now working under SDL2 only.</li>
<li>Entering of unicode characters is now working under SDL2 only.</li>
</ul><p>For linux build with SDL2 backend, following libraries are required:</p>
-----------------------
libsdl2
-----------------------
<p>To build dlangui apps with XCB backend, development packages for following libraries required for XCB backend build:</p>
-----------------------
xcb, xcb-util, xcb-shm, xcb-image, xcb-keysyms, X11-xcb, X11
-----------------------
<p>E.g. in Ubuntu, you can use following command to enable SDL2 backend builds:</p>
-----------------------
sudo apt-get install libsdl2-dev
-----------------------
<p>or (for XCB backend)</p>
-----------------------
sudo apt-get install libxcb-image0-dev libxcb-shm0-dev libxcb-keysyms1-dev libfreeimage-dev
-----------------------
<p>In runtime, .so for following libraries are being loaded (binary packages required):</p>
-----------------------
freetype, opengl, freeimage
-----------------------
<p>Build and run on Linux using DUB:</p>
-----------------------
dub run dlangui:example1
-----------------------
<p>Development using Mono-D: </p>
<ul>
<li>open solution dlangui/dlanguimonod.sln </li>
<li>build and run project example1</li>
</ul><p>You need fresh version of MonoDevelop to use Mono-D. It can be installed from PPA repository.</p>
-----------------------
sudo add-apt-repository ppa:ermshiperete/monodevelop
sudo apt-get update
sudo apt-get install monodevelop-current
-----------------------
<h2>
<a name="other-platforms" class="anchor" href="#other-platforms"><span class="octicon octicon-link"></span></a>Other platforms</h2>
<ul>
<li>Other platforms support may be added easy</li>
</ul><h2>
<a name="third-party-components-used" class="anchor" href="#third-party-components-used"><span class="octicon octicon-link"></span></a>Third party components used</h2>
<ul>
<li>DerelictGL3 - for OpenGL support</li>
<li>DerelictFT + FreeType library support under linux and optionally under Windows.</li>
<li>DerelictFI + FreeImage library support for decoding of images</li>
<li>DerelictSDL2 + SDL2 for cross platform support</li>
<li>WindowsAPI bindings from <a href="http://www.dsource.org/projects/bindings/wiki/WindowsApi">http://www.dsource.org/projects/bindings/wiki/WindowsApi</a> (patched)</li>
<li>XCB and X11 bindings (patched) when SDL2 is not used; TODO: provide links</li>
</ul><h2>
<a name="hello-world" class="anchor" href="#hello-world"><span class="octicon octicon-link"></span></a>Hello World</h2>
------------------------------------------
// main.d
import dlangui.all;
mixin DLANGUI_ENTRY_POINT;
/// entry point for dlangui based application
extern (C) int UIAppMain(string[] args) {
// resource directory search paths
string[] resourceDirs = [
appendPath(exePath, "../res/"), // for Visual D and DUB builds
appendPath(exePath, "../../res/") // for Mono-D builds
];
// setup resource directories - will use only existing directories
Platform.instance.resourceDirs = resourceDirs;
// select translation file - for english language
Platform.instance.uiLanguage = "en";
// load theme from file "theme_default.xml"
Platform.instance.uiTheme = "theme_default";
// create window
Window window = Platform.instance.createWindow("My Window", null);
// create some widget to show in window
window.mainWidget = (new Button()).text("Hello world"d).textColor(0xFF0000); // red text
// show window
window.show();
// run message loop
return Platform.instance.enterMessageLoop();
}
--------------------------------

21
src/screenshots.d Normal file
View File

@ -0,0 +1,21 @@
Ddoc
<hr/>
<h2>Buttons demo</h2>
<img src="screenshots/screenshot1.png"/>
<hr/>
<h2>Editors demo</h2>
<img src="screenshots/screenshot2.png"/>
<hr/>
<h2>Table layout</h2>
<img src="screenshots/screenshot3.png"/>
<hr/>
<h2>Various widgets, vertical and horizontal layouts</h2>
<img src="screenshots/screenshot4.png"/>
<hr/>
<h2>Animation, i18n, theme with bigger fonts and dark main menu</h2>
<img src="screenshots/screenshot5.png"/>
<hr/>