Commit c6ae980e6a4fe29241f85eb7b8ca775d50ea710d

Authored by David Steele
Committed by Adeel Kazmi
1 parent e2f4b3cc

Demo of Dali toolkit and core capabilities

Change-Id: I61ff1f15154f7a80a0021215672f850176d910fc
Signed-off-by: David Steele <david.steele@partner.samsung.com>
Showing 239 changed files with 17054 additions and 0 deletions

Too many changes.

To preserve performance only 100 of 239 files are displayed.

.gitignore 0 → 100644
  1 +.cproject
  2 +.project
  3 +.settings
  4 +.directory
  5 +Makefile.in
  6 +Makefile
  7 +BROWSE
  8 +*~
  9 +*.pc
  10 +*.o
  11 +*.o.d
  12 +*.lo
  13 +*.loT
  14 +*.la
  15 +*.so
  16 +*.orig
  17 +*.odt
  18 +*.fodt
  19 +*.test
  20 +*.example
  21 +*.a
  22 +*.apk
  23 +*.ap_
  24 +*.class
  25 +*.classpath
  26 +*.dex
  27 +*.gcno
  28 +*.gcda
  29 +*.gcov
  30 +.deps
  31 +.libs
  32 +*.swp
  33 +*.creator
  34 +*.creator.user
  35 +/build/desktop
  36 +/packaging/home*
... ...
LICENSE 0 → 100644
  1 +Flora License
  2 +
  3 +Version 1.1, April, 2013
  4 +
  5 +http://floralicense.org/license/
  6 +
  7 +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
  8 +
  9 +1. Definitions.
  10 +
  11 +"License" shall mean the terms and conditions for use, reproduction,
  12 +and distribution as defined by Sections 1 through 9 of this document.
  13 +
  14 +"Licensor" shall mean the copyright owner or entity authorized by
  15 +the copyright owner that is granting the License.
  16 +
  17 +"Legal Entity" shall mean the union of the acting entity and
  18 +all other entities that control, are controlled by, or are
  19 +under common control with that entity. For the purposes of
  20 +this definition, "control" means (i) the power, direct or indirect,
  21 +to cause the direction or management of such entity,
  22 +whether by contract or otherwise, or (ii) ownership of fifty percent (50%)
  23 +or more of the outstanding shares, or (iii) beneficial ownership of
  24 +such entity.
  25 +
  26 +"You" (or "Your") shall mean an individual or Legal Entity
  27 +exercising permissions granted by this License.
  28 +
  29 +"Source" form shall mean the preferred form for making modifications,
  30 +including but not limited to software source code, documentation source,
  31 +and configuration files.
  32 +
  33 +"Object" form shall mean any form resulting from mechanical
  34 +transformation or translation of a Source form, including but
  35 +not limited to compiled object code, generated documentation,
  36 +and conversions to other media types.
  37 +
  38 +"Work" shall mean the work of authorship, whether in Source or Object form,
  39 +made available under the License, as indicated by a copyright notice
  40 +that is included in or attached to the work (an example is provided
  41 +in the Appendix below).
  42 +
  43 +"Derivative Works" shall mean any work, whether in Source or Object form,
  44 +that is based on (or derived from) the Work and for which the editorial
  45 +revisions, annotations, elaborations, or other modifications represent,
  46 +as a whole, an original work of authorship. For the purposes of this License,
  47 +Derivative Works shall not include works that remain separable from,
  48 +or merely link (or bind by name) to the interfaces of, the Work and
  49 +Derivative Works thereof.
  50 +
  51 +"Contribution" shall mean any work of authorship, including the original
  52 +version of the Work and any modifications or additions to that Work or
  53 +Derivative Works thereof, that is intentionally submitted to Licensor
  54 +for inclusion in the Work by the copyright owner or by an individual or
  55 +Legal Entity authorized to submit on behalf of the copyright owner.
  56 +For the purposes of this definition, "submitted" means any form of
  57 +electronic, verbal, or written communication sent to the Licensor or
  58 +its representatives, including but not limited to communication on
  59 +electronic mailing lists, source code control systems, and issue
  60 +tracking systems that are managed by, or on behalf of, the Licensor
  61 +for the purpose of discussing and improving the Work, but excluding
  62 +communication that is conspicuously marked or otherwise designated
  63 +in writing by the copyright owner as "Not a Contribution."
  64 +
  65 +"Contributor" shall mean Licensor and any individual or Legal Entity
  66 +on behalf of whom a Contribution has been received by Licensor and
  67 +subsequently incorporated within the Work.
  68 +
  69 +"Tizen Certified Platform" shall mean a software platform that complies
  70 +with the standards set forth in the Tizen Compliance Specification
  71 +and passes the Tizen Compliance Tests as defined from time to time
  72 +by the Tizen Technical Steering Group and certified by the Tizen
  73 +Association or its designated agent.
  74 +
  75 +2. Grant of Copyright License. Subject to the terms and conditions of
  76 +this License, each Contributor hereby grants to You a perpetual,
  77 +worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  78 +copyright license to reproduce, prepare Derivative Works of,
  79 +publicly display, publicly perform, sublicense, and distribute the
  80 +Work and such Derivative Works in Source or Object form.
  81 +
  82 +3. Grant of Patent License. Subject to the terms and conditions of
  83 +this License, each Contributor hereby grants to You a perpetual,
  84 +worldwide, non-exclusive, no-charge, royalty-free, irrevocable
  85 +(except as stated in this section) patent license to make, have made,
  86 +use, offer to sell, sell, import, and otherwise transfer the Work
  87 +solely as incorporated into a Tizen Certified Platform, where such
  88 +license applies only to those patent claims licensable by such
  89 +Contributor that are necessarily infringed by their Contribution(s)
  90 +alone or by combination of their Contribution(s) with the Work solely
  91 +as incorporated into a Tizen Certified Platform to which such
  92 +Contribution(s) was submitted. If You institute patent litigation
  93 +against any entity (including a cross-claim or counterclaim
  94 +in a lawsuit) alleging that the Work or a Contribution incorporated
  95 +within the Work constitutes direct or contributory patent infringement,
  96 +then any patent licenses granted to You under this License for that
  97 +Work shall terminate as of the date such litigation is filed.
  98 +
  99 +4. Redistribution. You may reproduce and distribute copies of the
  100 +Work or Derivative Works thereof pursuant to the copyright license
  101 +above, in any medium, with or without modifications, and in Source or
  102 +Object form, provided that You meet the following conditions:
  103 +
  104 + 1. You must give any other recipients of the Work or Derivative Works
  105 + a copy of this License; and
  106 + 2. You must cause any modified files to carry prominent notices stating
  107 + that You changed the files; and
  108 + 3. You must retain, in the Source form of any Derivative Works that
  109 + You distribute, all copyright, patent, trademark, and attribution
  110 + notices from the Source form of the Work, excluding those notices
  111 + that do not pertain to any part of the Derivative Works; and
  112 + 4. If the Work includes a "NOTICE" text file as part of its distribution,
  113 + then any Derivative Works that You distribute must include a readable
  114 + copy of the attribution notices contained within such NOTICE file,
  115 + excluding those notices that do not pertain to any part of
  116 + the Derivative Works, in at least one of the following places:
  117 + within a NOTICE text file distributed as part of the Derivative Works;
  118 + within the Source form or documentation, if provided along with the
  119 + Derivative Works; or, within a display generated by the Derivative Works,
  120 + if and wherever such third-party notices normally appear.
  121 + The contents of the NOTICE file are for informational purposes only
  122 + and do not modify the License. You may add Your own attribution notices
  123 + within Derivative Works that You distribute, alongside or as an addendum
  124 + to the NOTICE text from the Work, provided that such additional attribution
  125 + notices cannot be construed as modifying the License. You may add Your own
  126 + copyright statement to Your modifications and may provide additional or
  127 + different license terms and conditions for use, reproduction, or
  128 + distribution of Your modifications, or for any such Derivative Works
  129 + as a whole, provided Your use, reproduction, and distribution of
  130 + the Work otherwise complies with the conditions stated in this License
  131 + and your own copyright statement or terms and conditions do not conflict
  132 + the conditions stated in the License including section 3.
  133 +
  134 +5. Submission of Contributions. Unless You explicitly state otherwise,
  135 +any Contribution intentionally submitted for inclusion in the Work
  136 +by You to the Licensor shall be under the terms and conditions of
  137 +this License, without any additional terms or conditions.
  138 +Notwithstanding the above, nothing herein shall supersede or modify
  139 +the terms of any separate license agreement you may have executed
  140 +with Licensor regarding such Contributions.
  141 +
  142 +6. Trademarks. This License does not grant permission to use the trade
  143 +names, trademarks, service marks, or product names of the Licensor,
  144 +except as required for reasonable and customary use in describing the
  145 +origin of the Work and reproducing the content of the NOTICE file.
  146 +
  147 +7. Disclaimer of Warranty. Unless required by applicable law or
  148 +agreed to in writing, Licensor provides the Work (and each
  149 +Contributor provides its Contributions) on an "AS IS" BASIS,
  150 +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
  151 +implied, including, without limitation, any warranties or conditions
  152 +of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
  153 +PARTICULAR PURPOSE. You are solely responsible for determining the
  154 +appropriateness of using or redistributing the Work and assume any
  155 +risks associated with Your exercise of permissions under this License.
  156 +
  157 +8. Limitation of Liability. In no event and under no legal theory,
  158 +whether in tort (including negligence), contract, or otherwise,
  159 +unless required by applicable law (such as deliberate and grossly
  160 +negligent acts) or agreed to in writing, shall any Contributor be
  161 +liable to You for damages, including any direct, indirect, special,
  162 +incidental, or consequential damages of any character arising as a
  163 +result of this License or out of the use or inability to use the
  164 +Work (including but not limited to damages for loss of goodwill,
  165 +work stoppage, computer failure or malfunction, or any and all
  166 +other commercial damages or losses), even if such Contributor
  167 +has been advised of the possibility of such damages.
  168 +
  169 +9. Accepting Warranty or Additional Liability. While redistributing
  170 +the Work or Derivative Works thereof, You may choose to offer,
  171 +and charge a fee for, acceptance of support, warranty, indemnity,
  172 +or other liability obligations and/or rights consistent with this
  173 +License. However, in accepting such obligations, You may act only
  174 +on Your own behalf and on Your sole responsibility, not on behalf
  175 +of any other Contributor, and only if You agree to indemnify,
  176 +defend, and hold each Contributor harmless for any liability
  177 +incurred by, or claims asserted against, such Contributor by reason
  178 +of your accepting any such warranty or additional liability.
  179 +
  180 +END OF TERMS AND CONDITIONS
  181 +
  182 +APPENDIX: How to apply the Flora License to your work
  183 +
  184 +To apply the Flora License to your work, attach the following
  185 +boilerplate notice, with the fields enclosed by brackets "[]"
  186 +replaced with your own identifying information. (Don't include
  187 +the brackets!) The text should be enclosed in the appropriate
  188 +comment syntax for the file format. We also recommend that a
  189 +file or class name and description of purpose be included on the
  190 +same "printed page" as the copyright notice for easier
  191 +identification within third-party archives.
  192 +
  193 + Copyright [yyyy] [name of copyright owner]
  194 +
  195 + Licensed under the Flora License, Version 1.1 (the "License");
  196 + you may not use this file except in compliance with the License.
  197 + You may obtain a copy of the License at
  198 +
  199 + http://floralicense.org/license/
  200 +
  201 + Unless required by applicable law or agreed to in writing, software
  202 + distributed under the License is distributed on an "AS IS" BASIS,
  203 + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  204 + See the License for the specific language governing permissions and
  205 + limitations under the License.
... ...
build/tizen/.gitignore 0 → 100644
  1 +/aclocal.m4
  2 +/autom4te.cache
  3 +/config.guess
  4 +/config.log
  5 +/config.status
  6 +/config.sub
  7 +/configure
  8 +/depcomp
  9 +/install-sh
  10 +/libtool
  11 +/ltmain.sh
  12 +/missing
  13 +/demo/dali-demo
  14 +/demo/dali-examples
  15 +/demo/dali-performance
  16 +/demo/performance.core
  17 +/docs/dali.doxy
  18 +/examples/*.demo
  19 +/performance/dali-performance
  20 +/performance/performance.*
... ...
build/tizen/Makefile.am 0 → 100644
  1 +SUBDIRS = examples demo
  2 +
  3 +MAINTAINERCLEANFILES = \
  4 + aclocal.m4 \
  5 + autom4te.cache \
  6 + config.guess \
  7 + config.sub \
  8 + configure \
  9 + depcomp \
  10 + install-sh \
  11 + ltmain.sh \
  12 + missing \
  13 + `find "$(srcdir)" -type f -name Makefile.in -print` \
  14 + `find . \( -name "*.gcov" -o -name "*.gcno" -o -name "*.gcda" \) -print`
  15 +
  16 +CLEANFILES = \
  17 + `find . \( -name "*.gcov" -o -name "*.gcno" -o -name "*.gcda" \) -print`
... ...
build/tizen/README 0 → 100644
  1 +autoreconf --install
  2 +# see /build/slp/sbs-dependencies/README for instructions on installing dependencies for SBS.
  3 +#
  4 +./configure --prefix=$DESKTOP_PREFIX
  5 +make install -j3
... ...
build/tizen/configure.ac 0 → 100755
  1 +#
  2 +# Copyright (c) 2014 Samsung Electronics Co., Ltd.
  3 +#
  4 +# Licensed under the Flora License, Version 1.0 (the License);
  5 +# you may not use this file except in compliance with the License.
  6 +# You may obtain a copy of the License at
  7 +#
  8 +# http://floralicense.org/license/
  9 +#
  10 +# Unless required by applicable law or agreed to in writing, software
  11 +# distributed under the License is distributed on an AS IS BASIS,
  12 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +# See the License for the specific language governing permissions and
  14 +# limitations under the License.
  15 +#
  16 +
  17 +m4_define([dali_version],[0.1.0])
  18 +AC_INIT([dali], [dali_version])
  19 +AM_INIT_AUTOMAKE([-Wall -Werror foreign])
  20 +
  21 +AC_PROG_CXX
  22 +AC_PROG_LIBTOOL
  23 +
  24 +m4_ifdef([AM_SILENT_RULES], [AM_SILENT_RULES([yes])])
  25 +
  26 +LT_INIT
  27 +
  28 +DALI_VERSION=dali_version
  29 +AC_SUBST(DALI_VERSION)
  30 +
  31 +PKG_CHECK_MODULES(DALI, dali)
  32 +PKG_CHECK_MODULES(DALI_TOOLKIT, dali-toolkit)
  33 +PKG_CHECK_MODULES(ECORE_X, ecore-x)
  34 +PKG_CHECK_MODULES(CAPI_MEDIA_PLAYER, capi-media-player)
  35 +PKG_CHECK_MODULES(CAPI_APPFW_APPLICATION, capi-appfw-application)
  36 +PKG_CHECK_MODULES(AUL, aul)
  37 +PKG_CHECK_MODULES(DLOG, dlog)
  38 +
  39 +DALIDEMO_CFLAGS=-DPLATFORM_SLP
  40 +
  41 +AC_ARG_ENABLE([debug],
  42 + [AC_HELP_STRING([--enable-debug],
  43 + [Turns on debugging])],
  44 + [enable_debug=$enableval],
  45 + [enable_debug=no])
  46 +
  47 +if test "x$enable_debug" = "xyes"; then
  48 + DALIDEMO_CFLAGS="$DALIDEMO_CFLAGS -DDEBUG_ENABLED"
  49 +fi
  50 +
  51 +if test x$DALI_APP_DIR != x; then
  52 + appdatadir=$DALI_APP_DIR
  53 + exedir=${appdatadir}/bin/
  54 +else
  55 + appdatadir=${prefix}/share/com.samsung.dali-demo/
  56 + exedir=${prefix}/bin/
  57 +fi
  58 +
  59 +AC_SUBST(datadir)
  60 +AC_SUBST(appdatadir)
  61 +AC_SUBST(exedir)
  62 +AC_SUBST(DALIDEMO_CFLAGS)
  63 +
  64 +dnl **************************************************************************
  65 +dnl ** Set Debian install Prefix **
  66 +dnl **************************************************************************
  67 +debian_prefix=${prefix#*/}
  68 +AC_SUBST(debian_prefix)
  69 +
  70 +AC_CONFIG_FILES([
  71 + Makefile
  72 + demo/Makefile
  73 + examples/Makefile
  74 +])
  75 +
  76 +
  77 +AC_OUTPUT
  78 +
  79 +echo "
  80 +Configuration
  81 +-------------
  82 + Prefix: $prefix
  83 + Debug Build: $enable_debug
  84 + Application Data Dir: $appdatadir
  85 + Application Exe Dir: $exedir
  86 + DALIDEMO_CFLAGS: ${DALIDEMO_CFLAGS}
  87 +"
... ...
build/tizen/demo/Makefile.am 0 → 100644
  1 +#
  2 +# Copyright (c) 2014 Samsung Electronics Co., Ltd.
  3 +#
  4 +# Licensed under the Flora License, Version 1.0 (the License);
  5 +# you may not use this file except in compliance with the License.
  6 +# You may obtain a copy of the License at
  7 +#
  8 +# http://floralicense.org/license/
  9 +#
  10 +# Unless required by applicable law or agreed to in writing, software
  11 +# distributed under the License is distributed on an AS IS BASIS,
  12 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +# See the License for the specific language governing permissions and
  14 +# limitations under the License.
  15 +#
  16 +
  17 +bin_PROGRAMS = \
  18 + dali-demo
  19 +
  20 +demo_src_dir = ../../../demo
  21 +include ../../../demo/file.list
  22 +
  23 +dalidemoimagesdir = $(appdatadir)/images/
  24 +dalidemoimages_DATA = $(demo_image_files)
  25 +
  26 +dalidemomodelsdir = $(appdatadir)/models/
  27 +dalidemomodels_DATA = $(demo_model_files)
  28 +
  29 +DEMO_CXXFLAGS = -DDALI_IMAGE_DIR="\"$(dalidemoimagesdir)\"" \
  30 + -DDALI_MODEL_DIR="\"$(dalidemomodelsdir)\"" \
  31 + -DDALI_EXAMPLE_BIN="\"$(exedir)\"" \
  32 + -I../../../demo -I../../.. \
  33 + $(DALIDEMO_CFLAGS) \
  34 + $(DALI_TOOLKIT_CFLAGS) \
  35 + $(DALI_CFLAGS) \
  36 + $(AUL_CFLAGS) \
  37 + -Werror -Wall
  38 +
  39 +DEMO_DEPS =
  40 +
  41 +DEMO_LDADD = $(DALI_LIBS) $(DALI_TOOLKIT_LIBS) $(AUL_LIBS)
  42 +
  43 +dali_demo_SOURCES = $(demo_src_files)
  44 +dali_demo_CXXFLAGS = $(DEMO_CXXFLAGS)
  45 +dali_demo_DEPENDENCIES = $(DEMO_DEPS)
  46 +dali_demo_LDADD = $(DEMO_LDADD)
... ...
build/tizen/docs/.gitignore 0 → 100644
  1 +doxygen-errors.txt
... ...
build/tizen/docs/Makefile.am 0 → 100644
  1 +all-local:
  2 + @rm -f doxygen-errors.txt
  3 + @-doxygen dali.doxy &> doxygen-errors.txt || rm doxygen-errors.txt
  4 + @touch doxygen-errors.txt
  5 + @cat doxygen-errors.txt
  6 + @if [ -s doxygen-errors.txt ]; then exit 1 ; fi
  7 + @rm doxygen-errors.txt
... ...
build/tizen/docs/dali.doxy.in 0 → 100644
  1 +# Doxyfile 1.5.8
  2 +
  3 +# This file describes the settings to be used by the documentation system
  4 +# doxygen (www.doxygen.org) for a project
  5 +#
  6 +# All text after a hash (#) is considered a comment and will be ignored
  7 +# The format is:
  8 +# TAG = value [value, ...]
  9 +# For lists items can also be appended using:
  10 +# TAG += value [value, ...]
  11 +# Values that contain spaces should be placed between quotes (" ")
  12 +
  13 +#---------------------------------------------------------------------------
  14 +# Project related configuration options
  15 +#---------------------------------------------------------------------------
  16 +
  17 +# This tag specifies the encoding used for all characters in the config file
  18 +# that follow. The default is UTF-8 which is also the encoding used for all
  19 +# text before the first occurrence of this tag. Doxygen uses libiconv (or the
  20 +# iconv built into libc) for the transcoding. See
  21 +# http://www.gnu.org/software/libiconv for the list of possible encodings.
  22 +
  23 +DOXYFILE_ENCODING = UTF-8
  24 +
  25 +# The PROJECT_NAME tag is a single word (or a sequence of words surrounded
  26 +# by quotes) that should identify the project.
  27 +
  28 +PROJECT_NAME = Dali
  29 +
  30 +# The PROJECT_NUMBER tag can be used to enter a project or revision number.
  31 +# This could be handy for archiving the generated documentation or
  32 +# if some version control system is used.
  33 +
  34 +PROJECT_NUMBER =
  35 +
  36 +# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
  37 +# base path where the generated documentation will be put.
  38 +# If a relative path is entered, it will be relative to the location
  39 +# where doxygen was started. If left blank the current directory will be used.
  40 +
  41 +OUTPUT_DIRECTORY = @DOXYGEN_DOCS_DIR@/generated
  42 +
  43 +# If the CREATE_SUBDIRS tag is set to YES, then doxygen will create
  44 +# 4096 sub-directories (in 2 levels) under the output directory of each output
  45 +# format and will distribute the generated files over these directories.
  46 +# Enabling this option can be useful when feeding doxygen a huge amount of
  47 +# source files, where putting all generated files in the same directory would
  48 +# otherwise cause performance problems for the file system.
  49 +
  50 +CREATE_SUBDIRS = NO
  51 +
  52 +# The OUTPUT_LANGUAGE tag is used to specify the language in which all
  53 +# documentation generated by doxygen is written. Doxygen will use this
  54 +# information to generate all constant output in the proper language.
  55 +# The default language is English, other supported languages are:
  56 +# Afrikaans, Arabic, Brazilian, Catalan, Chinese, Chinese-Traditional,
  57 +# Croatian, Czech, Danish, Dutch, Farsi, Finnish, French, German, Greek,
  58 +# Hungarian, Italian, Japanese, Japanese-en (Japanese with English messages),
  59 +# Korean, Korean-en, Lithuanian, Norwegian, Macedonian, Persian, Polish,
  60 +# Portuguese, Romanian, Russian, Serbian, Serbian-Cyrilic, Slovak, Slovene,
  61 +# Spanish, Swedish, and Ukrainian.
  62 +
  63 +OUTPUT_LANGUAGE = English
  64 +
  65 +# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
  66 +# include brief member descriptions after the members that are listed in
  67 +# the file and class documentation (similar to JavaDoc).
  68 +# Set to NO to disable this.
  69 +
  70 +BRIEF_MEMBER_DESC = YES
  71 +
  72 +# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
  73 +# the brief description of a member or function before the detailed description.
  74 +# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
  75 +# brief descriptions will be completely suppressed.
  76 +
  77 +REPEAT_BRIEF = YES
  78 +
  79 +# This tag implements a quasi-intelligent brief description abbreviator
  80 +# that is used to form the text in various listings. Each string
  81 +# in this list, if found as the leading text of the brief description, will be
  82 +# stripped from the text and the result after processing the whole list, is
  83 +# used as the annotated text. Otherwise, the brief description is used as-is.
  84 +# If left blank, the following values are used ("$name" is automatically
  85 +# replaced with the name of the entity): "The $name class" "The $name widget"
  86 +# "The $name file" "is" "provides" "specifies" "contains"
  87 +# "represents" "a" "an" "the"
  88 +
  89 +ABBREVIATE_BRIEF = "The $name class" \
  90 + "The $name widget" \
  91 + "The $name file" \
  92 + is \
  93 + provides \
  94 + specifies \
  95 + contains \
  96 + represents \
  97 + a \
  98 + an \
  99 + the
  100 +
  101 +# If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then
  102 +# Doxygen will generate a detailed section even if there is only a brief
  103 +# description.
  104 +
  105 +ALWAYS_DETAILED_SEC = NO
  106 +
  107 +# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all
  108 +# inherited members of a class in the documentation of that class as if those
  109 +# members were ordinary class members. Constructors, destructors and assignment
  110 +# operators of the base classes will not be shown.
  111 +
  112 +INLINE_INHERITED_MEMB = NO
  113 +
  114 +# If the FULL_PATH_NAMES tag is set to YES then Doxygen will prepend the full
  115 +# path before files name in the file list and in the header files. If set
  116 +# to NO the shortest path that makes the file name unique will be used.
  117 +
  118 +FULL_PATH_NAMES = YES
  119 +
  120 +# If the FULL_PATH_NAMES tag is set to YES then the STRIP_FROM_PATH tag
  121 +# can be used to strip a user-defined part of the path. Stripping is
  122 +# only done if one of the specified strings matches the left-hand part of
  123 +# the path. The tag can be used to show relative paths in the file list.
  124 +# If left blank the directory from which doxygen is run is used as the
  125 +# path to strip.
  126 +
  127 +STRIP_FROM_PATH = .
  128 +
  129 +# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
  130 +# the path mentioned in the documentation of a class, which tells
  131 +# the reader which header file to include in order to use a class.
  132 +# If left blank only the name of the header file containing the class
  133 +# definition is used. Otherwise one should specify the include paths that
  134 +# are normally passed to the compiler using the -I flag.
  135 +
  136 +STRIP_FROM_INC_PATH =
  137 +
  138 +# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter
  139 +# (but less readable) file names. This can be useful is your file systems
  140 +# doesn't support long names like on DOS, Mac, or CD-ROM.
  141 +
  142 +SHORT_NAMES = NO
  143 +
  144 +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen
  145 +# will interpret the first line (until the first dot) of a JavaDoc-style
  146 +# comment as the brief description. If set to NO, the JavaDoc
  147 +# comments will behave just like regular Qt-style comments
  148 +# (thus requiring an explicit @brief command for a brief description.)
  149 +
  150 +JAVADOC_AUTOBRIEF = YES
  151 +
  152 +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will
  153 +# interpret the first line (until the first dot) of a Qt-style
  154 +# comment as the brief description. If set to NO, the comments
  155 +# will behave just like regular Qt-style comments (thus requiring
  156 +# an explicit \brief command for a brief description.)
  157 +
  158 +QT_AUTOBRIEF = NO
  159 +
  160 +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen
  161 +# treat a multi-line C++ special comment block (i.e. a block of //! or ///
  162 +# comments) as a brief description. This used to be the default behaviour.
  163 +# The new default is to treat a multi-line C++ comment block as a detailed
  164 +# description. Set this tag to YES if you prefer the old behaviour instead.
  165 +
  166 +MULTILINE_CPP_IS_BRIEF = NO
  167 +
  168 +# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
  169 +# member inherits the documentation from any documented member that it
  170 +# re-implements.
  171 +
  172 +INHERIT_DOCS = YES
  173 +
  174 +# If the SEPARATE_MEMBER_PAGES tag is set to YES, then doxygen will produce
  175 +# a new page for each member. If set to NO, the documentation of a member will
  176 +# be part of the file/class/namespace that contains it.
  177 +
  178 +SEPARATE_MEMBER_PAGES = NO
  179 +
  180 +# The TAB_SIZE tag can be used to set the number of spaces in a tab.
  181 +# Doxygen uses this value to replace tabs by spaces in code fragments.
  182 +
  183 +TAB_SIZE = 2
  184 +
  185 +# This tag can be used to specify a number of aliases that acts
  186 +# as commands in the documentation. An alias has the form "name=value".
  187 +# For example adding "sideeffect=\par Side Effects:\n" will allow you to
  188 +# put the command \sideeffect (or @sideeffect) in the documentation, which
  189 +# will result in a user-defined paragraph with heading "Side Effects:".
  190 +# You can put \n's in the value part of an alias to insert newlines.
  191 +
  192 +ALIASES =
  193 +
  194 +# Set the OPTIMIZE_OUTPUT_FOR_C tag to YES if your project consists of C
  195 +# sources only. Doxygen will then generate output that is more tailored for C.
  196 +# For instance, some of the names that are used will be different. The list
  197 +# of all members will be omitted, etc.
  198 +
  199 +OPTIMIZE_OUTPUT_FOR_C = NO
  200 +
  201 +# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
  202 +# sources only. Doxygen will then generate output that is more tailored for
  203 +# Java. For instance, namespaces will be presented as packages, qualified
  204 +# scopes will look different, etc.
  205 +
  206 +OPTIMIZE_OUTPUT_JAVA = NO
  207 +
  208 +# Set the OPTIMIZE_FOR_FORTRAN tag to YES if your project consists of Fortran
  209 +# sources only. Doxygen will then generate output that is more tailored for
  210 +# Fortran.
  211 +
  212 +OPTIMIZE_FOR_FORTRAN = NO
  213 +
  214 +# Set the OPTIMIZE_OUTPUT_VHDL tag to YES if your project consists of VHDL
  215 +# sources. Doxygen will then generate output that is tailored for
  216 +# VHDL.
  217 +
  218 +OPTIMIZE_OUTPUT_VHDL = NO
  219 +
  220 +# Doxygen selects the parser to use depending on the extension of the files it parses.
  221 +# With this tag you can assign which parser to use for a given extension.
  222 +# Doxygen has a built-in mapping, but you can override or extend it using this tag.
  223 +# The format is ext=language, where ext is a file extension, and language is one of
  224 +# the parsers supported by doxygen: IDL, Java, Javascript, C#, C, C++, D, PHP,
  225 +# Objective-C, Python, Fortran, VHDL, C, C++. For instance to make doxygen treat
  226 +# .inc files as Fortran files (default is PHP), and .f files as C (default is Fortran),
  227 +# use: inc=Fortran f=C
  228 +
  229 +EXTENSION_MAPPING =
  230 +
  231 +# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want
  232 +# to include (a tag file for) the STL sources as input, then you should
  233 +# set this tag to YES in order to let doxygen match functions declarations and
  234 +# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
  235 +# func(std::string) {}). This also make the inheritance and collaboration
  236 +# diagrams that involve STL classes more complete and accurate.
  237 +
  238 +BUILTIN_STL_SUPPORT = YES
  239 +
  240 +# If you use Microsoft's C++/CLI language, you should set this option to YES to
  241 +# enable parsing support.
  242 +
  243 +CPP_CLI_SUPPORT = NO
  244 +
  245 +# Set the SIP_SUPPORT tag to YES if your project consists of sip sources only.
  246 +# Doxygen will parse them like normal C++ but will assume all classes use public
  247 +# instead of private inheritance when no explicit protection keyword is present.
  248 +
  249 +SIP_SUPPORT = NO
  250 +
  251 +# For Microsoft's IDL there are propget and propput attributes to indicate getter
  252 +# and setter methods for a property. Setting this option to YES (the default)
  253 +# will make doxygen to replace the get and set methods by a property in the
  254 +# documentation. This will only work if the methods are indeed getting or
  255 +# setting a simple type. If this is not the case, or you want to show the
  256 +# methods anyway, you should set this option to NO.
  257 +
  258 +IDL_PROPERTY_SUPPORT = YES
  259 +
  260 +# If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC
  261 +# tag is set to YES, then doxygen will reuse the documentation of the first
  262 +# member in the group (if any) for the other members of the group. By default
  263 +# all members of a group must be documented explicitly.
  264 +
  265 +DISTRIBUTE_GROUP_DOC = NO
  266 +
  267 +# Set the SUBGROUPING tag to YES (the default) to allow class member groups of
  268 +# the same type (for instance a group of public functions) to be put as a
  269 +# subgroup of that type (e.g. under the Public Functions section). Set it to
  270 +# NO to prevent subgrouping. Alternatively, this can be done per class using
  271 +# the \nosubgrouping command.
  272 +
  273 +SUBGROUPING = YES
  274 +
  275 +# When TYPEDEF_HIDES_STRUCT is enabled, a typedef of a struct, union, or enum
  276 +# is documented as struct, union, or enum with the name of the typedef. So
  277 +# typedef struct TypeS {} TypeT, will appear in the documentation as a struct
  278 +# with name TypeT. When disabled the typedef will appear as a member of a file,
  279 +# namespace, or class. And the struct will be named TypeS. This can typically
  280 +# be useful for C code in case the coding convention dictates that all compound
  281 +# types are typedef'ed and only the typedef is referenced, never the tag name.
  282 +
  283 +TYPEDEF_HIDES_STRUCT = NO
  284 +
  285 +# The SYMBOL_CACHE_SIZE determines the size of the internal cache use to
  286 +# determine which symbols to keep in memory and which to flush to disk.
  287 +# When the cache is full, less often used symbols will be written to disk.
  288 +# For small to medium size projects (<1000 input files) the default value is
  289 +# probably good enough. For larger projects a too small cache size can cause
  290 +# doxygen to be busy swapping symbols to and from disk most of the time
  291 +# causing a significant performance penality.
  292 +# If the system has enough physical memory increasing the cache will improve the
  293 +# performance by keeping more symbols in memory. Note that the value works on
  294 +# a logarithmic scale so increasing the size by one will rougly double the
  295 +# memory usage. The cache size is given by this formula:
  296 +# 2^(16+SYMBOL_CACHE_SIZE). The valid range is 0..9, the default is 0,
  297 +# corresponding to a cache size of 2^16 = 65536 symbols
  298 +
  299 +SYMBOL_CACHE_SIZE = 0
  300 +
  301 +#---------------------------------------------------------------------------
  302 +# Build related configuration options
  303 +#---------------------------------------------------------------------------
  304 +
  305 +# If the EXTRACT_ALL tag is set to YES doxygen will assume all entities in
  306 +# documentation are documented, even if no documentation was available.
  307 +# Private class members and static file members will be hidden unless
  308 +# the EXTRACT_PRIVATE and EXTRACT_STATIC tags are set to YES
  309 +
  310 +EXTRACT_ALL = YES
  311 +
  312 +# If the EXTRACT_PRIVATE tag is set to YES all private members of a class
  313 +# will be included in the documentation.
  314 +
  315 +EXTRACT_PRIVATE = YES
  316 +
  317 +# If the EXTRACT_STATIC tag is set to YES all static members of a file
  318 +# will be included in the documentation.
  319 +
  320 +EXTRACT_STATIC = YES
  321 +
  322 +# If the EXTRACT_LOCAL_CLASSES tag is set to YES classes (and structs)
  323 +# defined locally in source files will be included in the documentation.
  324 +# If set to NO only classes defined in header files are included.
  325 +
  326 +EXTRACT_LOCAL_CLASSES = YES
  327 +
  328 +# This flag is only useful for Objective-C code. When set to YES local
  329 +# methods, which are defined in the implementation section but not in
  330 +# the interface are included in the documentation.
  331 +# If set to NO (the default) only methods in the interface are included.
  332 +
  333 +EXTRACT_LOCAL_METHODS = NO
  334 +
  335 +# If this flag is set to YES, the members of anonymous namespaces will be
  336 +# extracted and appear in the documentation as a namespace called
  337 +# 'anonymous_namespace{file}', where file will be replaced with the base
  338 +# name of the file that contains the anonymous namespace. By default
  339 +# anonymous namespace are hidden.
  340 +
  341 +EXTRACT_ANON_NSPACES = NO
  342 +
  343 +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all
  344 +# undocumented members of documented classes, files or namespaces.
  345 +# If set to NO (the default) these members will be included in the
  346 +# various overviews, but no documentation section is generated.
  347 +# This option has no effect if EXTRACT_ALL is enabled.
  348 +
  349 +HIDE_UNDOC_MEMBERS = NO
  350 +
  351 +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all
  352 +# undocumented classes that are normally visible in the class hierarchy.
  353 +# If set to NO (the default) these classes will be included in the various
  354 +# overviews. This option has no effect if EXTRACT_ALL is enabled.
  355 +
  356 +HIDE_UNDOC_CLASSES = NO
  357 +
  358 +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all
  359 +# friend (class|struct|union) declarations.
  360 +# If set to NO (the default) these declarations will be included in the
  361 +# documentation.
  362 +
  363 +HIDE_FRIEND_COMPOUNDS = NO
  364 +
  365 +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any
  366 +# documentation blocks found inside the body of a function.
  367 +# If set to NO (the default) these blocks will be appended to the
  368 +# function's detailed documentation block.
  369 +
  370 +HIDE_IN_BODY_DOCS = NO
  371 +
  372 +# The INTERNAL_DOCS tag determines if documentation
  373 +# that is typed after a \internal command is included. If the tag is set
  374 +# to NO (the default) then the documentation will be excluded.
  375 +# Set it to YES to include the internal documentation.
  376 +
  377 +INTERNAL_DOCS = NO
  378 +
  379 +# If the CASE_SENSE_NAMES tag is set to NO then Doxygen will only generate
  380 +# file names in lower-case letters. If set to YES upper-case letters are also
  381 +# allowed. This is useful if you have classes or files whose names only differ
  382 +# in case and if your file system supports case sensitive file names. Windows
  383 +# and Mac users are advised to set this option to NO.
  384 +
  385 +CASE_SENSE_NAMES = NO
  386 +
  387 +# If the HIDE_SCOPE_NAMES tag is set to NO (the default) then Doxygen
  388 +# will show members with their full class and namespace scopes in the
  389 +# documentation. If set to YES the scope will be hidden.
  390 +
  391 +HIDE_SCOPE_NAMES = NO
  392 +
  393 +# If the SHOW_INCLUDE_FILES tag is set to YES (the default) then Doxygen
  394 +# will put a list of the files that are included by a file in the documentation
  395 +# of that file.
  396 +
  397 +SHOW_INCLUDE_FILES = YES
  398 +
  399 +# If the INLINE_INFO tag is set to YES (the default) then a tag [inline]
  400 +# is inserted in the documentation for inline members.
  401 +
  402 +INLINE_INFO = YES
  403 +
  404 +# If the SORT_MEMBER_DOCS tag is set to YES (the default) then doxygen
  405 +# will sort the (detailed) documentation of file and class members
  406 +# alphabetically by member name. If set to NO the members will appear in
  407 +# declaration order.
  408 +
  409 +SORT_MEMBER_DOCS = YES
  410 +
  411 +# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the
  412 +# brief documentation of file, namespace and class members alphabetically
  413 +# by member name. If set to NO (the default) the members will appear in
  414 +# declaration order.
  415 +
  416 +SORT_BRIEF_DOCS = NO
  417 +
  418 +# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the
  419 +# hierarchy of group names into alphabetical order. If set to NO (the default)
  420 +# the group names will appear in their defined order.
  421 +
  422 +SORT_GROUP_NAMES = NO
  423 +
  424 +# If the SORT_BY_SCOPE_NAME tag is set to YES, the class list will be
  425 +# sorted by fully-qualified names, including namespaces. If set to
  426 +# NO (the default), the class list will be sorted only by class name,
  427 +# not including the namespace part.
  428 +# Note: This option is not very useful if HIDE_SCOPE_NAMES is set to YES.
  429 +# Note: This option applies only to the class list, not to the
  430 +# alphabetical list.
  431 +
  432 +SORT_BY_SCOPE_NAME = NO
  433 +
  434 +# The GENERATE_TODOLIST tag can be used to enable (YES) or
  435 +# disable (NO) the todo list. This list is created by putting \todo
  436 +# commands in the documentation.
  437 +
  438 +GENERATE_TODOLIST = NO
  439 +
  440 +# The GENERATE_TESTLIST tag can be used to enable (YES) or
  441 +# disable (NO) the test list. This list is created by putting \test
  442 +# commands in the documentation.
  443 +
  444 +GENERATE_TESTLIST = NO
  445 +
  446 +# The GENERATE_BUGLIST tag can be used to enable (YES) or
  447 +# disable (NO) the bug list. This list is created by putting \bug
  448 +# commands in the documentation.
  449 +
  450 +GENERATE_BUGLIST = NO
  451 +
  452 +# The GENERATE_DEPRECATEDLIST tag can be used to enable (YES) or
  453 +# disable (NO) the deprecated list. This list is created by putting
  454 +# \deprecated commands in the documentation.
  455 +
  456 +GENERATE_DEPRECATEDLIST= YES
  457 +
  458 +# The ENABLED_SECTIONS tag can be used to enable conditional
  459 +# documentation sections, marked by \if sectionname ... \endif.
  460 +
  461 +ENABLED_SECTIONS =
  462 +
  463 +# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
  464 +# the initial value of a variable or define consists of for it to appear in
  465 +# the documentation. If the initializer consists of more lines than specified
  466 +# here it will be hidden. Use a value of 0 to hide initializers completely.
  467 +# The appearance of the initializer of individual variables and defines in the
  468 +# documentation can be controlled using \showinitializer or \hideinitializer
  469 +# command in the documentation regardless of this setting.
  470 +
  471 +MAX_INITIALIZER_LINES = 30
  472 +
  473 +# Set the SHOW_USED_FILES tag to NO to disable the list of files generated
  474 +# at the bottom of the documentation of classes and structs. If set to YES the
  475 +# list will mention the files that were used to generate the documentation.
  476 +
  477 +SHOW_USED_FILES = YES
  478 +
  479 +# If the sources in your project are distributed over multiple directories
  480 +# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
  481 +# in the documentation. The default is NO.
  482 +
  483 +SHOW_DIRECTORIES = YES
  484 +
  485 +# Set the SHOW_FILES tag to NO to disable the generation of the Files page.
  486 +# This will remove the Files entry from the Quick Index and from the
  487 +# Folder Tree View (if specified). The default is YES.
  488 +
  489 +SHOW_FILES = YES
  490 +
  491 +# Set the SHOW_NAMESPACES tag to NO to disable the generation of the
  492 +# Namespaces page. This will remove the Namespaces entry from the Quick Index
  493 +# and from the Folder Tree View (if specified). The default is YES.
  494 +
  495 +SHOW_NAMESPACES = YES
  496 +
  497 +# The FILE_VERSION_FILTER tag can be used to specify a program or script that
  498 +# doxygen should invoke to get the current version for each file (typically from
  499 +# the version control system). Doxygen will invoke the program by executing (via
  500 +# popen()) the command <command> <input-file>, where <command> is the value of
  501 +# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
  502 +# provided by doxygen. Whatever the program writes to standard output
  503 +# is used as the file version. See the manual for examples.
  504 +
  505 +FILE_VERSION_FILTER =
  506 +
  507 +# The LAYOUT_FILE tag can be used to specify a layout file which will be parsed by
  508 +# doxygen. The layout file controls the global structure of the generated output files
  509 +# in an output format independent way. The create the layout file that represents
  510 +# doxygen's defaults, run doxygen with the -l option. You can optionally specify a
  511 +# file name after the option, if omitted DoxygenLayout.xml will be used as the name
  512 +# of the layout file.
  513 +
  514 +LAYOUT_FILE = @DOXYGEN_DOCS_DIR@/DaliLayout.xml
  515 +
  516 +#---------------------------------------------------------------------------
  517 +# configuration options related to warning and progress messages
  518 +#---------------------------------------------------------------------------
  519 +
  520 +# The QUIET tag can be used to turn on/off the messages that are generated
  521 +# by doxygen. Possible values are YES and NO. If left blank NO is used.
  522 +
  523 +QUIET = YES
  524 +
  525 +# The WARNINGS tag can be used to turn on/off the warning messages that are
  526 +# generated by doxygen. Possible values are YES and NO. If left blank
  527 +# NO is used.
  528 +
  529 +WARNINGS = YES
  530 +
  531 +# If WARN_IF_UNDOCUMENTED is set to YES, then doxygen will generate warnings
  532 +# for undocumented members. If EXTRACT_ALL is set to YES then this flag will
  533 +# automatically be disabled.
  534 +
  535 +WARN_IF_UNDOCUMENTED = YES
  536 +
  537 +# If WARN_IF_DOC_ERROR is set to YES, doxygen will generate warnings for
  538 +# potential errors in the documentation, such as not documenting some
  539 +# parameters in a documented function, or documenting parameters that
  540 +# don't exist or using markup commands wrongly.
  541 +
  542 +WARN_IF_DOC_ERROR = YES
  543 +
  544 +# This WARN_NO_PARAMDOC option can be abled to get warnings for
  545 +# functions that are documented, but have no documentation for their parameters
  546 +# or return value. If set to NO (the default) doxygen will only warn about
  547 +# wrong or incomplete parameter documentation, but not about the absence of
  548 +# documentation.
  549 +
  550 +WARN_NO_PARAMDOC = YES
  551 +
  552 +# The WARN_FORMAT tag determines the format of the warning messages that
  553 +# doxygen can produce. The string should contain the $file, $line, and $text
  554 +# tags, which will be replaced by the file and line number from which the
  555 +# warning originated and the warning text. Optionally the format may contain
  556 +# $version, which will be replaced by the version of the file (if it could
  557 +# be obtained via FILE_VERSION_FILTER)
  558 +
  559 +WARN_FORMAT = "$file:$line: $text"
  560 +
  561 +# The WARN_LOGFILE tag can be used to specify a file to which warning
  562 +# and error messages should be written. If left blank the output is written
  563 +# to stderr.
  564 +
  565 +WARN_LOGFILE =
  566 +
  567 +#---------------------------------------------------------------------------
  568 +# configuration options related to the input files
  569 +#---------------------------------------------------------------------------
  570 +
  571 +# The INPUT tag can be used to specify the files and/or directories that contain
  572 +# documented source files. You may enter file names like "myfile.cpp" or
  573 +# directories like "/usr/src/myproject". Separate the files or directories
  574 +# with spaces.
  575 +
  576 +INPUT = @DOXYGEN_DOCS_DIR@/content \
  577 + @prefix@/include/dali/public-api \
  578 + @prefix@/include/dali-toolkit/public-api
  579 +
  580 +
  581 +# This tag can be used to specify the character encoding of the source files
  582 +# that doxygen parses. Internally doxygen uses the UTF-8 encoding, which is
  583 +# also the default input encoding. Doxygen uses libiconv (or the iconv built
  584 +# into libc) for the transcoding. See http://www.gnu.org/software/libiconv for
  585 +# the list of possible encodings.
  586 +
  587 +INPUT_ENCODING = UTF-8
  588 +
  589 +# If the value of the INPUT tag contains directories, you can use the
  590 +# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
  591 +# and *.h) to filter out the source-files in the directories. If left
  592 +# blank the following patterns are tested:
  593 +# *.c *.cc *.cxx *.cpp *.c++ *.java *.ii *.ixx *.ipp *.i++ *.inl *.h *.hh *.hxx
  594 +# *.hpp *.h++ *.idl *.odl *.cs *.php *.php3 *.inc *.m *.mm *.py *.f90
  595 +
  596 +FILE_PATTERNS = *.c \
  597 + *.cc \
  598 + *.cxx \
  599 + *.cpp \
  600 + *.c++ \
  601 + *.d \
  602 + *.java \
  603 + *.ii \
  604 + *.ixx \
  605 + *.ipp \
  606 + *.i++ \
  607 + *.inl \
  608 + *.h \
  609 + *.hh \
  610 + *.hxx \
  611 + *.hpp \
  612 + *.h++ \
  613 + *.idl \
  614 + *.odl \
  615 + *.cs \
  616 + *.php \
  617 + *.php3 \
  618 + *.inc \
  619 + *.m \
  620 + *.mm \
  621 + *.dox \
  622 + *.py \
  623 + *.f90 \
  624 + *.f \
  625 + *.vhd \
  626 + *.vhdl
  627 +
  628 +# The RECURSIVE tag can be used to turn specify whether or not subdirectories
  629 +# should be searched for input files as well. Possible values are YES and NO.
  630 +# If left blank NO is used.
  631 +
  632 +RECURSIVE = YES
  633 +
  634 +# The EXCLUDE tag can be used to specify files and/or directories that should
  635 +# excluded from the INPUT source files. This way you can easily exclude a
  636 +# subdirectory from a directory tree whose root is specified with the INPUT tag.
  637 +
  638 +EXCLUDE = dali/integration-api
  639 +
  640 +
  641 +# The EXCLUDE_SYMLINKS tag can be used select whether or not files or
  642 +# directories that are symbolic links (a Unix filesystem feature) are excluded
  643 +# from the input.
  644 +
  645 +EXCLUDE_SYMLINKS = NO
  646 +
  647 +# If the value of the INPUT tag contains directories, you can use the
  648 +# EXCLUDE_PATTERNS tag to specify one or more wildcard patterns to exclude
  649 +# certain files from those directories. Note that the wildcards are matched
  650 +# against the file with absolute path, so to exclude all test directories
  651 +# for example use the pattern */test/*
  652 +
  653 +EXCLUDE_PATTERNS =
  654 +
  655 +# The EXCLUDE_SYMBOLS tag can be used to specify one or more symbol names
  656 +# (namespaces, classes, functions, etc.) that should be excluded from the
  657 +# output. The symbol name can be a fully qualified name, a word, or if the
  658 +# wildcard * is used, a substring. Examples: ANamespace, AClass,
  659 +# AClass::ANamespace, ANamespace::*Test
  660 +
  661 +EXCLUDE_SYMBOLS = DaliInternal \
  662 + Dali::Internal \
  663 + Dali::Integration \
  664 + Impl \
  665 + ApplicationImpl
  666 +
  667 +# The EXAMPLE_PATH tag can be used to specify one or more files or
  668 +# directories that contain example code fragments that are included (see
  669 +# the \include command).
  670 +
  671 +EXAMPLE_PATH = @DOXYGEN_ROOT_DIR@/examples
  672 +
  673 +# If the value of the EXAMPLE_PATH tag contains directories, you can use the
  674 +# EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
  675 +# and *.h) to filter out the source-files in the directories. If left
  676 +# blank all files are included.
  677 +
  678 +EXAMPLE_PATTERNS = *
  679 +
  680 +# If the EXAMPLE_RECURSIVE tag is set to YES then subdirectories will be
  681 +# searched for input files to be used with the \include or \dontinclude
  682 +# commands irrespective of the value of the RECURSIVE tag.
  683 +# Possible values are YES and NO. If left blank NO is used.
  684 +
  685 +EXAMPLE_RECURSIVE = YES
  686 +
  687 +# The IMAGE_PATH tag can be used to specify one or more files or
  688 +# directories that contain image that are included in the documentation (see
  689 +# the \image command).
  690 +
  691 +IMAGE_PATH = @DOXYGEN_DOCS_DIR@/content/images
  692 +
  693 +# The INPUT_FILTER tag can be used to specify a program that doxygen should
  694 +# invoke to filter for each input file. Doxygen will invoke the filter program
  695 +# by executing (via popen()) the command <filter> <input-file>, where <filter>
  696 +# is the value of the INPUT_FILTER tag, and <input-file> is the name of an
  697 +# input file. Doxygen will then use the output that the filter program writes
  698 +# to standard output. If FILTER_PATTERNS is specified, this tag will be
  699 +# ignored.
  700 +
  701 +INPUT_FILTER =
  702 +
  703 +# The FILTER_PATTERNS tag can be used to specify filters on a per file pattern
  704 +# basis. Doxygen will compare the file name with each pattern and apply the
  705 +# filter if there is a match. The filters are a list of the form:
  706 +# pattern=filter (like *.cpp=my_cpp_filter). See INPUT_FILTER for further
  707 +# info on how filters are used. If FILTER_PATTERNS is empty, INPUT_FILTER
  708 +# is applied to all files.
  709 +
  710 +FILTER_PATTERNS =
  711 +
  712 +# If the FILTER_SOURCE_FILES tag is set to YES, the input filter (if set using
  713 +# INPUT_FILTER) will be used to filter the input files when producing source
  714 +# files to browse (i.e. when SOURCE_BROWSER is set to YES).
  715 +
  716 +FILTER_SOURCE_FILES = NO
  717 +
  718 +#---------------------------------------------------------------------------
  719 +# configuration options related to source browsing
  720 +#---------------------------------------------------------------------------
  721 +
  722 +# If the SOURCE_BROWSER tag is set to YES then a list of source files will
  723 +# be generated. Documented entities will be cross-referenced with these sources.
  724 +# Note: To get rid of all source code in the generated output, make sure also
  725 +# VERBATIM_HEADERS is set to NO.
  726 +
  727 +SOURCE_BROWSER = YES
  728 +
  729 +# Setting the INLINE_SOURCES tag to YES will include the body
  730 +# of functions and classes directly in the documentation.
  731 +
  732 +INLINE_SOURCES = NO
  733 +
  734 +# Setting the STRIP_CODE_COMMENTS tag to YES (the default) will instruct
  735 +# doxygen to hide any special comment blocks from generated source code
  736 +# fragments. Normal C and C++ comments will always remain visible.
  737 +
  738 +STRIP_CODE_COMMENTS = YES
  739 +
  740 +# If the REFERENCED_BY_RELATION tag is set to YES
  741 +# then for each documented function all documented
  742 +# functions referencing it will be listed.
  743 +
  744 +REFERENCED_BY_RELATION = NO
  745 +
  746 +# If the REFERENCES_RELATION tag is set to YES
  747 +# then for each documented function all documented entities
  748 +# called/used by that function will be listed.
  749 +
  750 +REFERENCES_RELATION = NO
  751 +
  752 +# If the REFERENCES_LINK_SOURCE tag is set to YES (the default)
  753 +# and SOURCE_BROWSER tag is set to YES, then the hyperlinks from
  754 +# functions in REFERENCES_RELATION and REFERENCED_BY_RELATION lists will
  755 +# link to the source code. Otherwise they will link to the documentation.
  756 +
  757 +REFERENCES_LINK_SOURCE = YES
  758 +
  759 +# If the USE_HTAGS tag is set to YES then the references to source code
  760 +# will point to the HTML generated by the htags(1) tool instead of doxygen
  761 +# built-in source browser. The htags tool is part of GNU's global source
  762 +# tagging system (see http://www.gnu.org/software/global/global.html). You
  763 +# will need version 4.8.6 or higher.
  764 +
  765 +USE_HTAGS = NO
  766 +
  767 +# If the VERBATIM_HEADERS tag is set to YES (the default) then Doxygen
  768 +# will generate a verbatim copy of the header file for each class for
  769 +# which an include is specified. Set to NO to disable this.
  770 +
  771 +VERBATIM_HEADERS = YES
  772 +
  773 +#---------------------------------------------------------------------------
  774 +# configuration options related to the alphabetical class index
  775 +#---------------------------------------------------------------------------
  776 +
  777 +# If the ALPHABETICAL_INDEX tag is set to YES, an alphabetical index
  778 +# of all compounds will be generated. Enable this if the project
  779 +# contains a lot of classes, structs, unions or interfaces.
  780 +
  781 +ALPHABETICAL_INDEX = NO
  782 +
  783 +# If the alphabetical index is enabled (see ALPHABETICAL_INDEX) then
  784 +# the COLS_IN_ALPHA_INDEX tag can be used to specify the number of columns
  785 +# in which this list will be split (can be a number in the range [1..20])
  786 +
  787 +COLS_IN_ALPHA_INDEX = 5
  788 +
  789 +# In case all classes in a project start with a common prefix, all
  790 +# classes will be put under the same header in the alphabetical index.
  791 +# The IGNORE_PREFIX tag can be used to specify one or more prefixes that
  792 +# should be ignored while generating the index headers.
  793 +
  794 +IGNORE_PREFIX =
  795 +
  796 +#---------------------------------------------------------------------------
  797 +# configuration options related to the HTML output
  798 +#---------------------------------------------------------------------------
  799 +
  800 +# If the GENERATE_HTML tag is set to YES (the default) Doxygen will
  801 +# generate HTML output.
  802 +
  803 +GENERATE_HTML = YES
  804 +
  805 +# The HTML_OUTPUT tag is used to specify where the HTML docs will be put.
  806 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  807 +# put in front of it. If left blank `html' will be used as the default path.
  808 +
  809 +HTML_OUTPUT = html
  810 +
  811 +# The HTML_FILE_EXTENSION tag can be used to specify the file extension for
  812 +# each generated HTML page (for example: .htm,.php,.asp). If it is left blank
  813 +# doxygen will generate files with .html extension.
  814 +
  815 +HTML_FILE_EXTENSION = .html
  816 +
  817 +# The HTML_HEADER tag can be used to specify a personal HTML header for
  818 +# each generated HTML page. If it is left blank doxygen will generate a
  819 +# standard header.
  820 +
  821 +HTML_HEADER =
  822 +
  823 +# The HTML_FOOTER tag can be used to specify a personal HTML footer for
  824 +# each generated HTML page. If it is left blank doxygen will generate a
  825 +# standard footer.
  826 +
  827 +HTML_FOOTER = @DOXYGEN_DOCS_DIR@/api_footer.html
  828 +
  829 +# The HTML_STYLESHEET tag can be used to specify a user-defined cascading
  830 +# style sheet that is used by each HTML page. It can be used to
  831 +# fine-tune the look of the HTML output. If the tag is left blank doxygen
  832 +# will generate a default style sheet. Note that doxygen will try to copy
  833 +# the style sheet file to the HTML output directory, so don't put your own
  834 +# stylesheet in the HTML output directory as well, or it will be erased!
  835 +
  836 +HTML_STYLESHEET =
  837 +
  838 +# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes,
  839 +# files or namespaces will be aligned in HTML using tables. If set to
  840 +# NO a bullet list will be used.
  841 +
  842 +HTML_ALIGN_MEMBERS = YES
  843 +
  844 +# If the HTML_DYNAMIC_SECTIONS tag is set to YES then the generated HTML
  845 +# documentation will contain sections that can be hidden and shown after the
  846 +# page has loaded. For this to work a browser that supports
  847 +# JavaScript and DHTML is required (for instance Mozilla 1.0+, Firefox
  848 +# Netscape 6.0+, Internet explorer 5.0+, Konqueror, or Safari).
  849 +
  850 +HTML_DYNAMIC_SECTIONS = NO
  851 +
  852 +# If the GENERATE_DOCSET tag is set to YES, additional index files
  853 +# will be generated that can be used as input for Apple's Xcode 3
  854 +# integrated development environment, introduced with OSX 10.5 (Leopard).
  855 +# To create a documentation set, doxygen will generate a Makefile in the
  856 +# HTML output directory. Running make will produce the docset in that
  857 +# directory and running "make install" will install the docset in
  858 +# ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find
  859 +# it at startup.
  860 +# See http://developer.apple.com/tools/creatingdocsetswithdoxygen.html for more information.
  861 +
  862 +GENERATE_DOCSET = NO
  863 +
  864 +# When GENERATE_DOCSET tag is set to YES, this tag determines the name of the
  865 +# feed. A documentation feed provides an umbrella under which multiple
  866 +# documentation sets from a single provider (such as a company or product suite)
  867 +# can be grouped.
  868 +
  869 +DOCSET_FEEDNAME = "Doxygen generated docs"
  870 +
  871 +# When GENERATE_DOCSET tag is set to YES, this tag specifies a string that
  872 +# should uniquely identify the documentation set bundle. This should be a
  873 +# reverse domain-name style string, e.g. com.mycompany.MyDocSet. Doxygen
  874 +# will append .docset to the name.
  875 +
  876 +DOCSET_BUNDLE_ID = org.doxygen.Project
  877 +
  878 +# If the GENERATE_HTMLHELP tag is set to YES, additional index files
  879 +# will be generated that can be used as input for tools like the
  880 +# Microsoft HTML help workshop to generate a compiled HTML help file (.chm)
  881 +# of the generated HTML documentation.
  882 +
  883 +GENERATE_HTMLHELP = YES
  884 +
  885 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_FILE tag can
  886 +# be used to specify the file name of the resulting .chm file. You
  887 +# can add a path in front of the file if the result should not be
  888 +# written to the html output directory.
  889 +
  890 +CHM_FILE = dali.chm
  891 +
  892 +# If the GENERATE_HTMLHELP tag is set to YES, the HHC_LOCATION tag can
  893 +# be used to specify the location (absolute path including file name) of
  894 +# the HTML help compiler (hhc.exe). If non-empty doxygen will try to run
  895 +# the HTML help compiler on the generated index.hhp.
  896 +
  897 +HHC_LOCATION =
  898 +
  899 +# If the GENERATE_HTMLHELP tag is set to YES, the GENERATE_CHI flag
  900 +# controls if a separate .chi index file is generated (YES) or that
  901 +# it should be included in the master .chm file (NO).
  902 +
  903 +GENERATE_CHI = NO
  904 +
  905 +# If the GENERATE_HTMLHELP tag is set to YES, the CHM_INDEX_ENCODING
  906 +# is used to encode HtmlHelp index (hhk), content (hhc) and project file
  907 +# content.
  908 +
  909 +CHM_INDEX_ENCODING =
  910 +
  911 +# If the GENERATE_HTMLHELP tag is set to YES, the BINARY_TOC flag
  912 +# controls whether a binary table of contents is generated (YES) or a
  913 +# normal table of contents (NO) in the .chm file.
  914 +
  915 +BINARY_TOC = NO
  916 +
  917 +# The TOC_EXPAND flag can be set to YES to add extra items for group members
  918 +# to the contents of the HTML help documentation and to the tree view.
  919 +
  920 +TOC_EXPAND = NO
  921 +
  922 +# If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and QHP_VIRTUAL_FOLDER
  923 +# are set, an additional index file will be generated that can be used as input for
  924 +# Qt's qhelpgenerator to generate a Qt Compressed Help (.qch) of the generated
  925 +# HTML documentation.
  926 +
  927 +GENERATE_QHP = NO
  928 +
  929 +# If the QHG_LOCATION tag is specified, the QCH_FILE tag can
  930 +# be used to specify the file name of the resulting .qch file.
  931 +# The path specified is relative to the HTML output folder.
  932 +
  933 +QCH_FILE =
  934 +
  935 +# The QHP_NAMESPACE tag specifies the namespace to use when generating
  936 +# Qt Help Project output. For more information please see
  937 +# http://doc.trolltech.com/qthelpproject.html#namespace
  938 +
  939 +QHP_NAMESPACE =
  940 +
  941 +# The QHP_VIRTUAL_FOLDER tag specifies the namespace to use when generating
  942 +# Qt Help Project output. For more information please see
  943 +# http://doc.trolltech.com/qthelpproject.html#virtual-folders
  944 +
  945 +QHP_VIRTUAL_FOLDER = doc
  946 +
  947 +# If QHP_CUST_FILTER_NAME is set, it specifies the name of a custom filter to add.
  948 +# For more information please see
  949 +# http://doc.trolltech.com/qthelpproject.html#custom-filters
  950 +
  951 +QHP_CUST_FILTER_NAME =
  952 +
  953 +# The QHP_CUST_FILT_ATTRS tag specifies the list of the attributes of the custom filter to add.For more information please see
  954 +# <a href="http://doc.trolltech.com/qthelpproject.html#custom-filters">Qt Help Project / Custom Filters</a>.
  955 +
  956 +QHP_CUST_FILTER_ATTRS =
  957 +
  958 +# The QHP_SECT_FILTER_ATTRS tag specifies the list of the attributes this project's
  959 +# filter section matches.
  960 +# <a href="http://doc.trolltech.com/qthelpproject.html#filter-attributes">Qt Help Project / Filter Attributes</a>.
  961 +
  962 +QHP_SECT_FILTER_ATTRS =
  963 +
  964 +# If the GENERATE_QHP tag is set to YES, the QHG_LOCATION tag can
  965 +# be used to specify the location of Qt's qhelpgenerator.
  966 +# If non-empty doxygen will try to run qhelpgenerator on the generated
  967 +# .qhp file.
  968 +
  969 +QHG_LOCATION =
  970 +
  971 +# The DISABLE_INDEX tag can be used to turn on/off the condensed index at
  972 +# top of each HTML page. The value NO (the default) enables the index and
  973 +# the value YES disables it.
  974 +
  975 +DISABLE_INDEX = NO
  976 +
  977 +# This tag can be used to set the number of enum values (range [1..20])
  978 +# that doxygen will group on one line in the generated HTML documentation.
  979 +
  980 +ENUM_VALUES_PER_LINE = 4
  981 +
  982 +# The GENERATE_TREEVIEW tag is used to specify whether a tree-like index
  983 +# structure should be generated to display hierarchical information.
  984 +# If the tag value is set to FRAME, a side panel will be generated
  985 +# containing a tree-like index structure (just like the one that
  986 +# is generated for HTML Help). For this to work a browser that supports
  987 +# JavaScript, DHTML, CSS and frames is required (for instance Mozilla 1.0+,
  988 +# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
  989 +# probably better off using the HTML help feature. Other possible values
  990 +# for this tag are: HIERARCHIES, which will generate the Groups, Directories,
  991 +# and Class Hierarchy pages using a tree view instead of an ordered list;
  992 +# ALL, which combines the behavior of FRAME and HIERARCHIES; and NONE, which
  993 +# disables this behavior completely. For backwards compatibility with previous
  994 +# releases of Doxygen, the values YES and NO are equivalent to FRAME and NONE
  995 +# respectively.
  996 +
  997 +GENERATE_TREEVIEW = NONE
  998 +
  999 +# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
  1000 +# used to set the initial width (in pixels) of the frame in which the tree
  1001 +# is shown.
  1002 +
  1003 +TREEVIEW_WIDTH = 250
  1004 +
  1005 +# Use this tag to change the font size of Latex formulas included
  1006 +# as images in the HTML documentation. The default is 10. Note that
  1007 +# when you change the font size after a successful doxygen run you need
  1008 +# to manually remove any form_*.png images from the HTML output directory
  1009 +# to force them to be regenerated.
  1010 +
  1011 +FORMULA_FONTSIZE = 10
  1012 +
  1013 +#---------------------------------------------------------------------------
  1014 +# configuration options related to the LaTeX output
  1015 +#---------------------------------------------------------------------------
  1016 +
  1017 +# If the GENERATE_LATEX tag is set to YES (the default) Doxygen will
  1018 +# generate Latex output.
  1019 +
  1020 +GENERATE_LATEX = NO
  1021 +
  1022 +# The LATEX_OUTPUT tag is used to specify where the LaTeX docs will be put.
  1023 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  1024 +# put in front of it. If left blank `latex' will be used as the default path.
  1025 +
  1026 +LATEX_OUTPUT = latex
  1027 +
  1028 +# The LATEX_CMD_NAME tag can be used to specify the LaTeX command name to be
  1029 +# invoked. If left blank `latex' will be used as the default command name.
  1030 +
  1031 +LATEX_CMD_NAME = latex
  1032 +
  1033 +# The MAKEINDEX_CMD_NAME tag can be used to specify the command name to
  1034 +# generate index for LaTeX. If left blank `makeindex' will be used as the
  1035 +# default command name.
  1036 +
  1037 +MAKEINDEX_CMD_NAME = makeindex
  1038 +
  1039 +# If the COMPACT_LATEX tag is set to YES Doxygen generates more compact
  1040 +# LaTeX documents. This may be useful for small projects and may help to
  1041 +# save some trees in general.
  1042 +
  1043 +COMPACT_LATEX = NO
  1044 +
  1045 +# The PAPER_TYPE tag can be used to set the paper type that is used
  1046 +# by the printer. Possible values are: a4, a4wide, letter, legal and
  1047 +# executive. If left blank a4wide will be used.
  1048 +
  1049 +PAPER_TYPE = a4wide
  1050 +
  1051 +# The EXTRA_PACKAGES tag can be to specify one or more names of LaTeX
  1052 +# packages that should be included in the LaTeX output.
  1053 +
  1054 +EXTRA_PACKAGES =
  1055 +
  1056 +# The LATEX_HEADER tag can be used to specify a personal LaTeX header for
  1057 +# the generated latex document. The header should contain everything until
  1058 +# the first chapter. If it is left blank doxygen will generate a
  1059 +# standard header. Notice: only use this tag if you know what you are doing!
  1060 +
  1061 +LATEX_HEADER =
  1062 +
  1063 +# If the PDF_HYPERLINKS tag is set to YES, the LaTeX that is generated
  1064 +# is prepared for conversion to pdf (using ps2pdf). The pdf file will
  1065 +# contain links (just like the HTML output) instead of page references
  1066 +# This makes the output suitable for online browsing using a pdf viewer.
  1067 +
  1068 +PDF_HYPERLINKS = YES
  1069 +
  1070 +# If the USE_PDFLATEX tag is set to YES, pdflatex will be used instead of
  1071 +# plain latex in the generated Makefile. Set this option to YES to get a
  1072 +# higher quality PDF documentation.
  1073 +
  1074 +USE_PDFLATEX = YES
  1075 +
  1076 +# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \\batchmode.
  1077 +# command to the generated LaTeX files. This will instruct LaTeX to keep
  1078 +# running if errors occur, instead of asking the user for help.
  1079 +# This option is also used when generating formulas in HTML.
  1080 +
  1081 +LATEX_BATCHMODE = NO
  1082 +
  1083 +# If LATEX_HIDE_INDICES is set to YES then doxygen will not
  1084 +# include the index chapters (such as File Index, Compound Index, etc.)
  1085 +# in the output.
  1086 +
  1087 +LATEX_HIDE_INDICES = NO
  1088 +
  1089 +#---------------------------------------------------------------------------
  1090 +# configuration options related to the RTF output
  1091 +#---------------------------------------------------------------------------
  1092 +
  1093 +# If the GENERATE_RTF tag is set to YES Doxygen will generate RTF output
  1094 +# The RTF output is optimized for Word 97 and may not look very pretty with
  1095 +# other RTF readers or editors.
  1096 +
  1097 +GENERATE_RTF = NO
  1098 +
  1099 +# The RTF_OUTPUT tag is used to specify where the RTF docs will be put.
  1100 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  1101 +# put in front of it. If left blank `rtf' will be used as the default path.
  1102 +
  1103 +RTF_OUTPUT = rtf
  1104 +
  1105 +# If the COMPACT_RTF tag is set to YES Doxygen generates more compact
  1106 +# RTF documents. This may be useful for small projects and may help to
  1107 +# save some trees in general.
  1108 +
  1109 +COMPACT_RTF = NO
  1110 +
  1111 +# If the RTF_HYPERLINKS tag is set to YES, the RTF that is generated
  1112 +# will contain hyperlink fields. The RTF file will
  1113 +# contain links (just like the HTML output) instead of page references.
  1114 +# This makes the output suitable for online browsing using WORD or other
  1115 +# programs which support those fields.
  1116 +# Note: wordpad (write) and others do not support links.
  1117 +
  1118 +RTF_HYPERLINKS = NO
  1119 +
  1120 +# Load stylesheet definitions from file. Syntax is similar to doxygen's
  1121 +# config file, i.e. a series of assignments. You only have to provide
  1122 +# replacements, missing definitions are set to their default value.
  1123 +
  1124 +RTF_STYLESHEET_FILE =
  1125 +
  1126 +# Set optional variables used in the generation of an rtf document.
  1127 +# Syntax is similar to doxygen's config file.
  1128 +
  1129 +RTF_EXTENSIONS_FILE =
  1130 +
  1131 +#---------------------------------------------------------------------------
  1132 +# configuration options related to the man page output
  1133 +#---------------------------------------------------------------------------
  1134 +
  1135 +# If the GENERATE_MAN tag is set to YES (the default) Doxygen will
  1136 +# generate man pages
  1137 +
  1138 +GENERATE_MAN = NO
  1139 +
  1140 +# The MAN_OUTPUT tag is used to specify where the man pages will be put.
  1141 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  1142 +# put in front of it. If left blank `man' will be used as the default path.
  1143 +
  1144 +MAN_OUTPUT = man
  1145 +
  1146 +# The MAN_EXTENSION tag determines the extension that is added to
  1147 +# the generated man pages (default is the subroutine's section .3)
  1148 +
  1149 +MAN_EXTENSION = .3
  1150 +
  1151 +# If the MAN_LINKS tag is set to YES and Doxygen generates man output,
  1152 +# then it will generate one additional man file for each entity
  1153 +# documented in the real man page(s). These additional files
  1154 +# only source the real man page, but without them the man command
  1155 +# would be unable to find the correct page. The default is NO.
  1156 +
  1157 +MAN_LINKS = NO
  1158 +
  1159 +#---------------------------------------------------------------------------
  1160 +# configuration options related to the XML output
  1161 +#---------------------------------------------------------------------------
  1162 +
  1163 +# If the GENERATE_XML tag is set to YES Doxygen will
  1164 +# generate an XML file that captures the structure of
  1165 +# the code including all documentation.
  1166 +
  1167 +GENERATE_XML = NO
  1168 +
  1169 +# The XML_OUTPUT tag is used to specify where the XML pages will be put.
  1170 +# If a relative path is entered the value of OUTPUT_DIRECTORY will be
  1171 +# put in front of it. If left blank `xml' will be used as the default path.
  1172 +
  1173 +XML_OUTPUT = xml
  1174 +
  1175 +# The XML_SCHEMA tag can be used to specify an XML schema,
  1176 +# which can be used by a validating XML parser to check the
  1177 +# syntax of the XML files.
  1178 +
  1179 +XML_SCHEMA =
  1180 +
  1181 +# The XML_DTD tag can be used to specify an XML DTD,
  1182 +# which can be used by a validating XML parser to check the
  1183 +# syntax of the XML files.
  1184 +
  1185 +XML_DTD =
  1186 +
  1187 +# If the XML_PROGRAMLISTING tag is set to YES Doxygen will
  1188 +# dump the program listings (including syntax highlighting
  1189 +# and cross-referencing information) to the XML output. Note that
  1190 +# enabling this will significantly increase the size of the XML output.
  1191 +
  1192 +XML_PROGRAMLISTING = YES
  1193 +
  1194 +#---------------------------------------------------------------------------
  1195 +# configuration options for the AutoGen Definitions output
  1196 +#---------------------------------------------------------------------------
  1197 +
  1198 +# If the GENERATE_AUTOGEN_DEF tag is set to YES Doxygen will
  1199 +# generate an AutoGen Definitions (see autogen.sf.net) file
  1200 +# that captures the structure of the code including all
  1201 +# documentation. Note that this feature is still experimental
  1202 +# and incomplete at the moment.
  1203 +
  1204 +GENERATE_AUTOGEN_DEF = NO
  1205 +
  1206 +#---------------------------------------------------------------------------
  1207 +# configuration options related to the Perl module output
  1208 +#---------------------------------------------------------------------------
  1209 +
  1210 +# If the GENERATE_PERLMOD tag is set to YES Doxygen will
  1211 +# generate a Perl module file that captures the structure of
  1212 +# the code including all documentation. Note that this
  1213 +# feature is still experimental and incomplete at the
  1214 +# moment.
  1215 +
  1216 +GENERATE_PERLMOD = NO
  1217 +
  1218 +# If the PERLMOD_LATEX tag is set to YES Doxygen will generate
  1219 +# the necessary Makefile rules, Perl scripts and LaTeX code to be able
  1220 +# to generate PDF and DVI output from the Perl module output.
  1221 +
  1222 +PERLMOD_LATEX = NO
  1223 +
  1224 +# If the PERLMOD_PRETTY tag is set to YES the Perl module output will be
  1225 +# nicely formatted so it can be parsed by a human reader. This is useful
  1226 +# if you want to understand what is going on. On the other hand, if this
  1227 +# tag is set to NO the size of the Perl module output will be much smaller
  1228 +# and Perl will parse it just the same.
  1229 +
  1230 +PERLMOD_PRETTY = YES
  1231 +
  1232 +# The names of the make variables in the generated doxyrules.make file
  1233 +# are prefixed with the string contained in PERLMOD_MAKEVAR_PREFIX.
  1234 +# This is useful so different doxyrules.make files included by the same
  1235 +# Makefile don't overwrite each other's variables.
  1236 +
  1237 +PERLMOD_MAKEVAR_PREFIX =
  1238 +
  1239 +#---------------------------------------------------------------------------
  1240 +# Configuration options related to the preprocessor
  1241 +#---------------------------------------------------------------------------
  1242 +
  1243 +# If the ENABLE_PREPROCESSING tag is set to YES (the default) Doxygen will
  1244 +# evaluate all C-preprocessor directives found in the sources and include
  1245 +# files.
  1246 +
  1247 +ENABLE_PREPROCESSING = YES
  1248 +
  1249 +# If the MACRO_EXPANSION tag is set to YES Doxygen will expand all macro
  1250 +# names in the source code. If set to NO (the default) only conditional
  1251 +# compilation will be performed. Macro expansion can be done in a controlled
  1252 +# way by setting EXPAND_ONLY_PREDEF to YES.
  1253 +
  1254 +MACRO_EXPANSION = YES
  1255 +
  1256 +# If the EXPAND_ONLY_PREDEF and MACRO_EXPANSION tags are both set to YES
  1257 +# then the macro expansion is limited to the macros specified with the
  1258 +# PREDEFINED and EXPAND_AS_DEFINED tags.
  1259 +
  1260 +EXPAND_ONLY_PREDEF = YES
  1261 +
  1262 +# If the SEARCH_INCLUDES tag is set to YES (the default) the includes files
  1263 +# in the INCLUDE_PATH (see below) will be search if a #include is found.
  1264 +
  1265 +SEARCH_INCLUDES = YES
  1266 +
  1267 +# The INCLUDE_PATH tag can be used to specify one or more directories that
  1268 +# contain include files that are not input files but should be processed by
  1269 +# the preprocessor.
  1270 +
  1271 +INCLUDE_PATH =
  1272 +
  1273 +# You can use the INCLUDE_FILE_PATTERNS tag to specify one or more wildcard
  1274 +# patterns (like *.h and *.hpp) to filter out the header-files in the
  1275 +# directories. If left blank, the patterns specified with FILE_PATTERNS will
  1276 +# be used.
  1277 +
  1278 +INCLUDE_FILE_PATTERNS =
  1279 +
  1280 +# The PREDEFINED tag can be used to specify one or more macro names that
  1281 +# are defined before the preprocessor is started (similar to the -D option of
  1282 +# gcc). The argument of the tag is a list of macros of the form: name
  1283 +# or name=definition (no spaces). If the definition and the = are
  1284 +# omitted =1 is assumed. To prevent a macro definition from being
  1285 +# undefined via #undef or recursively expanded use the := operator
  1286 +# instead of the = operator.
  1287 +
  1288 +PREDEFINED = DALI_IMPORT_API DALI_INTERNAL \
  1289 + __attribute__ ((visibility ("default"))) \
  1290 + __attribute__ ((visibility ("hidden")))
  1291 +
  1292 +# If the MACRO_EXPANSION and EXPAND_ONLY_PREDEF tags are set to YES then
  1293 +# this tag can be used to specify a list of macro names that should be expanded.
  1294 +# The macro definition that is found in the sources will be used.
  1295 +# Use the PREDEFINED tag if you want to use a different macro definition.
  1296 +
  1297 +EXPAND_AS_DEFINED =
  1298 +
  1299 +# If the SKIP_FUNCTION_MACROS tag is set to YES (the default) then
  1300 +# doxygen's preprocessor will remove all function-like macros that are alone
  1301 +# on a line, have an all uppercase name, and do not end with a semicolon. Such
  1302 +# function macros are typically used for boiler-plate code, and will confuse
  1303 +# the parser if not removed.
  1304 +
  1305 +SKIP_FUNCTION_MACROS = YES
  1306 +
  1307 +#---------------------------------------------------------------------------
  1308 +# Configuration::additions related to external references
  1309 +#---------------------------------------------------------------------------
  1310 +
  1311 +# The TAGFILES option can be used to specify one or more tagfiles.
  1312 +# Optionally an initial location of the external documentation
  1313 +# can be added for each tagfile. The format of a tag file without
  1314 +# this location is as follows:
  1315 +# TAGFILES = file1 file2 ...
  1316 +# Adding location for the tag files is done as follows:
  1317 +# TAGFILES = file1=loc1 "file2 = loc2" ...
  1318 +# where "loc1" and "loc2" can be relative or absolute paths or
  1319 +# URLs. If a location is present for each tag, the installdox tool
  1320 +# does not have to be run to correct the links.
  1321 +# Note that each tag file must have a unique name
  1322 +# (where the name does NOT include the path)
  1323 +# If a tag file is not located in the directory in which doxygen
  1324 +# is run, you must also specify the path to the tagfile here.
  1325 +
  1326 +TAGFILES =
  1327 +
  1328 +# When a file name is specified after GENERATE_TAGFILE, doxygen will create
  1329 +# a tag file that is based on the input files it reads.
  1330 +
  1331 +GENERATE_TAGFILE =
  1332 +
  1333 +# If the ALLEXTERNALS tag is set to YES all external classes will be listed
  1334 +# in the class index. If set to NO only the inherited external classes
  1335 +# will be listed.
  1336 +
  1337 +ALLEXTERNALS = NO
  1338 +
  1339 +# If the EXTERNAL_GROUPS tag is set to YES all external groups will be listed
  1340 +# in the modules index. If set to NO, only the current project's groups will
  1341 +# be listed.
  1342 +
  1343 +EXTERNAL_GROUPS = YES
  1344 +
  1345 +# The PERL_PATH should be the absolute path and name of the perl script
  1346 +# interpreter (i.e. the result of `which perl').
  1347 +
  1348 +PERL_PATH = /usr/bin/perl
  1349 +
  1350 +#---------------------------------------------------------------------------
  1351 +# Configuration options related to the dot tool
  1352 +#---------------------------------------------------------------------------
  1353 +
  1354 +# If the CLASS_DIAGRAMS tag is set to YES (the default) Doxygen will
  1355 +# generate a inheritance diagram (in HTML, RTF and LaTeX) for classes with base
  1356 +# or super classes. Setting the tag to NO turns the diagrams off. Note that
  1357 +# this option is superseded by the HAVE_DOT option below. This is only a
  1358 +# fallback. It is recommended to install and use dot, since it yields more
  1359 +# powerful graphs.
  1360 +
  1361 +CLASS_DIAGRAMS = YES
  1362 +
  1363 +# You can define message sequence charts within doxygen comments using the \msc
  1364 +# command. Doxygen will then run the mscgen tool (see
  1365 +# http://www.mcternan.me.uk/mscgen/) to produce the chart and insert it in the
  1366 +# documentation. The MSCGEN_PATH tag allows you to specify the directory where
  1367 +# the mscgen tool resides. If left empty the tool is assumed to be found in the
  1368 +# default search path.
  1369 +
  1370 +MSCGEN_PATH =
  1371 +
  1372 +# If set to YES, the inheritance and collaboration graphs will hide
  1373 +# inheritance and usage relations if the target is undocumented
  1374 +# or is not a class.
  1375 +
  1376 +HIDE_UNDOC_RELATIONS = YES
  1377 +
  1378 +# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is
  1379 +# available from the path. This tool is part of Graphviz, a graph visualization
  1380 +# toolkit from AT&T and Lucent Bell Labs. The other options in this section
  1381 +# have no effect if this option is set to NO (the default)
  1382 +
  1383 +HAVE_DOT = NO
  1384 +
  1385 +# By default doxygen will write a font called FreeSans.ttf to the output
  1386 +# directory and reference it in all dot files that doxygen generates. This
  1387 +# font does not include all possible unicode characters however, so when you need
  1388 +# these (or just want a differently looking font) you can specify the font name
  1389 +# using DOT_FONTNAME. You need need to make sure dot is able to find the font,
  1390 +# which can be done by putting it in a standard location or by setting the
  1391 +# DOTFONTPATH environment variable or by setting DOT_FONTPATH to the directory
  1392 +# containing the font.
  1393 +
  1394 +DOT_FONTNAME = FreeSans
  1395 +
  1396 +# The DOT_FONTSIZE tag can be used to set the size of the font of dot graphs.
  1397 +# The default size is 10pt.
  1398 +
  1399 +DOT_FONTSIZE = 10
  1400 +
  1401 +# By default doxygen will tell dot to use the output directory to look for the
  1402 +# FreeSans.ttf font (which doxygen will put there itself). If you specify a
  1403 +# different font using DOT_FONTNAME you can set the path where dot
  1404 +# can find it using this tag.
  1405 +
  1406 +DOT_FONTPATH =
  1407 +
  1408 +# If the CLASS_GRAPH and HAVE_DOT tags are set to YES then doxygen
  1409 +# will generate a graph for each documented class showing the direct and
  1410 +# indirect inheritance relations. Setting this tag to YES will force the
  1411 +# the CLASS_DIAGRAMS tag to NO.
  1412 +
  1413 +CLASS_GRAPH = YES
  1414 +
  1415 +# If the COLLABORATION_GRAPH and HAVE_DOT tags are set to YES then doxygen
  1416 +# will generate a graph for each documented class showing the direct and
  1417 +# indirect implementation dependencies (inheritance, containment, and
  1418 +# class references variables) of the class with other documented classes.
  1419 +
  1420 +COLLABORATION_GRAPH = YES
  1421 +
  1422 +# If the GROUP_GRAPHS and HAVE_DOT tags are set to YES then doxygen
  1423 +# will generate a graph for groups, showing the direct groups dependencies
  1424 +
  1425 +GROUP_GRAPHS = YES
  1426 +
  1427 +# If the UML_LOOK tag is set to YES doxygen will generate inheritance and
  1428 +# collaboration diagrams in a style similar to the OMG's Unified Modeling
  1429 +# Language.
  1430 +
  1431 +UML_LOOK = NO
  1432 +
  1433 +# If set to YES, the inheritance and collaboration graphs will show the
  1434 +# relations between templates and their instances.
  1435 +
  1436 +TEMPLATE_RELATIONS = NO
  1437 +
  1438 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
  1439 +# tags are set to YES then doxygen will generate a graph for each documented
  1440 +# file showing the direct and indirect include dependencies of the file with
  1441 +# other documented files.
  1442 +
  1443 +INCLUDE_GRAPH = YES
  1444 +
  1445 +# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDED_BY_GRAPH, and
  1446 +# HAVE_DOT tags are set to YES then doxygen will generate a graph for each
  1447 +# documented header file showing the documented files that directly or
  1448 +# indirectly include this file.
  1449 +
  1450 +INCLUDED_BY_GRAPH = YES
  1451 +
  1452 +# If the CALL_GRAPH and HAVE_DOT options are set to YES then
  1453 +# doxygen will generate a call dependency graph for every global function
  1454 +# or class method. Note that enabling this option will significantly increase
  1455 +# the time of a run. So in most cases it will be better to enable call graphs
  1456 +# for selected functions only using the \callgraph command.
  1457 +
  1458 +CALL_GRAPH = NO
  1459 +
  1460 +# If the CALLER_GRAPH and HAVE_DOT tags are set to YES then
  1461 +# doxygen will generate a caller dependency graph for every global function
  1462 +# or class method. Note that enabling this option will significantly increase
  1463 +# the time of a run. So in most cases it will be better to enable caller
  1464 +# graphs for selected functions only using the \callergraph command.
  1465 +
  1466 +CALLER_GRAPH = NO
  1467 +
  1468 +# If the GRAPHICAL_HIERARCHY and HAVE_DOT tags are set to YES then doxygen
  1469 +# will graphical hierarchy of all classes instead of a textual one.
  1470 +
  1471 +GRAPHICAL_HIERARCHY = YES
  1472 +
  1473 +# If the DIRECTORY_GRAPH, SHOW_DIRECTORIES and HAVE_DOT tags are set to YES
  1474 +# then doxygen will show the dependencies a directory has on other directories
  1475 +# in a graphical way. The dependency relations are determined by the #include
  1476 +# relations between the files in the directories.
  1477 +
  1478 +DIRECTORY_GRAPH = YES
  1479 +
  1480 +# The DOT_IMAGE_FORMAT tag can be used to set the image format of the images
  1481 +# generated by dot. Possible values are png, jpg, or gif
  1482 +# If left blank png will be used.
  1483 +
  1484 +DOT_IMAGE_FORMAT = png
  1485 +
  1486 +# The tag DOT_PATH can be used to specify the path where the dot tool can be
  1487 +# found. If left blank, it is assumed the dot tool can be found in the path.
  1488 +
  1489 +DOT_PATH =
  1490 +
  1491 +# The DOTFILE_DIRS tag can be used to specify one or more directories that
  1492 +# contain dot files that are included in the documentation (see the
  1493 +# \dotfile command).
  1494 +
  1495 +DOTFILE_DIRS =
  1496 +
  1497 +# The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
  1498 +# nodes that will be shown in the graph. If the number of nodes in a graph
  1499 +# becomes larger than this value, doxygen will truncate the graph, which is
  1500 +# visualized by representing a node as a red box. Note that doxygen if the
  1501 +# number of direct children of the root node in a graph is already larger than
  1502 +# DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note
  1503 +# that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
  1504 +
  1505 +DOT_GRAPH_MAX_NODES = 50
  1506 +
  1507 +# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
  1508 +# graphs generated by dot. A depth value of 3 means that only nodes reachable
  1509 +# from the root by following a path via at most 3 edges will be shown. Nodes
  1510 +# that lay further from the root node will be omitted. Note that setting this
  1511 +# option to 1 or 2 may greatly reduce the computation time needed for large
  1512 +# code bases. Also note that the size of a graph can be further restricted by
  1513 +# DOT_GRAPH_MAX_NODES. Using a depth of 0 means no depth restriction.
  1514 +
  1515 +MAX_DOT_GRAPH_DEPTH = 0
  1516 +
  1517 +# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent
  1518 +# background. This is disabled by default, because dot on Windows does not
  1519 +# seem to support this out of the box. Warning: Depending on the platform used,
  1520 +# enabling this option may lead to badly anti-aliased labels on the edges of
  1521 +# a graph (i.e. they become hard to read).
  1522 +
  1523 +DOT_TRANSPARENT = NO
  1524 +
  1525 +# Set the DOT_MULTI_TARGETS tag to YES allow dot to generate multiple output
  1526 +# files in one run (i.e. multiple -o and -T options on the command line). This
  1527 +# makes dot run faster, but since only newer versions of dot (>1.8.10)
  1528 +# support this, this feature is disabled by default.
  1529 +
  1530 +DOT_MULTI_TARGETS = NO
  1531 +
  1532 +# If the GENERATE_LEGEND tag is set to YES (the default) Doxygen will
  1533 +# generate a legend page explaining the meaning of the various boxes and
  1534 +# arrows in the dot generated graphs.
  1535 +
  1536 +GENERATE_LEGEND = YES
  1537 +
  1538 +# If the DOT_CLEANUP tag is set to YES (the default) Doxygen will
  1539 +# remove the intermediate dot files that are used to generate
  1540 +# the various graphs.
  1541 +
  1542 +DOT_CLEANUP = YES
  1543 +
  1544 +#---------------------------------------------------------------------------
  1545 +# Options related to the search engine
  1546 +#---------------------------------------------------------------------------
  1547 +
  1548 +# When the SEARCHENGINE tag is enabled doxygen will generate a search box
  1549 +# for the HTML output. The underlying search engine uses javascript
  1550 +# and DHTML and should work on any modern browser. Note that when using
  1551 +# HTML help (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets
  1552 +# (GENERATE_DOCSET) there is already a search function so this one should
  1553 +# typically be disabled. For large projects the javascript based search engine
  1554 +# can be slow, then enabling SERVER_BASED_SEARCH may provide a better solution.
  1555 +
  1556 +SEARCHENGINE = NO
  1557 +
  1558 +# When the SERVER_BASED_SEARCH tag is enabled the search engine will be
  1559 +# implemented using a PHP enabled web server instead of at the web client
  1560 +# using Javascript. Doxygen will generate the search PHP script and index
  1561 +# file to put on the web server. The advantage of the server
  1562 +# based approach is that it scales better to large projects and allows
  1563 +# full text search. The disadvances is that it is more difficult to setup
  1564 +# and does not have live searching capabilities.
  1565 +
  1566 +# SERVER_BASED_SEARCH = NO
... ...
build/tizen/examples/Makefile.am 0 → 100644
  1 +#
  2 +# Copyright (c) 2014 Samsung Electronics Co., Ltd.
  3 +#
  4 +# Licensed under the Flora License, Version 1.0 (the License);
  5 +# you may not use this file except in compliance with the License.
  6 +# You may obtain a copy of the License at
  7 +#
  8 +# http://floralicense.org/license/
  9 +#
  10 +# Unless required by applicable law or agreed to in writing, software
  11 +# distributed under the License is distributed on an AS IS BASIS,
  12 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +# See the License for the specific language governing permissions and
  14 +# limitations under the License.
  15 +#
  16 +
  17 +examples_src_dir = ../../../examples
  18 +
  19 +bin_PROGRAMS = \
  20 + blocks.example \
  21 + bubble-effect.example \
  22 + cluster.example \
  23 + cube-transition-effect.example \
  24 + dissolve-effect.example \
  25 + hello-world.example \
  26 + magnifier.example \
  27 + motion-blur.example \
  28 + motion-stretch.example \
  29 + page-turn-view.example \
  30 + shadow-bone-lighting.example
  31 +
  32 +daliimagedir = $(appdatadir)/images/
  33 +dalimodeldir = $(appdatadir)/models/
  34 +
  35 +BASE_CXXFLAGS = -I../../../examples \
  36 + -DDALI_IMAGE_DIR="\"${daliimagedir}\"" \
  37 + -DDALI_MODEL_DIR="\"${dalimodeldir}\"" \
  38 + $(DALIDEMO_CFLAGS) \
  39 + $(ECORE_X_CFLAGS) \
  40 + $(CAPI_MEDIA_PLAYER_CFLAGS) \
  41 + $(CAPI_APPFW_APPLICATION_CFLAGS) \
  42 + -I/usr/include/media \
  43 + -Werror -Wall
  44 +
  45 +EXAMPLE_CXXFLAGS = $(DALI_CFLAGS) \
  46 + $(DALI_TOOLKIT_CFLAGS) \
  47 + $(BASE_CXXFLAGS)
  48 +
  49 +
  50 +EXAMPLE_DEPS =
  51 +
  52 +EXAMPLE_LDADD = $(DALI_LIBS) $(DALI_TOOLKIT_LIBS) $(ECORE_X_LIBS) $(CAPI_MEDIA_PLAYER_LIBS) $(CAPI_APPFW_APPLICATION_LIBS) -lrt
  53 +
  54 +
  55 +blocks_example_SOURCES = $(examples_src_dir)/blocks/blocks-example.cpp
  56 +blocks_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  57 +blocks_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  58 +blocks_example_LDADD = $(EXAMPLE_LDADD)
  59 +
  60 +bubble_effect_example_SOURCES = $(examples_src_dir)/shader-effect/bubble-effect-example.cpp
  61 +bubble_effect_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  62 +bubble_effect_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  63 +bubble_effect_example_LDADD = $(EXAMPLE_LDADD)
  64 +
  65 +cluster_example_SOURCES = $(examples_src_dir)/cluster/cluster-example.cpp
  66 +cluster_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  67 +cluster_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  68 +cluster_example_LDADD = $(EXAMPLE_LDADD)
  69 +
  70 +cube_transition_effect_example_SOURCES = $(examples_src_dir)/transition/cube-transition-effect-example.cpp
  71 +cube_transition_effect_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  72 +cube_transition_effect_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  73 +cube_transition_effect_example_LDADD = $(EXAMPLE_LDADD)
  74 +
  75 +dissolve_effect_example_SOURCES = $(examples_src_dir)/shader-effect/dissolve-effect-example.cpp
  76 +dissolve_effect_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  77 +dissolve_effect_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  78 +dissolve_effect_example_LDADD = $(EXAMPLE_LDADD)
  79 +
  80 +hello_world_example_SOURCES = $(examples_src_dir)/hello-world/hello-world-example.cpp
  81 +hello_world_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  82 +hello_world_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  83 +hello_world_example_LDADD = $(EXAMPLE_LDADD)
  84 +
  85 +magnifier_example_SOURCES = $(examples_src_dir)/magnifier-example/magnifier-example.cpp
  86 +magnifier_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  87 +magnifier_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  88 +magnifier_example_LDADD = $(EXAMPLE_LDADD)
  89 +
  90 +motion_blur_example_SOURCES = $(examples_src_dir)/motion-blur/motion-blur-example.cpp
  91 +motion_blur_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  92 +motion_blur_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  93 +motion_blur_example_LDADD = $(EXAMPLE_LDADD)
  94 +
  95 +motion_stretch_example_SOURCES = $(examples_src_dir)/motion-stretch/motion-stretch-example.cpp
  96 +motion_stretch_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  97 +motion_stretch_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  98 +motion_stretch_example_LDADD = $(EXAMPLE_LDADD)
  99 +
  100 +page_turn_view_example_SOURCES = $(examples_src_dir)/page-turn-view/page-turn-view-example.cpp
  101 +page_turn_view_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  102 +page_turn_view_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  103 +page_turn_view_example_LDADD = $(EXAMPLE_LDADD)
  104 +
  105 +shadow_bone_lighting_example_SOURCES = $(examples_src_dir)/shadows/shadow-bone-lighting-example.cpp
  106 +shadow_bone_lighting_example_CXXFLAGS = $(EXAMPLE_CXXFLAGS)
  107 +shadow_bone_lighting_example_DEPENDENCIES = $(EXAMPLE_DEPS)
  108 +shadow_bone_lighting_example_LDADD = $(EXAMPLE_LDADD)
... ...
com.samsung.dali-demo.manifest 0 → 100644
  1 +<manifest>
  2 + <define>
  3 + <domain name="com.samsung.dali-demo" />
  4 + <request>
  5 + <smack request="dali" type="rwxat" />
  6 + </request>
  7 + </define>
  8 + <assign>
  9 + <filesystem path="/usr/share/icons/com.samsung.dali-demo.png" label="_" />
  10 + </assign>
  11 + <request>
  12 + <domain name="com.samsung.dali-demo" />
  13 + </request>
  14 +</manifest>
... ...
com.samsung.dali-demo.rule 0 → 100644
  1 +com.samsung.dali-demo device::app_logging w
  2 +com.samsung.dali-demo system::homedir rwxat
  3 +com.samsung.dali-demo system::use_internet rwxat
  4 +com.samsung.dali-demo xorg rwxat
  5 +com.samsung.dali-demo isf rwxat
  6 +com.samsung.dali-demo dali rwxat
  7 +com.samsung.dali-demo ail::db rwxat
  8 +com.samsung.dali-demo system::vconf rwxat
  9 +com.samsung.dali-demo immvibed rwxat
  10 +com.samsung.dali-demo svi-data rwxat
  11 +com.samsung.dali-demo system::share rwxat
  12 +com.samsung.dali-demo system::media rwxat
  13 +com.samsung.dali-demo sound_server rwxat
  14 +com.samsung.dali-demo com.samsung.indicator rwxat
  15 +com.samsung.dali-demo com.samsung.cluster-home rwxat
  16 +com.samsung.dali-demo tts-server rx
  17 +com.samsung.dali-demo aul::launch rx
  18 +com.samsung.dali-demo system::vconf_inhouse rwxat
  19 +com.samsung.dali-demo system::vconf_system rwxat
  20 +com.samsung.dali-demo system::vconf_misc rwxat
  21 +com.samsung.dali-demo system::vconf_setting rwxat
  22 +e17 com.samsung.dali-demo rwxat
... ...
com.samsung.dali-demo.xml 0 → 100644
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<manifest xmlns="http://tizen.org/ns/packages" package="com.samsung.dali-demo" version="0.0.1" install-location="internal-only">
  3 +<!-- NOTE THAT ALL LEADING WHITESPACE IN THIS FILE MUST BE TABS, NOT SPACES. APPS WITH LEADING SPACES WILL SILENTLY FAIL TO RUN ON A TARGET DEVICE. -->
  4 +
  5 + <label>Dali Demo</label>
  6 + <author email="jonghyun.ho@samsung.com" href="www.samsung.com">Jonghyun Ho</author>
  7 + <description>DALi demo Application</description>
  8 +
  9 + <ui-application appid="com.samsung.dali-demo" exec="/opt/apps/com.samsung.dali-demo/bin/dali-demo" nodisplay="false" multiple="false" type="c++app" taskmanage="true">
  10 + <icon>/usr/share/icons/com.samsung.dali-demo.png</icon>
  11 + <label>DALi demo</label>
  12 + </ui-application>
  13 + <ui-application appid="hello-world.example" exec="/opt/apps/com.samsung.dali-demo/bin/hello-world.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  14 + <label>Hello World</label>
  15 + </ui-application>
  16 + <ui-application appid="page-turn-view.example" exec="/opt/apps/com.samsung.dali-demo/bin/page-turn-view.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  17 + <label>PageTurnView Example</label>
  18 + </ui-application>
  19 + <ui-application appid="blocks.example" exec="/opt/apps/com.samsung.dali-demo/bin/blocks.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  20 + <label>Blocks</label>
  21 + </ui-application>
  22 + <ui-application appid="bubble-effect.example" exec="/opt/apps/com.samsung.dali-demo/bin/bubble-effect.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  23 + <label>Bubble Effect</label>
  24 + </ui-application>
  25 + <ui-application appid="cluster.example" exec="/opt/apps/com.samsung.dali-demo/bin/cluster.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  26 + <label>Cluster example</label>
  27 + </ui-application>
  28 + <ui-application appid="cube-transition-effect.example" exec="/opt/apps/com.samsung.dali-demo/bin/cube-transition-effect.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  29 + <label>Cube transition effect</label>
  30 + </ui-application>
  31 + <ui-application appid="dissolve-effect.example" exec="/opt/apps/com.samsung.dali-demo/bin/dissolve-effect.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  32 + <label>Dissolve effect</label>
  33 + </ui-application>
  34 + <ui-application appid="magnifier.example" exec="/opt/apps/com.samsung.dali-demo/bin/magnifier.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  35 + <label>Magnifier</label>
  36 + </ui-application>
  37 + <ui-application appid="motion-blur.example" exec="/opt/apps/com.samsung.dali-demo/bin/motion-blur.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  38 + <label>Motion Blur</label>
  39 + </ui-application>
  40 + <ui-application appid="motion-stretch.example" exec="/opt/apps/com.samsung.dali-demo/bin/motion-stretch.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  41 + <label>Motion Stretch</label>
  42 + </ui-application>
  43 + <ui-application appid="shadow-bone-lighting.example" exec="/opt/apps/com.samsung.dali-demo/bin/shadow-bone-lighting.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  44 + <label>Shadows and Lights</label>
  45 + </ui-application>
  46 +</manifest>
... ...
demo/dali-demo.cpp 0 → 100644
  1 +//
  2 +// Copyright (c) 2014 Samsung Electronics Co., Ltd.
  3 +//
  4 +// Licensed under the Flora License, Version 1.0 (the License);
  5 +// you may not use this file except in compliance with the License.
  6 +// You may obtain a copy of the License at
  7 +//
  8 +// http://floralicense.org/license/
  9 +//
  10 +// Unless required by applicable law or agreed to in writing, software
  11 +// distributed under the License is distributed on an AS IS BASIS,
  12 +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +// See the License for the specific language governing permissions and
  14 +// limitations under the License.
  15 +//
  16 +
  17 +#include "dali-table-view.h"
  18 +
  19 +using namespace Dali;
  20 +
  21 +int main(int argc, char **argv)
  22 +{
  23 + Application app = Application::New(&argc, &argv);
  24 +
  25 + DaliTableView demo(app);
  26 +
  27 + demo.AddExample(Example("blocks.example", "Blocks"));
  28 + demo.AddExample(Example("cluster.example", "Cluster control"));
  29 + demo.AddExample(Example("cube-transition-effect.example", "Cube Transition"));
  30 + demo.AddExample(Example("dissolve-effect.example", "Dissolve Transition"));
  31 + demo.AddExample(Example("magnifier.example", "Magnifier"));
  32 + demo.AddExample(Example("motion-blur.example", "Motion Blur"));
  33 + demo.AddExample(Example("motion-stretch.example", "Motion Stretch"));
  34 + demo.AddExample(Example("page-turn-view.example", "Page Turn View"));
  35 + demo.AddExample(Example("shadow-bone-lighting.example", "Lights and shadows"));
  36 + demo.AddExample(Example("hello-world.example", "Hello World"));
  37 + app.MainLoop();
  38 +
  39 + return 0;
  40 +}
... ...
demo/dali-table-view.cpp 0 → 100644
  1 +//
  2 +// Copyright (c) 2014 Samsung Electronics Co., Ltd.
  3 +//
  4 +// Licensed under the Flora License, Version 1.0 (the License);
  5 +// you may not use this file except in compliance with the License.
  6 +// You may obtain a copy of the License at
  7 +//
  8 +// http://floralicense.org/license/
  9 +//
  10 +// Unless required by applicable law or agreed to in writing, software
  11 +// distributed under the License is distributed on an AS IS BASIS,
  12 +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +// See the License for the specific language governing permissions and
  14 +// limitations under the License.
  15 +//
  16 +
  17 +// CLASS HEADER
  18 +#include "dali-table-view.h"
  19 +
  20 +// EXTERNAL INCLUDES
  21 +#include <algorithm>
  22 +#include <sstream>
  23 +#include <aul.h>
  24 +
  25 +using namespace Dali;
  26 +using namespace Dali::Toolkit;
  27 +using namespace std;
  28 +
  29 +///////////////////////////////////////////////////////////////////////////////
  30 +
  31 +namespace
  32 +{
  33 +
  34 +const std::string BUTTON_BACKWARD( "Backward" );
  35 +const std::string BUTTON_FORWARD( "Forward" );
  36 +const std::string BUTTON_QUIT( "Quit" );
  37 +const std::string BUTTON_OK( "Ok" );
  38 +const std::string BUTTON_CANCEL( "Cancel" );
  39 +
  40 +const std::string DEFAULT_BACKGROUND_IMAGE_PATH( DALI_IMAGE_DIR "background-default.png" );
  41 +const std::string LOGO_PATH( DALI_IMAGE_DIR "dali-logo-small.png" );
  42 +const std::string DEFAULT_TOOLBAR_IMAGE_PATH( DALI_IMAGE_DIR "top-bar-demo.png" );
  43 +const std::string BUTTON_BACKGROUND(DALI_IMAGE_DIR "button-background.png");
  44 +const std::string TILE_BACKGROUND(DALI_IMAGE_DIR "item-background.png");
  45 +const std::string TILE_BACKGROUND_ALPHA(DALI_IMAGE_DIR "item-background-alpha.png");
  46 +
  47 +const float BUTTON_PRESS_ANIMATION_TIME = 0.25f; ///< Time to perform button scale effect.
  48 +const float ROTATE_ANIMATION_TIME = 0.5f; ///< Time to perform rotate effect.
  49 +const int MAX_PAGES = 256; ///< Maximum pages (arbitrary safety limit)
  50 +const int EXAMPLES_PER_ROW = 3;
  51 +const int ROWS_PER_PAGE = 3;
  52 +const int EXAMPLES_PER_PAGE = EXAMPLES_PER_ROW * ROWS_PER_PAGE;
  53 +const float TOP_ROW_HEIGHT = 35.0f;
  54 +const float BOTTOM_ROW_HEIGHT = 35.0f;
  55 +const int BOTTOM_PADDING_HEIGHT = 40;
  56 +const int LOGO_BOTTOM_PADDING_HEIGHT = 30;
  57 +const Vector3 TABLE_RELATIVE_SIZE(0.9f, 1.0f, 0.8f ); ///< TableView's relative size to the entire stage.
  58 +const float STENCIL_RELATIVE_SIZE = 1.0f;
  59 +
  60 +const float EFFECT_SNAP_DURATION = 0.66f; ///< Scroll Snap Duration for Effects
  61 +const float EFFECT_FLICK_DURATION = 0.5f; ///< Scroll Flick Duration for Effects
  62 +const Vector3 ANGLE_CUBE_PAGE_ROTATE(Math::PI * 0.5f, Math::PI * 0.5f, 0.0f);
  63 +
  64 +const int NUM_BACKGROUND_IMAGES = 20;
  65 +const float BACKGROUND_SWIPE_SCALE = 0.025f;
  66 +const float BACKGROUND_SPREAD_SCALE = 1.5f;
  67 +const float SCALE_MOD = 1000.0f * Math::PI * 2.0f;
  68 +const float SCALE_SPEED = 10.0f;
  69 +const float SCALE_SPEED_SIN = 0.1f;
  70 +
  71 +const unsigned int BACKGROUND_ANIMATION_DURATION = 15000; // 15 secs
  72 +
  73 +const float BACKGROUND_Z = -1000.0f;
  74 +const float BACKGROUND_SIZE_SCALE = 2.0f;
  75 +const Vector4 BACKGROUND_COLOR( 1.0f, 1.0f, 1.0f, 1.0f );
  76 +
  77 +
  78 +const std::string DEFAULT_TEXT_STYLE_FONT_FAMILY("HelveticaNeue");
  79 +const std::string DEFAULT_TEXT_STYLE_FONT_STYLE("Regular");
  80 +const Dali::PointSize DEFAULT_TEXT_STYLE_POINT_SIZE( 8.0f );
  81 +const Dali::TextStyle::Weight DEFAULT_TEXT_STYLE_WEIGHT(Dali::TextStyle::LIGHT);
  82 +const Dali::Vector4 DEFAULT_TEXT_STYLE_COLOR(0.0f, 0.75f, 1.0f, 1.0f);
  83 +
  84 +const std::string TABLE_TEXT_STYLE_FONT_FAMILY("HelveticaNeue");
  85 +const std::string TABLE_TEXT_STYLE_FONT_STYLE("Regular");
  86 +const Dali::PointSize TABLE_TEXT_STYLE_POINT_SIZE( 8.0f );
  87 +const Dali::TextStyle::Weight TABLE_TEXT_STYLE_WEIGHT(Dali::TextStyle::LIGHT);
  88 +const Dali::Vector4 TABLE_TEXT_STYLE_COLOR(0.0f, 0.0f, 0.0f, 1.0f);
  89 +
  90 +TextStyle GetDefaultTextStyle()
  91 +{
  92 + TextStyle textStyle;
  93 + textStyle.SetFontName(DEFAULT_TEXT_STYLE_FONT_FAMILY);
  94 + textStyle.SetFontStyle(DEFAULT_TEXT_STYLE_FONT_STYLE);
  95 + textStyle.SetFontPointSize(DEFAULT_TEXT_STYLE_POINT_SIZE);
  96 + textStyle.SetWeight(DEFAULT_TEXT_STYLE_WEIGHT);
  97 + textStyle.SetTextColor(DEFAULT_TEXT_STYLE_COLOR);
  98 + return textStyle;
  99 +}
  100 +
  101 +TextStyle GetTableTextStyle()
  102 +{
  103 + TextStyle textStyle;
  104 + textStyle.SetFontName(TABLE_TEXT_STYLE_FONT_FAMILY);
  105 + textStyle.SetFontStyle(TABLE_TEXT_STYLE_FONT_STYLE);
  106 + textStyle.SetFontPointSize(TABLE_TEXT_STYLE_POINT_SIZE);
  107 + textStyle.SetWeight(TABLE_TEXT_STYLE_WEIGHT);
  108 + textStyle.SetTextColor(TABLE_TEXT_STYLE_COLOR);
  109 + return textStyle;
  110 +}
  111 +
  112 +/**
  113 + * Creates the background image
  114 + */
  115 +ImageActor CreateBackground( std::string imagePath )
  116 +{
  117 + Image image = Image::New( imagePath );
  118 + ImageActor background = ImageActor::New( image );
  119 +
  120 + background.SetAnchorPoint( AnchorPoint::CENTER );
  121 + background.SetParentOrigin( ParentOrigin::CENTER );
  122 + background.SetZ( -1.0f );
  123 +
  124 + return background;
  125 +}
  126 +
  127 +// These values depend on the tile image
  128 +const float IMAGE_BORDER_LEFT = 11.0f;
  129 +const float IMAGE_BORDER_RIGHT = IMAGE_BORDER_LEFT;
  130 +const float IMAGE_BORDER_TOP = IMAGE_BORDER_LEFT;
  131 +const float IMAGE_BORDER_BOTTOM = IMAGE_BORDER_LEFT;
  132 +
  133 +/**
  134 + * TableViewVisibilityConstraint
  135 + */
  136 +struct TableViewVisibilityConstraint
  137 +{
  138 + bool operator()( const bool& current,
  139 + const PropertyInput& pagePositionProperty,
  140 + const PropertyInput& pageSizeProperty )
  141 + {
  142 + // Only the tableview in the current page should be visible.
  143 + const Vector3& pagePosition = pagePositionProperty.GetVector3();
  144 + const Vector3& pageSize = pageSizeProperty.GetVector3();
  145 + return fabsf( pagePosition.x ) < pageSize.x;
  146 + }
  147 +};
  148 +
  149 +/**
  150 + * Constraint to wrap an actor in y that is moving vertically
  151 + */
  152 +Vector3 ShapeMovementConstraint( const Vector3& current,
  153 + const PropertyInput& shapeSizeProperty,
  154 + const PropertyInput& parentSizeProperty )
  155 +{
  156 + const Vector3& shapeSize = shapeSizeProperty.GetVector3();
  157 + const Vector3& parentSize = parentSizeProperty.GetVector3();
  158 +
  159 + Vector3 pos( current );
  160 + if( pos.y + shapeSize.y * 0.5f < -parentSize.y * 0.5f )
  161 + {
  162 + pos.y += parentSize.y + shapeSize.y;
  163 + }
  164 +
  165 + return pos;
  166 +}
  167 +
  168 +/**
  169 + * Constraint to return a bool value based on the alpha channel value
  170 + */
  171 +bool AlphaVisibleConstraint( bool current, const PropertyInput& alphaProperty )
  172 +{
  173 + Vector4 colour = alphaProperty.GetVector4();
  174 + return ( colour.a > Math::MACHINE_EPSILON_10000 );
  175 +}
  176 +
  177 +/**
  178 + * Constraint to return a position for the background based on the scroll value
  179 + */
  180 +struct AnimScrollConstraint
  181 +{
  182 +public:
  183 +
  184 + AnimScrollConstraint( const Vector3& initialPos, float scale )
  185 + : mInitialPos( initialPos ),
  186 + mScale( scale )
  187 + {
  188 +
  189 + }
  190 +
  191 + Vector3 operator()( const Vector3& current, const PropertyInput& scrollProperty )
  192 + {
  193 + float scrollPos = scrollProperty.GetFloat();
  194 +
  195 + return mInitialPos + Vector3( -scrollPos * mScale, 0.0f, 0.0f );
  196 + }
  197 +
  198 +private:
  199 + Vector3 mInitialPos;
  200 + float mScale;
  201 +};
  202 +
  203 +/**
  204 + * Constraint to return a tracked world position added to the constant local position
  205 + */
  206 +struct TranslateLocalConstraint
  207 +{
  208 +public:
  209 +
  210 + TranslateLocalConstraint( const Vector3& localPos )
  211 + : mLocalPos( localPos )
  212 + {
  213 + }
  214 +
  215 + Vector3 operator()( const Vector3& current, const PropertyInput& pagePosProperty )
  216 + {
  217 + Vector3 worldPos = pagePosProperty.GetVector3();
  218 +
  219 + return ( worldPos + mLocalPos );
  220 + }
  221 +
  222 +private:
  223 + Vector3 mLocalPos;
  224 +};
  225 +
  226 +
  227 +bool CompareByTitle( const Example& lhs, const Example& rhs )
  228 +{
  229 + return lhs.title < rhs.title;
  230 +}
  231 +
  232 +} // namespace
  233 +
  234 +DaliTableView::DaliTableView( Application& application )
  235 + : mApplication( application ),
  236 + mScrolling( false ),
  237 + mBackgroundImagePath( DEFAULT_BACKGROUND_IMAGE_PATH ),
  238 + mSortAlphabetically( false ),
  239 + mBackgroundAnimsPlaying( false )
  240 +{
  241 + application.InitSignal().Connect( this, &DaliTableView::Initialize );
  242 +}
  243 +
  244 +DaliTableView::~DaliTableView()
  245 +{
  246 +}
  247 +
  248 +void DaliTableView::AddExample( Example example )
  249 +{
  250 + mExampleList.push_back( example );
  251 + mExampleMap[ example.name ] = example;
  252 +}
  253 +
  254 +void DaliTableView::SetBackgroundPath( std::string imagePath )
  255 +{
  256 + mBackgroundImagePath = imagePath;
  257 +}
  258 +
  259 +void DaliTableView::SortAlphabetically( bool sortAlphabetically )
  260 +{
  261 + mSortAlphabetically = sortAlphabetically;
  262 +}
  263 +
  264 +void DaliTableView::Initialize( Application& application )
  265 +{
  266 + Stage::GetCurrent().KeyEventSignal().Connect( this, &DaliTableView::OnKeyEvent );
  267 +
  268 + Vector2 stageSize = Stage::GetCurrent().GetSize();
  269 +
  270 + // Background
  271 + mBackground = CreateBackground( mBackgroundImagePath );
  272 + // set same size as parent actor
  273 + mBackground.SetSize( stageSize );
  274 + Stage::GetCurrent().Add( mBackground );
  275 +
  276 + // Render entire content as overlays, as is all on same 2D plane.
  277 + mRootActor = TableView::New( 4, 1 );
  278 + mRootActor.SetAnchorPoint( AnchorPoint::CENTER );
  279 + mRootActor.SetParentOrigin( ParentOrigin::CENTER );
  280 + mRootActor.SetFixedHeight( 3, BOTTOM_PADDING_HEIGHT );
  281 + Stage::GetCurrent().Add( mRootActor );
  282 +
  283 + // Toolbar at top
  284 + CreateToolbar( mRootActor, std::string(), DEFAULT_TOOLBAR_IMAGE_PATH );
  285 +
  286 + // Add logo
  287 + mLogo = CreateLogo( LOGO_PATH );
  288 + Alignment alignment = Alignment::New();
  289 + alignment.Add(mLogo);
  290 + mRootActor.AddChild( alignment, TableView::CellPosition( 1, 0 ) );
  291 +
  292 + // scrollview occupying the majority of the screen
  293 + mScrollView = ScrollView::New();
  294 +
  295 + mScrollView.SetAnchorPoint( AnchorPoint::CENTER );
  296 + mScrollView.SetParentOrigin( ParentOrigin::CENTER );
  297 + mScrollView.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::RelativeToConstraint( TABLE_RELATIVE_SIZE ) ) );
  298 + mScrollView.SetAxisAutoLock( true );
  299 + mScrollView.ScrollCompletedSignal().Connect( this, &DaliTableView::OnScrollComplete );
  300 + mScrollView.ScrollStartedSignal().Connect( this, &DaliTableView::OnScrollStart );
  301 + mScrollView.TouchedSignal().Connect( this, &DaliTableView::OnScrollTouched );
  302 +
  303 + mScrollViewLayer = Layer::New();
  304 + mScrollViewLayer.SetAnchorPoint( AnchorPoint::CENTER );
  305 + mScrollViewLayer.SetParentOrigin( ParentOrigin::CENTER );
  306 + mScrollViewLayer.SetSize( stageSize );
  307 + mScrollViewLayer.Add( mScrollView );
  308 + mRootActor.AddChild( mScrollViewLayer, TableView::CellPosition( 2, 0 ) );
  309 +
  310 + // Setup the scenegraph
  311 + // 1) Add scroll view effect and setup constraints on pages
  312 + ApplyScrollViewEffect();
  313 +
  314 + // 2) Add pages and tiles
  315 + Populate();
  316 +
  317 + // 3) Populate scrollview with background so constraints on background layers can work with scrollview
  318 + SetupBackground( mScrollView, stageSize );
  319 +
  320 + // 4) Remove constraints for inner cube effect
  321 + for( TableViewListIter pageIter = mTableViewList.begin(); pageIter != mTableViewList.end(); ++pageIter )
  322 + {
  323 + TableView page = *pageIter;
  324 +
  325 + unsigned int numChildren = page.GetChildCount();
  326 + Actor pageActor = page;
  327 + for( unsigned int i=0; i<numChildren; ++i)
  328 + {
  329 + // Remove old effect's manual constraints.
  330 + Actor child = pageActor.GetChildAt(i);
  331 + if( child )
  332 + {
  333 + child.RemoveConstraints();
  334 + }
  335 + }
  336 + }
  337 +
  338 + // Set initial orientation
  339 + unsigned int degrees = application.GetOrientation().GetDegrees();
  340 + Rotate( degrees );
  341 +
  342 + Dali::Window winHandle = application.GetWindow();
  343 + winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT );
  344 + winHandle.RemoveAvailableOrientation( Dali::Window::LANDSCAPE );
  345 + winHandle.AddAvailableOrientation( Dali::Window::PORTRAIT_INVERSE );
  346 + winHandle.RemoveAvailableOrientation( Dali::Window::LANDSCAPE_INVERSE );
  347 +
  348 + Dali::Orientation orientation = winHandle.GetOrientation();
  349 + orientation.ChangedSignal().Connect( this, &DaliTableView::OrientationChanged );
  350 +
  351 + winHandle.ShowIndicator( false );
  352 +
  353 + //
  354 + mAnimationTimer = Timer::New( BACKGROUND_ANIMATION_DURATION );
  355 + mAnimationTimer.TickSignal().Connect( this, &DaliTableView::PauseBackgroundAnimation );
  356 + mAnimationTimer.Start();
  357 + mBackgroundAnimsPlaying = true;
  358 +
  359 + KeyboardFocusManager::Get().PreFocusChangeSignal().Connect( this, &DaliTableView::OnKeyboardPreFocusChange );
  360 + KeyboardFocusManager::Get().FocusedActorActivatedSignal().Connect( this, &DaliTableView::OnFocusedActorActivated );
  361 +}
  362 +
  363 +void DaliTableView::CreateToolbar( TableView root, const std::string& title, const std::string& toolbarImagePath,
  364 + const ViewStyle& style )
  365 +{
  366 + // Create default ToolBar
  367 + Dali::Stage stage = Dali::Stage::GetCurrent();
  368 + Dali::Vector2 dpi = stage.GetDpi();
  369 +
  370 + // Create toolbar layer.
  371 + Dali::Layer toolBarLayer = Dali::Layer::New();
  372 + toolBarLayer.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
  373 + toolBarLayer.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
  374 + toolBarLayer.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::SourceWidthFixedHeight( style.mToolBarHeight * dpi.y / style.mDpi ) ) );
  375 + float toolBarLayerHeight = style.mToolBarHeight * dpi.y / style.mDpi;
  376 + toolBarLayer.SetSize( 0.0f, toolBarLayerHeight );
  377 +
  378 + // Add tool bar layer to the view.
  379 + root.AddChild( toolBarLayer, TableView::CellPosition( 0, 0 ) );
  380 + root.SetFixedHeight( 0, toolBarLayerHeight );
  381 +
  382 + // Raise tool bar layer to the top.
  383 + toolBarLayer.RaiseToTop();
  384 +
  385 + // Tool bar
  386 + Dali::Image image = Dali::Image::New( toolbarImagePath );
  387 + Dali::ImageActor toolBarBackground = Dali::ImageActor::New( image );
  388 + Dali::Toolkit::ToolBar toolBar = Dali::Toolkit::ToolBar::New();
  389 + toolBar.SetBackground( toolBarBackground );
  390 + toolBar.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
  391 + toolBar.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
  392 + toolBar.ApplyConstraint( Dali::Constraint::New<Dali::Vector3>( Dali::Actor::SIZE, Dali::ParentSource( Dali::Actor::SIZE ), Dali::EqualToConstraint() ) );
  393 + toolBar.SetSize( 0.0f, style.mToolBarHeight * dpi.y / style.mDpi );
  394 + toolBarBackground.SetZ( -1.0f );
  395 +
  396 + // Add the tool bar to the too bar layer.
  397 + toolBarLayer.Add( toolBar );
  398 +
  399 + Dali::Font font = Dali::Font::New();
  400 +
  401 + // Tool bar text.
  402 + if( !title.empty() )
  403 + {
  404 + Dali::Toolkit::TextView titleActor = Dali::Toolkit::TextView::New();
  405 + titleActor.SetName( "ToolbarTitle" );
  406 + titleActor.SetText( title );
  407 + titleActor.SetSize( font.MeasureText( title ) );
  408 + titleActor.SetStyleToCurrentText( GetDefaultTextStyle() );
  409 + titleActor.SetZ( 1.0f );
  410 +
  411 + // Add title to the tool bar.
  412 + const float padding( style.mToolBarPadding * dpi.x / style.mDpi );
  413 + toolBar.AddControl( titleActor, style.mToolBarTitlePercentage, Dali::Toolkit::Alignment::HorizontalCenter,
  414 + Dali::Toolkit::Alignment::Padding( padding, padding, padding, padding ) );
  415 + }
  416 +}
  417 +
  418 +void DaliTableView::Populate()
  419 +{
  420 + const Vector2 stageSize = Stage::GetCurrent().GetSize();
  421 +
  422 + const Size demoTileSize( 0.25f * stageSize.width, 0.25f * stageSize.height );
  423 +
  424 + mTotalPages = ( mExampleList.size() + EXAMPLES_PER_PAGE - 1 ) / EXAMPLES_PER_PAGE;
  425 +
  426 + // Populate ScrollView.
  427 + if( mExampleList.size() > 0 )
  428 + {
  429 + if( mSortAlphabetically )
  430 + {
  431 + sort( mExampleList.begin(), mExampleList.end(), CompareByTitle );
  432 + }
  433 +
  434 + unsigned int exampleCount = 0;
  435 + ExampleListConstIter iter = mExampleList.begin();
  436 + for( int t = 0; t < mTotalPages; t++ )
  437 + {
  438 + // Create Table. (contains up to 9 Examples)
  439 + TableView tableView = TableView::New( 4, 3 );
  440 + // Add tableView to container.
  441 + mScrollView.Add( tableView );
  442 + ApplyEffectToPage( tableView, TABLE_RELATIVE_SIZE );
  443 +
  444 + tableView.SetAnchorPoint( AnchorPoint::CENTER );
  445 + tableView.SetParentOrigin( ParentOrigin::CENTER );
  446 + // 2 pixels of padding
  447 + tableView.SetCellPadding( Size( 2.0f, 2.0f ) );
  448 +
  449 + Constraint constraint = Constraint::New<Vector3>( Actor::SCALE,
  450 + LocalSource( Actor::SIZE ),
  451 + ParentSource( Actor::SIZE ),
  452 + ScaleToFitConstraint() );
  453 + tableView.ApplyConstraint(constraint);
  454 +
  455 + // Apply visibility constraint to table view
  456 + Constraint visibleConstraint = Constraint::New< bool >( Actor::VISIBLE,
  457 + LocalSource( Actor::POSITION ),
  458 + ParentSource( Actor::SIZE ),
  459 + TableViewVisibilityConstraint() );
  460 + visibleConstraint.SetRemoveAction( Constraint::Discard );
  461 + tableView.ApplyConstraint( visibleConstraint );
  462 +
  463 + // add cells to table
  464 + for( int y = 0; y < ROWS_PER_PAGE; y++ )
  465 + {
  466 + for( int x = 0; x < EXAMPLES_PER_ROW; x++ )
  467 + {
  468 + const Example& example = ( *iter );
  469 +
  470 + Actor tile = CreateTile( example.name, example.title, demoTileSize, true );
  471 + FocusManager focusManager = FocusManager::Get();
  472 + focusManager.SetFocusOrder( tile, ++exampleCount );
  473 + focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_LABEL,
  474 + example.title );
  475 + focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_TRAIT, "Tile" );
  476 + focusManager.SetAccessibilityAttribute( tile, Dali::Toolkit::FocusManager::ACCESSIBILITY_HINT,
  477 + "You can run this example" );
  478 +
  479 + tableView.AddChild( tile, TableView::CellPosition( y, x ) );
  480 + iter++;
  481 +
  482 + if( iter == mExampleList.end() )
  483 + {
  484 + break;
  485 + }
  486 + }
  487 + if( iter == mExampleList.end() )
  488 + {
  489 + break;
  490 + }
  491 + }
  492 +
  493 + // last row is thin.
  494 + tableView.SetFixedHeight( 3, BOTTOM_ROW_HEIGHT );
  495 +
  496 + std::stringstream out;
  497 + out << ( t + 1 ) << " of " << mTotalPages;
  498 + Actor pageNumberText = CreateTile( "", out.str(), Size( 0.8f * stageSize.width, BOTTOM_ROW_HEIGHT ), false );
  499 +
  500 + pageNumberText.ApplyConstraint( Constraint::New< Vector3 >( Actor::POSITION, Source( tableView, Actor::WORLD_POSITION),
  501 + TranslateLocalConstraint( Vector3( 0.0f, stageSize.y * 0.4f, 0.0f ) ) ) );
  502 + pageNumberText.ApplyConstraint( Constraint::New< Quaternion >( Actor::ROTATION, Source( tableView, Actor::WORLD_ROTATION ), EqualToConstraint() ) );
  503 + pageNumberText.ApplyConstraint( Constraint::New< Vector4 >( Actor::COLOR, Source( tableView, Actor::COLOR ), EqualToConstraint() ) );
  504 +
  505 + Stage::GetCurrent().Add( pageNumberText );
  506 +
  507 + // Set tableview position
  508 + Vector3 tableViewPos( stageSize.x * TABLE_RELATIVE_SIZE.x * t, 0.0f, 0.0f );
  509 + tableView.SetPosition( tableViewPos );
  510 +
  511 + mTableViewList.push_back( tableView );
  512 +
  513 + if( iter == mExampleList.end() )
  514 + {
  515 + break;
  516 + }
  517 + }
  518 + }
  519 +
  520 + // Update Ruler info.
  521 + mScrollRulerX = new FixedRuler( stageSize.width * TABLE_RELATIVE_SIZE.x );
  522 + mScrollRulerY = new DefaultRuler();
  523 + mScrollRulerX->SetDomain( RulerDomain( 0.0f, mTotalPages * stageSize.width * TABLE_RELATIVE_SIZE.x, true ) );
  524 + mScrollRulerY->Disable();
  525 + mScrollView.SetRulerX( mScrollRulerX );
  526 + mScrollView.SetRulerY( mScrollRulerY );
  527 +}
  528 +
  529 +void DaliTableView::OrientationChanged( Orientation orientation )
  530 +{
  531 + // TODO: Implement if orientation change required
  532 +}
  533 +
  534 +void DaliTableView::Rotate( unsigned int degrees )
  535 +{
  536 + // Resize the root actor
  537 + Vector2 stageSize = Stage::GetCurrent().GetSize();
  538 + Vector3 targetSize( stageSize.x, stageSize.y, 1.0f );
  539 +
  540 + if( degrees == 90 || degrees == 270 )
  541 + {
  542 + targetSize = Vector3( stageSize.y, stageSize.x, 1.0f );
  543 + }
  544 +
  545 + if( mRotateAnimation )
  546 + {
  547 + mRotateAnimation.Stop();
  548 + mRotateAnimation.Clear();
  549 + }
  550 +
  551 + mRotateAnimation = Animation::New( ROTATE_ANIMATION_TIME );
  552 + mRotateAnimation.RotateTo( mRootActor, Degree( 360 - degrees ), Vector3::ZAXIS, AlphaFunctions::EaseOut );
  553 + mRotateAnimation.Resize( mRootActor, targetSize, AlphaFunctions::EaseOut );
  554 + mRotateAnimation.Play();
  555 +}
  556 +
  557 +Actor DaliTableView::CreateTile( const string& name, const string& title, const Size& parentSize, bool addBackground )
  558 +{
  559 + Actor tile = Actor::New();
  560 + tile.SetName( name );
  561 + tile.SetAnchorPoint( AnchorPoint::CENTER );
  562 + tile.SetParentOrigin( ParentOrigin::CENTER );
  563 +
  564 + // make the tile 100% of parent
  565 + tile.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
  566 +
  567 + Actor content = Actor::New();
  568 + content.SetAnchorPoint( AnchorPoint::CENTER );
  569 + content.SetParentOrigin( ParentOrigin::CENTER );
  570 + content.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
  571 + tile.Add(content);
  572 +
  573 + // create background image
  574 + if( addBackground )
  575 + {
  576 + Image bg = Image::New( TILE_BACKGROUND );
  577 + ImageActor image = ImageActor::New( bg );
  578 + image.SetAnchorPoint( AnchorPoint::CENTER );
  579 + image.SetParentOrigin( ParentOrigin::CENTER );
  580 + // make the image 100% of tile
  581 + image.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
  582 + // move image back to get text appear in front
  583 + image.SetZ( -1 );
  584 + image.SetStyle( ImageActor::STYLE_NINE_PATCH );
  585 + image.SetNinePatchBorder( Vector4( IMAGE_BORDER_LEFT, IMAGE_BORDER_TOP, IMAGE_BORDER_RIGHT, IMAGE_BORDER_BOTTOM ) );
  586 +
  587 + content.Add( image );
  588 +
  589 + // Add stencil
  590 + ImageActor stencil = NewStencilImage();
  591 + stencil.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
  592 + image.Add( stencil );
  593 + }
  594 +
  595 + TextView text = TextView::New( title );
  596 + text.SetAnchorPoint( AnchorPoint::CENTER );
  597 + text.SetParentOrigin( ParentOrigin::CENTER );
  598 + text.SetWidthExceedPolicy( Toolkit::TextView::ShrinkToFit );
  599 + text.SetMultilinePolicy( Toolkit::TextView::SplitByWord );
  600 + text.SetLineJustification( Toolkit::TextView::Center );
  601 + text.SetTextAlignment( Toolkit::Alignment::Type( Alignment::HorizontalCenter | Alignment::VerticalCenter ) );
  602 + text.SetColor( Color::WHITE );
  603 + text.SetZ( 1 );
  604 + // make the text 90% of tile
  605 + text.SetSize( 0.9f * parentSize.width, 0.9f * parentSize.height );
  606 + text.SetStyleToCurrentText( GetTableTextStyle() );
  607 + text.SetSnapshotModeEnabled( false );
  608 + content.Add( text );
  609 +
  610 + // Set the tile to be keyboard focusable
  611 + tile.SetKeyboardFocusable(true);
  612 +
  613 + // connect to the touch events
  614 + tile.TouchedSignal().Connect( this, &DaliTableView::OnTilePressed );
  615 +
  616 + return tile;
  617 +}
  618 +
  619 +ImageActor DaliTableView::NewStencilImage()
  620 +{
  621 + Image alpha = Image::New( TILE_BACKGROUND_ALPHA );
  622 +
  623 + ImageActor stencilActor = ImageActor::New( alpha );
  624 + stencilActor.SetStyle( ImageActor::STYLE_NINE_PATCH );
  625 + stencilActor.SetNinePatchBorder( Vector4( IMAGE_BORDER_LEFT, IMAGE_BORDER_TOP, IMAGE_BORDER_RIGHT, IMAGE_BORDER_BOTTOM ) );
  626 +
  627 + stencilActor.SetParentOrigin( ParentOrigin::CENTER );
  628 + stencilActor.SetAnchorPoint( AnchorPoint::CENTER );
  629 + stencilActor.SetDrawMode( DrawMode::STENCIL );
  630 +
  631 + Dali::ShaderEffect shaderEffect = AlphaDiscardEffect::New();
  632 + stencilActor.SetShaderEffect( shaderEffect );
  633 +
  634 + return stencilActor;
  635 +}
  636 +
  637 +bool DaliTableView::OnTilePressed( Actor actor, const TouchEvent& event )
  638 +{
  639 + bool consumed = false;
  640 +
  641 + const TouchPoint& point = event.GetPoint( 0 );
  642 + if( TouchPoint::Down == point.state )
  643 + {
  644 + mPressedActor = actor;
  645 + consumed = true;
  646 + }
  647 +
  648 + // A button press is only valid if the Down & Up events
  649 + // both occurred within the button.
  650 + if( ( TouchPoint::Up == point.state ) &&
  651 + ( mPressedActor == actor ) )
  652 + {
  653 + std::string name = actor.GetName();
  654 + ExampleMapConstIter iter = mExampleMap.find( name );
  655 +
  656 + FocusManager focusManager = FocusManager::Get();
  657 +
  658 + if( iter != mExampleMap.end() )
  659 + {
  660 + // ignore Example button presses when scrolling or button animating.
  661 + if( ( !mScrolling ) && ( !mPressedAnimation ) )
  662 + {
  663 + // do nothing, until pressed animation finished.
  664 + consumed = true;
  665 + }
  666 + }
  667 +
  668 + if( consumed )
  669 + {
  670 + mPressedAnimation = Animation::New( BUTTON_PRESS_ANIMATION_TIME );
  671 + mPressedAnimation.SetDestroyAction( Animation::Discard );
  672 +
  673 + // scale the content actor within the Tile, as to not affect the placement within the Table.
  674 + Actor content = actor.GetChildAt(0);
  675 + mPressedAnimation.ScaleTo( content, Vector3( 0.9f, 0.9f, 1.0f ), AlphaFunctions::EaseInOut, 0.0f,
  676 + BUTTON_PRESS_ANIMATION_TIME * 0.5f );
  677 + mPressedAnimation.ScaleTo( content, Vector3::ONE, AlphaFunctions::EaseInOut, BUTTON_PRESS_ANIMATION_TIME * 0.5f,
  678 + BUTTON_PRESS_ANIMATION_TIME * 0.5f );
  679 + mPressedAnimation.Play();
  680 + mPressedAnimation.FinishedSignal().Connect( this, &DaliTableView::OnPressedAnimationFinished );
  681 + }
  682 + }
  683 + return consumed;
  684 +}
  685 +
  686 +void DaliTableView::OnPressedAnimationFinished( Dali::Animation& source )
  687 +{
  688 + mPressedAnimation.Reset();
  689 + if( mPressedActor )
  690 + {
  691 + std::string name = mPressedActor.GetName();
  692 + ExampleMapConstIter iter = mExampleMap.find( name );
  693 +
  694 + if( iter == mExampleMap.end() )
  695 + {
  696 + if( name == BUTTON_QUIT )
  697 + {
  698 + // Move focus to the OK button
  699 + FocusManager focusManager = FocusManager::Get();
  700 +
  701 + // Enable the group mode and wrap mode
  702 + focusManager.SetGroupMode( true );
  703 + focusManager.SetWrapMode( true );
  704 + }
  705 + }
  706 + else
  707 + {
  708 + const Example& example( iter->second );
  709 + aul_open_app( example.name.c_str() );
  710 + }
  711 + mPressedActor.Reset();
  712 + }
  713 +}
  714 +
  715 +void DaliTableView::OnScrollStart( const Dali::Vector3& position )
  716 +{
  717 + mScrolling = true;
  718 +
  719 + PlayAnimation();
  720 +}
  721 +
  722 +void DaliTableView::OnScrollComplete( const Dali::Vector3& position )
  723 +{
  724 + mScrolling = false;
  725 +
  726 + // move focus to 1st item of new page
  727 + FocusManager focusManager = FocusManager::Get();
  728 + focusManager.SetCurrentFocusActor(mTableViewList[mScrollView.GetCurrentPage()].GetChildAt(TableView::CellPosition(1, 0)) );
  729 +
  730 +}
  731 +
  732 +bool DaliTableView::OnScrollTouched( Actor actor, const TouchEvent& event )
  733 +{
  734 + const TouchPoint& point = event.GetPoint( 0 );
  735 + if( TouchPoint::Down == point.state )
  736 + {
  737 + mPressedActor = actor;
  738 + }
  739 +
  740 + return false;
  741 +}
  742 +
  743 +void DaliTableView::ApplyScrollViewEffect()
  744 +{
  745 + // Remove old effect if exists.
  746 +
  747 + if( mScrollViewEffect )
  748 + {
  749 + mScrollView.RemoveEffect( mScrollViewEffect );
  750 + }
  751 +
  752 + // Just one effect for now
  753 + SetupInnerPageCubeEffect();
  754 +
  755 + mScrollView.ApplyEffect( mScrollViewEffect );
  756 +}
  757 +
  758 +void DaliTableView::SetupInnerPageCubeEffect()
  759 +{
  760 + ScrollViewCustomEffect customEffect;
  761 + mScrollViewEffect = customEffect = ScrollViewCustomEffect::New();
  762 + mScrollView.SetScrollSnapDuration( EFFECT_SNAP_DURATION );
  763 + mScrollView.SetScrollFlickDuration( EFFECT_FLICK_DURATION );
  764 + mScrollView.SetScrollSnapAlphaFunction( AlphaFunctions::EaseOutBack );
  765 + mScrollView.SetScrollFlickAlphaFunction( AlphaFunctions::EaseOutBack );
  766 + mScrollView.RemoveConstraintsFromChildren();
  767 +
  768 + customEffect.SetPageSpacing( Vector2( 30.0f, 30.0f ) );
  769 + customEffect.SetAngledOriginPageRotation( ANGLE_CUBE_PAGE_ROTATE );
  770 + customEffect.SetSwingAngle( ANGLE_CUBE_PAGE_ROTATE.x, Vector3( 0, -1, 0 ) );
  771 + customEffect.SetOpacityThreshold( 0.5f ); // Make fade out on edges
  772 +}
  773 +
  774 +void DaliTableView::ApplyEffectToPage( Actor page, const Vector3& tableRelativeSize )
  775 +{
  776 + page.RemoveConstraints();
  777 +
  778 + Constraint constraint = Constraint::New<Vector3>( Actor::SCALE,
  779 + LocalSource( Actor::SIZE ),
  780 + ParentSource( Actor::SIZE ),
  781 + ScaleToFitConstraint() );
  782 + page.ApplyConstraint(constraint);
  783 +
  784 + ApplyCustomEffectToPage( page );
  785 +}
  786 +
  787 +void DaliTableView::ApplyCustomEffectToPage( Actor page )
  788 +{
  789 + ScrollViewCustomEffect customEffect = ScrollViewCustomEffect::DownCast( mScrollViewEffect );
  790 + Vector2 vStageSize( Stage::GetCurrent().GetSize() );
  791 + customEffect.ApplyToPage( page, Vector3( vStageSize.x, vStageSize.y, 1.0f ) );
  792 +}
  793 +
  794 +void DaliTableView::OnKeyEvent( const KeyEvent& event )
  795 +{
  796 + if( event.state == KeyEvent::Down )
  797 + {
  798 + if ( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
  799 + {
  800 + mApplication.Quit();
  801 + }
  802 + }
  803 +}
  804 +
  805 +Actor CreateBackgroundActor( const Vector2& size )
  806 +{
  807 + Actor layer = Actor::New();
  808 + layer.SetAnchorPoint( AnchorPoint::CENTER );
  809 + layer.SetParentOrigin( ParentOrigin::CENTER );
  810 + layer.SetSize( size );
  811 + return layer;
  812 +}
  813 +
  814 +void DaliTableView::SetupBackground( Actor addToLayer, const Vector2& size )
  815 +{
  816 + // Create distance field shape
  817 + BitmapImage distanceField;
  818 + Size imageSize( 512, 512 );
  819 + CreateShapeImage( CIRCLE, imageSize, distanceField );
  820 +
  821 + // Create layers
  822 + Actor backgroundAnimLayer0 = CreateBackgroundActor( size );
  823 + Actor backgroundAnimLayer1 = CreateBackgroundActor( size );
  824 + Actor backgroundAnimLayer2 = CreateBackgroundActor( size );
  825 +
  826 + // Add constraints
  827 + Constraint animConstraint0 = Constraint::New < Vector3 > ( Actor::POSITION,
  828 + Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_X_PROPERTY_NAME ) ),
  829 + AnimScrollConstraint( backgroundAnimLayer0.GetCurrentPosition(), 0.75f ) );
  830 + backgroundAnimLayer0.ApplyConstraint( animConstraint0 );
  831 +
  832 + Constraint animConstraint1 = Constraint::New < Vector3 > ( Actor::POSITION,
  833 + Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_X_PROPERTY_NAME ) ),
  834 + AnimScrollConstraint( backgroundAnimLayer1.GetCurrentPosition(), 0.5f ) );
  835 + backgroundAnimLayer1.ApplyConstraint( animConstraint1 );
  836 +
  837 + Constraint animConstraint2 = Constraint::New < Vector3 > ( Actor::POSITION,
  838 + Source( mScrollView, mScrollView.GetPropertyIndex( ScrollView::SCROLL_X_PROPERTY_NAME ) ),
  839 + AnimScrollConstraint( backgroundAnimLayer2.GetCurrentPosition(), 0.25f ) );
  840 + backgroundAnimLayer2.ApplyConstraint( animConstraint2 );
  841 +
  842 + // Background
  843 + ImageActor layer = Dali::Toolkit::CreateSolidColorActor( BACKGROUND_COLOR );
  844 + layer.SetAnchorPoint( AnchorPoint::CENTER );
  845 + layer.SetParentOrigin( ParentOrigin::CENTER );
  846 + layer.SetSize( size * BACKGROUND_SIZE_SCALE );
  847 + layer.SetZ( BACKGROUND_Z );
  848 + layer.SetPositionInheritanceMode( DONT_INHERIT_POSITION );
  849 +
  850 + addToLayer.Add( layer );
  851 +
  852 + // Parent the layers
  853 + addToLayer.Add( backgroundAnimLayer0 );
  854 + addToLayer.Add( backgroundAnimLayer1 );
  855 + addToLayer.Add( backgroundAnimLayer2 );
  856 +
  857 + // Add all the children
  858 + AddBackgroundActors( backgroundAnimLayer0, NUM_BACKGROUND_IMAGES / 3, distanceField, size );
  859 + AddBackgroundActors( backgroundAnimLayer1, NUM_BACKGROUND_IMAGES / 3, distanceField, size );
  860 + AddBackgroundActors( backgroundAnimLayer2, NUM_BACKGROUND_IMAGES / 3, distanceField, size );
  861 +}
  862 +
  863 +void DaliTableView::AddBackgroundActors( Actor layer, int count, BitmapImage distanceField, const Dali::Vector2& size )
  864 +{
  865 + for( int i = 0; i < count; ++i )
  866 + {
  867 + float randSize = Random::Range( 10.0f, 400.0f );
  868 + Vector4 randColour( 0.0f, Random::Range( 0.0f, 0.75f ), 1.0f, Random::Range( 0.3f, 0.6f ));
  869 +
  870 + ImageActor dfActor = ImageActor::New( distanceField );
  871 + mBackgroundActors.push_back( dfActor );
  872 + dfActor.SetSize( Vector2( randSize, randSize ) );
  873 + dfActor.SetParentOrigin( ParentOrigin::CENTER );
  874 +
  875 + Toolkit::DistanceFieldEffect effect = Toolkit::DistanceFieldEffect::New();
  876 + dfActor.SetShaderEffect( effect );
  877 + dfActor.SetColor( randColour );
  878 + effect.SetOutlineParams( Vector2( 0.55f, 0.00f ) );
  879 + effect.SetSmoothingEdge( 0.5f );
  880 + layer.Add( dfActor );
  881 +
  882 + // Setup animation
  883 + Vector3 actorPos(
  884 + Random::Range( -size.x * 0.5f * BACKGROUND_SPREAD_SCALE, size.x * 0.5f * BACKGROUND_SPREAD_SCALE ),
  885 + Random::Range( -size.y * 0.5f - randSize, size.y * 0.5f + randSize ),
  886 + Random::Range(-1.0f, 0.0f) );
  887 + dfActor.SetPosition( actorPos );
  888 + dfActor.SetSortModifier(size.x * 0.7f);
  889 +
  890 + Constraint movementConstraint = Constraint::New < Vector3 > ( Actor::POSITION,
  891 + LocalSource( Actor::SIZE ),
  892 + ParentSource( Actor::SIZE ),
  893 + ShapeMovementConstraint );
  894 + dfActor.ApplyConstraint( movementConstraint );
  895 +
  896 + // Kickoff animation
  897 + Animation animation = Animation::New( Random::Range( 40.0f, 200.0f ) );
  898 + KeyFrames keyframes = KeyFrames::New();
  899 + keyframes.Add( 0.0f, actorPos );
  900 + Vector3 toPos( actorPos );
  901 + toPos.y -= ( size.y + randSize );
  902 + keyframes.Add( 1.0f, toPos );
  903 + animation.AnimateBetween( Property( dfActor, Actor::POSITION ), keyframes );
  904 + animation.SetLooping( true );
  905 + animation.Play();
  906 + mBackgroundAnimations.push_back( animation );
  907 + }
  908 +}
  909 +
  910 +void DaliTableView::CreateShapeImage( ShapeType shapeType, const Size& size, BitmapImage& distanceFieldOut )
  911 +{
  912 + // this bitmap will hold the alpha map for the distance field shader
  913 + distanceFieldOut = BitmapImage::New( size.width, size.height, Pixel::A8 );
  914 +
  915 + // Generate bit pattern
  916 + std::vector< unsigned char > imageDataA8;
  917 + imageDataA8.reserve( size.width * size.height ); // A8
  918 +
  919 + switch( shapeType )
  920 + {
  921 + case CIRCLE:
  922 + GenerateCircle( size, imageDataA8 );
  923 + break;
  924 + case SQUARE:
  925 + GenerateSquare( size, imageDataA8 );
  926 + break;
  927 + default:
  928 + break;
  929 + }
  930 +
  931 + GenerateDistanceFieldMap( &imageDataA8[ 0 ], size, distanceFieldOut.GetBuffer(), size, 8.0f, size );
  932 + distanceFieldOut.Update();
  933 +}
  934 +
  935 +void DaliTableView::GenerateSquare( const Size& size, std::vector< unsigned char >& distanceFieldOut )
  936 +{
  937 + for( int h = 0; h < size.height; ++h )
  938 + {
  939 + for( int w = 0; w < size.width; ++w )
  940 + {
  941 + distanceFieldOut.push_back( 0xFF );
  942 + }
  943 + }
  944 +}
  945 +
  946 +void DaliTableView::GenerateCircle( const Size& size, std::vector< unsigned char >& distanceFieldOut )
  947 +{
  948 + const float radius = size.width * 0.5f * size.width * 0.5f;
  949 + Vector2 center( size.width / 2, size.height / 2 );
  950 +
  951 + for( int h = 0; h < size.height; ++h )
  952 + {
  953 + for( int w = 0; w < size.width; ++w )
  954 + {
  955 + Vector2 pos( w, h );
  956 + Vector2 dist = pos - center;
  957 +
  958 + if( dist.x * dist.x + dist.y * dist.y > radius )
  959 + {
  960 + distanceFieldOut.push_back( 0x00 );
  961 + }
  962 + else
  963 + {
  964 + distanceFieldOut.push_back( 0xFF );
  965 + }
  966 + }
  967 + }
  968 +}
  969 +
  970 +ImageActor DaliTableView::CreateLogo( std::string imagePath )
  971 +{
  972 + Image image = Image::New( imagePath );
  973 + image.LoadingFinishedSignal().Connect( this, &DaliTableView::OnLogoLoaded );
  974 +
  975 + ImageActor logo = ImageActor::New( image );
  976 +
  977 + logo.SetAnchorPoint( AnchorPoint::CENTER );
  978 + logo.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
  979 +
  980 + return logo;
  981 +}
  982 +
  983 +void DaliTableView::OnLogoLoaded( Dali::Image image )
  984 +{
  985 + mRootActor.SetFixedHeight( 1, image.GetHeight() + LOGO_BOTTOM_PADDING_HEIGHT );
  986 +}
  987 +
  988 +bool DaliTableView::PauseBackgroundAnimation()
  989 +{
  990 + PauseAnimation();
  991 +
  992 + return false;
  993 +}
  994 +
  995 +void DaliTableView::PauseAnimation()
  996 +{
  997 + if( mBackgroundAnimsPlaying )
  998 + {
  999 + for( AnimationListIter animIter = mBackgroundAnimations.begin(); animIter != mBackgroundAnimations.end(); ++animIter )
  1000 + {
  1001 + Animation anim = *animIter;
  1002 +
  1003 + anim.Pause();
  1004 + }
  1005 +
  1006 + mBackgroundAnimsPlaying = false;
  1007 + }
  1008 +}
  1009 +
  1010 +void DaliTableView::PlayAnimation()
  1011 +{
  1012 + if ( !mBackgroundAnimsPlaying )
  1013 + {
  1014 + for( AnimationListIter animIter = mBackgroundAnimations.begin(); animIter != mBackgroundAnimations.end(); ++animIter )
  1015 + {
  1016 + Animation anim = *animIter;
  1017 +
  1018 + anim.Play();
  1019 + }
  1020 +
  1021 + mBackgroundAnimsPlaying = true;
  1022 + }
  1023 +
  1024 + mAnimationTimer.SetInterval( BACKGROUND_ANIMATION_DURATION );
  1025 +}
  1026 +
  1027 +Dali::Actor DaliTableView::OnKeyboardPreFocusChange( Dali::Actor current, Dali::Actor proposed, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction )
  1028 +{
  1029 + Actor nextFocusActor = proposed;
  1030 +
  1031 + if ( !current && !proposed )
  1032 + {
  1033 + // Set the initial focus to the first tile in the current page should be focused.
  1034 + nextFocusActor = mTableViewList[mScrollView.GetCurrentPage()].GetChildAt(TableView::CellPosition(0, 0));
  1035 + }
  1036 + else if( !proposed || (proposed && proposed == mScrollViewLayer) )
  1037 + {
  1038 + // ScrollView is being focused but nothing in the current page can be focused further
  1039 + // in the given direction. We should work out which page to scroll to next.
  1040 + int currentPage = mScrollView.GetCurrentPage();
  1041 + int newPage = currentPage;
  1042 + if( direction == Dali::Toolkit::Control::Left )
  1043 + {
  1044 + newPage--;
  1045 + }
  1046 + else if( direction == Dali::Toolkit::Control::Right )
  1047 + {
  1048 + newPage++;
  1049 + }
  1050 +
  1051 + newPage = std::max(0, std::min(static_cast<int>(mScrollRulerX->GetTotalPages() - 1), newPage));
  1052 + if( newPage == currentPage )
  1053 + {
  1054 + if( direction == Dali::Toolkit::Control::Left )
  1055 + {
  1056 + newPage = mScrollRulerX->GetTotalPages() - 1;
  1057 + } else if( direction == Dali::Toolkit::Control::Right )
  1058 + {
  1059 + newPage = 0;
  1060 + }
  1061 + }
  1062 +
  1063 + // Scroll to the page in the given direction
  1064 + mScrollView.ScrollTo(newPage);
  1065 +
  1066 + if( direction == Dali::Toolkit::Control::Left )
  1067 + {
  1068 + // Work out the cell position for the last tile
  1069 + int remainingExamples = mExampleList.size() - newPage * EXAMPLES_PER_PAGE;
  1070 + int rowPos = (remainingExamples >= EXAMPLES_PER_PAGE) ? ROWS_PER_PAGE - 1 : ( (remainingExamples % EXAMPLES_PER_PAGE + EXAMPLES_PER_ROW) / EXAMPLES_PER_ROW - 1 );
  1071 + int colPos = remainingExamples >= EXAMPLES_PER_PAGE ? EXAMPLES_PER_ROW - 1 : ( remainingExamples % EXAMPLES_PER_PAGE - rowPos * EXAMPLES_PER_ROW - 1 );
  1072 +
  1073 + // Move the focus to the last tile in the new page.
  1074 + nextFocusActor = mTableViewList[newPage].GetChildAt(TableView::CellPosition(rowPos, colPos));
  1075 + }
  1076 + else
  1077 + {
  1078 + // Move the focus to the first tile in the new page.
  1079 + nextFocusActor = mTableViewList[newPage].GetChildAt(TableView::CellPosition(0, 0));
  1080 + }
  1081 + }
  1082 +
  1083 + return nextFocusActor;
  1084 +}
  1085 +
  1086 +void DaliTableView::OnFocusedActorActivated( Dali::Actor activatedActor )
  1087 +{
  1088 + if(activatedActor)
  1089 + {
  1090 + mPressedActor = activatedActor;
  1091 +
  1092 + // Activate the current focused actor;
  1093 + TouchEvent touchEventUp;
  1094 + touchEventUp.points.push_back( TouchPoint ( 0, TouchPoint::Up, 0.0f, 0.0f ) );
  1095 + OnTilePressed(mPressedActor, touchEventUp);
  1096 + }
  1097 +}
... ...
demo/dali-table-view.h 0 → 100644
  1 +#ifndef __DALI_DEMO_H__
  2 +#define __DALI_DEMO_H__
  3 +
  4 +//
  5 +// Copyright (c) 2014 Samsung Electronics Co., Ltd.
  6 +//
  7 +// Licensed under the Flora License, Version 1.0 (the License);
  8 +// you may not use this file except in compliance with the License.
  9 +// You may obtain a copy of the License at
  10 +//
  11 +// http://floralicense.org/license/
  12 +//
  13 +// Unless required by applicable law or agreed to in writing, software
  14 +// distributed under the License is distributed on an AS IS BASIS,
  15 +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  16 +// See the License for the specific language governing permissions and
  17 +// limitations under the License.
  18 +//
  19 +
  20 +#include <dali/dali.h>
  21 +#include <dali-toolkit/dali-toolkit.h>
  22 +
  23 +class Example;
  24 +
  25 +typedef std::vector<Example> ExampleList;
  26 +typedef std::map<std::string,Example> ExampleMap;
  27 +typedef ExampleList::iterator ExampleListIter;
  28 +typedef ExampleList::const_iterator ExampleListConstIter;
  29 +typedef ExampleMap::iterator ExampleMapIter;
  30 +typedef ExampleMap::const_iterator ExampleMapConstIter;
  31 +
  32 +typedef std::vector<Dali::Toolkit::TableView> TableViewList;
  33 +typedef TableViewList::iterator TableViewListIter;
  34 +typedef TableViewList::const_iterator TableViewListConstIter;
  35 +
  36 +typedef std::vector<Dali::ImageActor> ImageActorList;
  37 +typedef ImageActorList::iterator ImageActorListIter;
  38 +typedef ImageActorList::const_iterator ImageActorListConstIter;
  39 +
  40 +typedef std::vector<Dali::Animation> AnimationList;
  41 +typedef AnimationList::iterator AnimationListIter;
  42 +typedef AnimationList::const_iterator AnimationListConstIter;
  43 +
  44 +
  45 +/**
  46 + * Example information
  47 + *
  48 + * Represents a single Example.
  49 + */
  50 +struct Example
  51 +{
  52 + // Constructors
  53 +
  54 + /**
  55 + * @param[in] name unique name of example
  56 + * @param[in] title The caption for the example to appear on a tile button.
  57 + */
  58 + Example(std::string name, std::string title)
  59 + : name(name),
  60 + title(title)
  61 + {
  62 + }
  63 +
  64 + Example()
  65 + {
  66 + }
  67 +
  68 + // Data
  69 +
  70 + std::string name; ///< unique name of example
  71 + std::string title; ///< title (caption) of example to appear on tile button.
  72 +};
  73 +
  74 +/**
  75 + * Provide a style for the view and its tool bar.
  76 + */
  77 +struct ViewStyle
  78 +{
  79 + ViewStyle( float toolBarButtonPercentage, float toolBarTitlePercentage, float dpi, float toolBarHeight, float toolBarPadding )
  80 + : mToolBarButtonPercentage( toolBarButtonPercentage ),
  81 + mToolBarTitlePercentage( toolBarTitlePercentage ),
  82 + mDpi( dpi ),
  83 + mToolBarHeight( toolBarHeight ),
  84 + mToolBarPadding( toolBarPadding )
  85 + {}
  86 +
  87 + float mToolBarButtonPercentage; ///< The tool bar button width is a percentage of the tool bar width.
  88 + float mToolBarTitlePercentage; ///< The tool bar title width is a percentage of the tool bar width.
  89 + float mDpi; ///< This style is indented for the given dpi.
  90 + float mToolBarHeight; ///< The tool bar height for the given dpi above.
  91 + float mToolBarPadding; ///< The tool bar padding between controls for the given dpi above.
  92 +};
  93 +
  94 +const ViewStyle DEFAULT_VIEW_STYLE( 0.1f, 0.7f, 315.f, 80.f, 4.f );
  95 +
  96 +/**
  97 + * Dali-Demo instance
  98 + */
  99 +class DaliTableView : public Dali::ConnectionTracker
  100 +{
  101 +public:
  102 +
  103 + DaliTableView(Dali::Application& application);
  104 + ~DaliTableView();
  105 +
  106 +public:
  107 +
  108 + /**
  109 + * Adds an Example to our demo showcase
  110 + *
  111 + * @param[in] example The Example description.
  112 + *
  113 + * @note Should be called before the Application MainLoop is started.
  114 + */
  115 + void AddExample(Example example);
  116 +
  117 + /**
  118 + * Sets the background image PATH.
  119 + *
  120 + * @param[in] imagePath The file path to the image to use as the background.
  121 + *
  122 + * @note Should be called before the Application MainLoop is started.
  123 + */
  124 + void SetBackgroundPath( std::string imagePath );
  125 +
  126 + /**
  127 + * Sorts the example list alphabetically by Title if parameter is true.
  128 + *
  129 + * @param[in] sortAlphabetically If true, example list is sorted alphabetically.
  130 + *
  131 + * @note Should be called before the Application MainLoop is started.
  132 + * @note By default the examples are NOT sorted alphabetically by Title.
  133 + */
  134 + void SortAlphabetically( bool sortAlphabetically );
  135 +
  136 +private: // Application callbacks & implementation
  137 +
  138 + /**
  139 + * Shape enum for create function
  140 + */
  141 + enum ShapeType
  142 + {
  143 + CIRCLE,
  144 + SQUARE
  145 + };
  146 +
  147 + /**
  148 + * Initialize application.
  149 + *
  150 + * @param[in] app Application instance
  151 + */
  152 + void Initialize( Dali::Application& app );
  153 +
  154 + /**
  155 + * Populates the contents (ScrollView) with all the
  156 + * Examples that have been Added using the AddExample(...)
  157 + * call
  158 + */
  159 + void Populate();
  160 +
  161 + /**
  162 + * Rotate callback from the device.
  163 + *
  164 + * @param[in] orientation that device notified.
  165 + */
  166 + void OrientationChanged( Dali::Orientation orientation );
  167 +
  168 + /**
  169 + * Rotates RootActor orientation to that specified.
  170 + *
  171 + * @param[in] degrees The requested angle.
  172 + */
  173 + void Rotate( unsigned int degrees );
  174 +
  175 + /**
  176 + * Creates a tile for the main menu and toolbar.
  177 + *
  178 + * @param[in] name The unique name for this Tile
  179 + * @param[in] title The text caption that appears on the Tile
  180 + * @param[in] parentSize Tile's parent size.
  181 + * @param[in] addBackground Whether to add a background graphic to the tile or not
  182 + *
  183 + * @return The Actor for the created tile.
  184 + */
  185 + Dali::Actor CreateTile( const std::string& name, const std::string& title, const Dali::Size& parentSize, bool addBackground );
  186 +
  187 + /**
  188 + * Create a stencil image
  189 + *
  190 + * @return The stencil image
  191 + */
  192 + Dali::ImageActor NewStencilImage();
  193 +
  194 + // Signal handlers
  195 +
  196 + /**
  197 + * Signal emitted when any tile has been pressed
  198 + *
  199 + * @param[in] actor The Actor representing this tile.
  200 + * @param[in] event The TouchEvent
  201 + *
  202 + * @return Consume flag
  203 + */
  204 + bool OnTilePressed( Dali::Actor actor, const Dali::TouchEvent& event );
  205 +
  206 + /**
  207 + * Signal emitted when the pressed animation has completed.
  208 + *
  209 + * @param[in] source The animation source.
  210 + */
  211 + void OnPressedAnimationFinished(Dali::Animation& source);
  212 +
  213 + /**
  214 + * Signal emitted when the button has been clicked
  215 + *
  216 + * @param[in] button The Button that is clicked.
  217 + *
  218 + * @return Consume flag
  219 + */
  220 + bool OnButtonClicked( Dali::Toolkit::Button& button );
  221 +
  222 + /**
  223 + * Signal emitted when scrolling has started.
  224 + *
  225 + * @param[in] position The current position of the scroll contents.
  226 + */
  227 + void OnScrollStart(const Dali::Vector3& position);
  228 +
  229 + /**
  230 + * Signal emitted when scrolling has completed.
  231 + *
  232 + * @param[in] position The current position of the scroll contents.
  233 + */
  234 + void OnScrollComplete(const Dali::Vector3& position);
  235 +
  236 + /**
  237 + * Signal emitted when any Sensitive Actor has been touched
  238 + * (other than those touches consumed by OnTilePressed)
  239 + *
  240 + * @param[in] actor The Actor touched.
  241 + * @param[in] event The TouchEvent
  242 + *
  243 + * @return Consume flag
  244 + */
  245 + bool OnScrollTouched( Dali::Actor actor, const Dali::TouchEvent& event );
  246 +
  247 + /**
  248 + * Setup the effect on the scroll view
  249 + */
  250 + void ApplyScrollViewEffect();
  251 +
  252 + /**
  253 + * Setup the inner cube effect
  254 + */
  255 + void SetupInnerPageCubeEffect();
  256 +
  257 + /**
  258 + * Apply the scroll view effect to a page
  259 + */
  260 + void ApplyEffectToPage(Dali::Actor page, const Dali::Vector3& tableRelativeSize);
  261 +
  262 + /**
  263 + * Apply a custom effect scroll view effect to a page
  264 + */
  265 + void ApplyCustomEffectToPage(Dali::Actor page);
  266 +
  267 + /**
  268 + * Apply a shader effect to a table tile
  269 + */
  270 + void ApplyEffectToTile(Dali::Actor tile);
  271 +
  272 + /**
  273 + * Apply effect to the content of a tile
  274 + */
  275 + void ApplyEffectToTileContent(Dali::Actor tileContent);
  276 +
  277 + /**
  278 + * Create a toolbar
  279 + */
  280 + void CreateToolbar(Dali::Toolkit::TableView root, const std::string& title, const std::string& toolbarImagePath, const ViewStyle& style = DEFAULT_VIEW_STYLE);
  281 +
  282 + /**
  283 + * Key event handler
  284 + */
  285 + void OnKeyEvent( const Dali::KeyEvent& event );
  286 +
  287 + /**
  288 + * Create a depth field background
  289 + *
  290 + * @param[in] addToLayer Add the graphics to this layer
  291 + */
  292 + void SetupBackground( Dali::Actor addToLayer, const Dali::Vector2& size );
  293 +
  294 + /**
  295 + * Create background actors for the given layer
  296 + *
  297 + * @param[in] layer The layer to add the actors to
  298 + * @param[in] count The number of actors to generate
  299 + * @param[in] distanceField The distance field bitmap to use
  300 + * @param[in] size The size of the actor
  301 + */
  302 + void AddBackgroundActors( Dali::Actor layer, int count, Dali::BitmapImage distanceField, const Dali::Vector2& size );
  303 +
  304 + /**
  305 + * Create a bitmap with the specified shape and also output a distance field
  306 + *
  307 + * @param[in] shapeType The shape to generate
  308 + * @param[in] size The size of the bitmap to create
  309 + * @param[out] imageOut The return bitmap
  310 + * @param[out] distanceFieldOut The return depth field alpha map
  311 + */
  312 + void CreateShapeImage( ShapeType shapeType, const Dali::Size& size, Dali::BitmapImage& distanceFieldOut );
  313 +
  314 + /**
  315 + * Generate a square bit pattern and depth field
  316 + *
  317 + * @param[in] size The size of the bitmap to create
  318 + * @param[out] imageOut The return bitmap
  319 + * @param[out] distanceFieldOut The return depth field alpha map
  320 + */
  321 + void GenerateSquare( const Dali::Size& size, std::vector<unsigned char>& distanceFieldOut );
  322 +
  323 + /**
  324 + * Generate a circle bit pattern and depth field
  325 + *
  326 + * @param[in] size The size of the bitmap to create
  327 + * @param[out] imageOut The return bitmap
  328 + * @param[out] distanceFieldOut The return depth field alpha map
  329 + */
  330 + void GenerateCircle( const Dali::Size& size, std::vector<unsigned char>& distanceFieldOut );
  331 +
  332 + /**
  333 + * Creates the logo.
  334 + *
  335 + * @param[in] imagePath The path to the image file to load
  336 + *
  337 + * @return The created image actor
  338 + */
  339 + Dali::ImageActor CreateLogo( std::string imagePath );
  340 +
  341 + /**
  342 + * Callback for when the logo image is loaded
  343 + *
  344 + * @param[in] image The loaded logo image
  345 + */
  346 + void OnLogoLoaded( Dali::Image image );
  347 +
  348 + /**
  349 + * Timer handler for ending background animation
  350 + *
  351 + * @return Return value for timer handler
  352 + */
  353 + bool PauseBackgroundAnimation();
  354 +
  355 + /**
  356 + * Pause all animations
  357 + */
  358 + void PauseAnimation();
  359 +
  360 + /**
  361 + * Resume all animations
  362 + */
  363 + void PlayAnimation();
  364 +
  365 + /**
  366 + * Callback when the keyboard focus is going to be changed.
  367 + *
  368 + * @param[in] current The current focused actor
  369 + * @param[in] proposed The actor proposed by the keyboard focus manager to move the focus to
  370 + * @param[in] direction The direction to move the focus
  371 + * @return The actor to move the keyboard focus to.
  372 + */
  373 + Dali::Actor OnKeyboardPreFocusChange( Dali::Actor current, Dali::Actor proposed, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction );
  374 +
  375 + /**
  376 + * Callback when the keyboard focused actor is activated.
  377 + *
  378 + * @param[in] activatedActor The activated actor
  379 + */
  380 + void OnFocusedActorActivated( Dali::Actor activatedActor );
  381 +
  382 +private:
  383 +
  384 + Dali::Application& mApplication; ///< Application instance.
  385 + Dali::Layer mBackgroundLayer; ///< Background resides on a separate layer.
  386 + Dali::Toolkit::TableView mRootActor; ///< All content (excluding background is anchored to this Actor)
  387 + Dali::Animation mRotateAnimation; ///< Animation to rotate and resize mRootActor.
  388 + Dali::ImageActor mBackground; ///< Background's static image.
  389 + Dali::ImageActor mLogo; ///< Logo's static image.
  390 + Dali::Animation mPressedAnimation; ///< Button press scaling animation.
  391 + Dali::Layer mScrollViewLayer; ///< ScrollView resides on a separate layer.
  392 + Dali::Toolkit::ScrollView mScrollView; ///< ScrollView container (for all Examples)
  393 + Dali::Toolkit::ScrollViewEffect mScrollViewEffect; ///< Effect to be applied to the scroll view
  394 + bool mScrolling; ///< Flag indicating whether view is currently being scrolled
  395 + Dali::Toolkit::RulerPtr mScrollRulerX; ///< ScrollView X (horizontal) ruler
  396 + Dali::Toolkit::RulerPtr mScrollRulerY; ///< ScrollView Y (vertical) ruler
  397 + Dali::Toolkit::TableView mButtons; ///< Navigation buttons
  398 + ExampleList mExampleList; ///< List of examples.
  399 + ExampleMap mExampleMap; ///< Map LUT for examples.
  400 + TableViewList mTableViewList; ///< List of tableviews
  401 + Dali::Actor mPressedActor; ///< The currently pressed actor.
  402 + int mTotalPages; ///< Total pages within scrollview.
  403 + std::string mBackgroundImagePath; ///< The path to the background image.
  404 + bool mSortAlphabetically; ///< Sort examples alphabetically.
  405 +
  406 + Dali::ActorContainer mTableViewImages; ///< Offscreen render of tableview
  407 + Dali::ActorContainer mBackgroundActors; ///< List of background actors used in the effect
  408 +
  409 + AnimationList mBackgroundAnimations;///< List of background bubble animations
  410 + Dali::Timer mAnimationTimer; ///< Timer used to turn off animation after a specific time period
  411 + bool mBackgroundAnimsPlaying; ///< Are background animations playing
  412 +};
  413 +
  414 +#endif // __DALI_DEMO_H__
... ...
demo/file.list 0 → 100644
  1 +# Add files to build with demo here
  2 +
  3 +common_src_files = \
  4 + $(demo_src_dir)/dali-table-view.cpp
  5 +
  6 +demo_src_files = \
  7 + $(common_src_files) \
  8 + $(demo_src_dir)/dali-demo.cpp
  9 +
  10 +# Add files to install here
  11 +
  12 +demo_image_files = \
  13 + $(demo_src_dir)/images/*.png \
  14 + $(demo_src_dir)/images/*.jpg
  15 +
  16 +demo_model_files = \
  17 + $(demo_src_dir)/models/*
... ...
demo/images/background-1.jpg 0 → 100644

528 KB

demo/images/background-2.jpg 0 → 100644

523 KB

demo/images/background-3.jpg 0 → 100644

422 KB

demo/images/background-4.jpg 0 → 100644

248 KB

demo/images/background-default.png 0 → 100644

4.5 KB

demo/images/background-magnifier.jpg 0 → 100644

804 KB

demo/images/book-landscape-cover-back.jpg 0 → 100755

12.4 KB

demo/images/book-landscape-cover.jpg 0 → 100755

51.4 KB

demo/images/book-landscape-p1.jpg 0 → 100644

74.1 KB

demo/images/book-landscape-p2.jpg 0 → 100644

88.4 KB

demo/images/book-landscape-p3.jpg 0 → 100644

90.9 KB

demo/images/book-landscape-p4.jpg 0 → 100644

90.8 KB

demo/images/book-landscape-p5.jpg 0 → 100644

93.9 KB

demo/images/book-landscape-p6.jpg 0 → 100644

93.1 KB

demo/images/book-landscape-p7.jpg 0 → 100644

85.1 KB

demo/images/book-landscape-p8.jpg 0 → 100644

52.1 KB

demo/images/book-portrait-cover.jpg 0 → 100755

101 KB

demo/images/book-portrait-p1.jpg 0 → 100644

153 KB

demo/images/book-portrait-p2.jpg 0 → 100644

196 KB

demo/images/book-portrait-p3.jpg 0 → 100644

192 KB

demo/images/book-portrait-p4.jpg 0 → 100644

195 KB

demo/images/book-portrait-p5.jpg 0 → 100644

81.1 KB

demo/images/book-portrait-p6.jpg 0 → 100644

146 KB

demo/images/book-portrait-p7.jpg 0 → 100644

200 KB

demo/images/book-portrait-p8.jpg 0 → 100644

60.4 KB

demo/images/brick-wall.jpg 0 → 100644

365 KB

demo/images/bubble-effect-texture-border.png 0 → 100644

3.2 KB

demo/images/button-background.png 0 → 100644

1.13 KB

demo/images/cluster-background.png 0 → 100644

1017 Bytes

demo/images/cluster-image-frame.png 0 → 100644

1.19 KB

demo/images/cluster-image-shadow.png 0 → 100644

5.86 KB

demo/images/com.samsung.dali-demo.png 0 → 100644

25.6 KB

demo/images/dali-logo-large.png 0 → 100644

408 KB

demo/images/dali-logo-small.png 0 → 100644

63.6 KB

demo/images/gallery-large-1.jpg 0 → 100644

197 KB

demo/images/gallery-large-10.jpg 0 → 100644

117 KB

demo/images/gallery-large-11.jpg 0 → 100644

234 KB

demo/images/gallery-large-12.jpg 0 → 100644

221 KB

demo/images/gallery-large-13.jpg 0 → 100644

308 KB

demo/images/gallery-large-14.jpg 0 → 100644

137 KB

demo/images/gallery-large-15.jpg 0 → 100644

283 KB

demo/images/gallery-large-16.jpg 0 → 100644

171 KB

demo/images/gallery-large-17.jpg 0 → 100644

162 KB

demo/images/gallery-large-18.jpg 0 → 100644

204 KB

demo/images/gallery-large-19.jpg 0 → 100644

201 KB

demo/images/gallery-large-2.jpg 0 → 100644

216 KB

demo/images/gallery-large-20.jpg 0 → 100644

232 KB

demo/images/gallery-large-21.jpg 0 → 100644

130 KB

demo/images/gallery-large-3.jpg 0 → 100644

94.4 KB

demo/images/gallery-large-4.jpg 0 → 100644

338 KB

demo/images/gallery-large-5.jpg 0 → 100644

144 KB

demo/images/gallery-large-6.jpg 0 → 100644

175 KB

demo/images/gallery-large-7.jpg 0 → 100644

295 KB

demo/images/gallery-large-8.jpg 0 → 100644

138 KB

demo/images/gallery-large-9.jpg 0 → 100644

160 KB

demo/images/gallery-medium-1.jpg 0 → 100644

70 KB

demo/images/gallery-medium-10.jpg 0 → 100644

28.2 KB

demo/images/gallery-medium-11.jpg 0 → 100644

66.1 KB

demo/images/gallery-medium-12.jpg 0 → 100644

83.8 KB

demo/images/gallery-medium-13.jpg 0 → 100644

66.9 KB

demo/images/gallery-medium-14.jpg 0 → 100644

93.2 KB

demo/images/gallery-medium-15.jpg 0 → 100644

93.4 KB

demo/images/gallery-medium-16.jpg 0 → 100644

92.6 KB

demo/images/gallery-medium-17.jpg 0 → 100644

66.4 KB

demo/images/gallery-medium-18.jpg 0 → 100644

48.1 KB

demo/images/gallery-medium-19.jpg 0 → 100644

47.8 KB

demo/images/gallery-medium-2.jpg 0 → 100644

34.6 KB

demo/images/gallery-medium-20.jpg 0 → 100644

52.8 KB

demo/images/gallery-medium-21.jpg 0 → 100644

84.3 KB

demo/images/gallery-medium-22.jpg 0 → 100644

98.9 KB

demo/images/gallery-medium-23.jpg 0 → 100644

58.2 KB

demo/images/gallery-medium-24.jpg 0 → 100644

47 KB

demo/images/gallery-medium-25.jpg 0 → 100644

60.8 KB

demo/images/gallery-medium-26.jpg 0 → 100644

40 KB

demo/images/gallery-medium-27.jpg 0 → 100644

114 KB

demo/images/gallery-medium-28.jpg 0 → 100644

71.7 KB

demo/images/gallery-medium-29.jpg 0 → 100644

78.9 KB

demo/images/gallery-medium-3.jpg 0 → 100644

37.3 KB

demo/images/gallery-medium-30.jpg 0 → 100644

75.7 KB

demo/images/gallery-medium-31.jpg 0 → 100644

60 KB

demo/images/gallery-medium-32.jpg 0 → 100644

114 KB

demo/images/gallery-medium-33.jpg 0 → 100644

74.4 KB