From 69c1b01cea4af86aa3e5ba0087485c9bd76942ca Mon Sep 17 00:00:00 2001 From: Adeel Kazmi Date: Fri, 28 Oct 2016 19:04:07 +0100 Subject: [PATCH 1/1] (Programming Guide) Updated Custom Control Creation section Also updated visual documentation. Change-Id: Id796aef469c0649d18c0d8974ba293d27ccb5f30 --- .../devel-api/visual-factory/visual-base.h | 42 +++++++++- .../control-handle-body.png | Bin 27859 -> 18377 bytes .../creating-custom-controls.md | 86 ++++++++++++++++----- .../visuals.md | 86 +++++++++++++++++---- 4 files changed, 178 insertions(+), 36 deletions(-) diff --git a/dali-toolkit/devel-api/visual-factory/visual-base.h b/dali-toolkit/devel-api/visual-factory/visual-base.h index b590484..49e8cf0 100644 --- a/dali-toolkit/devel-api/visual-factory/visual-base.h +++ b/dali-toolkit/devel-api/visual-factory/visual-base.h @@ -38,11 +38,47 @@ class Base; namespace Visual { /** - * @brief Visual provides a renderer for rendering the controls. A control may have multiple visuals. + * @brief A Visual provides a renderer for drawing a control component. A control may have multiple visuals. * - * Visuals reuses geometry, shader etc. across controls and manages the renderer and texture sets to exist only when control is on-stage. - * It also responds to actor size and color change, and provides the clipping at the renderer level. + * Visuals reuse geometry, shader etc. across controls. They ensure that the renderer and texture sets exist only when control is on-stage. + * Each visual also responds to actor size and color change, and provides clipping at the renderer level. * Note: The visual responds to the the Actor::COLOR by blending it with the 'Multiply' operator. + * + * The following properties are optional, but can be supplied in the property map to Dali::Toolkit::VisualFactory::CreateVisual(). + * + * | %Property Name | Type | + * |-------------------------|------------------| + * | customShader | MAP | + * | transform | MAP | + * + * where \b customShader is a map with at least one of the following properties: + * | %Property Name | Type | Required | Default | Description | + * |-------------------------|------------------|----------|---------|-------------| + * | vertexShader | STRING | No | "" | Vertex shader code| + * | fragmentShader | STRING | No | "" | Fragment shader code| + * | subdivideGridX | INTEGER | No | 1 | How to subdivide the grid along X | + * | subdivideGridY | INTEGER | No | 1 | How to subdivide the grid along Y | + * | shaderHints | INTEGER or ARRAY of STRING | No | NONE | Bitmask of hints @sa Dali::Shader::Hint | + * + * and \b transform is a map with the following properties: + * | %Property Name | Type | Required | Default |Description | + * |-------------------------|------------------|----------|---------|------------| + * | offset | VECTOR2 | No | (0,0) | Offset of visual from origin | + * | size | VECTOR2 | No | (1,1) | size of visual | + * | origin | INTEGER or STRING | No | CENTER | origin of the visual @sa Dali::Toolkit::Align | + * | anchorPoint | INTEGER or STRING | No | CENTER | anchor point of the visual @sa Dali::Toolkit::Align | + * | offsetSizeMode | VECTOR4 | No | (0,0,0,0) | See below | + * + * + * offsetSizeMode describes whether the offset and the size are + * relative or absolute by using 0 or 1 respectively in the corresponding + * components (offsetSizeMode.xy for offset.xy; offsetSizeMode.zw for size.xy). + * + * Relative means that the component describes a factor of the parent control size; + * size.x = 1 means full width; size.y = 0.5 means half height. + * + * Absolute means that the component describes world units (equivalent to pixels) + * */ class DALI_IMPORT_API Base : public BaseHandle { diff --git a/docs/content/images/creating-custom-controls/control-handle-body.png b/docs/content/images/creating-custom-controls/control-handle-body.png index 4349789e1d2d3a4fd37210c49249063940e5ba7c..14cfeb241e26f5261f37a059a8e89f9b7a18e6b5 100644 GIT binary patch literal 18377 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 LHbd_{aq&L@6FMC& literal 27859 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 z zDd1DiS;d_VH~=^bW=e+(%}F-dvy3!Q9s0-0ppKyN|>O#ytbID;_n@ALdD>qzQMU{ zUXN25#TVQ)4CH2gMYaGYc$kNdvAEkogj}iMX7I2&-rBq*{Dtgi=m4tEYtfRWg{om| zhD{`=Uj6SR&!MtQ!B!$HO#IyyhMv zJ}?S5o0ZPs*f(ezt~!=1y&UI!tKA8DnybF4$}Fdc|J)ijPgo^f?sv>{4?I^Ozp%OM z0;^s^v7UP8YE0*(9?LUh6fj{zarJ{M9lu#lG&v-}@L%8HtSxL+Hw6y8UHIY^uK3%L8^FOfokup?||GE6$!#VtPlGZ&LKNbh_SXnmfC<2 zKP@Kqud>82q7NI9QOQl-%88Ts{=7zvyvu{Xc0P~~M_3CgfGSuN>wPRz$d6j@9Ysp2 z2h`c35?=wF|2Q3_+Uenvo`pVKsxCKKi7!U?&agqMao~xrz)SU^G2Ac2!D<3^^WE|~M$7=` z_t3o;O-mVdb9F2l#+p^v`_P<+`m3PJEZ8FXTpjoUwK&1E#?Gma=}Z>XSO0;a|7R5X z|FwSquZ^}NP5g!z9`=o#su5Cgvfih}*&>JIX{0~GzHWmTW2!oaLwVQ&l@v~hUjLoW zZV&U`1-pR6*rD?8ATU8