Commit c6ae980e6a4fe29241f85eb7b8ca775d50ea710d
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
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
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