Merge "Merge branch 'tizen' into devel/new_mesh" into devel/new_mesh
authorAdeel Kazmi <adeel.kazmi@samsung.com>
Tue, 9 Jun 2015 09:50:57 +0000 (02:50 -0700)
committerGerrit Code Review <gerrit@review.vlan103.tizen.org>
Tue, 9 Jun 2015 09:50:58 +0000 (02:50 -0700)
345 files changed:
automated-tests/.gitignore
automated-tests/coverage.sh
automated-tests/scripts/retriever.sh
automated-tests/src/dali-toolkit-internal/CMakeLists.txt
automated-tests/src/dali-toolkit-internal/utc-Dali-PushButton.cpp
automated-tests/src/dali-toolkit/CMakeLists.txt
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/dummy-control.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-harness.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/test-platform-abstraction.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-application.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-orientation.h
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-style-monitor.cpp
automated-tests/src/dali-toolkit/dali-toolkit-test-utils/toolkit-style-monitor.h
automated-tests/src/dali-toolkit/utc-Dali-AccessibilityFocusManager.cpp [moved from automated-tests/src/dali-toolkit/utc-Dali-FocusManager.cpp with 75% similarity]
automated-tests/src/dali-toolkit/utc-Dali-Alignment.cpp
automated-tests/src/dali-toolkit/utc-Dali-BloomView.cpp
automated-tests/src/dali-toolkit/utc-Dali-BubbleEmitter.cpp
automated-tests/src/dali-toolkit/utc-Dali-Builder.cpp
automated-tests/src/dali-toolkit/utc-Dali-Button.cpp
automated-tests/src/dali-toolkit/utc-Dali-CheckBoxButton.cpp
automated-tests/src/dali-toolkit/utc-Dali-Control.cpp
automated-tests/src/dali-toolkit/utc-Dali-ControlImpl.cpp
automated-tests/src/dali-toolkit/utc-Dali-CubeTransitionEffect.cpp
automated-tests/src/dali-toolkit/utc-Dali-DefaultControls.cpp
automated-tests/src/dali-toolkit/utc-Dali-ItemLayout.cpp
automated-tests/src/dali-toolkit/utc-Dali-ItemView.cpp
automated-tests/src/dali-toolkit/utc-Dali-JsonParser.cpp
automated-tests/src/dali-toolkit/utc-Dali-KeyInputFocusManager.cpp
automated-tests/src/dali-toolkit/utc-Dali-KeyboardFocusManager.cpp
automated-tests/src/dali-toolkit/utc-Dali-NinePatchMaskEffect.cpp
automated-tests/src/dali-toolkit/utc-Dali-PageTurnView.cpp
automated-tests/src/dali-toolkit/utc-Dali-Popup.cpp
automated-tests/src/dali-toolkit/utc-Dali-PushButton.cpp
automated-tests/src/dali-toolkit/utc-Dali-RadioButton.cpp
automated-tests/src/dali-toolkit/utc-Dali-ScrollView.cpp
automated-tests/src/dali-toolkit/utc-Dali-ShadowView.cpp
automated-tests/src/dali-toolkit/utc-Dali-Slider.cpp
automated-tests/src/dali-toolkit/utc-Dali-StyleManager.cpp
automated-tests/src/dali-toolkit/utc-Dali-SuperBlurView.cpp
automated-tests/src/dali-toolkit/utc-Dali-TableView.cpp
automated-tests/src/dali-toolkit/utc-Dali-TextField.cpp
automated-tests/src/dali-toolkit/utc-Dali-TextSelectionPopup.cpp [new file with mode: 0644]
automated-tests/src/dali-toolkit/utc-Dali-ToolBar.cpp
build/tizen/Makefile.am
build/tizen/dali-toolkit/Makefile.am
build/tizen/docs-internal/dali_internal.doxy
build/tizen/docs/dali.doxy.in
build/tizen/docs/dali_doxygen.css [new file with mode: 0644]
build/tizen/plugins/Makefile.am
dali-toolkit/dali-toolkit.h
dali-toolkit/devel-api/builder/builder.cpp [moved from dali-toolkit/public-api/builder/builder.cpp with 100% similarity]
dali-toolkit/devel-api/builder/builder.h [moved from dali-toolkit/public-api/builder/builder.h with 100% similarity]
dali-toolkit/devel-api/builder/json-parser.cpp [moved from dali-toolkit/public-api/builder/json-parser.cpp with 97% similarity]
dali-toolkit/devel-api/builder/json-parser.h [moved from dali-toolkit/public-api/builder/json-parser.h with 98% similarity]
dali-toolkit/devel-api/builder/tree-node.cpp [moved from dali-toolkit/public-api/builder/tree-node.cpp with 98% similarity]
dali-toolkit/devel-api/builder/tree-node.h [moved from dali-toolkit/public-api/builder/tree-node.h with 100% similarity]
dali-toolkit/devel-api/controls/bloom-view/bloom-view.cpp [moved from dali-toolkit/public-api/controls/bloom-view/bloom-view.cpp with 97% similarity]
dali-toolkit/devel-api/controls/bloom-view/bloom-view.h [moved from dali-toolkit/public-api/controls/bloom-view/bloom-view.h with 100% similarity]
dali-toolkit/devel-api/controls/bubble-effect/bubble-emitter.cpp [moved from dali-toolkit/public-api/controls/bubble-effect/bubble-emitter.cpp with 97% similarity]
dali-toolkit/devel-api/controls/bubble-effect/bubble-emitter.h [moved from dali-toolkit/public-api/controls/bubble-effect/bubble-emitter.h with 100% similarity]
dali-toolkit/devel-api/controls/effects-view/effects-view.cpp [moved from dali-toolkit/public-api/controls/effects-view/effects-view.cpp with 97% similarity]
dali-toolkit/devel-api/controls/effects-view/effects-view.h [moved from dali-toolkit/public-api/controls/effects-view/effects-view.h with 100% similarity]
dali-toolkit/devel-api/controls/magnifier/magnifier.cpp [moved from dali-toolkit/public-api/controls/magnifier/magnifier.cpp with 92% similarity]
dali-toolkit/devel-api/controls/magnifier/magnifier.h [moved from dali-toolkit/public-api/controls/magnifier/magnifier.h with 100% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-factory.cpp [moved from dali-toolkit/public-api/controls/page-turn-view/page-factory.cpp with 96% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-factory.h [moved from dali-toolkit/public-api/controls/page-turn-view/page-factory.h with 100% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.cpp [moved from dali-toolkit/public-api/controls/page-turn-view/page-turn-landscape-view.cpp with 95% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h [moved from dali-toolkit/public-api/controls/page-turn-view/page-turn-landscape-view.h with 97% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.cpp [moved from dali-toolkit/public-api/controls/page-turn-view/page-turn-portrait-view.cpp with 95% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h [moved from dali-toolkit/public-api/controls/page-turn-view/page-turn-portrait-view.h with 97% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.cpp [moved from dali-toolkit/public-api/controls/page-turn-view/page-turn-view.cpp with 97% similarity]
dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h [moved from dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h with 100% similarity]
dali-toolkit/devel-api/controls/popup/popup.cpp [moved from dali-toolkit/public-api/controls/popup/popup.cpp with 97% similarity]
dali-toolkit/devel-api/controls/popup/popup.h [moved from dali-toolkit/public-api/controls/popup/popup.h with 100% similarity]
dali-toolkit/devel-api/controls/shadow-view/shadow-view.cpp [moved from dali-toolkit/public-api/controls/shadow-view/shadow-view.cpp with 97% similarity]
dali-toolkit/devel-api/controls/shadow-view/shadow-view.h [moved from dali-toolkit/public-api/controls/shadow-view/shadow-view.h with 100% similarity]
dali-toolkit/devel-api/controls/slider/slider.cpp [moved from dali-toolkit/public-api/controls/slider/slider.cpp with 97% similarity]
dali-toolkit/devel-api/controls/slider/slider.h [moved from dali-toolkit/public-api/controls/slider/slider.h with 100% similarity]
dali-toolkit/devel-api/controls/super-blur-view/super-blur-view.cpp [moved from dali-toolkit/public-api/controls/super-blur-view/super-blur-view.cpp with 96% similarity]
dali-toolkit/devel-api/controls/super-blur-view/super-blur-view.h [moved from dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h with 100% similarity]
dali-toolkit/devel-api/controls/text-controls/text-selection-popup.cpp [moved from dali-toolkit/public-api/controls/text-controls/text-selection-popup.cpp with 95% similarity]
dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h [moved from dali-toolkit/public-api/controls/text-controls/text-selection-popup.h with 100% similarity]
dali-toolkit/devel-api/controls/tool-bar/tool-bar.cpp [moved from dali-toolkit/public-api/controls/tool-bar/tool-bar.cpp with 95% similarity]
dali-toolkit/devel-api/controls/tool-bar/tool-bar.h [moved from dali-toolkit/public-api/controls/tool-bar/tool-bar.h with 96% similarity]
dali-toolkit/devel-api/file.list [new file with mode: 0755]
dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.cpp [moved from dali-toolkit/public-api/focus-manager/keyinput-focus-manager.cpp with 100% similarity]
dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h [moved from dali-toolkit/public-api/focus-manager/keyinput-focus-manager.h with 100% similarity]
dali-toolkit/devel-api/scripting/script-plugin.h [moved from dali-toolkit/public-api/scripting/script-plugin.h with 100% similarity]
dali-toolkit/devel-api/scripting/script.cpp [moved from dali-toolkit/public-api/scripting/script.cpp with 100% similarity]
dali-toolkit/devel-api/scripting/script.h [moved from dali-toolkit/public-api/scripting/script.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/alpha-discard-effect.h [moved from dali-toolkit/public-api/shader-effects/alpha-discard-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/bendy-effect.h [moved from dali-toolkit/public-api/shader-effects/bendy-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/blind-effect.h [moved from dali-toolkit/public-api/shader-effects/blind-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/bouncing-effect.h [moved from dali-toolkit/public-api/shader-effects/bouncing-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/carousel-effect.h [moved from dali-toolkit/public-api/shader-effects/carousel-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/displacement-effect.h [moved from dali-toolkit/public-api/shader-effects/displacement-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/dissolve-effect.h [moved from dali-toolkit/public-api/shader-effects/dissolve-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/dissolve-local-effect.h [moved from dali-toolkit/public-api/shader-effects/dissolve-local-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/distance-field-effect.h [moved from dali-toolkit/public-api/shader-effects/distance-field-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/image-region-effect.h [moved from dali-toolkit/public-api/shader-effects/image-region-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/iris-effect.h [moved from dali-toolkit/public-api/shader-effects/iris-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/mask-effect.h [moved from dali-toolkit/public-api/shader-effects/mask-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/mirror-effect.h [moved from dali-toolkit/public-api/shader-effects/mirror-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/motion-blur-effect.h [moved from dali-toolkit/public-api/shader-effects/motion-blur-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/motion-stretch-effect.h [moved from dali-toolkit/public-api/shader-effects/motion-stretch-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/nine-patch-mask-effect.h [moved from dali-toolkit/public-api/shader-effects/nine-patch-mask-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/overlay-effect.h [moved from dali-toolkit/public-api/shader-effects/overlay-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/quadratic-bezier.h [moved from dali-toolkit/public-api/shader-effects/quadratic-bezier.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/ripple-effect.h [moved from dali-toolkit/public-api/shader-effects/ripple-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/ripple2d-effect.h [moved from dali-toolkit/public-api/shader-effects/ripple2d-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/shear-effect.h [moved from dali-toolkit/public-api/shader-effects/shear-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/soft-button-effect.h [moved from dali-toolkit/public-api/shader-effects/soft-button-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/spot-effect.h [moved from dali-toolkit/public-api/shader-effects/spot-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/square-dissolve-effect.h [moved from dali-toolkit/public-api/shader-effects/square-dissolve-effect.h with 100% similarity]
dali-toolkit/devel-api/shader-effects/swirl-effect.h [moved from dali-toolkit/public-api/shader-effects/swirl-effect.h with 100% similarity]
dali-toolkit/devel-api/styling/style-manager.cpp [moved from dali-toolkit/public-api/styling/style-manager.cpp with 97% similarity]
dali-toolkit/devel-api/styling/style-manager.h [moved from dali-toolkit/public-api/styling/style-manager.h with 96% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-cross-effect.cpp [moved from dali-toolkit/public-api/transition-effects/cube-transition-cross-effect.cpp with 100% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-cross-effect.h [moved from dali-toolkit/public-api/transition-effects/cube-transition-cross-effect.h with 96% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-effect.cpp [moved from dali-toolkit/public-api/transition-effects/cube-transition-effect.cpp with 100% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-effect.h [moved from dali-toolkit/public-api/transition-effects/cube-transition-effect.h with 100% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-fold-effect.cpp [moved from dali-toolkit/public-api/transition-effects/cube-transition-fold-effect.cpp with 100% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-fold-effect.h [moved from dali-toolkit/public-api/transition-effects/cube-transition-fold-effect.h with 96% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-wave-effect.cpp [moved from dali-toolkit/public-api/transition-effects/cube-transition-wave-effect.cpp with 100% similarity]
dali-toolkit/devel-api/transition-effects/cube-transition-wave-effect.h [moved from dali-toolkit/public-api/transition-effects/cube-transition-wave-effect.h with 96% similarity]
dali-toolkit/internal/builder/builder-declarations.h
dali-toolkit/internal/builder/builder-impl.cpp
dali-toolkit/internal/builder/builder-impl.h
dali-toolkit/internal/builder/builder-signals.cpp
dali-toolkit/internal/builder/json-parser-impl.h
dali-toolkit/internal/builder/json-parser-state.h
dali-toolkit/internal/builder/replacement.h
dali-toolkit/internal/builder/tree-node-manipulator.cpp
dali-toolkit/internal/builder/tree-node-manipulator.h
dali-toolkit/internal/controls/bloom-view/bloom-view-impl.cpp
dali-toolkit/internal/controls/bloom-view/bloom-view-impl.h
dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.h
dali-toolkit/internal/controls/buttons/button-impl.cpp
dali-toolkit/internal/controls/buttons/button-impl.h
dali-toolkit/internal/controls/buttons/check-box-button-impl.cpp
dali-toolkit/internal/controls/buttons/check-box-button-impl.h
dali-toolkit/internal/controls/buttons/push-button-impl.cpp
dali-toolkit/internal/controls/buttons/push-button-impl.h
dali-toolkit/internal/controls/effects-view/effects-view-impl.cpp
dali-toolkit/internal/controls/effects-view/effects-view-impl.h
dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.cpp
dali-toolkit/internal/controls/gaussian-blur-view/gaussian-blur-view-impl.h
dali-toolkit/internal/controls/image-view/masked-image-view-impl.cpp [deleted file]
dali-toolkit/internal/controls/image-view/masked-image-view-impl.h [deleted file]
dali-toolkit/internal/controls/magnifier/magnifier-impl.cpp
dali-toolkit/internal/controls/magnifier/magnifier-impl.h
dali-toolkit/internal/controls/page-turn-view/page-turn-landscape-view-impl.h
dali-toolkit/internal/controls/page-turn-view/page-turn-portrait-view-impl.h
dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.cpp
dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.h
dali-toolkit/internal/controls/popup/popup-impl.cpp
dali-toolkit/internal/controls/popup/popup-impl.h
dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.cpp
dali-toolkit/internal/controls/scroll-bar/scroll-bar-impl.h
dali-toolkit/internal/controls/scrollable/item-view/depth-layout.cpp
dali-toolkit/internal/controls/scrollable/item-view/depth-layout.h
dali-toolkit/internal/controls/scrollable/item-view/grid-layout.cpp
dali-toolkit/internal/controls/scrollable/item-view/grid-layout.h
dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.cpp
dali-toolkit/internal/controls/scrollable/item-view/item-view-impl.h
dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.cpp
dali-toolkit/internal/controls/scrollable/scroll-view/scroll-view-impl.h
dali-toolkit/internal/controls/shadow-view/shadow-view-impl.cpp
dali-toolkit/internal/controls/shadow-view/shadow-view-impl.h
dali-toolkit/internal/controls/slider/slider-impl.cpp
dali-toolkit/internal/controls/slider/slider-impl.h
dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.cpp
dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h
dali-toolkit/internal/controls/table-view/table-view-impl.cpp
dali-toolkit/internal/controls/table-view/table-view-impl.h
dali-toolkit/internal/controls/text-controls/text-field-impl.cpp
dali-toolkit/internal/controls/text-controls/text-field-impl.h
dali-toolkit/internal/controls/text-controls/text-label-impl.cpp
dali-toolkit/internal/controls/text-controls/text-label-impl.h
dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.h
dali-toolkit/internal/controls/tool-bar/tool-bar-impl.cpp
dali-toolkit/internal/controls/tool-bar/tool-bar-impl.h
dali-toolkit/internal/file.list
dali-toolkit/internal/filters/image-filter.h
dali-toolkit/internal/focus-manager/accessibility-focus-manager-impl.cpp [moved from dali-toolkit/internal/focus-manager/focus-manager-impl.cpp with 84% similarity]
dali-toolkit/internal/focus-manager/accessibility-focus-manager-impl.h [moved from dali-toolkit/internal/focus-manager/focus-manager-impl.h with 73% similarity]
dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.cpp
dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.h
dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.cpp
dali-toolkit/internal/focus-manager/keyinput-focus-manager-impl.h
dali-toolkit/internal/scripting/script-impl.h
dali-toolkit/internal/scripting/script-plugin-proxy.h
dali-toolkit/internal/styling/style-manager-impl.cpp
dali-toolkit/internal/styling/style-manager-impl.h
dali-toolkit/internal/text/decorator/text-decorator.cpp
dali-toolkit/internal/text/multi-language-support-impl.cpp
dali-toolkit/internal/text/text-control-interface.h
dali-toolkit/internal/text/text-controller-impl.cpp
dali-toolkit/internal/text/text-controller-impl.h
dali-toolkit/internal/text/text-controller.cpp
dali-toolkit/internal/text/text-controller.h
dali-toolkit/internal/transition-effects/cube-transition-cross-effect-impl.h
dali-toolkit/internal/transition-effects/cube-transition-effect-impl.h
dali-toolkit/internal/transition-effects/cube-transition-fold-effect-impl.h
dali-toolkit/internal/transition-effects/cube-transition-wave-effect-impl.h
dali-toolkit/public-api/controls/control-impl.cpp
dali-toolkit/public-api/controls/control-impl.h
dali-toolkit/public-api/controls/control.cpp
dali-toolkit/public-api/controls/control.h
dali-toolkit/public-api/controls/default-controls/check-button-factory.cpp [deleted file]
dali-toolkit/public-api/controls/default-controls/check-button-factory.h [deleted file]
dali-toolkit/public-api/controls/default-controls/push-button-factory.cpp [deleted file]
dali-toolkit/public-api/controls/default-controls/push-button-factory.h [deleted file]
dali-toolkit/public-api/controls/image-view/masked-image-view.cpp [deleted file]
dali-toolkit/public-api/controls/image-view/masked-image-view.h [deleted file]
dali-toolkit/public-api/controls/scrollable/item-view/item-factory.cpp [deleted file]
dali-toolkit/public-api/controls/scrollable/item-view/item-factory.h
dali-toolkit/public-api/controls/scrollable/item-view/item-layout.cpp
dali-toolkit/public-api/controls/scrollable/item-view/item-layout.h
dali-toolkit/public-api/controls/scrollable/item-view/item-view.cpp
dali-toolkit/public-api/controls/scrollable/item-view/item-view.h
dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.cpp
dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h
dali-toolkit/public-api/controls/text-controls/text-field.cpp
dali-toolkit/public-api/controls/text-controls/text-field.h
dali-toolkit/public-api/dali-toolkit-version.cpp
dali-toolkit/public-api/file.list
dali-toolkit/public-api/focus-manager/accessibility-focus-manager.cpp [new file with mode: 0644]
dali-toolkit/public-api/focus-manager/accessibility-focus-manager.h [moved from dali-toolkit/public-api/focus-manager/focus-manager.h with 84% similarity]
dali-toolkit/public-api/focus-manager/focus-manager.cpp [deleted file]
dali-toolkit/public-api/focus-manager/keyboard-focus-manager.cpp
dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h
dali-toolkit/styles/dali-toolkit-default-theme.json [moved from dali-toolkit/styles/tizen-dark-theme.json with 100% similarity]
dali-toolkit/styles/mobile/dali-toolkit-default-theme.json [moved from dali-toolkit/styles/mobile/tizen-dark-theme.json with 100% similarity]
dali-toolkit/styles/mobile/tizen-default-theme.json [deleted symlink]
dali-toolkit/styles/tizen-default-theme.json [deleted symlink]
docs/api_footer.html
docs/content/figures/image-scaling/cards.jpg [new file with mode: 0644]
docs/content/figures/image-scaling/concept-rectangles.svg [new file with mode: 0644]
docs/content/figures/image-scaling/dog.jpg [new file with mode: 0644]
docs/content/figures/image-scaling/door.jpg [new file with mode: 0644]
docs/content/figures/image-scaling/example-fitting-mode-options.svg [new file with mode: 0644]
docs/content/figures/image-scaling/example-scale-to-fill-problem.svg [new file with mode: 0644]
docs/content/figures/image-scaling/example-scale-to-fill-sequence.svg [new file with mode: 0644]
docs/content/figures/image-scaling/gallery-large-12.jpg [new file with mode: 0644]
docs/content/figures/image-scaling/liberty.jpg [new file with mode: 0644]
docs/content/figures/image-scaling/phone-transparent-screen.png [new file with mode: 0644]
docs/content/figures/image-scaling/phone.png [new file with mode: 0644]
docs/content/images/animation/animated-path.png [new file with mode: 0644]
docs/content/images/architecture.png [new file with mode: 0644]
docs/content/images/dali-threads.png [new file with mode: 0644]
docs/content/images/example-documentation/example-code.png [deleted file]
docs/content/images/image-scaling/concept-rectangles.jpg [new file with mode: 0644]
docs/content/images/image-scaling/demo-fitting-sampling.jpg [new file with mode: 0644]
docs/content/images/image-scaling/demo-sampling-modes.jpg [new file with mode: 0644]
docs/content/images/image-scaling/example-scale-to-fill-problem.jpg [new file with mode: 0644]
docs/content/images/image-scaling/example-scale-to-fill-sequence.jpg [new file with mode: 0644]
docs/content/images/image-scaling/fitting-mode-options.jpg [new file with mode: 0644]
docs/content/images/image-scaling/sampling_modes_box.png [new file with mode: 0644]
docs/content/images/image-scaling/sampling_modes_box_then_linear.png [new file with mode: 0644]
docs/content/images/image-scaling/sampling_modes_box_then_nearest.png [new file with mode: 0644]
docs/content/images/image-scaling/sampling_modes_linear.png [new file with mode: 0644]
docs/content/images/image-scaling/sampling_modes_nearest.png [new file with mode: 0644]
docs/content/images/image-scaling/sampling_modes_no_filter.png [new file with mode: 0644]
docs/content/images/item-view/depth.png [new file with mode: 0644]
docs/content/images/item-view/grid.png [new file with mode: 0644]
docs/content/images/item-view/spiral.png [new file with mode: 0644]
docs/content/images/resource/9-patch-full.png [new file with mode: 0644]
docs/content/images/resource/9-patch-zoomed.png [new file with mode: 0644]
docs/content/images/resource/9-patch.png [new file with mode: 0644]
docs/content/images/stage-hand/blocks.png [new file with mode: 0644]
docs/content/images/stage-hand/inner-workings.png [new file with mode: 0644]
docs/content/images/stage-hand/netstat.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-logo.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-mainscreen.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-modify.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-netcat.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-performance.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-refesh.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-save.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-screenshot.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-settings.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-tizen-connection.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-ubuntu-connection.png [new file with mode: 0644]
docs/content/images/stage-hand/stagehand-zoom.png [new file with mode: 0644]
docs/content/main.md
docs/content/programming-guide/animation-example.h [deleted file]
docs/content/programming-guide/animation-multi-threading-notes.h
docs/content/programming-guide/animation-rotation.h [deleted file]
docs/content/programming-guide/constraints.h
docs/content/programming-guide/custom-actor.h [deleted file]
docs/content/programming-guide/dali-application.h
docs/content/programming-guide/dynamics-bodies.h [deleted file]
docs/content/programming-guide/dynamics-collisions.h [deleted file]
docs/content/programming-guide/dynamics-initialization.h [deleted file]
docs/content/programming-guide/dynamics-intro.h [deleted file]
docs/content/programming-guide/dynamics-joints.h [deleted file]
docs/content/programming-guide/event-system.h
docs/content/programming-guide/handle-body-idiom.h
docs/content/programming-guide/hello-world.h
docs/content/programming-guide/image-actor.h [new file with mode: 0644]
docs/content/programming-guide/image-mesh-actor.h [deleted file]
docs/content/programming-guide/item-view.h [deleted file]
docs/content/programming-guide/properties.h
docs/content/programming-guide/shader-intro.h
docs/content/programming-guide/size-negotiation-controls.h
docs/content/shared-javascript-and-cpp-documentation/animation.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/build-guide.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/dali-introduction.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/documentation-guide.md
docs/content/shared-javascript-and-cpp-documentation/fundamentals.md
docs/content/shared-javascript-and-cpp-documentation/high-level-design.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/item-view.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/javascript-wrapping-guide.md
docs/content/shared-javascript-and-cpp-documentation/multi-touch-guide.md
docs/content/shared-javascript-and-cpp-documentation/performance-profiling.md
docs/content/shared-javascript-and-cpp-documentation/performance-tips.md
docs/content/shared-javascript-and-cpp-documentation/programming-languages.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/resource-image-scaling.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/resource-tracking.md
docs/content/shared-javascript-and-cpp-documentation/resources.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/scene-graph.md [deleted file]
docs/content/shared-javascript-and-cpp-documentation/script-hello.md
docs/content/shared-javascript-and-cpp-documentation/script-json-specification.md
docs/content/shared-javascript-and-cpp-documentation/script-overview.md
docs/content/shared-javascript-and-cpp-documentation/signals-actions.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/stage-hand.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/text-field.md [new file with mode: 0644]
docs/content/shared-javascript-and-cpp-documentation/text-label.md
docs/content/shared-javascript-and-cpp-documentation/texture-atlas.md
docs/content/shared-javascript-and-cpp-documentation/texture-compression.md
docs/generated-internal/README.md
packaging/dali-toolkit.spec
plugins/dali-script-v8/src/dali-script-v8.h
plugins/dali-script-v8/src/events/event-object-generator.cpp
plugins/dali-script-v8/src/events/event-object-generator.h
plugins/dali-script-v8/src/image/resource-image-api.cpp
plugins/dali-script-v8/src/signals/dali-any-javascript-converter.cpp
plugins/dali-script-v8/src/signals/signal-manager.cpp
plugins/dali-script-v8/src/toolkit/builder/builder-api.h
plugins/dali-script-v8/src/toolkit/builder/builder-wrapper.h
plugins/dali-script-v8/src/toolkit/focus-manager/keyboard-focus-manager-api.cpp
plugins/dali-script-v8/src/toolkit/focus-manager/keyboard-focus-manager-wrapper.cpp
plugins/dali-script-v8/src/toolkit/focus-manager/keyboard-focus-manager-wrapper.h

index f039d8a..39d9377 100644 (file)
@@ -2,3 +2,4 @@
 build
 build.log
 tct*core.h
+results_xml.*
index 678dea7..c5fbed7 100755 (executable)
@@ -13,7 +13,11 @@ for i in `find . -name "*.dir"` ; do
         if [[ $? -eq 0 ]]
         then
             lcov $LCOV_OPTS --directory . -c -o dali.info
-            lcov $LCOV_OPTS --remove dali.info "*boost*" "/usr/include/*" "*/automated-tests/*" -o dali.info
+            lcov $LCOV_OPTS --remove dali.info "/usr/include/*" "*/automated-tests/*" "*/dali-env/*" -o dali.info
+            if [ ! -s dali.info ]
+            then
+              rm -f dali.info
+            fi
         fi
     )
 done
index 37cabf6..c1d466d 100755 (executable)
@@ -182,9 +182,9 @@ elif [[ $# == 2 && -f $DIR/$2 ]] ; then
     FILE=$2
 fi
 
-#Debug needs to be output on stderr ( calling script redirects stdout to file )
 #echo "Dir: $DIR  File: $FILE" >& 2
 
+
 # populate $TC_FILES with files declared in CMakeLists.txt
 if [[ -z $FILE ]]; then
     get_tc_files $DIR
index e7dc7cb..8011f6a 100644 (file)
@@ -48,9 +48,9 @@ FOREACH(directory ${${CAPI_LIB}_LIBRARY_DIRS})
 ENDFOREACH(directory ${CAPI_LIB_LIBRARY_DIRS})
 
 INCLUDE_DIRECTORIES(
+    ../../../
     ${${CAPI_LIB}_INCLUDE_DIRS}
     ../dali-toolkit/dali-toolkit-test-utils
-    ../../../
 )
 
 ADD_EXECUTABLE(${EXEC_NAME} ${EXEC_NAME}.cpp ${TC_SOURCES})
index 8d2734b..7d1ef18 100644 (file)
@@ -313,6 +313,22 @@ static bool TestCallback(Actor actor, const TouchEvent& event)
 
 //////////////////////////////////////////////////////////
 
+int UtcDaliPushButtonDownCast(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliPushButtonDownCast");
+
+  TETButton tetButton= Toolkit::TETButton::New();
+
+  BaseHandle object(tetButton);
+
+  TETButton tetButton2 = TETButton::DownCast( object );
+  DALI_TEST_CHECK(tetButton2);
+
+  TETButton tetButton3 = DownCast< TETButton >(object);
+  DALI_TEST_CHECK(tetButton3);
+  END_TEST;
+}
 
 int UtcDaliPushButtonInterruptEventWhenInsensitive(void)
 {
index 20932d6..9217cd0 100644 (file)
@@ -25,12 +25,13 @@ SET(TC_SOURCES
    utc-Dali-TableView.cpp
    utc-Dali-TextField.cpp
    utc-Dali-TextLabel.cpp
+   utc-Dali-TextSelectionPopup.cpp
    utc-Dali-ToolBar.cpp
    utc-Dali-Button.cpp
    utc-Dali-Control.cpp
    utc-Dali-ControlImpl.cpp
    utc-Dali-DefaultControls.cpp
-   utc-Dali-FocusManager.cpp
+   utc-Dali-AccessibilityFocusManager.cpp
    utc-Dali-ItemLayout.cpp
    utc-Dali-ItemView.cpp
    utc-Dali-KeyboardFocusManager.cpp
@@ -80,6 +81,7 @@ FOREACH(directory ${${CAPI_LIB}_LIBRARY_DIRS})
 ENDFOREACH(directory ${CAPI_LIB_LIBRARY_DIRS})
 
 INCLUDE_DIRECTORIES(
+    ../../../
     ${${CAPI_LIB}_INCLUDE_DIRS}
     dali-toolkit-test-utils
 )
index 3557c0d..b6b80a2 100644 (file)
@@ -17,7 +17,7 @@
 
 #include "dummy-control.h"
 
-#include <dali-toolkit/public-api/styling/style-manager.h>
+#include <dali-toolkit/devel-api/styling/style-manager.h>
 
 namespace Dali
 {
@@ -64,7 +64,7 @@ DummyControl DummyControlImpl::New()
 }
 
 DummyControlImpl::DummyControlImpl()
-: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ),
+: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_HOVER_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ),
   mCustomSlot1Called(false)
 {
 }
@@ -86,6 +86,7 @@ DummyControl DummyControlImplOverride::New()
 DummyControlImplOverride::DummyControlImplOverride()
 : DummyControlImpl(),
   initializeCalled(false),
+  activatedCalled(false),
   themeChangeCalled( false ),
   fontChangeCalled( false ),
   pinchCalled(false),
@@ -99,7 +100,8 @@ DummyControlImplOverride::DummyControlImplOverride()
   sizeSetCalled(false),
   sizeAnimationCalled(false),
   touchEventCalled(false),
-  mouseWheelEventCalled(false),
+  hoverEventCalled(false),
+  wheelEventCalled(false),
   keyEventCalled(false),
   keyInputFocusGained(false),
   keyInputFocusLost(false)
@@ -110,7 +112,12 @@ DummyControlImplOverride::~DummyControlImplOverride() { }
 
 
 void DummyControlImplOverride::OnInitialize() { initializeCalled = true; }
-void DummyControlImplOverride::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change ) { themeChangeCalled = change.themeChange; fontChangeCalled = change.defaultFontSizeChange; }
+void DummyControlImplOverride::OnActivated() { activatedCalled = true; }
+void DummyControlImplOverride::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change )
+{
+  themeChangeCalled = change == StyleChange::THEME_CHANGE;
+  fontChangeCalled = change == StyleChange::DEFAULT_FONT_SIZE_CHANGE;
+}
 void DummyControlImplOverride::OnPinch(const PinchGesture& pinch) { pinchCalled = true; }
 void DummyControlImplOverride::OnPan(const PanGesture& pan) { panCalled = true; }
 void DummyControlImplOverride::OnTap(const TapGesture& tap) { tapCalled = true; }
@@ -122,7 +129,8 @@ void DummyControlImplOverride::OnChildRemove(Actor& child) { childRemoveCalled =
 void DummyControlImplOverride::OnSizeSet(const Vector3& targetSize) { sizeSetCalled = true; }
 void DummyControlImplOverride::OnSizeAnimation(Animation& animation, const Vector3& targetSize) { sizeAnimationCalled = true; }
 bool DummyControlImplOverride::OnTouchEvent(const TouchEvent& event) { touchEventCalled = true; return false; }
-bool DummyControlImplOverride::OnMouseWheelEvent(const MouseWheelEvent& event) { mouseWheelEventCalled = true; return false; }
+bool DummyControlImplOverride::OnHoverEvent(const HoverEvent& event) { hoverEventCalled = true; return false; }
+bool DummyControlImplOverride::OnWheelEvent(const WheelEvent& event) { wheelEventCalled = true; return false; }
 bool DummyControlImplOverride::OnKeyEvent(const KeyEvent& event) { keyEventCalled = true; return false;}
 void DummyControlImplOverride::OnKeyInputFocusGained() { keyInputFocusGained = true; }
 void DummyControlImplOverride::OnKeyInputFocusLost() { keyInputFocusLost = true; }
index 473a01d..bcef6d1 100644 (file)
@@ -102,7 +102,8 @@ private:
 private: // From Internal::Control
 
   virtual void OnInitialize();
-  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change );
+  virtual void OnActivated();
+  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change );
   virtual void OnPinch(const PinchGesture& pinch);
   virtual void OnPan(const PanGesture& pan);
   virtual void OnTap(const TapGesture& tap);
@@ -117,7 +118,8 @@ private: // From CustomActorImpl
   virtual void OnSizeSet(const Vector3& targetSize);
   virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize);
   virtual bool OnTouchEvent(const TouchEvent& event);
-  virtual bool OnMouseWheelEvent(const MouseWheelEvent& event);
+  virtual bool OnHoverEvent(const HoverEvent& event);
+  virtual bool OnWheelEvent(const WheelEvent& event);
   virtual bool OnKeyEvent(const KeyEvent& event);
   virtual void OnKeyInputFocusGained();
   virtual void OnKeyInputFocusLost();
@@ -125,6 +127,7 @@ private: // From CustomActorImpl
 public:
 
   bool initializeCalled;
+  bool activatedCalled;
   bool themeChangeCalled;
   bool fontChangeCalled;
   bool pinchCalled;
@@ -138,7 +141,8 @@ public:
   bool sizeSetCalled;
   bool sizeAnimationCalled;
   bool touchEventCalled;
-  bool mouseWheelEventCalled;
+  bool hoverEventCalled;
+  bool wheelEventCalled;
   bool keyEventCalled;
   bool keyInputFocusGained;
   bool keyInputFocusLost;
index 3fed0a2..24e3209 100644 (file)
@@ -42,22 +42,17 @@ int RunTestCase( struct ::testcase_s& testCase )
 {
   int result = EXIT_STATUS_TESTCASE_FAILED;
 
-  try
+// dont want to catch exception as we want to be able to get
+// gdb stack trace from the first error
+// by default tests should all always pass with no exceptions
+  if( testCase.startup )
   {
-    if( testCase.startup )
-    {
-      testCase.startup();
-    }
-    result = testCase.function();
-    if( testCase.cleanup )
-    {
-      testCase.cleanup();
-    }
+    testCase.startup();
   }
-  catch (...)
+  result = testCase.function();
+  if( testCase.cleanup )
   {
-    printf("Caught exception in test case.\n");
-    result = EXIT_STATUS_TESTCASE_ABORTED;
+    testCase.cleanup();
   }
 
   return result;
index 2fce6a2..c083fef 100644 (file)
@@ -21,7 +21,7 @@
 // EXTERNAL INCLUDES
 #include <stdint.h>
 #include <cstring>
-#include <dali/devel-api/images/image-operations.h>
+#include <dali/public-api/images/image-operations.h>
 
 // INTERNAL INCLUDES
 #include <dali/devel-api/common/set-wrapper.h>
index 0532266..97c0df1 100644 (file)
@@ -19,7 +19,7 @@
 
 #include <dali/public-api/common/dali-common.h>
 #include <dali/public-api/signals/dali-signal.h>
-#include <dali/public-api/adaptor-framework/orientation.h>
+#include <dali/devel-api/adaptor-framework/orientation.h>
 
 namespace Dali
 {
index d62941b..007f70f 100644 (file)
@@ -20,7 +20,7 @@
 
 // EXTERNAL INCLUDES
 #include <string>
-#include <dali/public-api/adaptor-framework/orientation.h>
+#include <dali/devel-api/adaptor-framework/orientation.h>
 
 namespace Dali
 {
index dc2d39f..65750c1 100644 (file)
@@ -48,7 +48,7 @@ public: // Style Information
 public: // Signals
   Dali::StyleMonitor::StyleChangeSignalType& StyleChangeSignal();
 
-  void EmitStyleChangeSignal(StyleChange styleChange)
+  void EmitStyleChangeSignal(StyleChange::Type styleChange)
   {
     mStyleChangeSignal.Emit(Dali::StyleMonitor(this), styleChange);
   }
@@ -96,11 +96,8 @@ const std::string& StyleMonitor::GetTheme() const
 
 void StyleMonitor::SetTheme(std::string path)
 {
-  StyleChange styleChange;
-  styleChange.themeChange = true;
-  styleChange.themeFilePath = path;
   mTheme = path;
-  EmitStyleChangeSignal(styleChange);
+  EmitStyleChangeSignal( StyleChange::THEME_CHANGE );
 }
 
 Dali::StyleMonitor::StyleChangeSignalType& StyleMonitor::StyleChangeSignal()
@@ -170,7 +167,7 @@ StyleMonitor::StyleChangeSignalType& StyleMonitor::StyleChangeSignal()
   return GetImplementation(*this).StyleChangeSignal();
 }
 
-void StyleMonitor::EmitStyleChangeSignal(StyleChange styleChange)
+void StyleMonitor::EmitStyleChangeSignal(StyleChange::Type styleChange)
 {
   GetImplementation(*this).EmitStyleChangeSignal(styleChange);
 }
index fc8b8f2..8aa55e5 100644 (file)
@@ -41,7 +41,7 @@ class StyleMonitor;
 class StyleMonitor : public BaseHandle
 {
 public: // Typedefs
-  typedef Signal< void (StyleMonitor, StyleChange) > StyleChangeSignalType;
+  typedef Signal< void (StyleMonitor, StyleChange::Type) > StyleChangeSignalType;
   static const std::string DEFAULT_FONT_FAMILY;
   static const float       DEFAULT_FONT_SIZE;
 
@@ -60,7 +60,7 @@ public: // Style Information
 
 public: // Signals
   StyleChangeSignalType& StyleChangeSignal();
-  void EmitStyleChangeSignal(StyleChange handle);
+  void EmitStyleChangeSignal(StyleChange::Type handle);
 
 public: // Operators
   StyleMonitor& operator=(const StyleMonitor& monitor);
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -28,12 +28,12 @@ using namespace Dali;
 using namespace Toolkit;
 
 
-void utc_dali_toolkit_focus_manager_startup(void)
+void utc_dali_toolkit_accessibility_focus_manager_startup(void)
 {
   test_return_value = TET_UNDEF;
 }
 
-void utc_dali_toolkit_focus_manager_cleanup(void)
+void utc_dali_toolkit_accessibility_focus_manager_cleanup(void)
 {
   test_return_value = TET_PASS;
 }
@@ -90,11 +90,11 @@ public:
   FocusOvershotCallback(bool& signalReceived)
   : mSignalVerified(signalReceived),
     mCurrentFocusedActor(),
-    mFocusOvershotDirection(Toolkit::FocusManager::OVERSHOT_NEXT)
+    mFocusOvershotDirection(Toolkit::AccessibilityFocusManager::OVERSHOT_NEXT)
   {
   }
 
-  void Callback(Actor currentFocusedActor, Toolkit::FocusManager::FocusOvershotDirection direction)
+  void Callback(Actor currentFocusedActor, Toolkit::AccessibilityFocusManager::FocusOvershotDirection direction)
   {
     tet_infoline("Verifying FocusOvershotCallback()");
 
@@ -111,19 +111,33 @@ public:
 
   bool& mSignalVerified;
   Actor mCurrentFocusedActor;
-  Toolkit::FocusManager::FocusOvershotDirection mFocusOvershotDirection;
+  Toolkit::AccessibilityFocusManager::FocusOvershotDirection mFocusOvershotDirection;
+};
+
+// Functor to test whether focused actor activated signal is emitted.
+class FocusedActorActivatedCallback : public Dali::ConnectionTracker
+{
+public:
+  FocusedActorActivatedCallback()
+  {
+  }
+
+  void Callback(Actor activatedActor)
+  {
+    tet_infoline("Verifying FocusedActorActivatedCallback()");
+  }
 };
 
 } // namespace
 
 
-int UtcDaliFocusManagerGet(void)
+int UtcDaliAccessibilityFocusManagerGet(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerGet");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerGet");
 
-  FocusManager manager;
+  AccessibilityFocusManager manager;
 
   //Ensure object is created by checking if it's registered
   ObjectRegistry registry = Stage::GetCurrent().GetObjectRegistry();
@@ -132,12 +146,12 @@ int UtcDaliFocusManagerGet(void)
   gObjectCreatedCallBackCalled = false;
   registry.ObjectCreatedSignal().Connect( &TestCallback );
   {
-    manager = FocusManager::Get();
+    manager = AccessibilityFocusManager::Get();
     DALI_TEST_CHECK(manager);
   }
   DALI_TEST_CHECK( gObjectCreatedCallBackCalled );
 
-  FocusManager newManager = FocusManager::Get();
+  AccessibilityFocusManager newManager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(newManager);
 
   // Check that focus manager is a singleton
@@ -145,33 +159,33 @@ int UtcDaliFocusManagerGet(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerSetAndGetAccessibilityAttribute(void)
+int UtcDaliAccessibilityFocusManagerSetAndGetAccessibilityAttribute(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerSetAndGetAccessibilityAttribute");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerSetAndGetAccessibilityAttribute");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   Actor actor = Actor::New();
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(actor, FocusManager::ACCESSIBILITY_LABEL) == "");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(actor, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "");
 
-  manager.SetAccessibilityAttribute(actor, FocusManager::ACCESSIBILITY_LABEL, "Description");
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(actor, FocusManager::ACCESSIBILITY_LABEL) == "Description");
+  manager.SetAccessibilityAttribute(actor, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "Description");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(actor, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "Description");
 
-  manager.SetAccessibilityAttribute(actor, FocusManager::ACCESSIBILITY_LABEL, "New description");
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(actor, FocusManager::ACCESSIBILITY_LABEL) == "New description");
+  manager.SetAccessibilityAttribute(actor, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "New description");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(actor, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "New description");
   END_TEST;
 }
 
-int UtcDaliFocusManagerSetAndGetFocusOrder(void)
+int UtcDaliAccessibilityFocusManagerSetAndGetFocusOrder(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerSetAndGetFocusOrder");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerSetAndGetFocusOrder");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   Actor first = Actor::New();
@@ -181,59 +195,59 @@ int UtcDaliFocusManagerSetAndGetFocusOrder(void)
 
   // Set the focus order and description for the first actor
   manager.SetFocusOrder(first, 1);
-  manager.SetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL, "first");
+  manager.SetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "first");
   DALI_TEST_CHECK(manager.GetFocusOrder(first) == 1);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Set the focus order and description for the second actor
   manager.SetFocusOrder(second, 2);
-  manager.SetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL, "second");
+  manager.SetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "second");
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 2);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // check that the focus order of the first actor is changed
   manager.SetFocusOrder(first, 2);
   DALI_TEST_CHECK(manager.GetFocusOrder(first) == 2);
   // make sure the change of focus order doesn't affect the actor's description
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // check that the focus order of the second actor is increased to 3
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 3);
   // make sure the change of focus order doesn't affect the actor's description
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // check that the focus order of the second actor is changed to 1
   manager.SetFocusOrder(second, 1);
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 1);
   // make sure the change of focus order doesn't affect the actor's description
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // Set the focus order and description for the third actor
   Actor third = Actor::New();
   manager.SetFocusOrder(third, 1);
-  manager.SetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL, "third");
+  manager.SetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "third");
   DALI_TEST_CHECK(manager.GetFocusOrder(third) == 1);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // check that the focus order of the second actor is increased to 2.
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 2);
   // make sure the change of focus order doesn't affect the actor's description
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // check that the focus order of the first actor is increased to 3.
   DALI_TEST_CHECK(manager.GetFocusOrder(first) == 3);
   // make sure the change of focus order doesn't affect the actor's description
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
   END_TEST;
 }
 
-int UtcDaliFocusManagerGenerateNewFocusOrder(void)
+int UtcDaliAccessibilityFocusManagerGenerateNewFocusOrder(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerGenerateNewFocusOrder");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerGenerateNewFocusOrder");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   DALI_TEST_CHECK(1 == manager.GenerateNewFocusOrder());
@@ -244,7 +258,7 @@ int UtcDaliFocusManagerGenerateNewFocusOrder(void)
 
   // Set the focus order for the first actor
   manager.SetFocusOrder(first, 1);
-  manager.SetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL, "first");
+  manager.SetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "first");
   DALI_TEST_CHECK(manager.GetFocusOrder(first) == 1);
 
   //Test for new focus order
@@ -252,18 +266,18 @@ int UtcDaliFocusManagerGenerateNewFocusOrder(void)
 
   // Set the focus order for the first actor
   manager.SetFocusOrder(second, 2);
-  manager.SetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL, "first");
+  manager.SetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "first");
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 2);
   END_TEST;
 }
 
-int UtcDaliFocusManagerGetActorByFocusOrder(void)
+int UtcDaliAccessibilityFocusManagerGetActorByFocusOrder(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerGetActorByFocusOrder");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerGetActorByFocusOrder");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   // Create the actors and set their focus orders
@@ -307,13 +321,13 @@ int UtcDaliFocusManagerGetActorByFocusOrder(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerSetAndGetCurrentFocusActor(void)
+int UtcDaliAccessibilityFocusManagerSetAndGetCurrentFocusActor(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerSetAndGetCurrentFocusActor");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerSetAndGetCurrentFocusActor");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   // Create the first actor and add it to the stage
@@ -398,13 +412,13 @@ int UtcDaliFocusManagerSetAndGetCurrentFocusActor(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerGetCurrentFocusGroup(void)
+int UtcDaliAccessibilityFocusManagerGetCurrentFocusGroup(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerGetCurrentFocusGroup");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerGetCurrentFocusGroup");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   // Create an actor with two child actors and add it to the stage
@@ -465,13 +479,13 @@ int UtcDaliFocusManagerGetCurrentFocusGroup(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerGetCurrentFocusOrder(void)
+int UtcDaliAccessibilityFocusManagerGetCurrentFocusOrder(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerGetCurrentFocusOrder");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerGetCurrentFocusOrder");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   Actor first = Actor::New();
@@ -485,21 +499,21 @@ int UtcDaliFocusManagerGetCurrentFocusOrder(void)
 
   // Set the focus order and description for the first actor
   manager.SetFocusOrder(first, 1);
-  manager.SetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL, "first");
+  manager.SetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "first");
   DALI_TEST_CHECK(manager.GetFocusOrder(first) == 1);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Set the focus order and description for the second actor
   manager.SetFocusOrder(second, 2);
-  manager.SetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL, "second");
+  manager.SetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "second");
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 2);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // Set the focus order and description for the second actor
   manager.SetFocusOrder(third, 3);
-  manager.SetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL, "third");
+  manager.SetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "third");
   DALI_TEST_CHECK(manager.GetFocusOrder(third) == 3);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Check that no actor is being focused yet.
   DALI_TEST_CHECK(manager.GetCurrentFocusOrder() == 0);
@@ -522,13 +536,13 @@ int UtcDaliFocusManagerGetCurrentFocusOrder(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerMoveFocusForward(void)
+int UtcDaliAccessibilityFocusManagerMoveFocusForward(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerMoveFocusForward");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerMoveFocusForward");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   Actor first = Actor::New();
@@ -542,21 +556,21 @@ int UtcDaliFocusManagerMoveFocusForward(void)
 
   // Set the focus order and description for the first actor
   manager.SetFocusOrder(first, 1);
-  manager.SetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL, "first");
+  manager.SetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "first");
   DALI_TEST_CHECK(manager.GetFocusOrder(first) == 1);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Set the focus order and description for the second actor
   manager.SetFocusOrder(second, 2);
-  manager.SetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL, "second");
+  manager.SetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "second");
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 2);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // Set the focus order and description for the second actor
   manager.SetFocusOrder(third, 3);
-  manager.SetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL, "third");
+  manager.SetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "third");
   DALI_TEST_CHECK(manager.GetFocusOrder(third) == 3);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Check that no actor is being focused yet.
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor());
@@ -564,7 +578,7 @@ int UtcDaliFocusManagerMoveFocusForward(void)
   // Set the focus on the first actor
   DALI_TEST_CHECK(manager.SetCurrentFocusActor(first) == true);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Test the non-wrapped move first
   manager.SetWrapMode(false);
@@ -573,19 +587,19 @@ int UtcDaliFocusManagerMoveFocusForward(void)
   // Move the focus forward to the second actor
   manager.MoveFocusForward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // Move the focus forward to the third actor
   manager.MoveFocusForward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Check that it will fail to move the focus forward again as the third actor is the last
   // focusable actor in the focus chain
   manager.MoveFocusForward();
   // The focus should still be set on the third actor
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Now test the wrapped move
   manager.SetWrapMode(true);
@@ -594,7 +608,7 @@ int UtcDaliFocusManagerMoveFocusForward(void)
   // Move the focus forward recursively and this time the first actor should be focused
   manager.MoveFocusForward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Make the second actor not focusable
   Property::Index propertyActorFocusable = second.GetPropertyIndex("focusable");
@@ -607,7 +621,7 @@ int UtcDaliFocusManagerMoveFocusForward(void)
   // the third actor should be focused now.
   manager.MoveFocusForward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Make the first actor invisible
   first.SetVisible(false);
@@ -620,7 +634,7 @@ int UtcDaliFocusManagerMoveFocusForward(void)
   // so the focus will still be on the third actor
   manager.MoveFocusForward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Make the third actor invisible so that no actor can be focused.
   third.SetVisible(false);
@@ -631,17 +645,17 @@ int UtcDaliFocusManagerMoveFocusForward(void)
   // Check that the focus move is failed as all the three actors can not be focused
   manager.MoveFocusForward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
   END_TEST;
 }
 
-int UtcDaliFocusManagerMoveFocusBackward(void)
+int UtcDaliAccessibilityFocusManagerMoveFocusBackward(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerMoveFocusBackward");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerMoveFocusBackward");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   Actor first = Actor::New();
@@ -655,21 +669,21 @@ int UtcDaliFocusManagerMoveFocusBackward(void)
 
   // Set the focus order and description for the first actor
   manager.SetFocusOrder(first, 1);
-  manager.SetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL, "first");
+  manager.SetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "first");
   DALI_TEST_CHECK(manager.GetFocusOrder(first) == 1);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(first, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Set the focus order and description for the second actor
   manager.SetFocusOrder(second, 2);
-  manager.SetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL, "second");
+  manager.SetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "second");
   DALI_TEST_CHECK(manager.GetFocusOrder(second) == 2);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(second, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // Set the focus order and description for the second actor
   manager.SetFocusOrder(third, 3);
-  manager.SetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL, "third");
+  manager.SetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL, "third");
   DALI_TEST_CHECK(manager.GetFocusOrder(third) == 3);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(third, AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Check that no actor is being focused yet.
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == Actor());
@@ -677,7 +691,7 @@ int UtcDaliFocusManagerMoveFocusBackward(void)
   // Set the focus on the third actor
   DALI_TEST_CHECK(manager.SetCurrentFocusActor(third) == true);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Test the non-wrapped move first
   manager.SetWrapMode(false);
@@ -686,19 +700,19 @@ int UtcDaliFocusManagerMoveFocusBackward(void)
   // Move the focus backward to the second actor
   manager.MoveFocusBackward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "second");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "second");
 
   // Move the focus backward to the first actor
   manager.MoveFocusBackward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Check that it will fail to move the focus backward again as the first actor is the first
   // focusable actor in the focus chain
   manager.MoveFocusBackward();
   // The focus should still be set on the first actor
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Now test the wrapped move
   manager.SetWrapMode(true);
@@ -707,7 +721,7 @@ int UtcDaliFocusManagerMoveFocusBackward(void)
   // Move the focus backward recursively and this time the third actor should be focused
   manager.MoveFocusBackward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "third");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "third");
 
   // Make the second actor not focusable
   Property::Index propertyActorFocusable = second.GetPropertyIndex("focusable");
@@ -720,7 +734,7 @@ int UtcDaliFocusManagerMoveFocusBackward(void)
   // the first actor should be focused now.
   manager.MoveFocusBackward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Make the third actor invisible
   third.SetVisible(false);
@@ -733,7 +747,7 @@ int UtcDaliFocusManagerMoveFocusBackward(void)
   // so the focus will still be on the first actor
   manager.MoveFocusBackward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
 
   // Make the first actor invisible so that no actor can be focused.
   first.SetVisible(false);
@@ -744,17 +758,17 @@ int UtcDaliFocusManagerMoveFocusBackward(void)
   // Check that the focus move is failed as all the three actors can not be focused
   manager.MoveFocusBackward();
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
-  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), FocusManager::ACCESSIBILITY_LABEL) == "first");
+  DALI_TEST_CHECK(manager.GetAccessibilityAttribute(manager.GetCurrentFocusActor(), AccessibilityFocusManager::ACCESSIBILITY_LABEL) == "first");
   END_TEST;
 }
 
-int UtcDaliFocusManagerClearFocus(void)
+int UtcDaliAccessibilityFocusManagerClearFocus(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerClearFocus");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerClearFocus");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   // Create the first actor and add it to the stage
@@ -786,13 +800,13 @@ int UtcDaliFocusManagerClearFocus(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerReset(void)
+int UtcDaliAccessibilityFocusManagerReset(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerReset");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerReset");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   // Create the first actor and add it to the stage
@@ -826,13 +840,13 @@ int UtcDaliFocusManagerReset(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerFocusGroup(void)
+int UtcDaliAccessibilityFocusManagerFocusGroup(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerFocusGroup");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerFocusGroup");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   // Create an actor with two child actors and add it to the stage
@@ -923,13 +937,13 @@ int UtcDaliFocusManagerFocusGroup(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerSetAndGetFocusIndicator(void)
+int UtcDaliAccessibilityFocusManagerSetAndGetFocusIndicator(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerSetAndGetFocusIndicator");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerSetAndGetFocusIndicator");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   Actor defaultFocusIndicatorActor = manager.GetFocusIndicatorActor();
@@ -941,13 +955,13 @@ int UtcDaliFocusManagerSetAndGetFocusIndicator(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerSignalFocusChanged(void)
+int UtcDaliAccessibilityFocusManagerSignalFocusChanged(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerSignalFocusChanged");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerSignalFocusChanged");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   bool signalVerified = false;
@@ -988,13 +1002,13 @@ int UtcDaliFocusManagerSignalFocusChanged(void)
   END_TEST;
 }
 
-int UtcDaliFocusManagerSignalFocusOvershot(void)
+int UtcDaliAccessibilityFocusManagerSignalFocusOvershot(void)
 {
   ToolkitTestApplication application;
 
-  tet_infoline(" UtcDaliFocusManagerSignalFocusOvershot");
+  tet_infoline(" UtcDaliAccessibilityFocusManagerSignalFocusOvershot");
 
-  FocusManager manager = FocusManager::Get();
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
   DALI_TEST_CHECK(manager);
 
   bool signalVerified = false;
@@ -1024,7 +1038,7 @@ int UtcDaliFocusManagerSignalFocusOvershot(void)
 
   // Check that the forward focus movement is overshot.
   callback.mCurrentFocusedActor = second;
-  callback.mFocusOvershotDirection = Toolkit::FocusManager::OVERSHOT_NEXT;
+  callback.mFocusOvershotDirection = Toolkit::AccessibilityFocusManager::OVERSHOT_NEXT;
   DALI_TEST_CHECK(manager.MoveFocusForward() == false);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second);
   DALI_TEST_CHECK(signalVerified);
@@ -1045,9 +1059,25 @@ int UtcDaliFocusManagerSignalFocusOvershot(void)
 
   // Check that the backward focus movement is overshot.
   callback.mCurrentFocusedActor = first;
-  callback.mFocusOvershotDirection = Toolkit::FocusManager::OVERSHOT_PREVIOUS;
+  callback.mFocusOvershotDirection = Toolkit::AccessibilityFocusManager::OVERSHOT_PREVIOUS;
   DALI_TEST_CHECK(manager.MoveFocusBackward() == false);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
   DALI_TEST_CHECK(signalVerified);
   END_TEST;
 }
+
+int UtcDaliAccessibilityFocusManagerSignalFocusedActorActivated(void)
+{
+  ToolkitTestApplication application;
+
+  tet_infoline(" UtcDaliAccessibilityFocusManagerSignalFocusedActorActivated");
+
+  AccessibilityFocusManager manager = AccessibilityFocusManager::Get();
+  DALI_TEST_CHECK(manager);
+
+  FocusedActorActivatedCallback callback;
+  manager.FocusedActorActivatedSignal().Connect(&callback, &FocusedActorActivatedCallback::Callback);
+  DALI_TEST_CHECK(true);
+
+  END_TEST;
+}
index 0f62a2a..2d9d8cc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -924,7 +924,7 @@ int UtcDaliAlignmentChildAddAndRemove(void)
   END_TEST;
 }
 
-int UtcDaliAlignmentOnSizeSet(void)
+int UtcDaliAlignmentSizeSetP(void)
 {
   ToolkitTestApplication application;
 
@@ -942,7 +942,7 @@ int UtcDaliAlignmentOnSizeSet(void)
   application.Render();
   application.SendNotification();
 
-  DALI_TEST_EQUALS(size, alignment.GetImplementation().GetControlSize().GetVectorXY(), TEST_LOCATION);
+  DALI_TEST_EQUALS(size, alignment.GetTargetSize().GetVectorXY(), TEST_LOCATION);
 
   Stage::GetCurrent().Remove(alignment);
   END_TEST;
index c6305e8..c35269a 100644 (file)
@@ -19,6 +19,8 @@
 #include <stdlib.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/bloom-view/bloom-view.h>
+
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index 33a0c2c..db8a9df 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <dali.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/bubble-effect/bubble-emitter.h>
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index cc03bb1..5fa3d17 100644 (file)
@@ -18,7 +18,7 @@
 #include <iostream>
 #include <stdlib.h>
 #include <dali-toolkit-test-suite-utils.h>
-#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali-toolkit/devel-api/builder/builder.h>
 #include <dali/integration-api/events/touch-event-integ.h>
 
 using namespace Dali;
index 12e85b6..5127cfb 100644 (file)
@@ -42,11 +42,11 @@ void utc_dali_toolkit_button_cleanup(void)
 
 namespace
 {
-static bool gButtonClicked = false;
+static bool gIsCalledButtonCallback = false;
 
-static bool ButtonClicked( Button button )
+static bool ButtonCallback( Button button )
 {
-  gButtonClicked = true;
+  gIsCalledButtonCallback = true;
   return false;
 }
 
@@ -60,159 +60,318 @@ const Dali::TouchPoint pointUpOutside( 0, TouchPoint::Up, 10, 10 );
 static float ANIMATION_TIME( 0.5f );
 } // namespace
 
+int UtcDaliButtonConstructorP(void)
+{
+  TestApplication application;
+
+  Button button;
+
+  DALI_TEST_CHECK( !button );
+  END_TEST;
+}
+
+int UtcDaliButtonCopyConstructorP(void)
+{
+  TestApplication application;
+
+  // Initialize an object, ref count == 1
+  Button button = PushButton::New();
+
+  Button copy( button );
+  DALI_TEST_CHECK( copy );
+  END_TEST;
+}
+
+int UtcDaliButtonAssignmentOperatorP(void)
+{
+  TestApplication application;
+
+  Button button = PushButton::New();
+
+  Button copy( button );
+  DALI_TEST_CHECK( copy );
+
+  DALI_TEST_CHECK( button == copy );
+  END_TEST;
+}
+
+int UtcDaliButtonDownCastP(void)
+{
+  TestApplication application;
+
+  Button button = PushButton::New();
+
+  BaseHandle object(button);
+
+  Button button2 = Button::DownCast( object );
+  DALI_TEST_CHECK(button2);
+
+  Button button3 = DownCast< Button >(object);
+  DALI_TEST_CHECK(button3);
+  END_TEST;
+}
+
+int UtcDaliButtonDownCastN(void)
+{
+  TestApplication application;
+
+  BaseHandle unInitializedObject;
 
+  Button button1 = Button::DownCast( unInitializedObject );
+  DALI_TEST_CHECK( !button1 );
 
-// Positive test case for a method
-int UtcDaliButtonNew(void)
+  Button button2 = DownCast< Button >( unInitializedObject );
+  DALI_TEST_CHECK( !button2 );
+  END_TEST;
+}
+
+int UtcDaliButtonSetDisabledP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliButtonNew");
 
-  PushButton pushButton = PushButton::New();
+  Button button = PushButton::New();
 
-  DALI_TEST_CHECK( pushButton );
+  button.SetDisabled( true );
 
-  PushButton pushButton2( pushButton );
+  DALI_TEST_CHECK( button.IsDisabled() );
 
-  DALI_TEST_CHECK( pushButton2 );
+  button.SetDisabled( false );
 
-  pushButton2.Reset();
+  DALI_TEST_CHECK( !button.IsDisabled() );
 
-  // Test down cast
-  Handle handleButton;
-  handleButton = pushButton;
-  Button downCastPushButton = Button::DownCast( handleButton );
-  DALI_TEST_CHECK( downCastPushButton );
-  PushButton downCastPushButton2 = PushButton::DownCast( handleButton );
-  DALI_TEST_CHECK( downCastPushButton2 );
+  button.SetDisabled( true );
 
+  DALI_TEST_CHECK( button.IsDisabled() );
+
+  button.SetDisabled( false );
+
+  DALI_TEST_CHECK( !button.IsDisabled() );
   END_TEST;
 }
 
-int UtcDaliButtonSetProperty(void)
+int UtcDaliButtonIsDisabledP(void)
 {
-  tet_infoline("UtcDaliButtonSetProperty: ");
   ToolkitTestApplication application;
 
-  PushButton pushButton = PushButton::New();
+  Button button = PushButton::New();
 
-  pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), false);
-  DALI_TEST_CHECK( false == pushButton.IsDisabled() );
-  pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
-  DALI_TEST_CHECK( true == pushButton.IsDisabled() );
+  button.SetDisabled( true );
+
+  DALI_TEST_CHECK( button.IsDisabled() );
+
+  button.SetDisabled( false );
+
+  DALI_TEST_CHECK( !button.IsDisabled() );
   END_TEST;
 }
 
-int UtcDaliButtonSetGetDimmed(void)
+int UtcDaliButtonSetAutoRepeatingP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliButtonSetGetDimmed");
 
-  PushButton pushButton = PushButton::New();
+  Button button = PushButton::New();
 
-  pushButton.SetDisabled( true );
+  button.SetAutoRepeating( true );
 
-  DALI_TEST_CHECK( pushButton.IsDisabled() );
+  DALI_TEST_CHECK( button.IsAutoRepeating() );
 
-  pushButton.SetDisabled( false );
+  button.SetAutoRepeating( false );
 
-  DALI_TEST_CHECK( !pushButton.IsDisabled() );
+  DALI_TEST_CHECK( !button.IsAutoRepeating() );
 
-  pushButton.SetDisabled( true );
+  button.SetAutoRepeating( true );
 
-  DALI_TEST_CHECK( pushButton.IsDisabled() );
+  DALI_TEST_CHECK( button.IsAutoRepeating() );
 
-  pushButton.SetDisabled( false );
+  button.SetAutoRepeating( false );
 
-  DALI_TEST_CHECK( !pushButton.IsDisabled() );
+  DALI_TEST_CHECK( !button.IsAutoRepeating() );
   END_TEST;
 }
 
-int UtcDaliButtonSize(void)
+int UtcDaliButtonIsAutoRepeatingP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliButtonSize");
 
-  ImageActor image01 = ImageActor::New(CreateBufferImage());
-  image01.SetSize( 100, 50 );
+  Button button = PushButton::New();
 
-  PushButton pushButton;
+  button.SetAutoRepeating( true );
 
-  Vector3 size;
+  DALI_TEST_CHECK( button.IsAutoRepeating() );
 
-  // Test1 Size is set through Actor API
+  button.SetAutoRepeating( false );
 
-  // First an image is set, then SetSize is called.
-  pushButton = PushButton::New();
-  Stage::GetCurrent().Add( pushButton );
+  DALI_TEST_CHECK( !button.IsAutoRepeating() );
+  END_TEST;
+}
 
-  pushButton.SetBackgroundImage( image01 );
-  pushButton.SetSize( 10.f, 10.f );
+int UtcDaliButtonSetInitialAutoRepeatingDelayP(void)
+{
+  ToolkitTestApplication application;
 
-  application.SendNotification();
-  application.Render();
+  Button button = PushButton::New();
 
-  size = pushButton.GetCurrentSize();
+  button.SetInitialAutoRepeatingDelay( 0.5f );
 
-  DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
-  DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );
+  DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
+
+  button.SetInitialAutoRepeatingDelay( 0.2f );
+
+  DALI_TEST_EQUALS( button.GetInitialAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
   END_TEST;
 }
 
-int UtcDaliButtonClicked(void)
+int UtcDaliButtonSetNextAutoRepeatingDelayP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliButtonClicked");
 
-  PushButton pushButton = PushButton::New();
-  pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
-  pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
-  pushButton.SetPosition( 240, 400 );
-  pushButton.SetSize( 100, 100 );
+  Button button = PushButton::New();
 
-  Stage::GetCurrent().Add( pushButton );
+  button.SetNextAutoRepeatingDelay( 0.5f );
+
+  DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.5f, TEST_LOCATION );
+
+  button.SetNextAutoRepeatingDelay( 0.2f );
+
+  DALI_TEST_EQUALS( button.GetNextAutoRepeatingDelay(), 0.2f, TEST_LOCATION );
+  END_TEST;
+}
+
+int UtcDaliButtonSetTogglableButtonP(void)
+{
+  ToolkitTestApplication application;
+
+  Button button = PushButton::New();
+
+  button.SetTogglableButton( true );
+
+  DALI_TEST_CHECK( button.IsTogglableButton() );
+
+  button.SetTogglableButton( false );
+
+  DALI_TEST_CHECK( !button.IsTogglableButton() );
+  END_TEST;
+}
+
+int UtcDaliButtonSetSelectedP(void)
+{
+  ToolkitTestApplication application;
+
+  Button button = PushButton::New();
+  button.SetTogglableButton( true );
+
+  button.SetSelected( true );
+
+  DALI_TEST_CHECK( button.IsSelected() );
+
+  button.SetSelected( false );
+
+  DALI_TEST_CHECK( !button.IsSelected() );
+  END_TEST;
+}
+
+int UtcDaliButtonSetAnimationTimeP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliButtonSetAnimationTimeP");
+
+  Button button = PushButton::New();
+
+  button.SetAnimationTime( ANIMATION_TIME );
+
+  DALI_TEST_EQUALS( button.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );
+  END_TEST;
+}
+
+int UtcDaliButtonSetLabelStringP(void)
+{
+  ToolkitTestApplication application;
+
+  Button button = PushButton::New();
+
+  button.SetLabel( "Button Label" );
+
+  DALI_TEST_CHECK( button.GetLabel() );
+  END_TEST;
+}
+
+int UtcDaliButtonSetLabelActorP(void)
+{
+  ToolkitTestApplication application;
+
+  Button button = PushButton::New();
+
+  TextLabel textLabel = TextLabel::New( "Button Label" );
+  button.SetLabel( textLabel );
+
+  DALI_TEST_CHECK( button.GetLabel() );
+  END_TEST;
+}
+
+int UtcDaliButtonPressedSignalP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliButtonPressedSignalP");
+
+  Button button = PushButton::New();
+  button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+  button.SetParentOrigin( ParentOrigin::TOP_LEFT );
+  button.SetPosition( 240, 400 );
+  button.SetSize( 100, 100 );
+
+  Stage::GetCurrent().Add( button );
 
   application.SendNotification();
   application.Render();
 
   // connect to its touch signal
-  pushButton.ClickedSignal().Connect( &ButtonClicked );
+  button.PressedSignal().Connect( &ButtonCallback );
+  button.ReleasedSignal().Connect( &ButtonCallback );
 
   Dali::Integration::TouchEvent event;
 
   // Test1. Touch point down and up inside the button.
 
-  gButtonClicked = false;
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointDownInside );
   application.ProcessEvent( event );
 
+  DALI_TEST_CHECK( gIsCalledButtonCallback );
+
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointUpInside );
   application.ProcessEvent( event );
 
-  DALI_TEST_CHECK( gButtonClicked );
+  DALI_TEST_CHECK( gIsCalledButtonCallback );
 
   // Test2. Touch point down and up outside the button.
 
-  gButtonClicked = false;
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointDownOutside );
   application.ProcessEvent( event );
 
+  DALI_TEST_CHECK( !gIsCalledButtonCallback );
+
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointUpOutside );
   application.ProcessEvent( event );
 
-  DALI_TEST_CHECK( !gButtonClicked );
+  DALI_TEST_CHECK( !gIsCalledButtonCallback );
 
   // Test3. Touch point down inside and up outside the button.
 
-  gButtonClicked = false;
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointDownInside );
   application.ProcessEvent( event );
 
+  DALI_TEST_CHECK( gIsCalledButtonCallback );
+
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointLeave );
   application.ProcessEvent( event );
@@ -221,15 +380,18 @@ int UtcDaliButtonClicked(void)
   event.AddPoint( pointUpOutside );
   application.ProcessEvent( event );
 
-  DALI_TEST_CHECK( !gButtonClicked );
+  DALI_TEST_CHECK( gIsCalledButtonCallback );
 
   // Test4. Touch point down outside and up inside the button.
 
-  gButtonClicked = false;
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointDownOutside );
   application.ProcessEvent( event );
 
+  DALI_TEST_CHECK( !gIsCalledButtonCallback );
+
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointEnter );
   application.ProcessEvent( event );
@@ -238,48 +400,34 @@ int UtcDaliButtonClicked(void)
   event.AddPoint( pointUpInside );
   application.ProcessEvent( event );
 
-  DALI_TEST_CHECK( !gButtonClicked );
+  DALI_TEST_CHECK( !gIsCalledButtonCallback );
   END_TEST;
 }
 
-namespace
-{
-
-static bool gClickedCallBackCalled;
-
-static bool TestClickedCallback(Button button)
-{
-  gClickedCallBackCalled = true;
-  return true;
-}
-
-} // namespace
-
-int UtcDaliButtonConnectSignal(void)
+int UtcDaliButtonClickedSignalP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline("UtcDaliButtonConnectSignal()");
-
-  gClickedCallBackCalled = false;
+  tet_infoline(" UtcDaliButtonClickedSignalP");
 
-  PushButton pushButton = PushButton::New();
-  pushButton.SetAnchorPoint( AnchorPoint::TOP_LEFT );
-  pushButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
-  pushButton.SetPosition( 240, 400 );
-  pushButton.SetSize( 100, 100 );
+  Button button = PushButton::New();
+  button.SetAnchorPoint( AnchorPoint::TOP_LEFT );
+  button.SetParentOrigin( ParentOrigin::TOP_LEFT );
+  button.SetPosition( 240, 400 );
+  button.SetSize( 100, 100 );
 
-  Stage::GetCurrent().Add( pushButton );
+  Stage::GetCurrent().Add( button );
 
   application.SendNotification();
   application.Render();
 
-  // connect to its clicked signal
-  pushButton.ClickedSignal().Connect(TestClickedCallback);
+  // connect to its touch signal
+  button.ClickedSignal().Connect( &ButtonCallback );
 
   Dali::Integration::TouchEvent event;
 
-  // Touch point down and up inside the button.
+  // Test1. Touch point down and up inside the button.
 
+  gIsCalledButtonCallback = false;
   event = Dali::Integration::TouchEvent();
   event.AddPoint( pointDownInside );
   application.ProcessEvent( event );
@@ -288,28 +436,126 @@ int UtcDaliButtonConnectSignal(void)
   event.AddPoint( pointUpInside );
   application.ProcessEvent( event );
 
-  DALI_TEST_CHECK( gClickedCallBackCalled == true );
+  DALI_TEST_CHECK( gIsCalledButtonCallback );
+
+  // Test2. Touch point down and up outside the button.
+
+  gIsCalledButtonCallback = false;
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointDownOutside );
+  application.ProcessEvent( event );
+
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointUpOutside );
+  application.ProcessEvent( event );
+
+  DALI_TEST_CHECK( !gIsCalledButtonCallback );
 
-  gClickedCallBackCalled = false;
-  pushButton.ClickedSignal().Disconnect(TestClickedCallback);
+  // Test3. Touch point down inside and up outside the button.
 
-  // simulate another touch event
+  gIsCalledButtonCallback = false;
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointDownInside );
   application.ProcessEvent( event );
 
-  DALI_TEST_CHECK( gClickedCallBackCalled == false );
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointLeave );
+  application.ProcessEvent( event );
+
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointUpOutside );
+  application.ProcessEvent( event );
+
+  DALI_TEST_CHECK( !gIsCalledButtonCallback );
+
+  // Test4. Touch point down outside and up inside the button.
+
+  gIsCalledButtonCallback = false;
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointDownOutside );
+  application.ProcessEvent( event );
+
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointEnter );
+  application.ProcessEvent( event );
+
+  event = Dali::Integration::TouchEvent();
+  event.AddPoint( pointUpInside );
+  application.ProcessEvent( event );
+
+  DALI_TEST_CHECK( !gIsCalledButtonCallback );
   END_TEST;
 }
 
-int UtcDaliButtonSetGetAnimationTime(void)
+int UtcDaliButtonStateChangedSignalP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliButtonSetGetAnimationTime");
+  tet_infoline(" UtcDaliButtonStateChangedSignalP");
+
+  Button button = PushButton::New();
+  button.SetTogglableButton( true );
+
+  Stage::GetCurrent().Add( button );
+
+  application.SendNotification();
+  application.Render();
+
+  // connect to its signal
+  button.StateChangedSignal().Connect( &ButtonCallback );
+
+  gIsCalledButtonCallback = false;
+  button.SetSelected( true );
+
+  DALI_TEST_CHECK( gIsCalledButtonCallback );
+
+  gIsCalledButtonCallback = false;
+  button.SetSelected( false );
+
+  DALI_TEST_CHECK( gIsCalledButtonCallback );
+  END_TEST;
+}
+
+int UtcDaliButtonSetProperty(void)
+{
+  tet_infoline("UtcDaliButtonSetProperty: ");
+  ToolkitTestApplication application;
 
   PushButton pushButton = PushButton::New();
 
-  pushButton.SetAnimationTime( ANIMATION_TIME );
+  pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), false);
+  DALI_TEST_CHECK( false == pushButton.IsDisabled() );
+  pushButton.SetProperty(pushButton.GetPropertyIndex("disabled"), true);
+  DALI_TEST_CHECK( true == pushButton.IsDisabled() );
+  END_TEST;
+}
+
+int UtcDaliButtonSize(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliButtonSize");
+
+  ImageActor image01 = ImageActor::New(CreateBufferImage());
+  image01.SetSize( 100, 50 );
+
+  PushButton pushButton;
+
+  Vector3 size;
+
+  // Test1 Size is set through Actor API
+
+  // First an image is set, then SetSize is called.
+  pushButton = PushButton::New();
+  Stage::GetCurrent().Add( pushButton );
+
+  pushButton.SetBackgroundImage( image01 );
+  pushButton.SetSize( 10.f, 10.f );
 
-  DALI_TEST_EQUALS( pushButton.GetAnimationTime(), ANIMATION_TIME, TEST_LOCATION );
+  application.SendNotification();
+  application.Render();
 
+  size = pushButton.GetCurrentSize();
+
+  DALI_TEST_EQUALS( size.width, 10.f, TEST_LOCATION );
+  DALI_TEST_EQUALS( size.height, 10.f, TEST_LOCATION );
   END_TEST;
 }
index d6dc8d4..f5a2a7c 100644 (file)
@@ -33,8 +33,6 @@ bool CheckBoxButtonClicked( Button button )
   return true;
 }
 
-
-
 Image CreateSolidColorImage( const Vector4& color, unsigned int width, unsigned int height )
 {
   BufferImage imageData = BufferImage::New( width, height, Pixel::RGBA8888 );
@@ -58,7 +56,6 @@ Image CreateSolidColorImage( const Vector4& color, unsigned int width, unsigned
 
 } // namespace
 
-
 void checkbox_button_startup(void)
 {
   test_return_value = TET_UNDEF;
@@ -69,6 +66,169 @@ void checkbox_button_cleanup(void)
   test_return_value = TET_PASS;
 }
 
+int UtcDaliCheckBoxButtonConstructorP(void)
+{
+  TestApplication application;
+
+  CheckBoxButton checkBox;
+
+  DALI_TEST_CHECK( !checkBox );
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonCopyConstructorP(void)
+{
+  TestApplication application;
+
+  // Initialize an object, ref count == 1
+  CheckBoxButton checkBox = CheckBoxButton::New();
+
+  CheckBoxButton copy( checkBox );
+  DALI_TEST_CHECK( copy );
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonAssignmentOperatorP(void)
+{
+  TestApplication application;
+
+  CheckBoxButton checkBox = CheckBoxButton::New();
+
+  CheckBoxButton copy( checkBox );
+  DALI_TEST_CHECK( copy );
+
+  DALI_TEST_CHECK( checkBox == copy );
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonNewP(void)
+{
+  TestApplication application;
+
+  CheckBoxButton checkBox = CheckBoxButton::New();
+
+  DALI_TEST_CHECK( checkBox );
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonDownCastP(void)
+{
+  TestApplication application;
+
+  CheckBoxButton checkBox = CheckBoxButton::New();
+
+  BaseHandle object(checkBox);
+
+  CheckBoxButton checkBox2 = CheckBoxButton::DownCast( object );
+  DALI_TEST_CHECK(checkBox2);
+
+  CheckBoxButton checkBox3 = DownCast< CheckBoxButton >(object);
+  DALI_TEST_CHECK(checkBox3);
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonDownCastN(void)
+{
+  TestApplication application;
+
+  BaseHandle unInitializedObject;
+
+  CheckBoxButton checkBox1 = CheckBoxButton::DownCast( unInitializedObject );
+  DALI_TEST_CHECK( !checkBox1 );
+
+  CheckBoxButton checkBox2 = DownCast< CheckBoxButton >( unInitializedObject );
+  DALI_TEST_CHECK( !checkBox2 );
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonSetBackgroundImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliCheckBoxButtonSetBackgroundImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  CheckBoxButton checkBoxButton = CheckBoxButton::New();
+
+  checkBoxButton.SetBackgroundImage( image );
+
+  DALI_TEST_CHECK( checkBoxButton.GetBackgroundImage() );
+
+  checkBoxButton.SetBackgroundImage( imageActor );
+
+  DALI_TEST_CHECK( checkBoxButton.GetBackgroundImage() );
+
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonSetSelectedImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliCheckBoxButtonSetSelectedImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  CheckBoxButton checkBoxButton = CheckBoxButton::New();
+
+  checkBoxButton.SetSelectedImage( image );
+
+  DALI_TEST_CHECK( checkBoxButton.GetSelectedImage() );
+
+  checkBoxButton.SetSelectedImage( imageActor );
+
+  DALI_TEST_CHECK( checkBoxButton.GetSelectedImage() );
+
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonSetDisabledBackgroundImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliCheckBoxButtonSetDisabledBackgroundImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  CheckBoxButton checkBoxButton = CheckBoxButton::New();
+
+  checkBoxButton.SetDisabledBackgroundImage( image );
+
+  DALI_TEST_CHECK( checkBoxButton.GetDisabledBackgroundImage() );
+
+  checkBoxButton.SetDisabledBackgroundImage( imageActor );
+
+  DALI_TEST_CHECK( checkBoxButton.GetDisabledBackgroundImage() );
+
+  END_TEST;
+}
+
+int UtcDaliCheckBoxButtonSetDisabledSelectedImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliCheckBoxButtonSetDisabledSelectedImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  CheckBoxButton checkBoxButton = CheckBoxButton::New();
+
+  checkBoxButton.SetDisabledSelectedImage( image );
+
+  DALI_TEST_CHECK( checkBoxButton.GetDisabledSelectedImage() );
+
+  checkBoxButton.SetDisabledSelectedImage( imageActor );
+
+  DALI_TEST_CHECK( checkBoxButton.GetDisabledSelectedImage() );
+
+  END_TEST;
+}
+
 int UtcDaliCheckBoxButtonSetGetSelected(void)
 {
   ToolkitTestApplication application;
index 17e8456..3223daa 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -204,17 +204,16 @@ int UtcDaliControlKeyInputFocus(void)
   END_TEST;
 }
 
-int UtcDaliControlGetImplementation(void)
+int UtcDaliControlGetImplementationN(void)
 {
   ToolkitTestApplication application;
-
   DummyControl control;
 
   // Get Empty
   {
     try
     {
-      Toolkit::Internal::Control& controlImpl = control.GetImplementation();
+      Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( control );
       (void)controlImpl; // Avoid unused warning
       tet_result(TET_FAIL);
     }
@@ -223,13 +222,20 @@ int UtcDaliControlGetImplementation(void)
       tet_result(TET_PASS);
     }
   }
+  END_TEST;
+}
+
+int UtcDaliControlGetImplementationConstN(void)
+{
+  ToolkitTestApplication application;
+  DummyControl control;
 
   // Get Const Empty
   {
     try
     {
       const DummyControl constControl(control);
-      const Toolkit::Internal::Control& controlImpl = constControl.GetImplementation();
+      const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( constControl );
       (void)controlImpl; // Avoid unused warning
       tet_result(TET_FAIL);
     }
@@ -238,14 +244,19 @@ int UtcDaliControlGetImplementation(void)
       tet_result(TET_PASS);
     }
   }
+  END_TEST;
+}
 
-  control = DummyControl::New();
+int UtcDaliControlGetImplementationP(void)
+{
+  ToolkitTestApplication application;
+  DummyControl control = DummyControl::New();
 
   // Get
   {
     try
     {
-      Toolkit::Internal::Control& controlImpl = control.GetImplementation();
+      Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( control );
       (void)controlImpl; // Avoid unused warning
       tet_result(TET_PASS);
     }
@@ -254,13 +265,19 @@ int UtcDaliControlGetImplementation(void)
       tet_result(TET_FAIL);
     }
   }
+  END_TEST;
+}
 
+int UtcDaliControlGetImplementationConstP(void)
+{
+  ToolkitTestApplication application;
+  DummyControl control = DummyControl::New();
   // Get Const
   {
     try
     {
       const DummyControl constControl(control);
-      const Toolkit::Internal::Control& controlImpl = constControl.GetImplementation();
+      const Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( constControl );
       (void)controlImpl; // Avoid unused warning
       tet_result(TET_PASS);
     }
@@ -281,7 +298,7 @@ int UtcDaliControlSignalConnectDisconnect(void)
 
     Actor actor = Actor::New();
     DALI_TEST_EQUALS( actor.OnStageSignal().GetConnectionCount(), 0u, TEST_LOCATION );
-    Toolkit::Internal::Control& control = dummy.GetImplementation();
+    Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation( dummy );
     DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
     DALI_TEST_CHECK( dummyImpl );
 
@@ -310,7 +327,7 @@ int UtcDaliControlSignalAutomaticDisconnect(void)
 
   {
     DummyControl dummy = DummyControlImpl::New();
-    Toolkit::Internal::Control& control = dummy.GetImplementation();
+    Toolkit::Internal::Control& control = Toolkit::Internal::GetImplementation( dummy );
     DummyControlImpl* dummyImpl = dynamic_cast<DummyControlImpl*>(&control);
     DALI_TEST_CHECK( dummyImpl );
 
@@ -345,7 +362,8 @@ int UtcDaliControlTestParameters(void)
 
   float width = 640.0f;
   float height = test.GetHeightForWidth( width );
-  DALI_TEST_CHECK( test.GetWidthForHeight( height ) == width );
+  DALI_TEST_EQUALS( 640.0f, height, TEST_LOCATION );
+  DALI_TEST_EQUALS( 640.0f, test.GetWidthForHeight( height ), TEST_LOCATION );
 
   test.KeyEventSignal();
 
@@ -361,11 +379,9 @@ int UtcDaliControlBackgroundColor(void)
   ToolkitTestApplication application;
   Control control = Control::New();
 
-  DALI_TEST_CHECK( !control.GetBackgroundActor() );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
 
   control.SetBackgroundColor( Color::RED );
-  DALI_TEST_CHECK( control.GetBackgroundActor() );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION );
 
   END_TEST;
@@ -376,24 +392,20 @@ int UtcDaliControlBackgroundImage(void)
   ToolkitTestApplication application;
   Control control = Control::New();
 
-  DALI_TEST_CHECK( !control.GetBackgroundActor() );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
 
   Image image = ResourceImage::New("TestImage");
   control.SetBackgroundImage( image );
-  DALI_TEST_CHECK( control.GetBackgroundActor() );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::WHITE, TEST_LOCATION );
 
   control.SetBackgroundColor( Color::GREEN );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::GREEN, TEST_LOCATION );
 
   control.ClearBackground();
-  DALI_TEST_CHECK( !control.GetBackgroundActor() );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
 
   control.SetBackgroundColor( Color::YELLOW );
   control.SetBackgroundImage( image );
-  DALI_TEST_CHECK( control.GetBackgroundActor() );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::YELLOW, TEST_LOCATION );
 
   END_TEST;
@@ -404,13 +416,13 @@ int UtcDaliControlBackgroundProperties(void)
   ToolkitTestApplication application;
   Control control = Control::New();
 
-  DALI_TEST_CHECK( !control.GetBackgroundActor() );
+  DALI_TEST_CHECK( control.GetChildCount() == 0 );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
   DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::TRANSPARENT, TEST_LOCATION );
   DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() );
 
   control.SetProperty( Control::Property::BACKGROUND_COLOR, Color::RED );
-  DALI_TEST_CHECK( control.GetBackgroundActor() );
+  DALI_TEST_CHECK( control.GetChildCount() > 0 );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION );
   DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::RED, TEST_LOCATION );
 
@@ -419,7 +431,7 @@ int UtcDaliControlBackgroundProperties(void)
   Property::Map map;
   map[ "image" ] = imageMap;
   control.SetProperty( Control::Property::BACKGROUND_IMAGE, map );
-  DALI_TEST_CHECK( control.GetBackgroundActor() );
+  DALI_TEST_CHECK( control.GetChildCount() > 0 );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::RED, TEST_LOCATION );
   DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::RED, TEST_LOCATION );
 
@@ -430,7 +442,7 @@ int UtcDaliControlBackgroundProperties(void)
 
   Property::Map emptyMap;
   control.SetProperty( Control::Property::BACKGROUND_IMAGE, emptyMap );
-  DALI_TEST_CHECK( !control.GetBackgroundActor() );
+  DALI_TEST_CHECK( control.GetChildCount() == 0 );
   DALI_TEST_EQUALS( control.GetBackgroundColor(), Color::TRANSPARENT, TEST_LOCATION );
   DALI_TEST_EQUALS( control.GetProperty( Control::Property::BACKGROUND_COLOR ).Get< Vector4 >(), Color::TRANSPARENT, TEST_LOCATION );
   DALI_TEST_CHECK( control.GetProperty( Control::Property::BACKGROUND_IMAGE ).Get< Property::Map >().Empty() );
@@ -530,3 +542,15 @@ int UtcDaliControlImplKeyInputFocusLostSignal(void)
 
   END_TEST;
 }
+
+int UtcDaliControlImplGetControlExtensionP(void)
+{
+  ToolkitTestApplication application;
+  Control control = Control::New();
+
+  Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( control );
+
+  DALI_TEST_CHECK( NULL == controlImpl.GetControlExtension() );
+
+  END_TEST;
+}
index 8f363af..f3aa937 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
 #include <dali.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/integration-api/events/key-event-integ.h>
-#include <dali/integration-api/events/mouse-wheel-event-integ.h>
+#include <dali/integration-api/events/wheel-event-integ.h>
 #include <dali/integration-api/events/long-press-gesture-event.h>
 #include <dali/integration-api/events/pinch-gesture-event.h>
 #include <dali/integration-api/events/pan-gesture-event.h>
 #include <dali/integration-api/events/tap-gesture-event.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali/integration-api/events/hover-event-integ.h>
+
+#include <dali-toolkit/devel-api/styling/style-manager.h>
 
 #include "dummy-control.h"
 
@@ -196,17 +199,17 @@ int UtcDaliControlImplDisableGestureDetector(void)
     TapGestureDetector tap = dummyImpl.GetTapGestureDetector();
     LongPressGestureDetector longPress = dummyImpl.GetLongPressGestureDetector();
 
-    DALI_TEST_EQUALS( pinch.GetAttachedActors().empty(), false, TEST_LOCATION );
-    DALI_TEST_EQUALS( pan.GetAttachedActors().empty(), false, TEST_LOCATION );
-    DALI_TEST_EQUALS( tap.GetAttachedActors().empty(), false, TEST_LOCATION );
-    DALI_TEST_EQUALS( longPress.GetAttachedActors().empty(), false, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == pinch.GetAttachedActorCount(), false, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == pan.GetAttachedActorCount(), false, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == tap.GetAttachedActorCount(), false, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == longPress.GetAttachedActorCount(), false, TEST_LOCATION );
 
     dummyImpl.DisableGestureDetection( Gesture::Type(Gesture::Pinch | Gesture::Pan | Gesture::Tap | Gesture::LongPress) );
 
-    DALI_TEST_EQUALS( pinch.GetAttachedActors().empty(), true, TEST_LOCATION );
-    DALI_TEST_EQUALS( pan.GetAttachedActors().empty(), true, TEST_LOCATION );
-    DALI_TEST_EQUALS( tap.GetAttachedActors().empty(), true, TEST_LOCATION );
-    DALI_TEST_EQUALS( longPress.GetAttachedActors().empty(), true, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == pinch.GetAttachedActorCount(), true, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == pan.GetAttachedActorCount(), true, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == tap.GetAttachedActorCount(), true, TEST_LOCATION );
+    DALI_TEST_EQUALS( 0 == longPress.GetAttachedActorCount(), true, TEST_LOCATION );
   }
   END_TEST;
 }
@@ -437,7 +440,7 @@ int UtcDaliControlImplStageConnection(void)
   END_TEST;
 }
 
-int UtcDaliControlImplSizeSet(void)
+int UtcDaliControlImplSizeSetP(void)
 {
   ToolkitTestApplication application;
 
@@ -449,22 +452,28 @@ int UtcDaliControlImplSizeSet(void)
     application.Render();
     application.SendNotification();
 
-    DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, true, TEST_LOCATION ); // Called from size negotiation
+    DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, false, TEST_LOCATION ); // Size not set, no onSizeSet called
     Vector2 size(100.0f, 200.0f);
-    dummy.SetSize(size);
+    dummy.SetSize( size );
+
+    DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, false, TEST_LOCATION ); // Size is going to get negotiated, no onSizeSet called
 
-    application.Render();
     application.SendNotification();
     application.Render();
-    application.SendNotification();
 
-    DALI_TEST_EQUALS(size, dummy.GetCurrentSize().GetVectorXY(), TEST_LOCATION);
+    DALI_TEST_EQUALS( size, dummy.GetCurrentSize().GetVectorXY(), TEST_LOCATION );
     DALI_TEST_EQUALS( dummyImpl.sizeSetCalled, true, TEST_LOCATION );
 
     Stage::GetCurrent().Remove(dummy);
   }
 
-  // Ensure full code coverage
+  END_TEST;
+}
+
+int UtcDaliControlImplSizeSet2P(void)
+{
+  ToolkitTestApplication application;
+
   {
     DummyControl dummy = DummyControl::New();
     Stage::GetCurrent().Add(dummy);
@@ -472,15 +481,13 @@ int UtcDaliControlImplSizeSet(void)
     Vector2 size(100.0f, 200.0f);
     DALI_TEST_CHECK( size != dummy.GetCurrentSize().GetVectorXY() );
 
-    application.Render();
     application.SendNotification();
+    application.Render();
 
     dummy.SetSize(size);
 
-    application.Render();
     application.SendNotification();
     application.Render();
-    application.SendNotification();
 
     DALI_TEST_EQUALS(size, dummy.GetCurrentSize().GetVectorXY(), TEST_LOCATION);
 
@@ -489,6 +496,7 @@ int UtcDaliControlImplSizeSet(void)
   END_TEST;
 }
 
+
 int UtcDaliControlImplSizeAnimation(void)
 {
   ToolkitTestApplication application;
@@ -586,6 +594,56 @@ int UtcDaliControlImplTouchEvent(void)
   END_TEST;
 }
 
+int UtcDaliControlImplHoverEvent(void)
+{
+  ToolkitTestApplication application;
+
+  {
+    DummyControl dummy = DummyControl::New( true );
+    DummyControlImplOverride& dummyImpl = static_cast<DummyControlImplOverride&>(dummy.GetImplementation());
+
+    dummy.SetSize( Vector2( 100.0f, 100.0f ) );
+    dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+    Stage::GetCurrent().Add(dummy);
+
+    application.Render();
+    application.SendNotification();
+    application.Render();
+    application.SendNotification();
+
+    DALI_TEST_EQUALS( dummyImpl.hoverEventCalled, false, TEST_LOCATION );
+    Integration::HoverEvent event(1);
+    TouchPoint point( 1, TouchPoint::Motion, 20.0f, 20.0f );
+    event.AddPoint( point );
+    application.ProcessEvent( event );
+    DALI_TEST_EQUALS( dummyImpl.hoverEventCalled, true, TEST_LOCATION );
+
+    Stage::GetCurrent().Remove(dummy);
+  }
+
+  // Ensure full code coverage
+  {
+    DummyControl dummy = DummyControl::New();
+
+    dummy.SetSize( Vector2( 100.0f, 100.0f ) );
+    dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+    Stage::GetCurrent().Add(dummy);
+
+    application.Render();
+    application.SendNotification();
+    application.Render();
+    application.SendNotification();
+
+    Integration::HoverEvent event(1);
+    TouchPoint point( 1, TouchPoint::Motion, 20.0f, 20.0f );
+    event.AddPoint( point );
+    application.ProcessEvent( event );
+
+    Stage::GetCurrent().Remove(dummy);
+  }
+  END_TEST;
+}
+
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 
 
@@ -722,13 +780,13 @@ int UtcDaliControlImplTypeRegistry(void)
 ///////////////////////////////////////////////////////////////////////////////////////////////////
 namespace
 {
-static bool MouseWheelEventCallback(Actor actor, const MouseWheelEvent& event)
+static bool WheelEventCallback(Actor actor, const WheelEvent& event)
 {
   return false;
 }
 }
 
-int UtcDaliControlImplMouseWheelEvent(void)
+int UtcDaliControlImplWheelEvent(void)
 {
   ToolkitTestApplication application;
 
@@ -740,20 +798,20 @@ int UtcDaliControlImplMouseWheelEvent(void)
     dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
     Stage::GetCurrent().Add(dummy);
 
-    dummy.MouseWheelEventSignal().Connect(&MouseWheelEventCallback);
+    dummy.WheelEventSignal().Connect(&WheelEventCallback);
 
     application.Render();
     application.SendNotification();
     application.Render();
     application.SendNotification();
 
-    DALI_TEST_EQUALS( dummyImpl.mouseWheelEventCalled, false, TEST_LOCATION );
+    DALI_TEST_EQUALS( dummyImpl.wheelEventCalled, false, TEST_LOCATION );
 
-    // simulate a mouse wheel event
+    // simulate a wheel event
     Vector2 screenCoordinates( 10.0f, 10.0f );
-    Integration::MouseWheelEvent event(0, 0u, screenCoordinates, 1, 1000u);
-    application.ProcessEvent(event);
-    DALI_TEST_EQUALS( dummyImpl.mouseWheelEventCalled, true, TEST_LOCATION );
+    Integration::WheelEvent event( Integration::WheelEvent::MOUSE_WHEEL, 0, 0u, screenCoordinates, 1, 1000u );
+    application.ProcessEvent( event );
+    DALI_TEST_EQUALS( dummyImpl.wheelEventCalled, true, TEST_LOCATION );
 
     Stage::GetCurrent().Remove(dummy);
   }
@@ -766,19 +824,123 @@ int UtcDaliControlImplMouseWheelEvent(void)
     dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
     Stage::GetCurrent().Add(dummy);
 
-    dummy.MouseWheelEventSignal().Connect(&MouseWheelEventCallback);
+    dummy.WheelEventSignal().Connect(&WheelEventCallback);
 
     application.Render();
     application.SendNotification();
     application.Render();
     application.SendNotification();
 
-    // simulate a mouse wheel event
+    // simulate a wheel event
     Vector2 screenCoordinates( 20.0f, 20.0f );
-    Integration::MouseWheelEvent event(0, 0u, screenCoordinates, 1, 1000u);
-    application.ProcessEvent(event);
+    Integration::WheelEvent event( Integration::WheelEvent::MOUSE_WHEEL, 0, 0u, screenCoordinates, 1, 1000u );
+    application.ProcessEvent( event );
+
+    Stage::GetCurrent().Remove(dummy);
+  }
+  END_TEST;
+}
+
+int UtcDaliControlImplSetStyleName(void)
+{
+  ToolkitTestApplication application;
+
+  {
+    DummyControl dummy = DummyControl::New( true );
+
+    dummy.SetSize( Vector2( 100.0f, 100.0f ) );
+    dummy.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+    Stage::GetCurrent().Add(dummy);
+
+    dummy.SetStyleName("TestStyle");
+
+    DALI_TEST_CHECK( dummy.GetStyleName() == "TestStyle" );
 
     Stage::GetCurrent().Remove(dummy);
   }
   END_TEST;
 }
+
+int UtcDaliControlImplOnStyleChangeN(void)
+{
+  ToolkitTestApplication application;
+  Control dummy = Control::New();
+  Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
+
+  // test that style manager is being used, passing an empty handle throws exception
+  try
+  {
+    Dali::Toolkit::StyleManager styleManager;
+    controlImpl.OnStyleChange( styleManager, StyleChange::THEME_CHANGE );
+    tet_result(TET_FAIL);
+  }
+  catch (DaliException &exception)
+  {
+    tet_result(TET_PASS);
+  }
+
+  END_TEST;
+}
+
+
+int UtcDaliControlImplOnAccessibilityPanP(void)
+{
+  ToolkitTestApplication application;
+  Control dummy = Control::New();
+  Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
+
+  PanGesture pan;
+  DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityPan( pan ), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliControlImplOnAccessibilityTouchP(void)
+{
+  ToolkitTestApplication application;
+  Control dummy = Control::New();
+  Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
+  TouchEvent touch;
+  DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityTouch( touch ), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliControlImplOnAccessibilityActivatedP(void)
+{
+  ToolkitTestApplication application;
+
+  Control dummy = Control::New();
+  Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
+  DALI_TEST_EQUALS( false, controlImpl.OnAccessibilityActivated(), TEST_LOCATION );
+
+  // Invoke the control's activate action
+  TypeInfo type = TypeRegistry::Get().GetTypeInfo( "Control" );
+  DALI_TEST_CHECK( type );
+
+  BaseHandle handle = type.CreateInstance();
+  DALI_TEST_CHECK( handle );
+
+  Property::Map attributes;
+  DALI_TEST_EQUALS( false, handle.DoAction("control-activated", attributes), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliControlImplGetNextKeyboardFocusableActorP(void)
+{
+  ToolkitTestApplication application;
+  Control dummy = Control::New();
+  Toolkit::Internal::Control& controlImpl = Toolkit::Internal::GetImplementation( dummy );
+
+  Actor currentFocusedActor;
+  Actor result = controlImpl.GetNextKeyboardFocusableActor( currentFocusedActor, Control::KeyboardFocus::LEFT, false );
+
+  DALI_TEST_EQUALS( result, currentFocusedActor, TEST_LOCATION );
+
+  END_TEST;
+}
+
+
+
+
index 055b122..6e99611 100644 (file)
 #include <stdlib.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-cross-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-fold-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-wave-effect.h>
+
+
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index 7b1421d..b65fc34 100644 (file)
@@ -53,183 +53,3 @@ int UtcDaliDefaultControlsCreateSolidColorActor(void)
   DALI_TEST_CHECK(!image3);
   END_TEST;
 }
-
-int UtcDaliDefaultControlsCreatePushButton(void)
-{
-  ToolkitTestApplication application;
-
-  tet_infoline(" UtcDaliDefaultControlsCreatePushButton");
-
-  const std::string imagePath( "Facke image path" );
-  const std::string voidImagePath( "" );
-
-  ImageActor image = CreateSolidColorActor( Color::RED );
-  ImageActor voidImage;
-
-  PushButton button0, button1, button2, button3, button4, button5, button6;
-
-  try
-  {
-    button0 = CreatePushButton( voidImagePath, voidImagePath, voidImagePath, voidImagePath, voidImagePath );
-    button1 = CreatePushButton( imagePath, voidImagePath, voidImagePath, voidImagePath, voidImagePath );
-    button2 = CreatePushButton( voidImagePath, imagePath, voidImagePath, voidImagePath, voidImagePath );
-    button3 = CreatePushButton( voidImagePath, voidImagePath, imagePath, voidImagePath, voidImagePath );
-    button4 = CreatePushButton( voidImagePath, voidImagePath, voidImagePath, imagePath, voidImagePath );
-    button5 = CreatePushButton( voidImagePath, voidImagePath, voidImagePath, voidImagePath, imagePath );
-    button6 = CreatePushButton( imagePath, imagePath, imagePath, imagePath, imagePath );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-  DALI_TEST_CHECK( button2 );
-  DALI_TEST_CHECK( button3 );
-  DALI_TEST_CHECK( button4 );
-  DALI_TEST_CHECK( button5 );
-  DALI_TEST_CHECK( button6 );
-
-  try
-  {
-    button0 = CreatePushButton( voidImage, voidImage, voidImage, voidImage, voidImage );
-    button1 = CreatePushButton( image, voidImage, voidImage, voidImage, voidImage );
-    button2 = CreatePushButton( voidImage, image, voidImage, voidImage, voidImage );
-    button3 = CreatePushButton( voidImage, voidImage, image, voidImage, voidImage );
-    button4 = CreatePushButton( voidImage, voidImage, voidImage, image, voidImage );
-    button5 = CreatePushButton( voidImage, voidImage, voidImage, voidImage, image );
-    button6 = CreatePushButton( image, image, image, image, image );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-  DALI_TEST_CHECK( button2 );
-  DALI_TEST_CHECK( button3 );
-  DALI_TEST_CHECK( button4 );
-  DALI_TEST_CHECK( button5 );
-  DALI_TEST_CHECK( button6 );
-
-  try
-  {
-    button0 = CreatePushButton( voidImagePath );
-    button1 = CreatePushButton( imagePath );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-
-  try
-  {
-    button0 = CreatePushButton( voidImage );
-    button1 = CreatePushButton( image );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-  END_TEST;
-}
-
-int UtcDaliDefaultControlsCreateCheckBoxButton(void)
-{
-  ToolkitTestApplication application;
-
-  tet_infoline(" UtcDaliDefaultControlsCreateCheckBoxButton");
-
-  const std::string imagePath( "Facke image path" );
-  const std::string voidImagePath( "" );
-
-  ImageActor image = CreateSolidColorActor( Color::RED );
-  ImageActor voidImage;
-
-  CheckBoxButton button0, button1, button2, button3, button4, button5;
-
-  try
-  {
-    button0 = CreateCheckBoxButton( voidImagePath, voidImagePath, voidImagePath, voidImagePath );
-    button1 = CreateCheckBoxButton( imagePath, voidImagePath, voidImagePath, voidImagePath );
-    button2 = CreateCheckBoxButton( voidImagePath, imagePath, voidImagePath, voidImagePath );
-    button3 = CreateCheckBoxButton( voidImagePath, voidImagePath, imagePath, voidImagePath );
-    button4 = CreateCheckBoxButton( voidImagePath, voidImagePath, voidImagePath, imagePath );
-    button5 = CreateCheckBoxButton( imagePath, imagePath, imagePath, imagePath );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-  DALI_TEST_CHECK( button2 );
-  DALI_TEST_CHECK( button3 );
-  DALI_TEST_CHECK( button4 );
-  DALI_TEST_CHECK( button5 );
-
-  try
-  {
-    button0 = CreateCheckBoxButton( voidImage, voidImage, voidImage, voidImage );
-    button1 = CreateCheckBoxButton( image, voidImage, voidImage, voidImage );
-    button2 = CreateCheckBoxButton( voidImage, image, voidImage, voidImage );
-    button3 = CreateCheckBoxButton( voidImage, voidImage, image, voidImage );
-    button4 = CreateCheckBoxButton( voidImage, voidImage, voidImage, image );
-    button5 = CreateCheckBoxButton( image, image, image, image );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-  DALI_TEST_CHECK( button2 );
-  DALI_TEST_CHECK( button3 );
-  DALI_TEST_CHECK( button4 );
-  DALI_TEST_CHECK( button5 );
-
-  try
-  {
-    button0 = CreateCheckBoxButton( voidImagePath, voidImagePath );
-    button1 = CreateCheckBoxButton( voidImagePath, imagePath );
-    button2 = CreateCheckBoxButton( imagePath, voidImagePath );
-    button3 = CreateCheckBoxButton( imagePath, imagePath );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-  DALI_TEST_CHECK( button2 );
-  DALI_TEST_CHECK( button3 );
-
-  try
-  {
-    button0 = CreateCheckBoxButton( voidImage, voidImage );
-    button2 = CreateCheckBoxButton( voidImage, image );
-    button3 = CreateCheckBoxButton( voidImage, image );
-    button4 = CreateCheckBoxButton( image, image );
-  }
-  catch( ... )
-  {
-    tet_result( TET_FAIL );
-  }
-
-  DALI_TEST_CHECK( button0 );
-  DALI_TEST_CHECK( button1 );
-  DALI_TEST_CHECK( button2 );
-  DALI_TEST_CHECK( button3 );
-  END_TEST;
-}
index b04201b..67a2287 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -47,6 +47,13 @@ public:
   {
   }
 
+  /**
+   * Virtual destructor.
+   */
+  virtual ~TestItemFactory()
+  {
+  }
+
 public: // From ItemFactory
 
   /**
@@ -72,6 +79,186 @@ public: // From ItemFactory
     return actor;
   }
 };
+
+class TestItemLayout;
+
+typedef IntrusivePtr<TestItemLayout> TestItemLayoutPtr;
+
+// Implementation of ItemLayout
+class TestItemLayout : public ItemLayout
+{
+public:
+
+  /**
+   * Constructor
+   */
+  TestItemLayout()
+  {
+  }
+
+  /**
+   * Virtual destructor.
+   */
+  virtual ~TestItemLayout()
+  {
+  }
+
+  /**
+   * Create a new grid layout.
+   */
+  static TestItemLayoutPtr New()
+  {
+    return TestItemLayoutPtr(new TestItemLayout());
+  }
+
+public: // From ItemLayout
+
+  /**
+   * Query the minimum valid layout position; this is a negative value.
+   *
+   * When scrolling, the first item will move within the range 0 to GetMinimumLayoutPosition().
+   * @param[in] numberOfItems The current number of items in the layout.
+   * @param[in] layoutSize The size of the layout area.
+   * @return The minimum layout position.
+   */
+  virtual float GetMinimumLayoutPosition(unsigned int numberOfItems, Vector3 layoutSize) const
+  {
+    return 0.0f;
+  }
+
+  /**
+   * Query the closest anchor position for the given layout position.
+   *
+   * This anchor position is the position where all the items in the layout are aligned to
+   * their rounded layout positions in integer.
+   * @param[in] layoutPosition The layout position.
+   * @return The closest anchor position for the given layout position.
+   */
+  virtual float GetClosestAnchorPosition(float layoutPosition) const
+  {
+    return 0.0f;
+  }
+
+  /**
+   * Query the layout position for the first item in the layout to move to when the layout
+   * needs to scroll to a particular item.
+   *
+   * @param[in] itemId The ID of an item in the layout.
+   * @return The layout position for the first item in the layout to move to.
+   */
+  virtual float GetItemScrollToPosition(unsigned int itemId) const
+  {
+    return 0.0f;
+  }
+
+  /**
+   * Query the items within a given layout-area.
+   *
+   * @param[in] firstItemPosition The layout-position of the first item in the layout.
+   * @param[in] layoutSize The size of the layout area.
+   * @return The ID of the first & last visible item.
+   */
+  virtual ItemRange GetItemsWithinArea(float firstItemPosition, Vector3 layoutSize) const
+  {
+    return ItemRange(0, 10);
+  }
+
+  /**
+   * Query the number of items that should be reserved, for scrolling purposes.
+   *
+   * @param[in] layoutSize The size of the layout area.
+   * @return The number of extra items.
+   */
+  virtual unsigned int GetReserveItemCount(Vector3 layoutSize) const
+  {
+    return 0;
+  }
+
+  /**
+   * Retrieve the default size of an item in the layout.
+   *
+   * @param[in] itemId The ID of an item in the layout.
+   * @param[in] layoutSize The layout size
+   * @param[out] itemSize The target size of an item.
+   */
+  virtual void GetDefaultItemSize( unsigned int itemId, const Vector3& layoutSize, Vector3& itemSize ) const
+  {
+  }
+
+  /**
+   * Retrieve the resize animation in the layout.
+   *
+   * @param[in] animation The resize animation, not owned by the layout
+   * @param[in] actor The actor to animate
+   * @param [in] size The target size.
+   * @param [in] durationSeconds The duration of the resizing.
+   */
+  virtual void GetResizeAnimation(Animation& animation, Actor actor, Vector3 size, float durationSeconds) const
+  {
+  }
+
+  /**
+   * @brief Query the scroll direction of the layout.
+   * @return The scroll direction in degrees.
+   */
+  virtual Degree GetScrollDirection() const
+  {
+    return Degree( 0.0f );
+  }
+
+  /**
+   * @brief Query the scroll speed factor of the layout while dragging.
+   * @return The scroll speed factor of the layout.
+   */
+  virtual float GetScrollSpeedFactor() const
+  {
+    return 0;
+  }
+
+  /**
+   * @brief Query the maximum swipe speed in pixels per second.
+   * @return speed The maximum swipe speed.
+   */
+  virtual float GetMaximumSwipeSpeed() const
+  {
+    return 0;
+  }
+
+  /**
+   * @brief Get the duration of the flick animation in second.
+   * @return The duration of the flick animation.
+   */
+  virtual float GetItemFlickAnimationDuration() const
+  {
+    return 0;
+  }
+
+  /*
+   * @brief Applies constraints defined by the layout to an actor.
+   *
+   * @param[in] actor The actor to constrain.
+   * @param[in] itemId The ID of the item represented by the actor.
+   * @param[in] layoutSize the current size of the item view instance.
+   * @param[in] itemViewActor The item view instance which requests the application of constraints.
+   */
+  virtual void ApplyConstraints( Actor& actor, const int itemId, const Vector3& layoutSize, const Actor& itemViewActor )
+  {
+  }
+
+  /**
+   * @brief Gets the position of a given item
+   *
+   * @param[in] itemID id of the item we want to get its position
+   * @param[in] currentLayoutPosition the current layout position of the item view instance
+   * @param[in] layoutSize the current size of the item view instance
+   * @return The item position (x,y,z)
+   */
+  virtual Vector3 GetItemPosition(int itemID, float currentLayoutPosition, const Vector3& layoutSize) const
+  {
+    return Vector3::ZERO;
+  }
+};
+
 } // namespace
 
 int UtcDaliItemLayoutSetAndGetOrientation(void)
@@ -88,9 +275,86 @@ int UtcDaliItemLayoutSetAndGetOrientation(void)
 
   // Set the orientation of the layout to be horizontal from left to right
   ItemLayoutPtr layout = view.GetLayout(0);
+
+  DALI_TEST_CHECK(gridLayout == layout);
+
   layout->SetOrientation(ControlOrientation::Left);
 
   // Check the orientation of the layout is horizontal from left to right
   DALI_TEST_CHECK(layout->GetOrientation() == ControlOrientation::Left);
+
+  Vector3 itemSize(100.0f, 100.0f, 100.0f);
+  layout->SetItemSize(itemSize);
+
+  Vector3 itemSize1;
+  layout->GetItemSize(0u, Vector3(Stage::GetCurrent().GetSize()), itemSize1);
+
+  DALI_TEST_CHECK(itemSize == itemSize1);
+
+  float position = layout->GetClosestOnScreenLayoutPosition(0, 0.0f, Vector3(Stage::GetCurrent().GetSize()));
+
+  DALI_TEST_EQUALS(position, 0.0f, TEST_LOCATION);
+
+  int focusItem = layout->GetNextFocusItemID(0, TOTAL_ITEM_NUMBER, Control::KeyboardFocus::LEFT, true);
+
+  DALI_TEST_CHECK(focusItem != 0);
+
+  float flickSpeedFactor = layout->GetFlickSpeedFactor();
+
+  DALI_TEST_CHECK(flickSpeedFactor != 0.0f);
+
+  ItemLayoutPtr depthLayout = DefaultItemLayout::New( DefaultItemLayout::DEPTH );
+  view.AddLayout(*depthLayout);
+
+  layout = view.GetLayout(1);
+  DALI_TEST_CHECK(depthLayout == layout);
+
+  ItemLayoutPtr listLayout = DefaultItemLayout::New( DefaultItemLayout::LIST );
+  view.AddLayout(*listLayout);
+
+  layout = view.GetLayout(2);
+  DALI_TEST_CHECK(listLayout == layout);
+
+  ItemLayoutPtr spiralLayout = DefaultItemLayout::New( DefaultItemLayout::SPIRAL );
+  view.AddLayout(*spiralLayout);
+
+  layout = view.GetLayout(3);
+  DALI_TEST_CHECK(spiralLayout == layout);
   END_TEST;
 }
+
+int UtcDaliItemLayoutGetExtension(void)
+{
+  ToolkitTestApplication application;
+
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  DALI_TEST_CHECK( gridLayout );
+  DALI_TEST_CHECK( !gridLayout->GetExtension() );
+
+  END_TEST;
+}
+
+int UtcDaliItemLayoutGetClosestOnScreenLayoutPosition(void)
+{
+  ToolkitTestApplication application;
+
+  TestItemLayoutPtr layout = TestItemLayout::New();
+  DALI_TEST_CHECK( layout );
+  DALI_TEST_EQUALS(layout->GetClosestOnScreenLayoutPosition(0, 0.0f, Vector3::ZERO), 0.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS(layout->GetClosestOnScreenLayoutPosition(0, 0.0f, Vector3(-800.0f, -1200.0f, 0.0f)), 0.0f, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliItemLayoutGetNextFocusItemID(void)
+{
+  ToolkitTestApplication application;
+
+  TestItemLayoutPtr layout = TestItemLayout::New();
+  DALI_TEST_CHECK( layout );
+  DALI_TEST_EQUALS(layout->GetNextFocusItemID(0, 100, Control::KeyboardFocus::LEFT, true), 99, TEST_LOCATION );
+  DALI_TEST_EQUALS(layout->GetNextFocusItemID(110, 100, Control::KeyboardFocus::RIGHT, true), 0, TEST_LOCATION );
+
+  END_TEST;
+}
+
index 920e152..82527f4 100644 (file)
@@ -443,6 +443,8 @@ int UtcDaliItemViewSetAndGetRefreshInterval(void)
   // Set the interval between refreshes to be 20
   view.SetRefreshInterval(20);
 
+  view.Refresh();
+
   // Check the interval between refreshes is 20
   DALI_TEST_CHECK(view.GetRefreshInterval() == 20);
   END_TEST;
@@ -523,7 +525,7 @@ int UtcDaliItemViewScrollToItem(void)
   END_TEST;
 }
 
-int UtcDaliItemViewSetAndGetMouseWheelScrollDistanceStep(void)
+int UtcDaliItemViewSetAndGetWheelScrollDistanceStep(void)
 {
   ToolkitTestApplication application;
 
@@ -531,10 +533,241 @@ int UtcDaliItemViewSetAndGetMouseWheelScrollDistanceStep(void)
   TestItemFactory factory;
   ItemView view = ItemView::New(factory);
 
-  // Set the scroll distance step for the mouse wheel event to be 100.0f
-  view.SetMouseWheelScrollDistanceStep(100.0f);
+  // Set the scroll distance step for the wheel event to be 100.0f
+  view.SetWheelScrollDistanceStep(100.0f);
 
   // Check the scroll distance step is 100.0f
-  DALI_TEST_EQUALS(view.GetMouseWheelScrollDistanceStep(), 100.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS(view.GetWheelScrollDistanceStep(), 100.0f, TEST_LOCATION );
+  END_TEST;
+}
+
+int UtcDaliItemViewInsertItemP(void)
+{
+  ToolkitTestApplication application;
+
+  // Create the ItemView actor
+  TestItemFactory factory;
+  ItemView view = ItemView::New(factory);
+
+  // Create a grid layout and add it to ItemView
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  view.AddLayout(*gridLayout);
+
+  // Activate the grid layout so that the items will be created and added to ItemView
+  Vector3 stageSize(Dali::Stage::GetCurrent().GetSize());
+  view.ActivateLayout(0, stageSize, 0.5f);
+
+  // Get the item given the item ID
+  Actor itemActor = view.GetItem(2);
+
+  ItemId id = view.GetItemId( itemActor );
+
+  // Check we are getting the correct Item ID given the specified actor
+  DALI_TEST_CHECK(view.GetItemId(itemActor) == 2);
+
+  Actor newActor = Actor::New();
+
+  view.InsertItem(Item(id, newActor), 0.5f);
+
+  DALI_TEST_CHECK(view.GetItem(2) == newActor);
+  END_TEST;
+}
+
+int UtcDaliItemViewInsertItemsP(void)
+{
+  ToolkitTestApplication application;
+
+  // Create the ItemView actor
+  TestItemFactory factory;
+  ItemView view = ItemView::New(factory);
+
+  // Create a grid layout and add it to ItemView
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  view.AddLayout(*gridLayout);
+
+  // Activate the grid layout so that the items will be created and added to ItemView
+  Vector3 stageSize(Dali::Stage::GetCurrent().GetSize());
+  view.ActivateLayout(0, stageSize, 0.5f);
+
+  unsigned int itemCount = view.GetChildCount();
+
+  ItemContainer insertList;
+
+  for( unsigned int i = 0u; i < 10; ++i )
+  {
+    Actor child = view.GetChildAt( i );
+    Actor newActor = Actor::New();
+    newActor.SetName("Inserted");
+    insertList.push_back( Item( view.GetItemId(child), newActor ) );
+  }
+
+  if( !insertList.empty() )
+  {
+    view.InsertItems( insertList, 0.5f );
+  }
+
+  DALI_TEST_CHECK(view.GetChildCount() == itemCount + 10);
+
+  ItemIdContainer removeList;
+
+  for( unsigned int i = 0u; i < view.GetChildCount(); ++i )
+  {
+    Actor child = view.GetChildAt( i );
+
+    if( child.GetName() == "Inserted" )
+    {
+      removeList.push_back( view.GetItemId(child) );
+    }
+  }
+
+  if( ! removeList.empty() )
+  {
+    view.RemoveItems( removeList, 0.5f );
+  }
+
+  DALI_TEST_CHECK(view.GetChildCount() == itemCount);
+  END_TEST;
+}
+
+int UtcDaliItemViewReplaceItemP(void)
+{
+  ToolkitTestApplication application;
+
+  // Create the ItemView actor
+  TestItemFactory factory;
+  ItemView view = ItemView::New(factory);
+
+  // Create a grid layout and add it to ItemView
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  view.AddLayout(*gridLayout);
+
+  // Activate the grid layout so that the items will be created and added to ItemView
+  Vector3 stageSize(Dali::Stage::GetCurrent().GetSize());
+  view.ActivateLayout(0, stageSize, 0.5f);
+
+  Actor newActor = Actor::New();
+
+  view.ReplaceItem( Item( 0, newActor ), 0.5f );
+
+  DALI_TEST_CHECK(view.GetItem(0) == newActor);
+  END_TEST;
+}
+
+int UtcDaliItemViewReplaceItemsP(void)
+{
+  ToolkitTestApplication application;
+
+  // Create the ItemView actor
+  TestItemFactory factory;
+  ItemView view = ItemView::New(factory);
+
+  // Create a grid layout and add it to ItemView
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  view.AddLayout(*gridLayout);
+
+  // Activate the grid layout so that the items will be created and added to ItemView
+  Vector3 stageSize(Dali::Stage::GetCurrent().GetSize());
+  view.ActivateLayout(0, stageSize, 0.5f);
+
+  ItemContainer replaceList;
+
+  for( unsigned int i = 0u; i < 10; ++i )
+  {
+    Actor child = view.GetChildAt( i );
+    Actor newActor = Actor::New();
+    newActor.SetName("Replaced");
+
+    replaceList.push_back( Item( view.GetItemId(child), newActor ) );
+  }
+
+  if( !replaceList.empty() )
+  {
+    view.ReplaceItems( replaceList, 0.5f );
+  }
+
+  DALI_TEST_CHECK(view.GetItem(0).GetName() == "Replaced");
+  DALI_TEST_CHECK(view.GetItem(8).GetName() == "Replaced");
+  END_TEST;
+}
+
+int UtcDaliItemViewGetItemsRangeP(void)
+{
+  ToolkitTestApplication application;
+
+  // Create the ItemView actor
+  TestItemFactory factory;
+  ItemView view = ItemView::New(factory);
+
+  // Create a grid layout and add it to ItemView
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  view.AddLayout(*gridLayout);
+
+  // Activate the grid layout so that the items will be created and added to ItemView
+  Vector3 stageSize(Dali::Stage::GetCurrent().GetSize());
+  view.ActivateLayout(0, stageSize, 0.5f);
+
+  ItemRange itemRange(0, 0);
+
+  view.GetItemsRange(itemRange);
+
+  DALI_TEST_CHECK(itemRange.Within(0));
+  END_TEST;
+}
+
+int UtcDaliItemViewSetItemsAnchorPointP(void)
+{
+  ToolkitTestApplication application;
+
+  // Create the ItemView actor
+  TestItemFactory factory;
+  ItemView view = ItemView::New(factory);
+
+  // Create a grid layout and add it to ItemView
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  view.AddLayout(*gridLayout);
+
+  // Activate the grid layout so that the items will be created and added to ItemView
+  Vector3 stageSize(Dali::Stage::GetCurrent().GetSize());
+  view.ActivateLayout(0, stageSize, 0.5f);
+
+  Vector3 anchorPoint(10.0f, 10.0f, 0.0f);
+
+  view.SetItemsAnchorPoint(anchorPoint);
+
+  DALI_TEST_CHECK(view.GetItemsAnchorPoint() == anchorPoint);
+  DALI_TEST_CHECK(view.GetItem(0).GetCurrentAnchorPoint() == anchorPoint);
+  END_TEST;
+}
+
+int UtcDaliItemViewSetItemsParentOriginP(void)
+{
+  ToolkitTestApplication application;
+
+  // Create the ItemView actor
+  TestItemFactory factory;
+  ItemView view = ItemView::New(factory);
+
+  // Create a grid layout and add it to ItemView
+  ItemLayoutPtr gridLayout = DefaultItemLayout::New( DefaultItemLayout::GRID );
+  view.AddLayout(*gridLayout);
+
+  // Activate the grid layout so that the items will be created and added to ItemView
+  Vector3 stageSize(Dali::Stage::GetCurrent().GetSize());
+  view.ActivateLayout(0, stageSize, 0.5f);
+
+  Vector3 parentOrigin(10.0f, 10.0f, 0.0f);
+
+  view.SetItemsParentOrigin(parentOrigin);
+
+  DALI_TEST_CHECK(view.GetItemsParentOrigin() == parentOrigin);
+  DALI_TEST_CHECK(view.GetItem(0).GetCurrentParentOrigin() == parentOrigin);
+  END_TEST;
+}
+
+int UtcDaliItemFactoryGetExtention(void)
+{
+  ToolkitTestApplication application;
+  TestItemFactory factory;
+  DALI_TEST_CHECK( factory.GetExtension() == NULL );
   END_TEST;
 }
index a1ebacd..f42e16c 100644 (file)
@@ -19,7 +19,7 @@
 #include <stdlib.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
-#include <dali-toolkit/public-api/builder/json-parser.h>
+#include <dali-toolkit/devel-api/builder/json-parser.h>
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index 24b2fff..eb86be2 100644 (file)
@@ -20,6 +20,7 @@
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/integration-api/events/key-event-integ.h>
+#include <dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h>
 
 #include "dummy-control.h"
 
index 2c866dc..e902ec0 100644 (file)
@@ -25,6 +25,7 @@
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/integration-api/events/key-event-integ.h>
 
+
 using namespace Dali;
 using namespace Dali::Toolkit;
 
@@ -50,11 +51,11 @@ public:
   : mSignalVerified(signalReceived),
     mCurrentFocusedActor(),
     mProposedActorToFocus(),
-    mDirection(Control::Left)
+    mDirection(Control::KeyboardFocus::LEFT)
   {
   }
 
-  Actor Callback(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocusNavigationDirection direction)
+  Actor Callback(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction)
   {
     tet_infoline("Verifying PreFocusChangeCallback()");
 
@@ -72,13 +73,13 @@ public:
     mSignalVerified = false;
     mCurrentFocusedActor = Actor();
     mProposedActorToFocus = Actor();
-    mDirection = Control::Left;
+    mDirection = Control::KeyboardFocus::LEFT;
   }
 
   bool& mSignalVerified;
   Actor mCurrentFocusedActor;
   Actor mProposedActorToFocus;
-  Control::KeyboardFocusNavigationDirection mDirection;
+  Control::KeyboardFocus::Direction mDirection;
 };
 
 // Functors to test whether focus changed signal is emitted when the keyboard focus is changed
@@ -294,13 +295,13 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   Stage::GetCurrent().Add(second);
 
   // Move the focus to the right
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Right) == false);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false);
 
   // Because no layout control in the stage and no actor is focused, it should emit the PreFocusChange signal
   DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified);
   DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == Actor());
   DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor());
-  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::Right);
+  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::RIGHT);
   preFocusChangeCallback.Reset();
 
   // Check that the focus is set on the first actor
@@ -312,13 +313,13 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   focusChangedCallback.Reset();
 
   // Move the focus towards right
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Right) == false);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == false);
 
   // Because no layout control in the stage and the first actor is focused, it should emit the PreFocusChange signal
   DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified);
   DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == first);
   DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor());
-  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::Right);
+  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::RIGHT);
   preFocusChangeCallback.Reset();
 
   // Check that the focus is set on the second actor
@@ -330,13 +331,13 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   focusChangedCallback.Reset();
 
   // Move the focus towards up
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Up) == false);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::UP) == false);
 
   // Because no layout control in the stage and no actor is focused, it should emit the PreFocusChange signal
   DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified);
   DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == second);
   DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor());
-  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::Up);
+  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::UP);
   preFocusChangeCallback.Reset();
   DALI_TEST_CHECK(!focusChangedCallback.mSignalVerified);
 
@@ -367,7 +368,7 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   focusChangedCallback.Reset();
 
   // Move the focus towards right
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Right) == true);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::RIGHT) == true);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == second);
   DALI_TEST_CHECK(focusChangedCallback.mSignalVerified);
   DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == first);
@@ -375,7 +376,7 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   focusChangedCallback.Reset();
 
   // Move the focus towards down
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Down) == true);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::DOWN) == true);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == fourth);
   DALI_TEST_CHECK(focusChangedCallback.mSignalVerified);
   DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == second);
@@ -383,7 +384,7 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   focusChangedCallback.Reset();
 
   // Move the focus towards left
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Left) == true);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == third);
   DALI_TEST_CHECK(focusChangedCallback.mSignalVerified);
   DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == fourth);
@@ -391,7 +392,7 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   focusChangedCallback.Reset();
 
   // Move the focus towards up
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Up) == true);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::UP) == true);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
   DALI_TEST_CHECK(focusChangedCallback.mSignalVerified);
   DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == third);
@@ -399,12 +400,12 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   focusChangedCallback.Reset();
 
   // Move the focus towards left. The focus move will fail as no way to move it upwards
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Left) == false);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == false);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == first);
   DALI_TEST_CHECK(preFocusChangeCallback.mSignalVerified);
   DALI_TEST_CHECK(preFocusChangeCallback.mCurrentFocusedActor == first);
   DALI_TEST_CHECK(preFocusChangeCallback.mProposedActorToFocus == Actor());
-  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::Left);
+  DALI_TEST_CHECK(preFocusChangeCallback.mDirection == Control::KeyboardFocus::LEFT);
   preFocusChangeCallback.Reset();
   DALI_TEST_CHECK(!focusChangedCallback.mSignalVerified);
 
@@ -413,7 +414,7 @@ int UtcDaliKeyboardFocusManagerMoveFocus(void)
   DALI_TEST_CHECK(manager.GetFocusGroupLoop() == true);
 
   // Move the focus towards left again. The focus should move to the fourth actor.
-  DALI_TEST_CHECK(manager.MoveFocus(Control::Left) == true);
+  DALI_TEST_CHECK(manager.MoveFocus(Control::KeyboardFocus::LEFT) == true);
   DALI_TEST_CHECK(manager.GetCurrentFocusActor() == fourth);
   DALI_TEST_CHECK(focusChangedCallback.mSignalVerified);
   DALI_TEST_CHECK(focusChangedCallback.mOriginalFocusedActor == first);
index bec87ab..7d76ab3 100644 (file)
@@ -24,7 +24,7 @@
 
 #include <dali.h>
 #include <dali-toolkit/dali-toolkit.h>
-#include <dali-toolkit/public-api/shader-effects/nine-patch-mask-effect.h>
+#include <dali-toolkit/devel-api/shader-effects/nine-patch-mask-effect.h>
 
 using namespace Dali;
 
index c905b71..0edd638 100644 (file)
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/integration-api/events/pan-gesture-event.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
+
+
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index 0aaf295..294bec2 100644 (file)
@@ -25,6 +25,7 @@
 #include <dali.h>
 #include <dali/integration-api/events/touch-event-integ.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/popup/popup.h>
 
 using namespace Dali;
 using namespace Toolkit;
index b2f0324..ecf4907 100644 (file)
@@ -96,6 +96,224 @@ Image CreateSolidColorImage( const Vector4& color, unsigned int width, unsigned
 
 } //namespace
 
+int UtcDaliPushButtonConstructorP(void)
+{
+  TestApplication application;
+
+  PushButton button;
+
+  DALI_TEST_CHECK( !button );
+  END_TEST;
+}
+
+int UtcDaliPushButtonCopyConstructorP(void)
+{
+  TestApplication application;
+
+  // Initialize an object, ref count == 1
+  PushButton button = PushButton::New();
+
+  PushButton copy( button );
+  DALI_TEST_CHECK( copy );
+  END_TEST;
+}
+
+int UtcDaliPushButtonAssignmentOperatorP(void)
+{
+  TestApplication application;
+
+  PushButton button = PushButton::New();
+
+  PushButton copy( button );
+  DALI_TEST_CHECK( copy );
+
+  DALI_TEST_CHECK( button == copy );
+  END_TEST;
+}
+
+int UtcDaliPushButtonNewP(void)
+{
+  TestApplication application;
+
+  PushButton button = PushButton::New();
+
+  DALI_TEST_CHECK( button );
+  END_TEST;
+}
+
+int UtcDaliPushButtonDownCastP(void)
+{
+  TestApplication application;
+
+  PushButton button = PushButton::New();
+
+  BaseHandle object(button);
+
+  PushButton button2 = PushButton::DownCast( object );
+  DALI_TEST_CHECK(button2);
+
+  PushButton button3 = DownCast< PushButton >(object);
+  DALI_TEST_CHECK(button3);
+  END_TEST;
+}
+
+int UtcDaliPushButtonDownCastN(void)
+{
+  TestApplication application;
+
+  BaseHandle unInitializedObject;
+
+  PushButton button1 = PushButton::DownCast( unInitializedObject );
+  DALI_TEST_CHECK( !button1 );
+
+  PushButton button2 = DownCast< PushButton >( unInitializedObject );
+  DALI_TEST_CHECK( !button2 );
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetButtonImage(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliPushButtonSetButtonImage");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  PushButton pushButton = PushButton::New();
+  Stage::GetCurrent().Add( pushButton );
+
+  application.SendNotification();
+  application.Render();
+
+  pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
+  pushButton.SetButtonImage( image );
+
+  DALI_TEST_CHECK( pushButton.GetButtonImage() );
+
+  application.SendNotification();
+  application.Render();
+
+  Vector3 size = pushButton.GetCurrentSize();
+
+  DALI_TEST_EQUALS( size.width, 20.f, TEST_LOCATION );
+  DALI_TEST_EQUALS( size.height, 20.f, TEST_LOCATION );
+
+  pushButton.SetButtonImage( imageActor );
+
+  DALI_TEST_CHECK( pushButton.GetButtonImage() );
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetBackgroundImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliPushButtonSetBackgroundImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  PushButton pushButton = PushButton::New();
+
+  pushButton.SetBackgroundImage( image );
+
+  DALI_TEST_CHECK( pushButton.GetBackgroundImage() );
+
+  pushButton.SetBackgroundImage( imageActor );
+
+  DALI_TEST_CHECK( pushButton.GetBackgroundImage() );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliPushButtonSetSelectedImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  PushButton pushButton = PushButton::New();
+
+  pushButton.SetSelectedImage( image );
+
+  DALI_TEST_CHECK( pushButton.GetSelectedImage() );
+
+  pushButton.SetSelectedImage( imageActor );
+
+  DALI_TEST_CHECK( pushButton.GetSelectedImage() );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetSelectedBackgroundImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliPushButtonSetSelectedBackgroundImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  PushButton pushButton = PushButton::New();
+
+  pushButton.SetSelectedBackgroundImage( image );
+
+  DALI_TEST_CHECK( pushButton.GetSelectedBackgroundImage() );
+
+  pushButton.SetSelectedBackgroundImage( imageActor );
+
+  DALI_TEST_CHECK( pushButton.GetSelectedBackgroundImage() );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledBackgroundImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliPushButtonSetDisabledBackgroundImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  PushButton pushButton = PushButton::New();
+
+  pushButton.SetDisabledBackgroundImage( image );
+
+  DALI_TEST_CHECK( pushButton.GetDisabledBackgroundImage() );
+
+  pushButton.SetDisabledBackgroundImage( imageActor );
+
+  DALI_TEST_CHECK( pushButton.GetDisabledBackgroundImage() );
+
+  END_TEST;
+}
+
+int UtcDaliPushButtonSetDisabledImageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliPushButtonSetDisabledImageP");
+
+  Image image = CreateSolidColorImage( Color::RED, 10, 10 );
+  ImageActor imageActor = CreateSolidColorActor( Color::RED );
+  imageActor.SetSize( 20, 20 );
+
+  PushButton pushButton = PushButton::New();
+
+  pushButton.SetDisabledImage( image );
+
+  DALI_TEST_CHECK( pushButton.GetDisabledImage() );
+
+  pushButton.SetDisabledImage( imageActor );
+
+  DALI_TEST_CHECK( pushButton.GetDisabledImage() );
+
+  END_TEST;
+}
 
 int UtcDaliPushButtonSetGetAutoRepeating(void)
 {
@@ -271,33 +489,6 @@ int UtcDaliPushButtonSetGetAutorepeatingDelayValues02(void)
   END_TEST;
 }
 
-int UtcDaliPushButtonSetImages(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliPushButtonSetImages");
-
-  Actor imageActor;
-
-  Image image01 = CreateSolidColorImage( Color::RED, 10, 10 );
-
-  Vector3 size;
-  PushButton pushButton = PushButton::New();
-  Stage::GetCurrent().Add( pushButton );
-
-  application.SendNotification();
-  application.Render();
-
-  pushButton.SetSize( Vector2( 20.0f, 20.0f ) );
-  pushButton.SetButtonImage( image01 );
-
-  application.SendNotification();
-  application.Render();
-
-  size = pushButton.GetCurrentSize();
-
-  END_TEST;
-}
-
 int UtcDaliPushButtonSetLabelText(void)
 {
   ToolkitTestApplication application;
index c20a167..521d6ca 100644 (file)
@@ -47,10 +47,45 @@ static void TestCallback(BaseHandle handle)
 
 }
 
-int UtcDaliRadioButtonNew(void)
+int UtcDaliRadioButtonConstructorP(void)
+{
+  TestApplication application;
+
+  RadioButton button;
+
+  DALI_TEST_CHECK( !button );
+  END_TEST;
+}
+
+int UtcDaliRadioButtonCopyConstructorP(void)
+{
+  TestApplication application;
+
+  // Initialize an object, ref count == 1
+  RadioButton button = RadioButton::New();
+
+  RadioButton copy( button );
+  DALI_TEST_CHECK( copy );
+  END_TEST;
+}
+
+int UtcDaliRadioButtonAssignmentOperatorP(void)
+{
+  TestApplication application;
+
+  RadioButton button = RadioButton::New();
+
+  RadioButton copy( button );
+  DALI_TEST_CHECK( copy );
+
+  DALI_TEST_CHECK( button == copy );
+  END_TEST;
+}
+
+int UtcDaliRadioButtonNewP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliRadioButtonNew");
+  tet_infoline(" UtcDaliRadioButtonNewP");
 
   // Create the Slider actor
   RadioButton radioButton;
@@ -78,7 +113,7 @@ int UtcDaliRadioButtonNew(void)
   END_TEST;
 }
 
-int UtcDaliRadioButtonDestructor(void)
+int UtcDaliRadioButtonDestructorP(void)
 {
   ToolkitTestApplication application;
 
index 10d2e61..f2f0461 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -265,10 +265,56 @@ float TestAlphaFunction(float progress)
 } // unnamed namespace
 
 
-int UtcDaliScrollViewNew(void)
+int UtcDaliToolkitScrollViewConstructorP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewNew");
+
+  ScrollView scrollView;
+  DALI_TEST_CHECK( !scrollView );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewCopyConstructorP(void)
+{
+  ToolkitTestApplication application;
+
+  ScrollView scrollView = ScrollView::New();
+  scrollView.SetProperty( ScrollView::Property::SCROLL_POSITION, Vector2(10.0f, 10.0f) );
+
+  ScrollView copy( scrollView );
+  DALI_TEST_CHECK( copy );
+  DALI_TEST_CHECK( copy.GetProperty<Vector2>( ScrollView::Property::SCROLL_POSITION ) == scrollView.GetProperty<Vector2>( ScrollView::Property::SCROLL_POSITION ) );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewAssignmentOperatorP(void)
+{
+  ToolkitTestApplication application;
+
+  ScrollView scrollView = ScrollView::New();
+  scrollView.SetProperty( ScrollView::Property::SCROLL_POSITION, Vector2(10.0f, 10.0f) );
+
+  ScrollView copy = scrollView;
+  DALI_TEST_CHECK( copy );
+  DALI_TEST_CHECK( copy.GetProperty<Vector2>( ScrollView::Property::SCROLL_POSITION ) == scrollView.GetProperty<Vector2>( ScrollView::Property::SCROLL_POSITION ) );
+  END_TEST;
+}
+
+int UtcDaliScrollViewDestructorP(void)
+{
+  ToolkitTestApplication application;
+
+  ScrollView* scrollView = new ScrollView();
+  delete scrollView;
+
+  DALI_TEST_CHECK( true );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewNewP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewNewP");
 
   ScrollView scrollView;
 
@@ -295,10 +341,10 @@ int UtcDaliScrollViewNew(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewDownCast(void)
+int UtcDaliToolkitScrollViewDownCastP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewDownCast");
+  tet_infoline(" UtcDaliToolkitScrollViewDownCastP");
 
   ScrollView scrollView = ScrollView::New();
   BaseHandle handle(scrollView);
@@ -309,10 +355,10 @@ int UtcDaliScrollViewDownCast(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewScrollToPosition(void)
+int UtcDaliToolkitScrollViewScrollToPositionP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewScrollToPosition");
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToPositionP");
 
   // Create the ScrollView actor
   ScrollView scrollView = ScrollView::New();
@@ -328,14 +374,130 @@ int UtcDaliScrollViewScrollToPosition(void)
   Wait(application, RENDER_DELAY_SCROLL);
   DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target2, TEST_LOCATION );
 
-  Wait(application);
   END_TEST;
 }
 
-int UtcDaliScrollViewScrollToPage(void)
+int UtcDaliToolkitScrollViewScrollToPositionWithDirectionBiasP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToPositionWithDirectionBiasP");
+
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+  RulerPtr rulerX = new FixedRuler( 100.0f );
+  rulerX->SetDomain( RulerDomain(0.0f, 200.0f, true) );
+  RulerPtr rulerY = new FixedRuler( 100.0f );
+  rulerY->SetDomain( RulerDomain(0.0f, 200.0f, true) );
+
+  scrollView.SetRulerX( rulerX );
+  scrollView.SetRulerY( rulerY );
+
+  scrollView.SetWrapMode(true);
+
+  const Vector2 target = Vector2(50.0f, 50.0f);
+  const Vector2 target2 = Vector2(150.0f, 150.0f);
+
+  scrollView.ScrollTo( target, 0.0f );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target, TEST_LOCATION );
+
+  scrollView.ScrollTo( target2, 0.25f, Dali::Toolkit::DirectionBiasLeft, Dali::Toolkit::DirectionBiasLeft );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2::ZERO, TEST_LOCATION );
+
+  scrollView.ScrollTo( target, 0.0f );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target, TEST_LOCATION );
+
+  scrollView.ScrollTo( target2, 0.25f, Dali::Toolkit::DirectionBiasRight, Dali::Toolkit::DirectionBiasRight );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target2, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewScrollToPositionWithAlphaFunctionP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToPositionWithAlphaFunctionP");
+
+  // Create the ScrollView actor
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+
+  const Vector2 target = Vector2(100.0f, 200.0f);
+  const Vector2 target2 = Vector2(300.0f, 100.0f);
+
+  scrollView.ScrollTo( target, 0.5f, TestAlphaFunction );
+  Wait(application, 250);
+  // Check that the scroll animation should finish within just half of the specified duration with the above alpha function
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target, TEST_LOCATION );
+
+  scrollView.ScrollTo( target2, 0.5f, AlphaFunction::LINEAR );
+  Wait(application, 250);
+  // Check that the scroll animation has not finished within half of the specified duration with the linear alpha function
+  DALI_TEST_CHECK( scrollView.GetCurrentScrollPosition() != target2 );
+
+  // Wait till the end of the specified duration
+  Wait(application, 250);
+  // Check that the scroll animation has finished
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target2, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewScrollToPositionWithAlphaFunctionAndDirectionBiasP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToPositionWithAlphaFunctionAndDirectionBiasP");
+
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+  RulerPtr rulerX = new FixedRuler( 100.0f );
+  rulerX->SetDomain( RulerDomain(0.0f, 200.0f, true) );
+  RulerPtr rulerY = new FixedRuler( 100.0f );
+  rulerY->SetDomain( RulerDomain(0.0f, 200.0f, true) );
+
+  scrollView.SetRulerX( rulerX );
+  scrollView.SetRulerY( rulerY );
+
+  scrollView.SetWrapMode(true);
+
+  const Vector2 target = Vector2(50.0f, 50.0f);
+  const Vector2 target2 = Vector2(150.0f, 150.0f);
+
+  scrollView.ScrollTo( target, 0.0f );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target, TEST_LOCATION );
+
+  scrollView.ScrollTo( target2, 0.25f, AlphaFunction::LINEAR, Dali::Toolkit::DirectionBiasLeft, Dali::Toolkit::DirectionBiasLeft );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2::ZERO, TEST_LOCATION );
+
+  scrollView.ScrollTo( target, 0.0f );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target, TEST_LOCATION );
+
+  scrollView.ScrollTo( target2, 0.25f, AlphaFunction::LINEAR, Dali::Toolkit::DirectionBiasRight, Dali::Toolkit::DirectionBiasRight );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target2, TEST_LOCATION );
+
+  scrollView.ScrollTo( target, 0.0f );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target, TEST_LOCATION );
+
+  scrollView.ScrollTo( target2, 0.25f, TestAlphaFunction, Dali::Toolkit::DirectionBiasRight, Dali::Toolkit::DirectionBiasRight );
+  Wait(application, 125);
+  // Check that the scroll animation should finish within just half of the specified duration with the above alpha function
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), target2, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewScrollToPageP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewScrollToPage");
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToPageP");
 
   ScrollView scrollView = ScrollView::New();
   Stage::GetCurrent().Add( scrollView );
@@ -389,14 +551,55 @@ int UtcDaliScrollViewScrollToPage(void)
   DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(0.0f, 0.0f), TEST_LOCATION );
   DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 0, TEST_LOCATION );
 
-  Wait(application);
   END_TEST;
 }
 
-int UtcDaliScrollViewScrollToActor(void)
+int UtcDaliToolkitScrollViewScrollToPageWithDirectionBiasP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToPageWithDirectionBiasP");
+
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+  RulerPtr rulerX = new FixedRuler( 100.0f );
+  rulerX->SetDomain( RulerDomain(0.0f, 200.0f, true) );
+  RulerPtr rulerY = new FixedRuler( 100.0f );
+  rulerY->SetDomain( RulerDomain(0.0f, 200.0f, true) );
+
+  scrollView.SetRulerX( rulerX );
+  scrollView.SetRulerY( rulerY );
+
+  scrollView.SetWrapMode(true);
+
+  scrollView.ScrollTo( 0, 0.25, Dali::Toolkit::DirectionBiasLeft );
+
+  Wait(application, RENDER_FRAME_INTERVAL); // Wait for one frame
+  // Check that the scroll position remains the same
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(0.0f, 0.0f), TEST_LOCATION );
+
+  Wait(application, RENDER_DELAY_SCROLL); // Wait for one second
+  // Check that it stays at the same page (i.e. the same scroll position)
+  DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(0.0f, 0.0f), TEST_LOCATION );
+
+  scrollView.ScrollTo( 0, 0.25, Dali::Toolkit::DirectionBiasRight );
+
+  Wait(application, RENDER_FRAME_INTERVAL); // Wait for one frame
+  // Check that it scrolls towards the right
+  DALI_TEST_CHECK( scrollView.GetCurrentScrollPosition().x > 0.0f );
+
+  Wait(application, RENDER_DELAY_SCROLL); // Wait for one second
+  // Check that it scrolls back to the same page (i.e. the same scroll position)
+  DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 0, TEST_LOCATION );
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(0.0f, 0.0f), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewScrollToActorP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewScrollToActor");
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToActorP");
 
   ScrollView scrollView = ScrollView::New();
   Stage::GetCurrent().Add( scrollView );
@@ -432,10 +635,10 @@ int UtcDaliScrollViewScrollToActor(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewScrollToSnapPoint(void)
+int UtcDaliToolkitScrollViewScrollToSnapPointP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewScrollToSnapPoint");
+  tet_infoline(" UtcDaliToolkitScrollViewScrollToSnapPointP");
 
   ScrollView scrollView = ScrollView::New();
   Stage::GetCurrent().Add( scrollView );
@@ -458,10 +661,10 @@ int UtcDaliScrollViewScrollToSnapPoint(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewSetScrollUpdateDistance(void)
+int UtcDaliToolkitScrollViewSetScrollUpdateDistanceP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewRefreshInterval");
+  tet_infoline(" UtcDaliToolkitScrollViewSetScrollUpdateDistanceP");
 
   ScrollView scrollView = ScrollView::New();
 
@@ -474,14 +677,17 @@ int UtcDaliScrollViewSetScrollUpdateDistance(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewWrapMode(void)
+int UtcDaliToolkitScrollViewSetWrapModeP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewWrapMode");
+  tet_infoline(" UtcDaliToolkitScrollViewSetWrapModeP");
 
   ScrollView scrollView = ScrollView::New();
   Stage::GetCurrent().Add( scrollView );
 
+  Actor actor = Actor::New();
+  scrollView.Add( actor );
+
   // Position rulers. 4x4 grid.
   RulerPtr rulerX = new FixedRuler(50.0f);
   RulerPtr rulerY = new FixedRuler(50.0f);
@@ -494,15 +700,18 @@ int UtcDaliScrollViewWrapMode(void)
   scrollView.ScrollTo(Vector2(225.0f, 125.0f), 0.0f); // 5th (1st) page across, and 3rd (3rd) page down. (wrapped)
   Wait(application);
   DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 17, TEST_LOCATION );
+
   scrollView.SetWrapMode(true);
+  scrollView.ScrollTo(Vector2(230.0f, 130.0f), 0.0f); // 5th (1st) page across, and 3rd (3rd) page down. (wrapped)
+  Wait(application);
   DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 13, TEST_LOCATION );
   END_TEST;
 }
 
-int UtcDaliScrollViewActorAutoSnap(void)
+int UtcDaliToolkitScrollViewActorAutoSnap(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewActorAutoSnap");
+  tet_infoline(" UtcDaliToolkitScrollViewActorAutoSnap");
 
   ScrollView scrollView = ScrollView::New();
   Stage::GetCurrent().Add( scrollView );
@@ -547,10 +756,10 @@ int UtcDaliScrollViewActorAutoSnap(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewSignalsStartComplete(void)
+int UtcDaliToolkitScrollViewSignalsStartComplete(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewSignalsStartComplete");
+  tet_infoline(" UtcDaliToolkitScrollViewSignalsStartComplete");
 
   gOnScrollStartCalled = false;
   gOnScrollCompleteCalled = false;
@@ -576,10 +785,10 @@ int UtcDaliScrollViewSignalsStartComplete(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewSignalsUpdate(void)
+int UtcDaliToolkitScrollViewSignalsUpdate(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewSignalsUpdate");
+  tet_infoline(" UtcDaliToolkitScrollViewSignalsUpdate");
 
   gOnScrollStartCalled = false;
   gOnScrollUpdateCalled = false;
@@ -666,10 +875,10 @@ static Vector2 PerformGestureDiagonalSwipe(ToolkitTestApplication& application,
   return pos;
 }
 
-int UtcDaliScrollViewScrollSensitive(void)
+int UtcDaliToolkitScrollViewScrollSensitive(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewScrollSensitive");
+  tet_infoline(" UtcDaliToolkitScrollViewScrollSensitive");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -712,10 +921,10 @@ int UtcDaliScrollViewScrollSensitive(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewAxisAutoLock(void)
+int UtcDaliToolkitScrollViewAxisAutoLock(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewAxisAutoLock");
+  tet_infoline(" UtcDaliToolkitScrollViewAxisAutoLock");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -764,10 +973,10 @@ int UtcDaliScrollViewAxisAutoLock(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewAxisAutoLockGradient(void)
+int UtcDaliToolkitScrollViewAxisAutoLockGradient(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewAxisAutoLockGradient");
+  tet_infoline(" UtcDaliToolkitScrollViewAxisAutoLockGradient");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -778,10 +987,10 @@ int UtcDaliScrollViewAxisAutoLockGradient(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewConstraints(void)
+int UtcDaliToolkitScrollViewConstraints(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewConstraints");
+  tet_infoline(" UtcDaliToolkitScrollViewConstraints");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -823,10 +1032,10 @@ int UtcDaliScrollViewConstraints(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewBind(void)
+int UtcDaliToolkitScrollViewBind(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewBind");
+  tet_infoline(" UtcDaliToolkitScrollViewBind");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -877,122 +1086,10 @@ int UtcDaliScrollViewBind(void)
   END_TEST;
 }
 
-int UtcDaliRulerEnableDisable(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliRulerEnableDisable");
-
-  RulerPtr ruler = new DefaultRuler();
-
-  DALI_TEST_CHECK( ruler->IsEnabled() );
-  ruler->Disable();
-  DALI_TEST_CHECK( !ruler->IsEnabled() );
-  ruler->Enable();
-  DALI_TEST_CHECK( ruler->IsEnabled() );
-  END_TEST;
-}
-
-int UtcDaliRulerDomainEnableDisable(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliRulerDomainEnableDisable");
-
-  RulerPtr ruler = new DefaultRuler();
-  DALI_TEST_EQUALS( ruler->GetDomain().GetSize(), 1.0f, TEST_LOCATION );
-
-
-  ruler->SetDomain( RulerDomain(0.0f, 100.0f, true) );
-  DALI_TEST_EQUALS( ruler->GetDomain().GetSize(), 100.0f, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->Clamp(-200.0f), 0.0f, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->Clamp(200.0f), 100.0f, TEST_LOCATION );
-
-  ruler->DisableDomain();
-  DALI_TEST_EQUALS( ruler->GetDomain().GetSize(), 1.0f, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->Clamp(-200.0f), -200.0f, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->Clamp(200.0f), 200.0f, TEST_LOCATION );
-  END_TEST;
-}
-
-int UtcDaliRulerSnapAndClamp(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliRulerSnapAndClamp");
-
-  RulerPtr ruler = new FixedRuler( 50.0f );
-  ruler->SetDomain( RulerDomain(0.0f, 400.0f, true) );
-
-  // default testing. (snap and clamp)
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(50.0f), 50.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(30.0f), 50.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(10.0f), 0.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(-40.0f), 0.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(390.0f), 400.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(430.0f), 400.0f, TEST_LOCATION);
-
-  // bias testing.
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(40.0f, 0.0f), 0.0f, TEST_LOCATION); // Flick Left
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(40.0f, 0.5f), 50.0f, TEST_LOCATION); // No Flick
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(40.0f, 1.0f), 50.0f, TEST_LOCATION); // Flick Right
-
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(20.0f, 0.0f), 0.0f, TEST_LOCATION); // Flick Left
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(20.0f, 0.5f), 0.0f, TEST_LOCATION); // No Flick
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(20.0f, 1.0f), 50.0f, TEST_LOCATION); // Flick Right
-
-  // length testing.
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(-10.0f, 0.5f, 10.0f), 0.0f, TEST_LOCATION); // 10 units long (over left boundary)
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(-5.0f, 0.5f, 10.0f), 0.0f, TEST_LOCATION); // 10 units long (slightly ovr left boundary)
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(300.0f, 0.5f, 10.0f), 300.0f, TEST_LOCATION); // 10 units long (not over a boundary)
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(395.0f, 0.5f, 10.0f), 390.0f, TEST_LOCATION); // 10 units long (slightly over right boundary)
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(500.0f, 0.5f, 10.0f), 390.0f, TEST_LOCATION); // 10 units long (over right boundary)
-
-  // scale testing.
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(-100.0f, 0.5f, 0.0f, 2.0f), 0.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(50.0f, 0.5f, 0.0f, 2.0f), 50.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(700.0f, 0.5f, 0.0f, 2.0f), 700.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(850.0f, 0.5f, 0.0f, 2.0f), 800.0f, TEST_LOCATION);
-
-  // clamp state testing.
-  ClampState clamped;
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(50.0f, 0.5f, 0.0f, 1.0f, clamped), 50.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(30.0f, 0.5f, 0.0f, 1.0f, clamped), 50.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(10.0f, 0.5f, 0.0f, 1.0f, clamped), 0.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(-40.0f, 0.5f, 0.0f, 1.0f, clamped), 0.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( clamped, ClampedToMin, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(390.0f, 0.5f, 0.0f, 1.0f, clamped), 400.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
-  DALI_TEST_EQUALS( ruler->SnapAndClamp(430.0f, 0.5f, 0.0f, 1.0f, clamped), 400.0f, TEST_LOCATION);
-  DALI_TEST_EQUALS( clamped, ClampedToMax, TEST_LOCATION );
-  END_TEST;
-}
-
-int UtcDaliRulerFixedRulerSpacing(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliRulerFixedRulerSpacing");
-
-  RulerPtr rulerNormal = new FixedRuler( 25.0f );
-  rulerNormal->SetDomain( RulerDomain(10.0f, 90.0f, true) );
-
-  unsigned int volume;
-  float position;
-
-  position = rulerNormal->GetPositionFromPage(1, volume, true);
-  DALI_TEST_EQUALS( position, 35.0f, TEST_LOCATION );
-  DALI_TEST_EQUALS( volume, 0u, TEST_LOCATION );
-
-  position = rulerNormal->GetPositionFromPage(2, volume, true);
-  DALI_TEST_EQUALS( position, 60.0f, TEST_LOCATION );
-  DALI_TEST_EQUALS( volume, 0u, TEST_LOCATION );
-  END_TEST;
-}
-
-int UtcDaliScrollViewOvershoot(void)
+int UtcDaliToolkitScrollViewOvershoot(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewOvershoot");
+  tet_infoline(" UtcDaliToolkitScrollViewOvershoot");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -1083,10 +1180,10 @@ int UtcDaliScrollViewOvershoot(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewSnapAlphaFunction(void)
+int UtcDaliToolkitScrollViewSnapAlphaFunction(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewSnapAlphaFunction");
+  tet_infoline(" UtcDaliToolkitScrollViewSnapAlphaFunction");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -1101,10 +1198,10 @@ int UtcDaliScrollViewSnapAlphaFunction(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewSnapDuration(void)
+int UtcDaliToolkitScrollViewSnapDuration(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewSnapDuration");
+  tet_infoline(" UtcDaliToolkitScrollViewSnapDuration");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -1120,10 +1217,10 @@ int UtcDaliScrollViewSnapDuration(void)
   END_TEST;
 }
 
-int UtcDaliScrollViewSignalsSnapStart(void)
+int UtcDaliToolkitScrollViewSnapStartedSignalP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewSignalsSnapStart");
+  tet_infoline(" UtcDaliToolkitScrollViewSnapStartedSignalP");
 
   // Set up a scrollView...
   ScrollView scrollView = ScrollView::New();
@@ -1159,27 +1256,493 @@ int UtcDaliScrollViewSignalsSnapStart(void)
   END_TEST;
 }
 
-
-int UtcDaliScrollViewSetMouseWheelScrollDistanceStep(void)
+int UtcDaliToolkitScrollViewGetCurrentPageP(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewSetMouseWheelScrollDistanceStep");
+  tet_infoline(" UtcDaliToolkitScrollViewGetCurrentPageP");
 
   ScrollView scrollView = ScrollView::New();
-  // Disable Refresh signal (TET environment cannot use adaptor's Timer)
-  scrollView.SetMouseWheelScrollDistanceStep(Vector2(30.0f, 15.0f));
-  DALI_TEST_EQUALS( scrollView.GetMouseWheelScrollDistanceStep(), Vector2(30.0f, 15.0f), TEST_LOCATION );
-  scrollView.SetMouseWheelScrollDistanceStep(Vector2(60.0f, 30.0f));
-  DALI_TEST_EQUALS( scrollView.GetMouseWheelScrollDistanceStep(), Vector2(60.0f, 30.0f), TEST_LOCATION);
-  END_TEST;
-}
-
-int UtcDaliScrollViewGetSet(void)
+  Stage::GetCurrent().Add( scrollView );
+  RulerPtr rulerX = new FixedRuler( 100.0f );
+  rulerX->SetDomain( RulerDomain(0.0f, 800.0f, true) );
+  RulerPtr rulerY = new FixedRuler( 100.0f );
+  rulerY->SetDomain( RulerDomain(0.0f, 400.0f, true) );
+
+  scrollView.SetRulerX( rulerX );
+  scrollView.SetRulerY( rulerY );
+
+  scrollView.ScrollTo( 15 );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 15, TEST_LOCATION );
+
+  scrollView.ScrollTo( 3 );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 3, TEST_LOCATION );
+
+  scrollView.ScrollTo( 9 );
+  Wait(application, RENDER_DELAY_SCROLL);
+  DALI_TEST_EQUALS( static_cast<int>(scrollView.GetCurrentPage()), 9, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetMaxOvershootP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetMaxOvershootP");
+
+  // Set up a scrollView...
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+  Vector2 stageSize = Stage::GetCurrent().GetSize();
+  scrollView.SetSize(stageSize);
+  scrollView.SetParentOrigin(ParentOrigin::TOP_LEFT);
+  scrollView.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+
+  // Position rulers.
+  RulerPtr rulerX = new DefaultRuler();
+  RulerPtr rulerY = new DefaultRuler();
+  rulerX->SetDomain( RulerDomain(0.0f, stageSize.width + CLAMP_EXCESS_WIDTH, true) );
+  rulerY->SetDomain( RulerDomain(0.0f, stageSize.height + CLAMP_EXCESS_HEIGHT, true) );
+  scrollView.SetRulerX(rulerX);
+  scrollView.SetRulerY(rulerY);
+
+  // Set the max overshoot to be 50 pixels in both X axis and Y axis
+  scrollView.SetMaxOvershoot(50.0f, 50.0f);
+
+  scrollView.ScrollTo(OVERSHOOT_START_SCROLL_POSITION, 0.0f); // move in a little.
+  Wait(application);
+
+  // Scroll page in NW (-20,-20 pixels), then check that overshoot should be 0. (don't release touch)
+  Vector2 currentPos = PerformGestureDiagonalSwipe(application, OVERSHOOT_START_SCROLL_POSITION, Vector2(1.0f, 1.0f), 20, false);
+  float overshootXValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_X);
+  float overshootYValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_Y);
+  DALI_TEST_EQUALS(overshootXValue, 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS(overshootYValue, 0.0f, TEST_LOCATION);
+
+  // Scroll page further in NW (-105,-105 pixels), then check that overshoot should be around 0.5. (don't release touch)
+  currentPos = PerformGestureDiagonalSwipe(application, OVERSHOOT_START_SCROLL_POSITION, Vector2(1.0f, 1.0f), 105, false);
+  overshootXValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_X);
+  overshootYValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_Y);
+  DALI_TEST_CHECK(overshootXValue > 0.49f && overshootXValue < 0.51f);
+  DALI_TEST_CHECK(overshootYValue > 0.49f && overshootYValue < 0.51f);
+
+  // Scroll page further in NW (-30,-30 pixels), then check that overshoot should be now 1.0. (don't release touch)
+  currentPos = PerformGestureDiagonalSwipe(application, OVERSHOOT_START_SCROLL_POSITION, Vector2(1.0f, 1.0f), 30, false);
+  overshootXValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_X);
+  overshootYValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_Y);
+  DALI_TEST_EQUALS(overshootXValue, 1.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS(overshootYValue, 1.0f, TEST_LOCATION);
+
+  // Change the max overshoot to be 100 pixels in both X axis and Y axis
+  scrollView.SetMaxOvershoot(100.0f, 100.0f);
+  Wait(application);
+
+  // Check that overshoot should be now around 0.8.
+  overshootXValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_X);
+  overshootYValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_Y);
+  DALI_TEST_CHECK(overshootXValue > 0.79f && overshootXValue < 0.81f);
+  DALI_TEST_CHECK(overshootYValue > 0.79f && overshootYValue < 0.81f);
+
+  // Scroll page further in NW (-30,-30 pixels), then check that overshoot should be now 1.0. (don't release touch)
+  currentPos = PerformGestureDiagonalSwipe(application, OVERSHOOT_START_SCROLL_POSITION, Vector2(1.0f, 1.0f), 30, false);
+  overshootXValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_X);
+  overshootYValue = scrollView.GetProperty<float>(ScrollView::Property::OVERSHOOT_Y);
+  DALI_TEST_EQUALS(overshootXValue, 1.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS(overshootYValue, 1.0f, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetScrollingDirectionP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetScrollingDirectionP");
+
+  // Set up a scrollView...
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+  Vector2 stageSize = Stage::GetCurrent().GetSize();
+  scrollView.SetSize(stageSize);
+  scrollView.SetParentOrigin(ParentOrigin::TOP_LEFT);
+  scrollView.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+
+  Vector2 START_POSITION = Vector2(10.0f, 10.0f);
+
+  scrollView.ScrollTo(START_POSITION, 0.0f);
+  Wait(application);
+  // Try a vertical swipe.
+  PerformGestureDiagonalSwipe(application, START_POSITION, Vector2(0.0f, 1.0f), 60, true);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(10.0f, -50.0f), TEST_LOCATION );
+
+  scrollView.SetScrollingDirection(Dali::PanGestureDetector::DIRECTION_VERTICAL);
+
+  scrollView.ScrollTo(START_POSITION, 0.0f);
+  Wait(application);
+  // Try a vertical swipe.
+  PerformGestureDiagonalSwipe(application, START_POSITION, Vector2(0.0f, 1.0f), 60, true);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), START_POSITION, TEST_LOCATION );
+
+  scrollView.RemoveScrollingDirection(Dali::PanGestureDetector::DIRECTION_VERTICAL);
+
+  scrollView.ScrollTo(Vector2(10.0f, 10.0f), 0.0f);
+  Wait(application);
+  // Try a vertical swipe.
+  PerformGestureDiagonalSwipe(application, START_POSITION, Vector2(0.0f, 1.0f), 60, true);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(10.0f, -50.0f), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRemoveScrollingDirectionP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRemoveScrollingDirectionP");
+
+  // Set up a scrollView...
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+  Vector2 stageSize = Stage::GetCurrent().GetSize();
+  scrollView.SetSize(stageSize);
+  scrollView.SetParentOrigin(ParentOrigin::TOP_LEFT);
+  scrollView.SetAnchorPoint(AnchorPoint::TOP_LEFT);
+
+  Vector2 START_POSITION = Vector2(10.0f, 10.0f);
+
+  scrollView.SetScrollingDirection(Dali::PanGestureDetector::DIRECTION_VERTICAL);
+
+  scrollView.ScrollTo(START_POSITION, 0.0f);
+  Wait(application);
+  // Try a vertical swipe.
+  PerformGestureDiagonalSwipe(application, START_POSITION, Vector2(0.0f, 1.0f), 60, true);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), START_POSITION, TEST_LOCATION );
+
+  scrollView.RemoveScrollingDirection(Dali::PanGestureDetector::DIRECTION_VERTICAL);
+
+  scrollView.ScrollTo(Vector2(10.0f, 10.0f), 0.0f);
+  Wait(application);
+  // Try a vertical swipe.
+  PerformGestureDiagonalSwipe(application, START_POSITION, Vector2(0.0f, 1.0f), 60, true);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(10.0f, -50.0f), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetRulerXP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetRulerXP");
+
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+  RulerPtr rulerX = new FixedRuler( 100.0f );
+  rulerX->SetDomain( RulerDomain(0.0f, 800.0f, true) );
+
+  scrollView.SetRulerX( rulerX );
+
+  scrollView.ScrollTo( 1, 0.0f );
+  Wait(application);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(100.0f, 0.0f), TEST_LOCATION );
+
+  RulerPtr newRulerX = new FixedRuler( 200.0f );
+  newRulerX->SetDomain( RulerDomain(0.0f, 800.0f, true) );
+
+  scrollView.SetRulerX( newRulerX );
+
+  scrollView.ScrollTo( 1, 0.0f );
+  Wait(application);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(200.0f, 0.0f), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetRulerYP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetRulerYP");
+
+  ScrollView scrollView = ScrollView::New();
+  Stage::GetCurrent().Add( scrollView );
+
+  RulerPtr rulerY = new FixedRuler( 200.0f );
+  rulerY->SetDomain( RulerDomain(0.0f, 400.0f, true) );
+
+  scrollView.SetRulerY( rulerY );
+
+  scrollView.ScrollTo( Vector2(0.0f, 350.0f), 0.0f );
+  Wait(application);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(0.0f, 350.0f), TEST_LOCATION );
+
+  RulerPtr newRulerY = new FixedRuler( 100.0f );
+  newRulerY->SetDomain( RulerDomain(0.0f, 200.0f, true) );
+  scrollView.SetRulerY( newRulerY );
+
+  scrollView.ScrollTo( Vector2(0.0f, 350.0f), 0.0f );
+  Wait(application);
+  DALI_TEST_EQUALS( scrollView.GetCurrentScrollPosition(), Vector2(0.0f, 200.0f), TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetMinimumSpeedForFlickP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetMinimumSpeedForFlickP");
+
+  ScrollView scrollView = ScrollView::New();
+  scrollView.SetMinimumSpeedForFlick(25.0f);
+  DALI_TEST_EQUALS( scrollView.GetMinimumSpeedForFlick(), 25.0f, TEST_LOCATION );
+  scrollView.SetMinimumSpeedForFlick(60.0f);
+  DALI_TEST_EQUALS( scrollView.GetMinimumSpeedForFlick(), 60.0f, TEST_LOCATION );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetMinimumDistanceForFlickP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetMinimumDistanceForFlick");
+
+  ScrollView scrollView = ScrollView::New();
+
+  scrollView.SetMinimumDistanceForFlick(Vector2(30.0f, 15.0f));
+  DALI_TEST_EQUALS( scrollView.GetMinimumDistanceForFlick(), Vector2(30.0f, 15.0f), TEST_LOCATION );
+  scrollView.SetMinimumDistanceForFlick(Vector2(60.0f, 30.0f));
+  DALI_TEST_EQUALS( scrollView.GetMinimumDistanceForFlick(), Vector2(60.0f, 30.0f), TEST_LOCATION);
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetWheelScrollDistanceStepP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetWheelScrollDistanceStepP");
+
+  ScrollView scrollView = ScrollView::New();
+  // Disable Refresh signal (TET environment cannot use adaptor's Timer)
+  scrollView.SetWheelScrollDistanceStep(Vector2(30.0f, 15.0f));
+  DALI_TEST_EQUALS( scrollView.GetWheelScrollDistanceStep(), Vector2(30.0f, 15.0f), TEST_LOCATION );
+  scrollView.SetWheelScrollDistanceStep(Vector2(60.0f, 30.0f));
+  DALI_TEST_EQUALS( scrollView.GetWheelScrollDistanceStep(), Vector2(60.0f, 30.0f), TEST_LOCATION);
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewApplyEffectP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewApplyEffectP");
+
+  // Create a ScrollView
+  ScrollView scrollView = ScrollView::New();
+
+  // Create two scroll view effects
+  Dali::Path path = Dali::Path::New();
+  ScrollViewEffect effect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 0.0f, 0.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(100.0f, 100.0f, 0.0f), 2);
+  ScrollViewEffect newEffect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 1.0f, 1.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(200.0f, 150.0f, 0.0f), 5);
+
+  // Apply both effects
+  scrollView.ApplyEffect(effect);
+  scrollView.ApplyEffect(newEffect);
+
+  DALI_TEST_CHECK( true );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewApplyEffectN(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewApplyEffectN");
+
+  // Create a ScrollView
+  ScrollView scrollView = ScrollView::New();
+
+  // Create two scroll view effects
+  Dali::Path path = Dali::Path::New();
+  ScrollViewEffect effect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 0.0f, 0.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(100.0f, 100.0f, 0.0f), 2);
+  ScrollViewEffect newEffect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 1.0f, 1.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(200.0f, 150.0f, 0.0f), 5);
+
+  // Apply both effects
+  scrollView.ApplyEffect(effect);
+  scrollView.ApplyEffect(newEffect);
+
+  // Attempt to apply the same effect again
+  try
+  {
+    scrollView.ApplyEffect(newEffect);
+    tet_result( TET_FAIL );
+  }
+  catch ( DaliException& e )
+  {
+    DALI_TEST_ASSERT( e, "!effectAlreadyExistsInScrollView", TEST_LOCATION );
+  }
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRemoveEffectP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRemoveEffectP");
+
+  // Create a ScrollView
+  ScrollView scrollView = ScrollView::New();
+
+  // Create two scroll view effects
+  Dali::Path path = Dali::Path::New();
+  ScrollViewEffect effect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 0.0f, 0.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(100.0f, 100.0f, 0.0f), 2);
+  ScrollViewEffect newEffect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 1.0f, 1.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(200.0f, 150.0f, 0.0f), 5);
+
+  // Apply both effects
+  scrollView.ApplyEffect(effect);
+  scrollView.ApplyEffect(newEffect);
+
+  // Remove both effects
+  scrollView.RemoveEffect(effect);
+  scrollView.RemoveEffect(newEffect);
+
+  DALI_TEST_CHECK( true );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRemoveEffectN(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRemoveEffectN");
+
+  // Create a ScrollView
+  ScrollView scrollView = ScrollView::New();
+
+  // Create two scroll view effects
+  Dali::Path path = Dali::Path::New();
+  ScrollViewEffect effect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 0.0f, 0.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(100.0f, 100.0f, 0.0f), 2);
+  ScrollViewEffect newEffect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 1.0f, 1.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(200.0f, 150.0f, 0.0f), 5);
+
+  // Apply the first effect
+  scrollView.ApplyEffect(effect);
+
+  // Attempt to remove the second effect which has not been applied to scroll view
+  try
+  {
+    scrollView.RemoveEffect(newEffect);
+    tet_result( TET_FAIL );
+  }
+  catch ( DaliException& e )
+  {
+    DALI_TEST_ASSERT( e, "effectExistedInScrollView", TEST_LOCATION );
+  }
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRemoveAllEffectsP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRemoveAllEffectsP");
+
+  // Create a ScrollView
+  ScrollView scrollView = ScrollView::New();
+
+  // Create two scroll view effects
+  Dali::Path path = Dali::Path::New();
+  ScrollViewEffect effect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 0.0f, 0.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(100.0f, 100.0f, 0.0f), 2);
+  ScrollViewEffect newEffect = ScrollViewPagePathEffect::New(path, Vector3(-1.0f, 1.0f, 1.0f), Toolkit::ScrollView::Property::SCROLL_FINAL_X, Vector3(200.0f, 150.0f, 0.0f), 5);
+
+  // Apply both effects
+  scrollView.ApplyEffect(effect);
+  scrollView.ApplyEffect(newEffect);
+
+  // Attempt to apply the same first effect again
+  try
+  {
+    scrollView.ApplyEffect(effect);
+    tet_result( TET_FAIL );
+  }
+  catch ( DaliException& e )
+  {
+    DALI_TEST_ASSERT( e, "!effectAlreadyExistsInScrollView", TEST_LOCATION );
+  }
+
+  // Remove both effects
+  scrollView.RemoveAllEffects();
+
+  // Apply both effects again
+  scrollView.ApplyEffect(effect);
+  scrollView.ApplyEffect(newEffect);
+
+  DALI_TEST_CHECK( true );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRemoveAllEffectsN(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRemoveAllEffectsN");
+
+  // Create a ScrollView
+  ScrollView scrollView = ScrollView::New();
+
+  // Remove effects when there is no effect applied previously
+  scrollView.RemoveAllEffects();
+
+  DALI_TEST_CHECK( true );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetOvershootEnabledP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetOvershootEnabledP");
+
+  ScrollView scrollView = ScrollView::New();
+
+  scrollView.SetOvershootEnabled(true);
+  DALI_TEST_CHECK(scrollView.IsOvershootEnabled());
+
+  scrollView.SetOvershootEnabled(false);
+  DALI_TEST_CHECK(!scrollView.IsOvershootEnabled());
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetOvershootEffectColorP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetOvershootEffectColorP");
+
+  ScrollView scrollView = ScrollView::New();
+
+  scrollView.SetOvershootEffectColor(Dali::Color::RED);
+  DALI_TEST_EQUALS(scrollView.GetOvershootEffectColor(), Dali::Color::RED, TEST_LOCATION);
+
+  scrollView.SetOvershootEffectColor(Dali::Color::YELLOW);
+  DALI_TEST_EQUALS(scrollView.GetOvershootEffectColor(), Dali::Color::YELLOW, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewSetOvershootAnimationSpeedP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewSetOvershootAnimationSpeedP");
+
+  ScrollView scrollView = ScrollView::New();
+
+  scrollView.SetOvershootAnimationSpeed(55.0f);
+  DALI_TEST_EQUALS(scrollView.GetOvershootAnimationSpeed(), 55.0f, TEST_LOCATION);
+
+  scrollView.SetOvershootAnimationSpeed(120.0f);
+  DALI_TEST_EQUALS(scrollView.GetOvershootAnimationSpeed(), 120.0f, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewGetSet(void)
 {
   ToolkitTestApplication application;
-  tet_infoline(" UtcDaliScrollViewGetSet");
+  tet_infoline(" UtcDaliToolkitScrollViewGetSet");
   ScrollView scrollView = ScrollView::New();
-  scrollView.SetMaxOvershoot(50.0f, 50.0f);
   scrollView.SetMaxFlickSpeed(0.5f);
   DALI_TEST_EQUALS(scrollView.GetMaxFlickSpeed(), 0.5f, Math::MACHINE_EPSILON_0, TEST_LOCATION);
   scrollView.SetFrictionCoefficient(0.6f);
@@ -1188,3 +1751,441 @@ int UtcDaliScrollViewGetSet(void)
   DALI_TEST_EQUALS(scrollView.GetFlickSpeedCoefficient(), 0.7f, Math::MACHINE_EPSILON_0, TEST_LOCATION);
   END_TEST;
 }
+
+int UtcDaliToolkitScrollViewRulerDomainConstructorP(void)
+{
+  ToolkitTestApplication application;
+
+  RulerDomain domainX = RulerDomain(0.0f, 200.0f, true);
+  DALI_TEST_EQUALS( domainX.min, 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( domainX.max, 200.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( domainX.enabled, true, TEST_LOCATION);
+
+  RulerDomain domainY = RulerDomain(100.0f, 500.0f, false);
+  DALI_TEST_EQUALS( domainY.min, 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( domainY.max, 500.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( domainY.enabled, false, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerDomainGetSizeP(void)
+{
+  ToolkitTestApplication application;
+
+  RulerDomain domainX = RulerDomain(0.0f, 200.0f, true);
+  DALI_TEST_EQUALS( domainX.GetSize(), 200.0f, TEST_LOCATION);
+
+  RulerDomain domainY = RulerDomain(100.0f, 500.0f, false);
+  DALI_TEST_EQUALS( domainY.GetSize(), 400.0f, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerDomainClampP(void)
+{
+  ToolkitTestApplication application;
+
+  RulerDomain domainX = RulerDomain(0.0f, 200.0f, true);
+
+  float value = domainX.Clamp(50.0f, 100.0f, 1.0f);
+  DALI_TEST_EQUALS( value, 50.0f, TEST_LOCATION);
+
+  value = domainX.Clamp(300.0f, 20.0f, 1.0f);
+  DALI_TEST_EQUALS( value, 180.0f, TEST_LOCATION);
+
+  value = domainX.Clamp(300.0f, 20.0f, 0.5f);
+  DALI_TEST_EQUALS( value, 80.0f, TEST_LOCATION);
+
+  value = domainX.Clamp(250.0f, 200.0f, 2.0f);
+  DALI_TEST_EQUALS( value, 200.0f, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerDomainClampWithStateP(void)
+{
+  ToolkitTestApplication application;
+
+  RulerDomain domainX = RulerDomain(0.0f, 200.0f, true);
+
+  ClampState clamped;
+  float value = domainX.Clamp(50.0f, 100.0f, 1.0f, clamped);
+  DALI_TEST_EQUALS( value, 50.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, Dali::Toolkit::NotClamped, TEST_LOCATION);
+
+  value = domainX.Clamp(-100.0f, 200.0f, 1.0f, clamped);
+  DALI_TEST_EQUALS( value, 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, Dali::Toolkit::ClampedToMin, TEST_LOCATION);
+
+  value = domainX.Clamp(300.0f, 20.0f, 1.0f, clamped);
+  DALI_TEST_EQUALS( value, 180.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, Dali::Toolkit::ClampedToMax, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewDefaultRulerConstructorP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewDefaultRulerConstructorP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+  DALI_TEST_CHECK( defaultRuler );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewDefaultRulerDestructorP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewDefaultRulerDestructorP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+
+  DALI_TEST_CHECK( true );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewFixedRulerConstructorP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewFixedRulerConstructorP");
+
+  RulerPtr fixedRuler = new FixedRuler( 100.0f );
+  DALI_TEST_CHECK( fixedRuler );
+
+  fixedRuler = new FixedRuler( 0.0f );
+  DALI_TEST_CHECK( fixedRuler );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewFixedRulerDestructorP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewFixedRulerDestructorP");
+
+  RulerPtr fixedRuler = new FixedRuler( 100.0f );
+
+  DALI_TEST_CHECK( true );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerGetTypeP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRulerGetTypeP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+  DALI_TEST_CHECK( defaultRuler );
+  DALI_TEST_EQUALS( defaultRuler->GetType(), Dali::Toolkit::Ruler::Free, TEST_LOCATION);
+
+  RulerPtr fixedRuler = new FixedRuler( 100.0f );
+  DALI_TEST_CHECK( fixedRuler );
+  DALI_TEST_EQUALS( fixedRuler->GetType(), Dali::Toolkit::Ruler::Fixed, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerGetExtensionP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRulerGetExtensionP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+  DALI_TEST_CHECK( defaultRuler );
+  DALI_TEST_CHECK( !defaultRuler->GetExtension() );
+
+  RulerPtr fixedRuler = new FixedRuler( 100.0f );
+  DALI_TEST_CHECK( fixedRuler );
+  DALI_TEST_CHECK( !fixedRuler->GetExtension() );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerEnableDisable(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRulerEnableDisable");
+
+  RulerPtr ruler = new DefaultRuler();
+
+  DALI_TEST_CHECK( ruler->IsEnabled() );
+  ruler->Disable();
+  DALI_TEST_CHECK( !ruler->IsEnabled() );
+  ruler->Enable();
+  DALI_TEST_CHECK( ruler->IsEnabled() );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerDomainEnableDisable(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRulerDomainEnableDisable");
+
+  RulerPtr ruler = new DefaultRuler();
+  DALI_TEST_EQUALS( ruler->GetDomain().GetSize(), 1.0f, TEST_LOCATION );
+
+  ruler->SetDomain( RulerDomain(0.0f, 100.0f, true) );
+  DALI_TEST_EQUALS( ruler->GetDomain().GetSize(), 100.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->Clamp(-200.0f), 0.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->Clamp(200.0f), 100.0f, TEST_LOCATION );
+
+  ruler->DisableDomain();
+  DALI_TEST_EQUALS( ruler->GetDomain().GetSize(), 1.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->Clamp(-200.0f), -200.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->Clamp(200.0f), 200.0f, TEST_LOCATION );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewRulerSnapAndClamp(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewRulerSnapAndClamp");
+
+  RulerPtr ruler = new FixedRuler( 50.0f );
+  ruler->SetDomain( RulerDomain(0.0f, 400.0f, true) );
+
+  // default testing. (snap and clamp)
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(50.0f), 50.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(30.0f), 50.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(10.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(-40.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(390.0f), 400.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(430.0f), 400.0f, TEST_LOCATION);
+
+  // bias testing.
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(40.0f, 0.0f), 0.0f, TEST_LOCATION); // Flick Left
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(40.0f, 0.5f), 50.0f, TEST_LOCATION); // No Flick
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(40.0f, 1.0f), 50.0f, TEST_LOCATION); // Flick Right
+
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(20.0f, 0.0f), 0.0f, TEST_LOCATION); // Flick Left
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(20.0f, 0.5f), 0.0f, TEST_LOCATION); // No Flick
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(20.0f, 1.0f), 50.0f, TEST_LOCATION); // Flick Right
+
+  // length testing.
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(-10.0f, 0.5f, 10.0f), 0.0f, TEST_LOCATION); // 10 units long (over left boundary)
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(-5.0f, 0.5f, 10.0f), 0.0f, TEST_LOCATION); // 10 units long (slightly ovr left boundary)
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(300.0f, 0.5f, 10.0f), 300.0f, TEST_LOCATION); // 10 units long (not over a boundary)
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(395.0f, 0.5f, 10.0f), 390.0f, TEST_LOCATION); // 10 units long (slightly over right boundary)
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(500.0f, 0.5f, 10.0f), 390.0f, TEST_LOCATION); // 10 units long (over right boundary)
+
+  // scale testing.
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(-100.0f, 0.5f, 0.0f, 2.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(50.0f, 0.5f, 0.0f, 2.0f), 50.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(700.0f, 0.5f, 0.0f, 2.0f), 700.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(850.0f, 0.5f, 0.0f, 2.0f), 800.0f, TEST_LOCATION);
+
+  // clamp state testing.
+  ClampState clamped;
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(50.0f, 0.5f, 0.0f, 1.0f, clamped), 50.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(30.0f, 0.5f, 0.0f, 1.0f, clamped), 50.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(10.0f, 0.5f, 0.0f, 1.0f, clamped), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(-40.0f, 0.5f, 0.0f, 1.0f, clamped), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, ClampedToMin, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(390.0f, 0.5f, 0.0f, 1.0f, clamped), 400.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, NotClamped, TEST_LOCATION );
+  DALI_TEST_EQUALS( ruler->SnapAndClamp(430.0f, 0.5f, 0.0f, 1.0f, clamped), 400.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( clamped, ClampedToMax, TEST_LOCATION );
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewFixedRulerGetPositionFromPageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewFixedRulerGetPositionFromPageP");
+
+  RulerPtr rulerNormal = new FixedRuler( 25.0f );
+  rulerNormal->SetDomain( RulerDomain(10.0f, 90.0f, true) );
+
+  unsigned int volume;
+  float position;
+
+  position = rulerNormal->GetPositionFromPage(1, volume, true);
+  DALI_TEST_EQUALS( position, 35.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( volume, 0u, TEST_LOCATION );
+
+  position = rulerNormal->GetPositionFromPage(2, volume, true);
+  DALI_TEST_EQUALS( position, 60.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( volume, 0u, TEST_LOCATION );
+
+  // Disable the ruler
+  rulerNormal->Disable();
+
+  position = rulerNormal->GetPositionFromPage(1, volume, true);
+  DALI_TEST_EQUALS( position, 10.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( volume, 1u, TEST_LOCATION );
+
+  position = rulerNormal->GetPositionFromPage(2, volume, true);
+  DALI_TEST_EQUALS( position, 10.0f, TEST_LOCATION );
+  DALI_TEST_EQUALS( volume, 2u, TEST_LOCATION );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewDefaultRulerGetTotalPagesP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewDefaultRulerGetTotalPagesP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+  DALI_TEST_CHECK( defaultRuler );
+  DALI_TEST_EQUALS( defaultRuler->GetTotalPages(), 1u, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewDefaultRulerGetPageFromPositionP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewDefaultRulerGetPageFromPositionP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+  DALI_TEST_CHECK( defaultRuler );
+  DALI_TEST_EQUALS( defaultRuler->GetPageFromPosition(100.0f, true), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( defaultRuler->GetPageFromPosition(-300.0f, false), 0u, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewDefaultRulerGetPositionFromPageP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewDefaultRulerGetPositionFromPageP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+  DALI_TEST_CHECK( defaultRuler );
+
+  unsigned int volume;
+  DALI_TEST_EQUALS( defaultRuler->GetPositionFromPage(0, volume, true), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( volume, 0u, TEST_LOCATION);
+
+  DALI_TEST_EQUALS( defaultRuler->GetPositionFromPage(3, volume, false), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( volume, 0u, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewDefaultRulerSnapP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewDefaultRulerSnapP");
+
+  RulerPtr defaultRuler = new DefaultRuler();
+  DALI_TEST_CHECK( defaultRuler );
+
+  DALI_TEST_EQUALS( defaultRuler->Snap(50.0f, 0.5f), 50.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( defaultRuler->Snap(-120.0f, 1.0f), -120.0f, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewFixedRulerGetTotalPagesP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewFixedRulerGetTotalPagesP");
+
+  RulerPtr fixedRuler = new FixedRuler( 100.0f );
+  fixedRuler->SetDomain( RulerDomain(0.0f, 400.0f, true) );
+
+  fixedRuler->Enable();
+  DALI_TEST_EQUALS( fixedRuler->GetTotalPages(), 4u, TEST_LOCATION);
+
+  fixedRuler->Disable();
+  DALI_TEST_EQUALS( fixedRuler->GetTotalPages(), 1u, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewFixedRulerGetPageFromPositionP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewFixedRulerGetPageFromPositionP");
+
+  RulerPtr fixedRuler = new FixedRuler( 100.0f );
+  fixedRuler->SetDomain( RulerDomain(0.0f, 400.0f, true) );
+
+  fixedRuler->Enable();
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, true), 3u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, false), 3u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, true), 1u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, false), 0u, TEST_LOCATION);
+
+  fixedRuler->Disable();
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, true), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, false), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, true), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, false), 0u, TEST_LOCATION);
+
+  // Set domain size to be smaller than the ruler space
+  fixedRuler->SetDomain( RulerDomain(0.0f, 50.0f, true) );
+
+  fixedRuler->Enable();
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, true), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, false), 3u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, true), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, false), 0u, TEST_LOCATION);
+
+  fixedRuler->Disable();
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, true), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(250.0f, false), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, true), 0u, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->GetPageFromPosition(-350.0f, false), 0u, TEST_LOCATION);
+
+  END_TEST;
+}
+
+int UtcDaliToolkitScrollViewFixedRulerSnapP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" UtcDaliToolkitScrollViewFixedRulerSnapP");
+
+  RulerPtr fixedRuler = new FixedRuler( 100.0f );
+  fixedRuler->SetDomain( RulerDomain(0.0f, 400.0f, true) );
+
+  DALI_TEST_EQUALS( fixedRuler->Snap(-30.0f, 0.0f), -100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-70.0f, 0.0f), -100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-120.0f, 0.0f), -200.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-480.0f, 0.0f), -500.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(20.0f, 0.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(50.0f, 0.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(80.0f, 0.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(100.0f, 0.0f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(120.0f, 0.0f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(250.0f, 0.0f), 200.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(620.0f, 0.0f), 600.0f, TEST_LOCATION);
+
+  DALI_TEST_EQUALS( fixedRuler->Snap(-30.0f, 0.5f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-70.0f, 0.5f), -100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-120.0f, 0.5f), -100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-480.0f, 0.5f), -500.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(20.0f, 0.5f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(50.0f, 0.5f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(80.0f, 0.5f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(100.0f, 0.5f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(120.0f, 0.5f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(250.0f, 0.5f), 300.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(620.0f, 0.5f), 600.0f, TEST_LOCATION);
+
+  DALI_TEST_EQUALS( fixedRuler->Snap(-30.0f, 1.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-70.0f, 1.0f), 0.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-120.0f, 1.0f), -100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(-480.0f, 1.0f), -400.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(20.0f, 1.0f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(50.0f, 1.0f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(80.0f, 1.0f), 100.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(100.0f, 1.0f), 200.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(120.0f, 1.0f), 200.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(250.0f, 1.0f), 300.0f, TEST_LOCATION);
+  DALI_TEST_EQUALS( fixedRuler->Snap(620.0f, 1.0f), 700.0f, TEST_LOCATION);
+
+  END_TEST;
+}
+
+
+
+
index edc71f3..78ff25f 100644 (file)
@@ -19,6 +19,8 @@
 #include <stdlib.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/shadow-view/shadow-view.h>
+
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index 29b1ef6..4025514 100644 (file)
@@ -20,6 +20,7 @@
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali-toolkit/devel-api/controls/slider/slider.h>
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index 97ffeed..98a4d0b 100644 (file)
@@ -19,7 +19,7 @@
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/integration-api/events/touch-event-integ.h>
-#include <dali-toolkit/public-api/styling/style-manager.h>
+#include <dali-toolkit/devel-api/styling/style-manager.h>
 
 
 using namespace Dali;
index 0e1385f..de9a7d5 100644 (file)
@@ -24,6 +24,7 @@
 
 #include <dali.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/super-blur-view/super-blur-view.h>
 
 using namespace Dali;
 using namespace Dali::Toolkit;
index 45dd92c..8e6bffa 100644 (file)
@@ -41,6 +41,7 @@ const char* const PROPERTY_NAME_COLUMNS = "columns";
 const char* const PROPERTY_NAME_CELL_PADDING = "cell-padding";
 const char* const PROPERTY_NAME_LAYOUT_ROWS = "layout-rows";
 const char* const PROPERTY_NAME_LAYOUT_COLUMNS = "layout-columns";
+const Vector2 CELL_SIZE( 10, 10 );
 
 static bool gObjectCreatedCallBackCalled;
 
@@ -77,9 +78,9 @@ static void SetupTableViewAndActors(TableView& tableView, Actor& actor1, Actor&
   actor2 = Actor::New();
   actor3 = Actor::New();
 
-  actor1.SetSize( Dali::Vector2( 10, 10 ) );
-  actor2.SetSize( Dali::Vector2( 10, 10 ) );
-  actor3.SetSize( Dali::Vector2( 10, 10 ) );
+  actor1.SetSize( CELL_SIZE );
+  actor2.SetSize( CELL_SIZE );
+  actor3.SetSize( CELL_SIZE );
 
   tableView.AddChild( actor1, TableView::CellPosition( 0, 0 ) );
   tableView.AddChild( actor2, TableView::CellPosition( 0, 1 ) );
@@ -88,6 +89,17 @@ static void SetupTableViewAndActors(TableView& tableView, Actor& actor1, Actor&
 
 } // namespace
 
+int UtcDaliTableViewCtorCopyP(void)
+{
+  TestApplication application;
+
+  TableView actor1 = TableView::New(10,10);
+  TableView actor2( actor1 );
+
+  DALI_TEST_EQUALS( actor1, actor2, TEST_LOCATION );
+  END_TEST;
+}
+
 int UtcDaliTableViewNew(void)
 {
   ToolkitTestApplication application;
@@ -143,6 +155,42 @@ int UtcDaliTableViewMetricsPadding(void)
 }
 
 // Test adjusting the metric values for the cell.
+int UtcDaliTableViewMetricsFit(void)
+{
+  ToolkitTestApplication application;
+
+  tet_infoline("UtcDaliTableViewMetricsFit");
+
+  TableView tableView;
+  Actor actor1;
+  Actor actor2;
+  Actor actor3;
+
+  SetupTableViewAndActors(tableView, actor1, actor2, actor3);
+  application.SendNotification();
+  application.Render();
+
+  // 1. check that with no fixed width/heights, actors are in default position.
+  DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION );
+  DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION );
+  DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION );
+
+  // 2. check that with a fixed width & height, actors to the right and below are offsetted.
+  tableView.SetFitHeight(0);
+  tableView.SetFitWidth(0);
+  DALI_TEST_EQUALS( tableView.IsFitHeight(0), true, TEST_LOCATION );
+  DALI_TEST_EQUALS( tableView.IsFitWidth(0), true, TEST_LOCATION );
+
+  application.SendNotification();
+  application.Render();
+
+  DALI_TEST_EQUALS( actor1.GetCurrentPosition(), Vector3(0.0f, 0.0f, 0.0f), TEST_LOCATION );
+  DALI_TEST_EQUALS( actor2.GetCurrentPosition(), Vector3(10.0f, 0.0f, 0.0f), TEST_LOCATION );
+  DALI_TEST_EQUALS( actor3.GetCurrentPosition(), Vector3(0.0f, 10.0f, 0.0f), TEST_LOCATION );
+  END_TEST;
+}
+
+// Test adjusting the metric values for the cell.
 int UtcDaliTableViewMetricsFixed(void)
 {
   ToolkitTestApplication application;
@@ -390,6 +438,10 @@ int UtcDaliTableViewCells(void)
   tableView.AddChild(actor1, TableView::CellPosition(110, 110, 5, 5));
   DALI_TEST_CHECK( tableView.GetRows() == 115 && tableView.GetColumns() == 115 );
 
+  // Set the alignment of the cell
+  tableView.SetCellAlignment( TableView::CellPosition(100, 100, 1, 1), HorizontalAlignment::CENTER, VerticalAlignment::CENTER );
+  tableView.SetCellAlignment( TableView::CellPosition(110, 110, 5, 5), HorizontalAlignment::LEFT, VerticalAlignment::TOP );
+
   DALI_TEST_CHECK( true );
   END_TEST;
 }
index bf3111d..d19b3a1 100644 (file)
 
 #include <iostream>
 #include <stdlib.h>
+#include <dali/integration-api/events/key-event-integ.h>
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/styling/style-manager.h>
 
 using namespace Dali;
 using namespace Toolkit;
@@ -53,6 +55,23 @@ const char* const PROPERTY_NAME_DECORATION_BOUNDING_BOX = "decoration-bounding-b
 const char* const PROPERTY_NAME_HORIZONTAL_ALIGNMENT    = "horizontal-alignment";
 const char* const PROPERTY_NAME_VERTICAL_ALIGNMENT      = "vertical-alignment";
 
+static bool gTextChangedCallBackCalled;
+static bool gMaxCharactersCallBackCalled;
+
+static void TestTextChangedCallback( TextField control )
+{
+  tet_infoline(" TestTextChangedCallback");
+
+  gTextChangedCallBackCalled = true;
+}
+
+static void TestMaxLengthReachedCallback( TextField control )
+{
+  tet_infoline(" TestMaxLengthReachedCallback");
+
+  gMaxCharactersCallBackCalled = true;
+}
+
 } // namespace
 
 int UtcDaliToolkitTextFieldConstructorP(void)
@@ -321,3 +340,125 @@ int utcDaliTextFieldAtlasRenderP(void)
   END_TEST;
 }
 
+// Positive test for the text-changed signal.
+int utcDaliTextFieldTextChangedP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" utcDaliTextFieldTextChangedP");
+  TextField field = TextField::New();
+  DALI_TEST_CHECK( field );
+
+  Stage::GetCurrent().Add(field);
+
+  field.TextChangedSignal().Connect(&TestTextChangedCallback);
+
+  gTextChangedCallBackCalled = false;
+  field.SetProperty( TextField::Property::TEXT, "ABC" );
+  DALI_TEST_CHECK( gTextChangedCallBackCalled );
+
+  application.SendNotification();
+
+  field.SetKeyInputFocus();
+
+  Dali::Integration::KeyEvent keyevent;
+  keyevent.keyName = "D";
+  keyevent.keyString = "D";
+  keyevent.keyCode = 0;
+  keyevent.keyModifier = 0;
+  keyevent.time = 0;
+  keyevent.state = Integration::KeyEvent::Down;
+
+  gTextChangedCallBackCalled = false;
+  application.ProcessEvent( keyevent );
+  DALI_TEST_CHECK( gTextChangedCallBackCalled );
+
+  END_TEST;
+}
+
+// Negative test for the text-changed signal.
+int utcDaliTextFieldTextChangedN(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" utcDaliTextFieldTextChangedN");
+  TextField field = TextField::New();
+  DALI_TEST_CHECK( field );
+
+  Stage::GetCurrent().Add(field);
+
+  field.TextChangedSignal().Connect(&TestTextChangedCallback);
+
+  gTextChangedCallBackCalled = false;
+  field.SetProperty( TextField::Property::PLACEHOLDER_TEXT, "ABC" ); // Setting placeholder, not TEXT
+  DALI_TEST_CHECK( ! gTextChangedCallBackCalled );
+
+  END_TEST;
+}
+
+// Positive test for Max Characters reached signal.
+int utcDaliTextFieldMaxCharactersReachedP(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" utcDaliTextFieldMaxCharactersReachedP");
+  TextField field = TextField::New();
+  DALI_TEST_CHECK( field );
+
+  Stage::GetCurrent().Add(field);
+
+  const int maxNumberOfCharacters = 1;
+  field.SetProperty( TextField::Property::MAX_LENGTH, maxNumberOfCharacters );
+
+  field.SetKeyInputFocus();
+
+  gMaxCharactersCallBackCalled = false;
+  field.MaxLengthReachedSignal().Connect(&TestMaxLengthReachedCallback);
+
+  Dali::Integration::KeyEvent keyevent;
+  keyevent.keyName = "a";
+  keyevent.keyString = "a";
+  keyevent.keyCode = 0;
+  keyevent.keyModifier = 0;
+  keyevent.time = 0;
+  keyevent.state = Integration::KeyEvent::Down;
+
+  application.ProcessEvent( keyevent );
+
+  application.ProcessEvent( keyevent );
+
+  DALI_TEST_CHECK( gMaxCharactersCallBackCalled );
+
+  END_TEST;
+}
+
+// Negative test for Max Characters reached signal.
+int utcDaliTextFieldMaxCharactersReachedN(void)
+{
+  ToolkitTestApplication application;
+  tet_infoline(" utcDaliTextFieldMaxCharactersReachedN");
+  TextField field = TextField::New();
+  DALI_TEST_CHECK( field );
+
+  Stage::GetCurrent().Add(field);
+
+  const int maxNumberOfCharacters = 3;
+  field.SetProperty( TextField::Property::MAX_LENGTH, maxNumberOfCharacters );
+
+  field.SetKeyInputFocus();
+
+  gMaxCharactersCallBackCalled = false;
+  field.MaxLengthReachedSignal().Connect(&TestMaxLengthReachedCallback);
+
+  Dali::Integration::KeyEvent keyevent;
+  keyevent.keyName = "a";
+  keyevent.keyString = "a";
+  keyevent.keyCode = 0;
+  keyevent.keyModifier = 0;
+  keyevent.time = 0;
+  keyevent.state = Integration::KeyEvent::Down;
+
+  application.ProcessEvent( keyevent );
+  application.ProcessEvent( keyevent );
+
+  DALI_TEST_CHECK( !gMaxCharactersCallBackCalled );
+
+  END_TEST;
+}
diff --git a/automated-tests/src/dali-toolkit/utc-Dali-TextSelectionPopup.cpp b/automated-tests/src/dali-toolkit/utc-Dali-TextSelectionPopup.cpp
new file mode 100644 (file)
index 0000000..b248e01
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+#include <iostream>
+#include <stdlib.h>
+#include <dali-toolkit-test-suite-utils.h>
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
+
+using namespace Dali;
+using namespace Toolkit;
+
+void dali_textselectionpopup_startup(void)
+{
+  test_return_value = TET_UNDEF;
+}
+
+void dali_textselectionpopup_cleanup(void)
+{
+  test_return_value = TET_PASS;
+}
+
+int UtcDaliToolkitTextSelectionPopupNewP(void)
+{
+  ToolkitTestApplication application;
+  TextSelectionPopup textSelectionPopup;
+
+  DALI_TEST_CHECK( !textSelectionPopup );
+
+  textSelectionPopup = TextSelectionPopup::New();
+
+  DALI_TEST_CHECK( textSelectionPopup );
+  END_TEST;
+}
+
+int UtcDaliToolkitTextSelectionPopupConstructorP(void)
+{
+  TextSelectionPopup textSelectionPopup;
+
+  DALI_TEST_CHECK( !textSelectionPopup );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitTextSelectionPopupCopyConstructorP(void)
+{
+  ToolkitTestApplication application;
+  TextSelectionPopup textSelectionPopup;
+
+  textSelectionPopup = TextSelectionPopup::New();
+  TextSelectionPopup copy( textSelectionPopup );
+
+  DALI_TEST_CHECK( copy == textSelectionPopup );
+
+  END_TEST;
+}
+
+
+int UtcDaliToolkitTextSelectionPopupDestructorP(void)
+{
+  ToolkitTestApplication application;
+  TextSelectionPopup* textSelectionPopup = new TextSelectionPopup;
+  delete textSelectionPopup;
+
+  DALI_TEST_CHECK( true );
+
+  END_TEST;
+}
+
+int UtcDaliToolkitTextSelectionPopupAssignmentOperatorP(void)
+{
+  ToolkitTestApplication application;
+  TextSelectionPopup textSelectionPopup;
+  textSelectionPopup = TextSelectionPopup::New();
+  TextSelectionPopup copy;
+  copy = textSelectionPopup;
+
+  DALI_TEST_CHECK( copy == textSelectionPopup );
+  END_TEST;
+}
+
+int UtcDaliToolkitTextSelectionPopupDownCastP(void)
+{
+  ToolkitTestApplication application;
+  TextSelectionPopup textSelectionPopup;
+  textSelectionPopup = TextSelectionPopup::New();
+
+  TextSelectionPopup cast = TextSelectionPopup::DownCast( textSelectionPopup );
+
+  DALI_TEST_CHECK( cast );
+
+  END_TEST;
+}
index d359334..36e8f8c 100644 (file)
@@ -20,6 +20,7 @@
 #include <dali-toolkit-test-suite-utils.h>
 #include <dali-toolkit/dali-toolkit.h>
 #include <dali/integration-api/events/touch-event-integ.h>
+#include <dali-toolkit/devel-api/controls/tool-bar/tool-bar.h>
 
 using namespace Dali;
 using namespace Toolkit;
@@ -80,32 +81,6 @@ int UtcDaliToolBarNew(void)
   END_TEST;
 }
 
-int UtcDaliToolBarSetBackground(void)
-{
-  ToolkitTestApplication application;
-  tet_infoline(" UtcDaliToolBarSetBackground");
-
-  try
-  {
-    ImageActor toolBarBackground = CreateSolidColorActor( Color::RED );
-
-    ToolBar toolbar = ToolBar::New();
-    toolbar.SetBackground( toolBarBackground );
-
-    Stage::GetCurrent().Add( toolbar );
-  }
-  catch( ... )
-  {
-    tet_result(TET_FAIL);
-  }
-
-  tet_result(TET_PASS);
-
-  application.SendNotification(); // VCC To be removed!!
-  application.Render();     // VCC To be removed!!
-  END_TEST;
-}
-
 int UtcDaliToolBarAddControl01(void)
 {
   ToolkitTestApplication application;
index f633e75..e116401 100644 (file)
@@ -55,7 +55,7 @@ cov_data:
        @for i in `find $(COVERAGE_DIR) -name "libdali_toolkit_la-*.gcda" -o -name "libdali_toolkit_la-*.gcno"` ;\
                do mv $$i `echo $$i | sed s/libdali_toolkit_la-//` ; echo $$i ; done
        @cd $(COVERAGE_DIR) ; lcov $(LCOV_OPTS) --base-directory . --directory . -c -o dali.info
-       @cd $(COVERAGE_DIR) ; lcov $(LCOV_OPTS) --remove dali.info "*boost*" "/usr/include/*" "*/dali-env/*" -o dali.info
+       @cd $(COVERAGE_DIR) ; lcov $(LCOV_OPTS) --remove dali.info "/usr/include/*" "*/dali-env/*" -o dali.info
        @test -z $(COVERAGE_OUTPUT_DIR) || mkdir -p $(COVERAGE_OUTPUT_DIR)
 
 coverage: cov_data
index 99016ae..aa58132 100644 (file)
@@ -20,6 +20,7 @@ toolkit_images_dir = ../../../dali-toolkit/images
 toolkit_sounds_dir = ../../../dali-toolkit/sounds
 toolkit_src_dir    = ../../../dali-toolkit/internal
 public_api_src_dir = ../../../dali-toolkit/public-api
+devel_api_src_dir  = ../../../dali-toolkit/devel-api
 
 if MOBILE_PROFILE
 toolkit_styles_dir = ../../../dali-toolkit/styles/mobile
@@ -32,6 +33,7 @@ include ../../../dali-toolkit/sounds/file.list
 include ../../../dali-toolkit/styles/file.list
 include ../../../dali-toolkit/internal/file.list
 include ../../../dali-toolkit/public-api/file.list
+include ../../../dali-toolkit/devel-api/file.list
 
 resources_dir = ../../../resources
 daliimagedir = ${dataReadOnlyDir}/toolkit/images/
@@ -45,7 +47,8 @@ lib_LTLIBRARIES = libdali-toolkit.la
 
 libdali_toolkit_la_SOURCES = \
                      $(toolkit_src_files) \
-                     $(public_api_src_files)
+                     $(public_api_src_files) \
+                     $(devel_api_src_files)
 
 dalistyledir = ${dataReadOnlyDir}/toolkit/styles/
 dalistyle_DATA = ${dali_toolkit_style_files}
@@ -78,78 +81,73 @@ libdali_toolkit_la_LIBADD = \
 topleveldir = $(devincludepath)/dali-toolkit
 toplevel_HEADERS = ../../../dali-toolkit/dali-toolkit.h
 
-publicapidir = $(topleveldir)/public-api
-
-publicapicontrolsdir = $(publicapidir)/controls
-publicapialignmentdir = $(publicapicontrolsdir)/alignment
-publicapibloomviewdir = $(publicapicontrolsdir)/bloom-view
-publicapibubbleemitterdir = $(publicapicontrolsdir)/bubble-effect
-publicapibuttonsdir = $(publicapicontrolsdir)/buttons
-publicapiclusterdir = $(publicapicontrolsdir)/cluster
-publicapidefaultcontrolsdir = $(publicapicontrolsdir)/default-controls
-publicapieffectsviewdir = $(publicapicontrolsdir)/effects-view
-publicapigaussianblurviewdir = $(publicapicontrolsdir)/gaussian-blur-view
-publicapiimageviewdir = $(publicapicontrolsdir)/image-view
-publicapiitemviewdir = $(publicapicontrolsdir)/scrollable/item-view
-publicapimagnifierdir = $(publicapicontrolsdir)/magnifier
-publicapinavigationframedir = $(publicapicontrolsdir)/navigation-frame
-publicapipageturnviewdir = $(publicapicontrolsdir)/page-turn-view
-publicapipopupdir = $(publicapicontrolsdir)/popup
-publicapiscrollbardir = $(publicapicontrolsdir)/scroll-bar
-publicapiscrollcomponentdir = $(publicapicontrolsdir)/scroll-component
-publicapiscrollabledir = $(publicapicontrolsdir)/scrollable
-publicapiscrollviewdir = $(publicapicontrolsdir)/scrollable/scroll-view
-publicapiselectorsdir = $(publicapicontrolsdir)/selectors
-publicapishadowviewdir = $(publicapicontrolsdir)/shadow-view
-publicapisliderdir = $(publicapicontrolsdir)/slider
-publicapisuperblurviewdir = $(publicapicontrolsdir)/super-blur-view
-publicapitableviewdir = $(publicapicontrolsdir)/table-view
-publicapitextcontrolsdir = $(publicapidir)/controls/text-controls
-publicapitoolbardir = $(publicapicontrolsdir)/tool-bar
-publicapiviewdir = $(publicapicontrolsdir)/view
-publicapibuilderdir = $(publicapidir)/builder
-publicapifocusmanagerdir = $(publicapidir)/focus-manager
-publicapishadereffectsdir = $(publicapidir)/shader-effects
-publicapibubbleeffectdir = $(publicapidir)/shader-effects/bubble-effect
-publicapistylingdir = $(publicapidir)/styling
-publicapitransitioneffectsdir = $(publicapidir)/transition-effects
-publicapiscriptingdir = $(publicapidir)/scripting
-publicapirenderingbackenddir = $(publicapidir)/text
-
-publicapi_HEADERS = $(public_api_header_files)
-publicapicontrols_HEADERS = $(public_api_controls_header_files)
-publicapialignment_HEADERS = $(public_api_alignment_header_files)
-publicapibloomview_HEADERS = $(public_api_bloom_view_header_files)
-publicapibubbleemitter_HEADERS = $(public_api_bubble_emitter_header_files)
-publicapibuttons_HEADERS = $(public_api_buttons_header_files)
-publicapicluster_HEADERS = $(public_api_cluster_header_files)
-publicapidefaultcontrols_HEADERS = $(public_api_default_controls_header_files)
-publicapieffectsview_HEADERS = $(public_api_effects_view_header_files)
+# devel api
+develapidir =                   $(topleveldir)/devel-api
+develapibuilderdir =            $(develapidir)/builder
+develapicontrolsdir =           $(develapidir)/controls
+develapibloomviewdir =          $(develapicontrolsdir)/bloom-view
+develapibubbleemitterdir =      $(develapicontrolsdir)/bubble-effect
+develapieffectsviewdir =        $(develapicontrolsdir)/effects-view
+develapimagnifierdir =          $(develapicontrolsdir)/magnifier
+develapipopupdir =              $(develapicontrolsdir)/popup
+develapipageturnviewdir =       $(develapicontrolsdir)/page-turn-view
+develapisliderdir =             $(develapicontrolsdir)/slider
+develapishadowviewdir =         $(develapicontrolsdir)/shadow-view
+develapisuperblurviewdir =      $(develapicontrolsdir)/super-blur-view
+develapifocusmanagerdir =       $(develapidir)/focus-manager
+develapiscriptingdir =          $(develapidir)/scripting
+develapishadereffectsdir =      $(develapidir)/shader-effects
+develapitransitioneffectsdir =  $(develapidir)/transition-effects
+develapistylingdir =            $(develapidir)/styling
+develapitoolbardir =            $(develapicontrolsdir)/tool-bar
+
+# devel headers
+develapibloomview_HEADERS =         $(devel_api_bloom_view_header_files)
+develapibubbleemitter_HEADERS =     $(devel_api_bubble_emitter_header_files)
+develapibuilder_HEADERS =           $(devel_api_builder_header_files)
+develapieffectsview_HEADERS =       $(devel_api_effects_view_header_files)
+develapifocusmanager_HEADERS =      $(devel_api_focus_manager_header_files)
+develapimagnifier_HEADERS =         $(devel_api_magnifier_header_files)
+develapipageturnview_HEADERS =      $(devel_api_page_turn_view_header_files)
+develapipopup_HEADERS =             $(devel_api_popup_header_files)
+develapiscripting_HEADERS =         $(devel_api_scripting_header_files)
+develapishadowview_HEADERS =        $(devel_api_shadow_view_header_files)
+develapishadereffects_HEADERS =     $(devel_api_shader_effects_header_files)
+develapislider_HEADERS =            $(devel_api_slider_header_files)
+develapistyling_HEADERS =           $(devel_api_styling_header_files)
+develapisuperblurview_HEADERS =     $(devel_api_super_blur_view_header_files)
+develapitoolbar_HEADERS =           $(devel_api_tool_bar_header_files)
+develapitransitioneffects_HEADERS = $(devel_api_transition_effects_header_files)
+
+# public api source
+publicapidir =                  $(topleveldir)/public-api
+publicapicontrolsdir =          $(publicapidir)/controls
+publicapialignmentdir =         $(publicapicontrolsdir)/alignment
+publicapibuttonsdir =           $(publicapicontrolsdir)/buttons
+publicapidefaultcontrolsdir =   $(publicapicontrolsdir)/default-controls
+publicapigaussianblurviewdir =  $(publicapicontrolsdir)/gaussian-blur-view
+publicapiscrollbardir =         $(publicapicontrolsdir)/scroll-bar
+publicapiscrollabledir =        $(publicapicontrolsdir)/scrollable
+publicapiscrollviewdir =        $(publicapicontrolsdir)/scrollable/scroll-view
+publicapiitemviewdir =          $(publicapicontrolsdir)/scrollable/item-view
+publicapitableviewdir =         $(publicapicontrolsdir)/table-view
+publicapitextcontrolsdir =      $(publicapicontrolsdir)/text-controls
+publicapifocusmanagerdir =      $(publicapidir)/focus-manager
+publicapirenderingbackenddir =  $(publicapidir)/text
+
+# public api headers
+publicapi_HEADERS =                 $(public_api_header_files)
+publicapicontrols_HEADERS =         $(public_api_controls_header_files)
+publicapialignment_HEADERS =        $(public_api_alignment_header_files)
+publicapibuttons_HEADERS =          $(public_api_buttons_header_files)
+publicapidefaultcontrols_HEADERS =  $(public_api_default_controls_header_files)
 publicapigaussianblurview_HEADERS = $(public_api_gaussian_blur_view_header_files)
-publicapiimageview_HEADERS = $(public_api_image_view_header_files)
-publicapiitemview_HEADERS = $(public_api_item_view_header_files)
-publicapimagnifier_HEADERS = $(public_api_magnifier_header_files)
-publicapinavigationframe_HEADERS = $(public_api_navigation_frame_header_files)
-publicapipageturnview_HEADERS = $(public_api_page_turn_view_header_files)
-publicapipopup_HEADERS = $(public_api_popup_header_files)
-publicapiscrollbar_HEADERS = $(public_api_scroll_bar_header_files)
-
-publicapiscrollcomponent_HEADERS = $(public_api_scroll_component_header_files)
-publicapiscrollable_HEADERS = $(public_api_scrollable_header_files)
-publicapiscrollview_HEADERS = $(public_api_scroll_view_header_files)
-publicapiselectors_HEADERS = $(public_api_selectors_header_files)
-publicapishadowview_HEADERS = $(public_api_shadow_view_header_files)
-publicapislider_HEADERS = $(public_api_slider_header_files)
-publicapisuperblurview_HEADERS = $(public_api_super_blur_view_header_files)
-publicapitableview_HEADERS = $(public_api_table_view_header_files)
-publicapitextcontrols_HEADERS = $(public_api_text_controls_header_files)
-publicapitoolbar_HEADERS = $(public_api_tool_bar_header_files)
-publicapiview_HEADERS = $(public_api_view_header_files)
-publicapibuilder_HEADERS = $(public_api_builder_header_files)
-publicapifocusmanager_HEADERS = $(public_api_focus_manager_header_files)
-publicapishadereffects_HEADERS = $(public_api_shader_effects_header_files)
-publicapistyling_HEADERS = $(public_api_styling_header_files)
-publicapitransitioneffects_HEADERS = $(public_api_transition_effects_header_files)
-publicapiscripting_HEADERS = $(public_api_scripting_header_files)
+publicapiitemview_HEADERS =         $(public_api_item_view_header_files)
+publicapiscrollbar_HEADERS =        $(public_api_scroll_bar_header_files)
+publicapiscrollable_HEADERS =       $(public_api_scrollable_header_files)
+publicapiscrollview_HEADERS =       $(public_api_scroll_view_header_files)
+publicapitableview_HEADERS =        $(public_api_table_view_header_files)
+publicapitextcontrols_HEADERS =     $(public_api_text_controls_header_files)
+publicapifocusmanager_HEADERS =     $(public_api_focus_manager_header_files)
 publicapirenderingbackend_HEADERS = $(public_api_rendering_backend_header_files)
 
index b6cf664..c5d6aa2 100644 (file)
@@ -25,7 +25,7 @@ DOXYFILE_ENCODING      = UTF-8
 # The PROJECT_NAME tag is a single word (or a sequence of words surrounded
 # by quotes) that should identify the project.
 
-PROJECT_NAME           = "Dali Internal Documentation"
+PROJECT_NAME           = "DALi Internal Documentation"
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number.
 # This could be handy for archiving the generated documentation or
index bbb08c2..438d79d 100644 (file)
@@ -32,7 +32,7 @@ DOXYFILE_ENCODING      = UTF-8
 # title of most generated pages and in a few other places.
 # The default value is: My Project.
 
-PROJECT_NAME           = Dali
+PROJECT_NAME           = DALi
 
 # The PROJECT_NUMBER tag can be used to enter a project or revision number. This
 # could be handy for archiving the generated documentation or if some version
@@ -1120,7 +1120,7 @@ HTML_STYLESHEET        =
 # see the documentation.
 # This tag requires that the tag GENERATE_HTML is set to YES.
 
-HTML_EXTRA_STYLESHEET  =
+HTML_EXTRA_STYLESHEET  = dali_doxygen.css
 
 # The HTML_EXTRA_FILES tag can be used to specify one or more extra images or
 # other source files which should be copied to the HTML output directory. Note
diff --git a/build/tizen/docs/dali_doxygen.css b/build/tizen/docs/dali_doxygen.css
new file mode 100644 (file)
index 0000000..223b8ef
--- /dev/null
@@ -0,0 +1,10 @@
+.image
+{
+   text-align: left;
+   margin-left: 20px;
+   margin-right: 20px;
+}
+
+div.image img {
+  max-width: 50em;
+}
index 557c8c2..9d0b25b 100644 (file)
@@ -39,6 +39,7 @@ libdali_script_plugin_v8_la_SOURCES = \
 libdali_script_plugin_v8_la_DEPENDENCIES =
 
 libdali_script_plugin_v8_la_CXXFLAGS = -DDALI_COMPILATION \
+                            -I../../../ \
                             $(V8_CFLAGS) \
                             $(DALI_TOOLKIT_CFLAGS) \
                             $(DALICORE_CFLAGS) \
index 8f1281b..9fdece3 100644 (file)
 #include <dali/dali.h>
 
 // Toolkit
-#include <dali-toolkit/public-api/builder/builder.h>
-#include <dali-toolkit/public-api/builder/tree-node.h>
 #include <dali-toolkit/public-api/controls/alignment/alignment.h>
-#include <dali-toolkit/public-api/controls/bloom-view/bloom-view.h>
-#include <dali-toolkit/public-api/controls/bubble-effect/bubble-emitter.h>
 #include <dali-toolkit/public-api/controls/buttons/button.h>
 #include <dali-toolkit/public-api/controls/buttons/check-box-button.h>
 #include <dali-toolkit/public-api/controls/buttons/push-button.h>
 #include <dali-toolkit/public-api/controls/buttons/radio-button.h>
 #include <dali-toolkit/public-api/controls/control-impl.h>
 #include <dali-toolkit/public-api/controls/control.h>
-#include <dali-toolkit/public-api/controls/default-controls/check-button-factory.h>
-#include <dali-toolkit/public-api/controls/default-controls/push-button-factory.h>
 #include <dali-toolkit/public-api/controls/default-controls/solid-color-actor.h>
-#include <dali-toolkit/public-api/controls/effects-view/effects-view.h>
 #include <dali-toolkit/public-api/controls/gaussian-blur-view/gaussian-blur-view.h>
-#include <dali-toolkit/public-api/controls/image-view/masked-image-view.h>
-#include <dali-toolkit/public-api/controls/magnifier/magnifier.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-factory.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-landscape-view.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-portrait-view.h>
-#include <dali-toolkit/public-api/controls/popup/popup.h>
 #include <dali-toolkit/public-api/controls/scroll-bar/scroll-bar.h>
 #include <dali-toolkit/public-api/controls/scrollable/item-view/default-item-layout.h>
 #include <dali-toolkit/public-api/controls/scrollable/item-view/item-factory.h>
 #include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view-page-path-effect.h>
 #include <dali-toolkit/public-api/controls/scrollable/scroll-view/scroll-view.h>
 #include <dali-toolkit/public-api/controls/scrollable/scrollable.h>
-#include <dali-toolkit/public-api/controls/shadow-view/shadow-view.h>
-#include <dali-toolkit/public-api/controls/slider/slider.h>
-#include <dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h>
 #include <dali-toolkit/public-api/controls/table-view/table-view.h>
 #include <dali-toolkit/public-api/controls/text-controls/text-field.h>
 #include <dali-toolkit/public-api/controls/text-controls/text-label.h>
-#include <dali-toolkit/public-api/controls/tool-bar/tool-bar.h>
-
-#include <dali-toolkit/public-api/focus-manager/focus-manager.h>
+#include <dali-toolkit/public-api/focus-manager/accessibility-focus-manager.h>
 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
-#include <dali-toolkit/public-api/focus-manager/keyinput-focus-manager.h>
-
-#include <dali-toolkit/public-api/scripting/script.h>
-#include <dali-toolkit/public-api/scripting/script-plugin.h>
-
 #include <dali-toolkit/public-api/text/rendering-backend.h>
-
-#include <dali-toolkit/public-api/shader-effects/alpha-discard-effect.h>
-#include <dali-toolkit/public-api/shader-effects/bendy-effect.h>
-#include <dali-toolkit/public-api/shader-effects/blind-effect.h>
-#include <dali-toolkit/public-api/shader-effects/bouncing-effect.h>
-#include <dali-toolkit/public-api/shader-effects/carousel-effect.h>
-#include <dali-toolkit/public-api/shader-effects/displacement-effect.h>
-#include <dali-toolkit/public-api/shader-effects/dissolve-local-effect.h>
-#include <dali-toolkit/public-api/shader-effects/distance-field-effect.h>
-#include <dali-toolkit/public-api/shader-effects/mirror-effect.h>
-#include <dali-toolkit/public-api/shader-effects/motion-blur-effect.h>
-#include <dali-toolkit/public-api/shader-effects/motion-stretch-effect.h>
-#include <dali-toolkit/public-api/shader-effects/overlay-effect.h>
-#include <dali-toolkit/public-api/shader-effects/shear-effect.h>
-#include <dali-toolkit/public-api/shader-effects/soft-button-effect.h>
-#include <dali-toolkit/public-api/shader-effects/spot-effect.h>
-#include <dali-toolkit/public-api/shader-effects/square-dissolve-effect.h>
-#include <dali-toolkit/public-api/shader-effects/dissolve-effect.h>
-#include <dali-toolkit/public-api/shader-effects/image-region-effect.h>
-#include <dali-toolkit/public-api/shader-effects/iris-effect.h>
-#include <dali-toolkit/public-api/shader-effects/mask-effect.h>
-#include <dali-toolkit/public-api/shader-effects/nine-patch-mask-effect.h>
-#include <dali-toolkit/public-api/shader-effects/quadratic-bezier.h>
-#include <dali-toolkit/public-api/shader-effects/ripple-effect.h>
-#include <dali-toolkit/public-api/shader-effects/ripple2d-effect.h>
-#include <dali-toolkit/public-api/shader-effects/swirl-effect.h>
-
-#include <dali-toolkit/public-api/styling/style-manager.h>
-
-#include <dali-toolkit/public-api/transition-effects/cube-transition-effect.h>
-#include <dali-toolkit/public-api/transition-effects/cube-transition-wave-effect.h>
-#include <dali-toolkit/public-api/transition-effects/cube-transition-cross-effect.h>
-#include <dali-toolkit/public-api/transition-effects/cube-transition-fold-effect.h>
-
 #include <dali-toolkit/public-api/dali-toolkit-version.h>
 #include <dali-toolkit/public-api/enums.h>
 
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/builder/json-parser.h>
+#include <dali-toolkit/devel-api/builder/json-parser.h>
 
 // EXTERNAL INCLUDES
 #include <memory.h>
similarity index 98%
rename from dali-toolkit/public-api/builder/json-parser.h
rename to dali-toolkit/devel-api/builder/json-parser.h
index 0b5c515..b871948 100644 (file)
@@ -25,7 +25,7 @@
 #include <dali/public-api/object/base-handle.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/builder/tree-node.h>
+#include <dali-toolkit/devel-api/builder/tree-node.h>
 
 namespace Dali
 {
similarity index 98%
rename from dali-toolkit/public-api/builder/tree-node.cpp
rename to dali-toolkit/devel-api/builder/tree-node.cpp
index cf6dacb..3ecb1d5 100644 (file)
@@ -19,7 +19,7 @@
 #include <cstring>
 
 // INTERNAL INCLUDES
-#include "dali-toolkit/public-api/builder/tree-node.h"
+#include "dali-toolkit/devel-api/builder/tree-node.h"
 #include "dali-toolkit/internal/builder/tree-node-manipulator.h"
 
 namespace Dali
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/bloom-view/bloom-view.h>
+#include <dali-toolkit/devel-api/controls/bloom-view/bloom-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/bloom-view/bloom-view-impl.h>
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/bubble-effect/bubble-emitter.h>
+#include <dali-toolkit/devel-api/controls/bubble-effect/bubble-emitter.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/bubble-effect/bubble-emitter-impl.h>
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/effects-view/effects-view.h>
+#include <dali-toolkit/devel-api/controls/effects-view/effects-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/effects-view/effects-view-impl.h>
@@ -16,7 +16,7 @@
  */
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/magnifier/magnifier.h>
+#include <dali-toolkit/devel-api/controls/magnifier/magnifier.h>
 #include <dali-toolkit/internal/controls/magnifier/magnifier-impl.h>
 
 using namespace Dali;
@@ -76,6 +76,11 @@ Magnifier::~Magnifier()
 {
 }
 
+Magnifier Magnifier::DownCast( BaseHandle handle )
+{
+  return Control::DownCast<Magnifier, Internal::Magnifier>(handle);
+}
+
 void Magnifier::SetSourceActor(Actor actor)
 {
   GetImpl(*this).SetSourceActor( actor );
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/page-turn-view/page-factory.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
 
 namespace Dali
 {
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-landscape-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/page-turn-view/page-turn-landscape-view-impl.h>
@@ -19,7 +19,7 @@
  */
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
 
 namespace Dali
 {
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-portrait-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/page-turn-view/page-turn-portrait-view-impl.h>
@@ -19,7 +19,7 @@
  */
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
 
 namespace Dali
 {
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.h>
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/popup/popup.h>
+#include <dali-toolkit/devel-api/controls/popup/popup.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/popup/popup-impl.h>
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/shadow-view/shadow-view.h>
+#include <dali-toolkit/devel-api/controls/shadow-view/shadow-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/shadow-view/shadow-view-impl.h>
@@ -15,7 +15,7 @@
  *
  */
 
-#include <dali-toolkit/public-api/controls/slider/slider.h>
+#include <dali-toolkit/devel-api/controls/slider/slider.h>
 #include <dali-toolkit/internal/controls/slider/slider-impl.h>
 
 using namespace Dali;
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h>
+#include <dali-toolkit/devel-api/controls/super-blur-view/super-blur-view.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/super-blur-view/super-blur-view-impl.h>
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include <dali-toolkit/public-api/controls/text-controls/text-selection-popup.h>
+#include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/controls/text-controls/text-selection-popup-impl.h>
@@ -66,11 +66,6 @@ ToolBar ToolBar::DownCast( BaseHandle handle )
   return Control::DownCast<ToolBar, Internal::ToolBar>(handle);
 }
 
-void ToolBar::SetBackground( Actor background )
-{
-  GetImpl( *this ).SetBackground( background );
-}
-
 void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment::Type alignment, const Toolkit::Alignment::Padding& padding )
 {
   GetImpl( *this ).AddControl( control, relativeSize, alignment, padding );
@@ -88,12 +88,6 @@ public:
   static ToolBar DownCast( BaseHandle handle );
 
   /**
-   * Sets a background image.
-   * @param background Actor with the tool bar background.
-   */
-  void SetBackground( Actor background );
-
-  /**
    * Adds an additional control to the tool bar.
    * @pre The tool bar needs to be initialized.
    * @pre The alignment needs to be horizontal.
diff --git a/dali-toolkit/devel-api/file.list b/dali-toolkit/devel-api/file.list
new file mode 100755 (executable)
index 0000000..f10a341
--- /dev/null
@@ -0,0 +1,114 @@
+# Add local source files here
+
+devel_api_src_files = \
+  $(devel_api_src_dir)/builder/builder.cpp \
+  $(devel_api_src_dir)/builder/json-parser.cpp \
+  $(devel_api_src_dir)/builder/tree-node.cpp \
+  $(devel_api_src_dir)/controls/bloom-view/bloom-view.cpp \
+  $(devel_api_src_dir)/controls/bubble-effect/bubble-emitter.cpp \
+  $(devel_api_src_dir)/controls/effects-view/effects-view.cpp \
+  $(devel_api_src_dir)/controls/magnifier/magnifier.cpp \
+  $(devel_api_src_dir)/controls/page-turn-view/page-factory.cpp \
+  $(devel_api_src_dir)/controls/page-turn-view/page-turn-landscape-view.cpp \
+  $(devel_api_src_dir)/controls/page-turn-view/page-turn-portrait-view.cpp \
+  $(devel_api_src_dir)/controls/page-turn-view/page-turn-view.cpp \
+  $(devel_api_src_dir)/controls/popup/popup.cpp \
+  $(devel_api_src_dir)/controls/shadow-view/shadow-view.cpp \
+  $(devel_api_src_dir)/controls/slider/slider.cpp \
+  $(devel_api_src_dir)/controls/super-blur-view/super-blur-view.cpp \
+  $(devel_api_src_dir)/controls/text-controls/text-selection-popup.cpp \
+  $(devel_api_src_dir)/controls/tool-bar/tool-bar.cpp \
+  $(devel_api_src_dir)/focus-manager/keyinput-focus-manager.cpp \
+  $(devel_api_src_dir)/styling/style-manager.cpp \
+  $(devel_api_src_dir)/scripting/script.cpp \
+  $(devel_api_src_dir)/transition-effects/cube-transition-cross-effect.cpp \
+  $(devel_api_src_dir)/transition-effects/cube-transition-effect.cpp \
+  $(devel_api_src_dir)/transition-effects/cube-transition-fold-effect.cpp \
+  $(devel_api_src_dir)/transition-effects/cube-transition-wave-effect.cpp
+
+# Add devel header files here
+
+devel_api_bloom_view_header_files = \
+  $(devel_api_src_dir)/controls/bloom-view/bloom-view.h
+
+devel_api_bubble_emitter_header_files = \
+  $(devel_api_src_dir)/controls/bubble-effect/bubble-emitter.h
+
+devel_api_builder_header_files = \
+  $(devel_api_src_dir)/builder/builder.h \
+  $(devel_api_src_dir)/builder/json-parser.h \
+  $(devel_api_src_dir)/builder/tree-node.h
+
+devel_api_effects_view_header_files = \
+  $(devel_api_src_dir)/controls/effects-view/effects-view.h
+
+devel_api_magnifier_header_files = \
+  $(devel_api_src_dir)/controls/magnifier/magnifier.h
+
+devel_api_page_turn_view_header_files = \
+  $(devel_api_src_dir)/controls/page-turn-view/page-factory.h \
+  $(devel_api_src_dir)/controls/page-turn-view/page-turn-landscape-view.h \
+  $(devel_api_src_dir)/controls/page-turn-view/page-turn-portrait-view.h \
+  $(devel_api_src_dir)/controls/page-turn-view/page-turn-view.h
+
+devel_api_popup_header_files = \
+  $(devel_api_src_dir)/controls/popup/popup.h
+
+devel_api_shadow_view_header_files = \
+  $(devel_api_src_dir)/controls/shadow-view/shadow-view.h
+
+devel_api_slider_header_files = \
+  $(devel_api_src_dir)/controls/slider/slider.h
+
+devel_api_focus_manager_header_files = \
+  $(devel_api_src_dir)/focus-manager/keyinput-focus-manager.h
+
+devel_api_styling_header_files = \
+  $(devel_api_src_dir)/styling/style-manager.h
+
+devel_api_scripting_header_files = \
+  $(devel_api_src_dir)/scripting/script.h \
+  $(devel_api_src_dir)/scripting/script-plugin.h
+
+devel_api_shader_effects_header_files = \
+  $(devel_api_src_dir)/shader-effects/alpha-discard-effect.h \
+  $(devel_api_src_dir)/shader-effects/bendy-effect.h \
+  $(devel_api_src_dir)/shader-effects/blind-effect.h \
+  $(devel_api_src_dir)/shader-effects/bouncing-effect.h \
+  $(devel_api_src_dir)/shader-effects/carousel-effect.h \
+  $(devel_api_src_dir)/shader-effects/displacement-effect.h \
+  $(devel_api_src_dir)/shader-effects/dissolve-effect.h \
+  $(devel_api_src_dir)/shader-effects/dissolve-local-effect.h \
+  $(devel_api_src_dir)/shader-effects/distance-field-effect.h \
+  $(devel_api_src_dir)/shader-effects/image-region-effect.h \
+  $(devel_api_src_dir)/shader-effects/iris-effect.h \
+  $(devel_api_src_dir)/shader-effects/mask-effect.h \
+  $(devel_api_src_dir)/shader-effects/mirror-effect.h \
+  $(devel_api_src_dir)/shader-effects/motion-blur-effect.h \
+  $(devel_api_src_dir)/shader-effects/motion-stretch-effect.h \
+  $(devel_api_src_dir)/shader-effects/nine-patch-mask-effect.h \
+  $(devel_api_src_dir)/shader-effects/overlay-effect.h \
+  $(devel_api_src_dir)/shader-effects/quadratic-bezier.h \
+  $(devel_api_src_dir)/shader-effects/ripple-effect.h \
+  $(devel_api_src_dir)/shader-effects/ripple2d-effect.h \
+  $(devel_api_src_dir)/shader-effects/shear-effect.h \
+  $(devel_api_src_dir)/shader-effects/soft-button-effect.h \
+  $(devel_api_src_dir)/shader-effects/spot-effect.h \
+  $(devel_api_src_dir)/shader-effects/square-dissolve-effect.h \
+  $(devel_api_src_dir)/shader-effects/swirl-effect.h
+
+devel_api_super_blur_view_header_files = \
+  $(devel_api_src_dir)/controls/super-blur-view/super-blur-view.h
+
+devel_api_text_selection_popup_header_files = \
+  $(devel_api_src_dir)/controls/text-controls/text-selection-popup.h
+
+devel_api_tool_bar_header_files = \
+  $(devel_api_src_dir)/controls/tool-bar/tool-bar.h
+
+devel_api_transition_effects_header_files = \
+  $(devel_api_src_dir)/transition-effects/cube-transition-effect.h \
+  $(devel_api_src_dir)/transition-effects/cube-transition-cross-effect.h \
+  $(devel_api_src_dir)/transition-effects/cube-transition-fold-effect.h \
+  $(devel_api_src_dir)/transition-effects/cube-transition-wave-effect.h
+
@@ -16,7 +16,7 @@
 
 // CLASS HEADER
 
-#include <dali-toolkit/public-api/styling/style-manager.h>
+#include <dali-toolkit/devel-api/styling/style-manager.h>
 
 // EXTERNAL INCLUDES
 
@@ -18,7 +18,7 @@
  */
 
 // EXTERNAL INCLUDES
-#include <dali/public-api/adaptor-framework/orientation.h>
+#include <dali/devel-api/adaptor-framework/orientation.h>
 #include <dali/public-api/adaptor-framework/style-change.h>
 
 // INTERNAL INCLUDES
@@ -51,7 +51,7 @@ class StyleManager;
  *   void OnInit(Application& app)
  *   {
  *      Toolkit::StyleManager::Get().RequestThemeChange( CUSTOM_THEME );
- *      Toolkit::StyleManager::Get().SetOrientation( app.GetWindow().GetOrientation() );
+ *      Toolkit::StyleManager::Get().SetOrientation( ... );
  *      ...
  *   }
  * @endcode
@@ -64,7 +64,7 @@ class DALI_IMPORT_API StyleManager : public BaseHandle
 public:
 
   // Signals
-  typedef Signal< void ( StyleManager, StyleChange ) >  StyleChangeSignalType;
+  typedef Signal< void ( StyleManager, StyleChange::Type ) >  StyleChangeSignalType;
 
   /**
    * @brief Create a StyleManager handle; this can be initialised with StyleManager::Get()
@@ -18,7 +18,7 @@
  *
  */
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/transition-effects/cube-transition-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-effect.h>
 
 namespace Dali
 {
@@ -18,7 +18,7 @@
  *
  */
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/transition-effects/cube-transition-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-effect.h>
 
 namespace Dali
 {
@@ -18,7 +18,7 @@
  *
  */
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/transition-effects/cube-transition-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-effect.h>
 
 namespace Dali
 {
index 21c49a1..03627ba 100644 (file)
@@ -27,7 +27,7 @@
 #include <dali/public-api/math/matrix3.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/builder/tree-node.h>
+#include <dali-toolkit/devel-api/builder/tree-node.h>
 #include <dali-toolkit/internal/builder/optional-value.h>
 
 typedef Dali::Toolkit::TreeNode TreeNode;
index aaf3f22..5d5e4b9 100644 (file)
@@ -20,7 +20,6 @@
 
 // EXTERNAL INCLUDES
 #include <sys/stat.h>
-#include <boost/function.hpp>
 #include <sstream>
 #include <dali/public-api/render-tasks/render-task-list.h>
 #include <dali/public-api/object/type-info.h>
 #include <dali/public-api/actors/image-actor.h>
 #include <dali/public-api/actors/camera-actor.h>
 #include <dali/devel-api/scripting/scripting.h>
+#include <dali/public-api/signals/functor-delegate.h>
 #include <dali/integration-api/debug.h>
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control.h>
-#include <dali-toolkit/public-api/builder/json-parser.h>
+#include <dali-toolkit/devel-api/builder/json-parser.h>
 
 #include <dali-toolkit/internal/builder/builder-get-is.inl.h>
 #include <dali-toolkit/internal/builder/builder-filesystem.h>
@@ -56,8 +56,8 @@ extern bool SetPropertyFromNode( const TreeNode& node, Property::Value& value );
 extern bool SetPropertyFromNode( const TreeNode& node, Property::Value& value, const Replacement& replacements );
 extern bool SetPropertyFromNode( const TreeNode& node, Property::Type type, Property::Value& value );
 extern bool SetPropertyFromNode( const TreeNode& node, Property::Type type, Property::Value& value, const Replacement& replacements );
-extern Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction, Dali::Toolkit::Internal::Builder* const builder);
-extern Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction, Dali::Toolkit::Internal::Builder* const builder);
+extern Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, Dali::Toolkit::Internal::Builder* const builder);
+extern Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, Dali::Toolkit::Internal::Builder* const builder);
 extern Actor SetupActor( const TreeNode& node, Actor& actor, const Replacement& constant );
 
 #if defined(DEBUG_ENABLED)
@@ -217,22 +217,6 @@ void CollectAllStyles( const TreeNode& stylesCollection, const TreeNode& style,
   }
 }
 
-struct QuitAction
-{
-public:
-  QuitAction( Builder& builder )
-  : mBuilder( builder )
-  {
-  }
-
-  void operator()(void)
-  {
-    mBuilder.EmitQuitSignal();
-  }
-
-private:
-  Builder& mBuilder;
-};
 
 } // namespace anon
 
@@ -361,9 +345,8 @@ void Builder::ApplyProperties( const TreeNode& root, const TreeNode& node,
       SetupActor( node, actor, constant );
 
       // add signals
-      QuitAction quitAction( *this );
-      SetupSignalAction( mSlotDelegate.GetConnectionTracker(), root, node, actor, quitAction, this );
-      SetupPropertyNotification( mSlotDelegate.GetConnectionTracker(), root, node, actor, quitAction, this );
+      SetupSignalAction( mSlotDelegate.GetConnectionTracker(), root, node, actor, this );
+      SetupPropertyNotification( mSlotDelegate.GetConnectionTracker(), root, node, actor, this );
    }
   }
   else
index af1c85c..f046504 100644 (file)
@@ -30,8 +30,8 @@
 #include <dali/integration-api/debug.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/builder/json-parser.h>
-#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali-toolkit/devel-api/builder/json-parser.h>
+#include <dali-toolkit/devel-api/builder/builder.h>
 #include <dali-toolkit/internal/builder/builder-declarations.h>
 
 // Warning messages usually displayed
index 804deb3..b3372f2 100644 (file)
  */
 
 // EXTERNAL INCLUDES
-#include <boost/function.hpp>
 #include <dali/public-api/actors/layer.h>
 #include <dali/public-api/common/vector-wrapper.h>
 #include <dali/public-api/object/type-info.h>
 #include <dali/public-api/object/property-notification.h>
+
 #include <dali/integration-api/debug.h>
 #include <limits>
 
@@ -54,7 +54,7 @@ struct ChildActorAction
   std::string actorName;
   std::string actionName;
   std::string childName;
-  PropertyValueContainer parameters;
+  Property::Map parameters;
 
   void operator()(void)
   {
@@ -115,7 +115,7 @@ struct GenericAction
 {
   std::string actorName;
   std::string actionName;
-  PropertyValueContainer parameters;
+  Property::Map parameters;
 
   void operator()(void)
   {
@@ -128,6 +128,16 @@ struct GenericAction
   };
 };
 
+struct QuitAction
+{
+  Dali::IntrusivePtr<Dali::Toolkit::Internal::Builder> builder;
+
+  void operator()(void)
+  {
+    builder->EmitQuitSignal();
+  }
+};
+
 // Delay an animation play; ie wait as its not on stage yet
 struct DelayedAnimationPlay
 {
@@ -376,35 +386,78 @@ Property::Value GetPropertyValue(const TreeNode &child)
  * Gets Parmeter list from child
  * params is be cleared before insertion
  */
-void GetParameters(const TreeNode& child, PropertyValueContainer& params)
+void GetParameters(const TreeNode& child, Property::Map& params)
 {
   if( OptionalChild c = IsChild(child, "parameters") )
   {
     const TreeNode& node = *c;
 
-    if(0 == node.Size())
-    {
-      GetPropertyValue(node);
-    }
-    else
-    {
-      params.clear();
-      params.reserve(node.Size());
+    params.Clear();
 
-      for(TreeNode::ConstIterator iter(node.CBegin()); iter != node.CEnd(); ++iter)
-      {
-        params.push_back( GetPropertyValue( (*iter).second ) );
-      }
+    for(TreeNode::ConstIterator iter(node.CBegin()); iter != node.CEnd(); ++iter)
+    {
+      params[ (*iter).first ] = GetPropertyValue( (*iter).second );
     }
   }
 }
 
-void DoNothing(void) {};
+// Shim for the property notifcation signal
+template <typename T>
+struct PropertyNotifcationSignalShim
+{
+  T mFunctor;
+
+  PropertyNotifcationSignalShim(T& functor) : mFunctor(functor) {}
+
+  void operator()(PropertyNotification& /* source */)
+  {
+    mFunctor();
+  }
+};
+
+// Specializations for the different signal connection calls between actor & PropertyNotification
+template <typename T>
+struct SignalConnector {};
+
+// Actor specialization
+template <>
+struct SignalConnector<Actor> {
+  Actor& mActor;
+  ConnectionTracker* mTracker;
+  const std::string& mName;
+
+  SignalConnector<Actor>(ConnectionTracker* tracker, Actor& actor, const std::string& name)
+  : mActor(actor), mTracker(tracker), mName(name) {}
+
+  template <typename T>
+  void Connect(T& functor)
+  {
+    mActor.ConnectSignal( mTracker, mName, functor);
+  }
+};
+
+// PropertyNotification specialization
+template <>
+struct SignalConnector<PropertyNotification>
+{
+  PropertyNotification& mNotification;
+  ConnectionTracker* mTracker;
+
+  SignalConnector<PropertyNotification>(ConnectionTracker* tracker, PropertyNotification &notification)
+  : mNotification(notification), mTracker(tracker) {}
+
+  template <typename T>
+  void Connect(T& functor)
+  {
+    mNotification.NotifySignal().Connect( mTracker, PropertyNotifcationSignalShim<T>(functor) );
+  }
+};
 
 /**
- * Get an action as boost function callback
+ * Set an action functor on a signal
  */
-boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction, Dali::Toolkit::Internal::Builder* const builder)
+template <typename T>
+void SetActionOnSignal(const TreeNode &root, const TreeNode &child, Actor actor, Dali::Toolkit::Internal::Builder* const builder, SignalConnector<T>& connector)
 {
   OptionalString childActorName(IsString( IsChild(&child, "child-actor")) );
   OptionalString actorName(IsString( IsChild(&child, "actor")) );
@@ -414,8 +467,6 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
   OptionalString actionName = IsString( IsChild(&child, "action") );
   DALI_ASSERT_ALWAYS(actionName && "Signal must have an action");
 
-  boost::function<void(void)> callback = DoNothing;
-
   if(childActorName)
   {
     ChildActorAction action;
@@ -423,7 +474,7 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
     action.childName       = *childActorName;
     action.actionName      = *actionName;
     GetParameters(child, action.parameters);
-    callback = action;
+    connector.Connect( action );
   }
   else if(actorName)
   {
@@ -437,7 +488,7 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
       {
         DALI_SCRIPT_WARNING("Cannot set property for set property action\n");
       }
-      callback = action;
+      connector.Connect( action );
     }
     else
     {
@@ -445,12 +496,14 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
       action.actorName       = *actorName;
       action.actionName      = *actionName;
       GetParameters(child, action.parameters);
-      callback = action;
+      connector.Connect( action );
     }
   }
   else if("quit" == *actionName)
   {
-    callback = quitAction;
+    QuitAction action;
+    action.builder = builder;
+    connector.Connect( action );
   }
   else if("play" == *actionName)
   {
@@ -464,7 +517,7 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
         action.animNode = animNode;
         action.builder = builder;
         // @todo; put constants into the map
-        callback = action;
+        connector.Connect( action );
       }
       else
       {
@@ -543,12 +596,9 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
           action.ranges.push_back(*range);
           action.wrapRanges.push_back(wrap);
         }
-
-        callback = action;
+        connector.Connect(action);
       }
     }
-
-
   }
   else if("removeConstraints" == *actionName )
   {
@@ -582,7 +632,7 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
           }
         }
       }
-      callback = action;
+      connector.Connect(action);
     }
   }
   else
@@ -592,10 +642,8 @@ boost::function<void (void)> GetAction(const TreeNode &root, const TreeNode &chi
     action.actorName       = actor.GetName();
     action.actionName      = *actionName;
     GetParameters(child, action.parameters);
-    callback = action;
+    connector.Connect( action );
   }
-
-  return callback;
 }
 
 
@@ -654,7 +702,7 @@ Actor SetupPropertyNotification(const TreeNode &child, Actor actor, Dali::Toolki
 /**
  * Setup signals and actions on an actor
  */
-Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction, Dali::Toolkit::Internal::Builder* const builder )
+Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, Dali::Toolkit::Internal::Builder* const builder )
 {
   DALI_ASSERT_ALWAYS(actor);
 
@@ -671,9 +719,8 @@ Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const
       OptionalString name( IsString( IsChild( key_child.second, "name")) );
       DALI_ASSERT_ALWAYS(name && "Signal must have a name");
 
-      boost::function<void (void)> callback = GetAction(root, key_child.second, actor, quitAction, builder );
-
-      actor.ConnectSignal(tracker, *name, callback);
+      SignalConnector<Actor> connector(tracker, actor, *name);
+      SetActionOnSignal(root, key_child.second, actor, builder, connector);
     }
   }
 
@@ -683,7 +730,7 @@ Actor SetupSignalAction(ConnectionTracker* tracker, const TreeNode &root, const
 /**
  * Setup Property notifications for an actor
  */
-Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, boost::function<void (void)> quitAction, Dali::Toolkit::Internal::Builder* const builder )
+Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root, const TreeNode &child, Actor actor, Dali::Toolkit::Internal::Builder* const builder )
 {
   DALI_ASSERT_ALWAYS(actor);
 
@@ -695,10 +742,6 @@ Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root
     {
       const TreeNode::KeyNodePair& key_child = *iter;
 
-      // Actor actions reference by pointer because of circular reference actor->signal
-      // So this callback should only go onto the actor maintained list.
-      boost::function<void (void)> callback = GetAction(root, key_child.second, actor, quitAction, builder );
-
       OptionalString prop(IsString( IsChild(key_child.second, "property")) );
       DALI_ASSERT_ALWAYS(prop && "Notification signal must specify a property");
 
@@ -712,33 +755,38 @@ Actor SetupPropertyNotification(ConnectionTracker* tracker, const TreeNode &root
       {
         PropertyNotification notification = actor.AddPropertyNotification( actor.GetPropertyIndex(*prop),
                                                                            LessThanCondition(1.f) );
-        notification.NotifySignal().Connect( tracker, FunctorDelegate::New(callback) );
+        SignalConnector<PropertyNotification> connector(tracker, notification);
+        SetActionOnSignal(root, key_child.second, actor, builder, connector);
       }
       else if("LessThan" == *cond)
       {
         PropertyNotification notification = actor.AddPropertyNotification( actor.GetPropertyIndex(*prop),
                                                                            LessThanCondition(GetConditionArg0(key_child.second)) );
-        notification.NotifySignal().Connect( tracker, FunctorDelegate::New(callback) );
+        SignalConnector<PropertyNotification> connector(tracker, notification);
+        SetActionOnSignal(root, key_child.second, actor, builder, connector);
       }
       else if("GreaterThan" == *cond)
       {
         PropertyNotification notification = actor.AddPropertyNotification( actor.GetPropertyIndex(*prop),
                                                                            GreaterThanCondition(GetConditionArg0(key_child.second)) );
-        notification.NotifySignal().Connect( tracker, FunctorDelegate::New(callback) );
+        SignalConnector<PropertyNotification> connector(tracker, notification);
+        SetActionOnSignal(root, key_child.second, actor, builder, connector);
       }
       else if("Inside" == *cond)
       {
         PropertyNotification notification = actor.AddPropertyNotification( actor.GetPropertyIndex(*prop),
                                                                            InsideCondition(GetConditionArg0(key_child.second),
                                                                            GetConditionArg1(key_child.second)) );
-        notification.NotifySignal().Connect( tracker, FunctorDelegate::New(callback) );
+        SignalConnector<PropertyNotification> connector(tracker, notification);
+        SetActionOnSignal(root, key_child.second, actor, builder, connector);
       }
       else if("Outside" == *cond)
       {
         PropertyNotification notification = actor.AddPropertyNotification( actor.GetPropertyIndex(*prop),
                                                                            OutsideCondition(GetConditionArg0(key_child.second),
                                                                            GetConditionArg1(key_child.second)) );
-        notification.NotifySignal().Connect( tracker, FunctorDelegate::New(callback) );
+        SignalConnector<PropertyNotification> connector(tracker, notification);
+        SetActionOnSignal(root, key_child.second, actor, builder, connector);
       }
       else
       {
index 30945d7..9936974 100644 (file)
@@ -25,8 +25,8 @@
 #include <dali/public-api/object/base-object.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/builder/json-parser.h>
-#include <dali-toolkit/public-api/builder/tree-node.h>
+#include <dali-toolkit/devel-api/builder/json-parser.h>
+#include <dali-toolkit/devel-api/builder/tree-node.h>
 
 #include <dali-toolkit/internal/builder/builder-get-is.inl.h>
 
index 17ee739..76b1ecd 100644 (file)
@@ -22,7 +22,7 @@
 #include <dali/public-api/common/dali-common.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/builder/tree-node.h>
+#include <dali-toolkit/devel-api/builder/tree-node.h>
 
 #include <dali-toolkit/internal/builder/tree-node-manipulator.h>
 
index 7edd9d0..358c21c 100644 (file)
@@ -22,7 +22,7 @@
 #include <dali/public-api/object/property-value.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali-toolkit/devel-api/builder/builder.h>
 #include <dali-toolkit/internal/builder/builder-get-is.inl.h>
 
 namespace Dali
index 06d54cc..3e10edd 100644 (file)
@@ -22,7 +22,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/builder/tree-node-manipulator.h>
 
-#include <dali-toolkit/public-api/builder/tree-node.h>
+#include <dali-toolkit/devel-api/builder/tree-node.h>
 
 namespace Dali
 {
index cd5a7ad..838c2cb 100644 (file)
@@ -27,7 +27,7 @@
 #include <dali/public-api/common/vector-wrapper.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/builder/tree-node.h>
+#include <dali-toolkit/devel-api/builder/tree-node.h>
 
 namespace Dali
 {
index 22a131d..eab906c 100644 (file)
@@ -30,7 +30,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/gaussian-blur-view/gaussian-blur-view.h>
-#include <dali-toolkit/public-api/controls/bloom-view/bloom-view.h>
+#include <dali-toolkit/devel-api/controls/bloom-view/bloom-view.h>
 #include "../gaussian-blur-view/gaussian-blur-view-impl.h"
 
 namespace Dali
@@ -289,7 +289,7 @@ void BloomView::OnInitialize()
   SetupProperties();
 }
 
-void BloomView::OnControlSizeSet(const Vector3& targetSize)
+void BloomView::OnSizeSet(const Vector3& targetSize)
 {
   mTargetSize = Vector2(targetSize);
   mChildrenRoot.SetSize(targetSize);
@@ -429,20 +429,6 @@ void BloomView::RemoveRenderTasks()
   taskList.RemoveTask(mCompositeTask);
 }
 
-void BloomView::OnStageDisconnection()
-{
-  // TODO: can't call this here, since SetImage() calls fails similarly to above
-  // Need to fix the stage connection so this callback can be used arbitrarily. At that point we  can simplify the API by removing the need for Activate() / Deactivate()
-  //Deactivate();
-}
-
-void BloomView::OnControlStageConnection()
-{
-  // TODO: can't call this here, since SetImage() calls fail to connect images to stage, since parent chain not fully on stage yet
-  // Need to fix the stage connection so this callback can be used arbitrarily. At that point we  can simplify the API by removing the need for Activate() / Deactivate()
-  //Activate();
-}
-
 void BloomView::Activate()
 {
   // make sure resources are allocated and start the render tasks processing
index 8cdd72c..2da9293 100644 (file)
@@ -29,7 +29,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
 #include <dali-toolkit/public-api/controls/gaussian-blur-view/gaussian-blur-view.h>
-#include <dali-toolkit/public-api/controls/bloom-view/bloom-view.h>
+#include <dali-toolkit/devel-api/controls/bloom-view/bloom-view.h>
 
 namespace Dali
 {
@@ -87,10 +87,7 @@ public:
 private:
 
   virtual void OnInitialize();
-  virtual void OnControlSizeSet(const Vector3& targetSize);
-  virtual void OnStageDisconnection();
-
-  virtual void OnControlStageConnection();
+  virtual void OnSizeSet(const Vector3& targetSize);
 
   void AllocateResources();
   void CreateRenderTasks();
index 135a634..c016920 100644 (file)
@@ -30,7 +30,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/bubble-effect/bubble-emitter.h>
+#include <dali-toolkit/devel-api/controls/bubble-effect/bubble-emitter.h>
 
 namespace Dali
 {
index 1c31fe5..c0d52ca 100644 (file)
@@ -905,7 +905,7 @@ Actor& Button::GetDisabledBackgroundImage()
   return mDisabledBackgroundContent;
 }
 
-bool Button::DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes )
+  bool Button::DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes )
 {
   bool ret = false;
 
@@ -924,7 +924,7 @@ bool Button::DoAction( BaseObject* object, const std::string& actionName, const
   return ret;
 }
 
-void Button::DoClickAction( const PropertyValueContainer& attributes )
+  void Button::DoClickAction( const Property::Map& attributes )
 {
   // Prevents the button signals from doing a recursive loop by sending an action
   // and re-emitting the signals.
@@ -1210,7 +1210,7 @@ void Button::OnInitialize()
 void Button::OnActivated()
 {
   // When the button is activated, it performs the click action
-  PropertyValueContainer attributes;
+  Property::Map attributes;
   DoClickAction( attributes );
 }
 
index 5197aca..02b1360 100644 (file)
@@ -260,7 +260,7 @@ public:
    * @param[in] attributes The attributes with which to perfrom this action.
    * @return true if action has been accepted by this control
    */
-  static bool DoAction( BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes );
+  static bool DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes );
 
 protected:
 
@@ -280,7 +280,7 @@ private:
    * Perform the click action to click the button.
    * @param[in] attributes The attributes to perfrom this action.
    */
-  void DoClickAction( const PropertyValueContainer& attributes );
+  void DoClickAction( const Property::Map& attributes );
 
   /**
    * This method is called after the button initialization.
index bb76721..f5c908d 100644 (file)
@@ -23,7 +23,7 @@
 #include <dali/public-api/object/type-registry.h>
 
 //INTERNAL INCLUDES
-#include <dali-toolkit/public-api/shader-effects/image-region-effect.h>
+#include <dali-toolkit/devel-api/shader-effects/image-region-effect.h>
 
 namespace Dali
 {
index aacf221..0135e6b 100644 (file)
@@ -26,6 +26,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/buttons/check-box-button.h>
+#include <dali-toolkit/devel-api/shader-effects/image-region-effect.h>
 
 #include "button-impl.h"
 
index 7632f79..a63b861 100644 (file)
@@ -538,7 +538,7 @@ void PushButton::StopAllAnimations()
   StopTransitionAnimation();
 }
 
-void PushButton::OnControlSizeSet( const Vector3& targetSize )
+void PushButton::OnSizeSet( const Vector3& targetSize )
 {
   if( targetSize != mSize )
   {
index 6aa58e1..da49f13 100644 (file)
@@ -132,14 +132,14 @@ private: // From Button
 private: // From Control
 
   /**
-   * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& targetSize )
+   * @copydoc CustomActorImpl::OnSizeSet( const Vector3& targetSize )
    */
-  virtual void OnControlSizeSet( const Vector3& targetSize );
+  virtual void OnSizeSet( const Vector3& targetSize );
 
   /**
    * @copydoc Toolkit::Control::GetNaturalSize
    */
-  Vector3 GetNaturalSize();
+  virtual Vector3 GetNaturalSize();
 
   /**
    * @copydoc Toolkit::Control::OnSetResizePolicy
index df8a6ea..0999db5 100644 (file)
@@ -315,7 +315,7 @@ void EffectsView::OnInitialize()
   SetupProperties();
 }
 
-void EffectsView::OnControlSizeSet(const Vector3& targetSize)
+void EffectsView::OnSizeSet(const Vector3& targetSize)
 {
   mTargetSize = Vector2(targetSize);
 
index 497cdbe..a39a1f7 100644 (file)
@@ -27,7 +27,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/effects-view/effects-view.h>
+#include <dali-toolkit/devel-api/controls/effects-view/effects-view.h>
 #include <dali-toolkit/public-api/controls/gaussian-blur-view/gaussian-blur-view.h>
 
 namespace Dali
@@ -133,9 +133,9 @@ private: // From Control
   virtual void OnInitialize();
 
   /**
-   * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& targetSize )
+   * @copydoc CustomActorImpl::OnSizeSet( const Vector3& targetSize )
    */
-  virtual void OnControlSizeSet( const Vector3& targetSize );
+  virtual void OnSizeSet( const Vector3& targetSize );
 
 private:
 
index e5cd600..5da6110 100644 (file)
@@ -352,7 +352,7 @@ struct ZrelativeToYconstraint
   float mScale;
 };
 
-void GaussianBlurView::OnControlSizeSet(const Vector3& targetSize)
+void GaussianBlurView::OnSizeSet(const Vector3& targetSize)
 {
   mTargetSize = Vector2(targetSize);
 
@@ -522,20 +522,6 @@ void GaussianBlurView::RemoveRenderTasks()
   taskList.RemoveTask(mCompositeTask);
 }
 
-void GaussianBlurView::OnStageDisconnection()
-{
-  // TODO: can't call this here, since SetImage() calls fails similarly to above
-  // Need to fix the stage connection so this callback can be used arbitrarily. At that point we  can simplify the API by removing the need for Activate() / Deactivate()
-  //Deactivate();
-}
-
-void GaussianBlurView::OnControlStageConnection()
-{
-  // TODO: can't call this here, since SetImage() calls fail to connect images to stage, since parent chain not fully on stage yet
-  // Need to fix the stage connection so this callback can be used arbitrarily. At that point we  can simplify the API by removing the need for Activate() / Deactivate()
-  //Activate();
-}
-
 void GaussianBlurView::Activate()
 {
   // make sure resources are allocated and start the render tasks processing
index 9420d24..0afa61c 100644 (file)
@@ -95,10 +95,7 @@ public:
 private:
 
   virtual void OnInitialize();
-  virtual void OnControlSizeSet(const Vector3& targetSize);
-  virtual void OnStageDisconnection();
-
-  virtual void OnControlStageConnection();
+  virtual void OnSizeSet(const Vector3& targetSize);
 
   void SetBlurBellCurveWidth(float blurBellCurveWidth);
   float CalcGaussianWeight(float x);
diff --git a/dali-toolkit/internal/controls/image-view/masked-image-view-impl.cpp b/dali-toolkit/internal/controls/image-view/masked-image-view-impl.cpp
deleted file mode 100644 (file)
index 97c4053..0000000
+++ /dev/null
@@ -1,651 +0,0 @@
-/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// CLASS HEADER
-#include <dali-toolkit/internal/controls/image-view/masked-image-view-impl.h>
-
-// EXTERNAL INCLUDES
-#include <sstream>
-#include <dali/public-api/animation/constraint.h>
-#include <dali/public-api/animation/constraints.h>
-#include <dali/public-api/common/stage.h>
-#include <dali/public-api/render-tasks/render-task-list.h>
-#include <dali/public-api/shader-effects/shader-effect.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-namespace Internal
-{
-
-namespace // unnamed namespace
-{
-
-const char* CUSTOM_PROPERTY_NAMES[ Dali::Toolkit::MaskedImageView::CUSTOM_PROPERTY_COUNT ] =
-{
-  "background-color",
-  "source-size",
-  "source-offset",
-  "mask-size",
-  "mask-offset"
-};
-
-const char* const MASKED_IMAGE_VIEW_VERTEX_SOURCE =
-  "precision mediump float;                                                                                      \n"
-  "uniform vec2 uTargetSize;                                                                                     \n"
-  "uniform vec2 uSourceSize;                                                                                     \n"
-  "uniform vec2 uSourceOffset;                                                                                   \n"
-  "uniform vec2 uMaskSize;                                                                                       \n"
-  "uniform vec2 uMaskOffset;                                                                                     \n"
-  "varying vec2 vMaskTexCoord;                                                                                   \n"
-  "void main()                                                                                                   \n"
-  "{                                                                                                             \n"
-  "  float x = uSourceSize.x*aPosition.x + uSourceOffset.x;                                                      \n"
-  "  float y = uSourceSize.y*aPosition.y + uSourceOffset.y;                                                      \n"
-  "                                                                                                              \n"
-  "  gl_Position = vec4( x/(uTargetSize.x*0.5), y/(uTargetSize.y*0.5), 0.0, 1.0 );                               \n"
-  "                                                                                                              \n"
-  "  vMaskTexCoord.x = (uMaskSize.x*0.5 + x - uMaskOffset.x) / uMaskSize.x;                                      \n"
-  "  vMaskTexCoord.y = (uMaskSize.y*0.5 + y - uMaskOffset.y) / uMaskSize.y;                                      \n";
-
-const char* const MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE0 =
-  "                                                                                                              \n"
-  "  vTexCoord = aTexCoord;                                                                                      \n"
-  "}";
-
-const char* const MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE90 =
-  "                                                                                                              \n"
-  "  vTexCoord.x = aTexCoord.y;                                                                                  \n"
-  "  vTexCoord.y = 1.0 - aTexCoord.x;                                                                            \n"
-  "}";
-
-const char* const MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE180 =
-  "                                                                                                              \n"
-  "  vTexCoord.x = 1.0 - aTexCoord.x;                                                                            \n"
-  "  vTexCoord.y = 1.0 - aTexCoord.y;                                                                            \n"
-  "}";
-
-const char* const MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE270 =
-  "                                                                                                              \n"
-  "  vTexCoord.x = 1.0 - aTexCoord.y;                                                                            \n"
-  "  vTexCoord.y = aTexCoord.x;                                                                                  \n"
-  "}";
-
-const char* const MASKED_IMAGE_VIEW_FRAGMENT_SOURCE =
-  "precision mediump float;                                                                                      \n"
-  "varying vec2 vMaskTexCoord;                                                                                   \n"
-  "void main()                                                                                                   \n"
-  "{                                                                                                             \n"
-  "  highp vec4 mask = texture2D(sEffect, vMaskTexCoord);                                                        \n"
-  "  gl_FragColor = texture2D(sTexture, vTexCoord) * vec4(1,1,1,mask.a);                                         \n"
-  "}";
-
-Vector2 GetSizeForAspectRatio( const Vector2& targetSize, float aspectRatio )
-{
-  Vector2 sizeToKeepAspectRatio( targetSize );
-
-  float targetAspectRatio( targetSize.width / targetSize.height );
-
-  if( aspectRatio > targetAspectRatio )
-  {
-    sizeToKeepAspectRatio.width = sizeToKeepAspectRatio.height * aspectRatio;
-  }
-  else if ( aspectRatio < targetAspectRatio )
-  {
-    sizeToKeepAspectRatio.height = sizeToKeepAspectRatio.width / aspectRatio;
-  }
-
-  return sizeToKeepAspectRatio;
-}
-
-Vector2 ClampSourceSize( const Vector2& sourceSize, const Vector2& targetSize, float widthOverHeight, float maxSourceScale )
-{
-  Vector2 clampedSize( sourceSize );
-
-  Vector2 minSize( targetSize );
-  if ( widthOverHeight > 0.0f )
-  {
-    minSize = GetSizeForAspectRatio( targetSize, widthOverHeight );
-  }
-
-  if ( clampedSize.width  < minSize.width ||
-       clampedSize.height < minSize.height )
-  {
-    clampedSize = minSize;
-  }
-  else if ( clampedSize.width  > minSize.width *maxSourceScale ||
-            clampedSize.height > minSize.height*maxSourceScale )
-  {
-    clampedSize = minSize * maxSourceScale;
-  }
-
-  return clampedSize;
-}
-
-Vector2 ClampSourceOffset( const Vector2& sourceOffset, const Vector2& targetSize, const Vector2& sourceSize )
-{
-  Vector2 min, max;
-
-  if ( sourceSize.width > targetSize.width )
-  {
-    float offset = (sourceSize.width - targetSize.width) * 0.5f;
-    min.x = -offset;
-    max.x =  offset;
-  }
-
-  if ( sourceSize.height > targetSize.height )
-  {
-    float offset = (sourceSize.height - targetSize.height) * 0.5f;
-    min.y = -offset;
-    max.y =  offset;
-  }
-
-  return Vector2( Clamp(sourceOffset.x, min.x, max.x), Clamp(sourceOffset.y, min.y, max.y) );
-}
-
-} // unnamed namespace
-
-Dali::Toolkit::MaskedImageView MaskedImageView::New( unsigned int targetWidth,
-                                                     unsigned int targetHeight,
-                                                     Image sourceImage,
-                                                     Image maskImage )
-{
-  // Create the implementation
-  MaskedImageView* maskedImageView = new MaskedImageView();
-
-  // Pass ownership to CustomActor via derived handle
-  Dali::Toolkit::MaskedImageView handle(*maskedImageView);
-
-  // Second-phase init of the implementation
-  // This can only be done after the CustomActor connection has been made...
-  maskedImageView->Initialize( targetWidth, targetHeight, sourceImage, maskImage );
-
-  return handle;
-}
-
-void MaskedImageView::SetSourceImage( Image sourceImage )
-{
-  mSourceImageActor.SetImage( sourceImage );
-}
-
-Image MaskedImageView::GetSourceImage()
-{
-  return mSourceImageActor.GetImage();
-}
-
-void MaskedImageView::SetMaskImage( Image maskImage )
-{
-  mMaskImage = maskImage;
-  mSourceImageActor.GetShaderEffect().SetEffectImage( maskImage );
-}
-
-Image MaskedImageView::GetMaskImage()
-{
-  return mMaskImage;
-}
-
-Property::Index MaskedImageView::GetPropertyIndex( Dali::Toolkit::MaskedImageView::CustomProperty customProperty ) const
-{
-  Property::Index index = Property::INVALID_INDEX;
-
-  switch ( customProperty )
-  {
-    case Dali::Toolkit::MaskedImageView::BACKGROUND_COLOR:
-    {
-      index = mCustomProperties[ Dali::Toolkit::MaskedImageView::BACKGROUND_COLOR ];
-      break;
-    }
-
-    case Dali::Toolkit::MaskedImageView::SOURCE_SIZE:
-    {
-      index = mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_SIZE ];
-      break;
-    }
-
-    case Dali::Toolkit::MaskedImageView::SOURCE_OFFSET:
-    {
-      index = mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ];
-      break;
-    }
-
-    case Dali::Toolkit::MaskedImageView::MASK_SIZE:
-    {
-      index = mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_SIZE ];
-      break;
-    }
-
-    case Dali::Toolkit::MaskedImageView::MASK_OFFSET:
-    {
-      index = mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_OFFSET ];
-      break;
-    }
-
-    default:
-      break;
-  }
-
-  return index;
-}
-
-void MaskedImageView::Pause()
-{
-  if ( mRenderTask )
-  {
-    mRenderTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
-  }
-}
-
-void MaskedImageView::Resume()
-{
-  if ( mRenderTask )
-  {
-    mRenderTask.SetRefreshRate( RenderTask::REFRESH_ALWAYS );
-  }
-}
-
-bool MaskedImageView::IsPaused() const
-{
-  if( mRenderTask.GetRefreshRate() ) // REFRESH_ALWAYS
-  {
-    return false;
-  }
-  else // REFRESH_ONCE
-  {
-    return true;
-  }
-}
-
-void MaskedImageView::SetEditMode( Dali::Toolkit::MaskedImageView::EditMode editMode )
-{
-  Actor self = Self();
-
-  mEditMode = editMode;
-
-  if ( Dali::Toolkit::MaskedImageView::EDIT_DISABLED == editMode )
-  {
-    if ( mPanGestureDetector )
-    {
-      mPanGestureDetector.DetachAll();
-      mPanGestureDetector.Reset();
-    }
-
-    if ( mPinchDetector )
-    {
-      mPinchDetector.DetachAll();
-      mPinchDetector.Reset();
-    }
-  }
-  else
-  {
-    if ( !mPanGestureDetector )
-    {
-      mPanGestureDetector = PanGestureDetector::New();
-      mPanGestureDetector.Attach( self );
-      mPanGestureDetector.DetectedSignal().Connect(this, &MaskedImageView::OnPan);
-    }
-
-    if ( !mPinchDetector )
-    {
-      mPinchDetector = PinchGestureDetector::New();
-      mPinchDetector.Attach( self );
-      mPinchDetector.DetectedSignal().Connect(this, &MaskedImageView::OnPinch);
-    }
-
-    if( Dali::Toolkit::MaskedImageView::EDIT_SOURCE == editMode )
-    {
-      // Re-clamp values to preserve image aspect-ratio etc.
-      ClampSourceSizeAndOffset();
-    }
-  }
-}
-
-Dali::Toolkit::MaskedImageView::EditMode MaskedImageView::GetEditMode() const
-{
-  return mEditMode;
-}
-
-void MaskedImageView::OnPropertySet( Property::Index index, Property::Value propertyValue )
-{
-  // Ignore OnPropertySet if MaskedImageView is setting the properties
-  if( !mSelfPropertySetting )
-  {
-    // Synchronize with user-supplied property values...
-    if( mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_SIZE ] == index )
-    {
-      // Note that clamping will take effect when edit-mode is used later
-      mSourcePosition.mStartPinchSize   = propertyValue.Get<Vector2>();
-      mSourcePosition.mCurrentPinchSize = propertyValue.Get<Vector2>();
-    }
-    else if( mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ] == index )
-    {
-      // Note that clamping will take effect when edit-mode is used later
-      mSourcePosition.mPanOffset = propertyValue.Get<Vector2>();
-    }
-    else if( mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_SIZE ] == index )
-    {
-      mMaskPosition.mStartPinchSize   = propertyValue.Get<Vector2>();
-      mMaskPosition.mCurrentPinchSize = propertyValue.Get<Vector2>();
-    }
-    else if( mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_OFFSET ] == index )
-    {
-      mMaskPosition.mPanOffset = propertyValue.Get<Vector2>();
-    }
-    // else it's fine to do nothing here
-  }
-}
-
-void MaskedImageView::OnPan(Actor source, const PanGesture& gesture)
-{
-  // Used to flag whether edit mode is setting properties
-  mSelfPropertySetting = true;
-
-  Actor self = Self();
-
-  if ( Dali::Toolkit::MaskedImageView::EDIT_SOURCE == mEditMode )
-  {
-    mSourcePosition.mPanOffset += gesture.displacement;
-    mSourcePosition.mPanOffset = ClampSourceOffset( mSourcePosition.mPanOffset, mTargetSize, mSourcePosition.mCurrentPinchSize );
-
-    self.SetProperty( GetPropertyIndex( Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ), mSourcePosition.mPanOffset );
-  }
-  else // Edit mask
-  {
-    mMaskPosition.mPanOffset += gesture.displacement;
-
-    self.SetProperty( GetPropertyIndex( Dali::Toolkit::MaskedImageView::MASK_OFFSET ), mMaskPosition.mPanOffset );
-  }
-
-  // Used to flag whether edit mode is setting properties
-  mSelfPropertySetting = false;
-}
-
-void MaskedImageView::OnPinch(Actor actor, const PinchGesture& pinch)
-{
-  // Used to flag whether edit mode is setting properties
-  mSelfPropertySetting = true;
-
-  Actor self = Self();
-
-  if ( Dali::Toolkit::MaskedImageView::EDIT_SOURCE == mEditMode )
-  {
-    if ( pinch.state == Gesture::Started )
-    {
-      mSourcePosition.mStartPinchSize = mSourcePosition.mCurrentPinchSize;
-    }
-
-    mSourcePosition.mCurrentPinchSize = mSourcePosition.mStartPinchSize * pinch.scale;
-
-    ClampSourceSizeAndOffset();
-  }
-  else // Edit mask
-  {
-    if ( pinch.state == Gesture::Started )
-    {
-      mMaskPosition.mStartPinchSize = mMaskPosition.mCurrentPinchSize;
-    }
-
-    mMaskPosition.mCurrentPinchSize = mMaskPosition.mStartPinchSize * pinch.scale;
-
-    self.SetProperty( GetPropertyIndex( Dali::Toolkit::MaskedImageView::MASK_SIZE ), mMaskPosition.mCurrentPinchSize );
-  }
-
-  // Used to flag whether edit mode is setting properties
-  mSelfPropertySetting = false;
-}
-
-void MaskedImageView::SetSourceAspectRatio( float widthOverHeight )
-{
-  Actor self = Self();
-
-  if ( widthOverHeight > 0.0f )
-  {
-    mWidthOverHeight = widthOverHeight;
-
-    ClampSourceSizeAndOffset();
-  }
-  else
-  {
-    mWidthOverHeight = 0.0f; // ignore aspect-ratio
-  }
-}
-
-float MaskedImageView::GetSourceAspectRatio() const
-{
-  return mWidthOverHeight;
-}
-
-void MaskedImageView::SetMaximumSourceScale( float scale )
-{
-  mMaximumSourceScale = scale;
-}
-
-float MaskedImageView::GetMaximumSourceScale() const
-{
-  return mMaximumSourceScale;
-}
-
-void MaskedImageView::SetSourceRotation( MaskedImageView::ImageRotation newRotation )
-{
-  if( mSourceRotation != newRotation )
-  {
-    bool oldLandscape( Dali::Toolkit::MaskedImageView::ROTATE_90 == mSourceRotation || Dali::Toolkit::MaskedImageView::ROTATE_270 == mSourceRotation );
-    bool newLandscape( Dali::Toolkit::MaskedImageView::ROTATE_90 == newRotation     || Dali::Toolkit::MaskedImageView::ROTATE_270 == newRotation     );
-
-    if ( oldLandscape != newLandscape )
-    {
-      // Changing between landscape & portraint, swap width & height
-      float temp = mSourcePosition.mCurrentPinchSize.width;
-      mSourcePosition.mCurrentPinchSize.width  = mSourcePosition.mCurrentPinchSize.height;
-      mSourcePosition.mCurrentPinchSize.height = temp;
-    }
-
-    mSourceRotation = newRotation;
-
-    ApplyMaskedImageShader( newRotation );
-
-    ClampSourceSizeAndOffset();
-  }
-}
-
-MaskedImageView::ImageRotation MaskedImageView::GetSourceRotation() const
-{
-  return mSourceRotation;
-}
-
-Dali::Toolkit::MaskedImageView::MaskedImageViewSignal& MaskedImageView::MaskFinishedSignal()
-{
-  return mMaskFinishedSignal;
-}
-
-MaskedImageView::MaskedImageView()
-: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ),
-  mEditMode( Dali::Toolkit::MaskedImageView::EDIT_DISABLED ),
-  mSelfPropertySetting( false ),
-  mSourceRotation( Dali::Toolkit::MaskedImageView::ROTATE_0 ),
-  mWidthOverHeight( 0.0f ),
-  mMaximumSourceScale( Dali::Toolkit::MaskedImageView::DEFAULT_MAXIMUM_SOURCE_SCALE )
-{
-}
-
-void MaskedImageView::Initialize( unsigned int targetWidth,
-                                  unsigned int targetHeight,
-                                  Image sourceImage,
-                                  Image maskImage )
-{
-  Actor self = Self();
-
-  // Register custom properties
-
-  mTargetSize = Vector2( static_cast<float>(targetWidth), static_cast<float>(targetHeight) );
-
-  mCustomProperties[ Dali::Toolkit::MaskedImageView::BACKGROUND_COLOR ]
-    = self.RegisterProperty( CUSTOM_PROPERTY_NAMES[ Dali::Toolkit::MaskedImageView::BACKGROUND_COLOR ], Color::BLACK  );
-
-  mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_SIZE ]
-    = self.RegisterProperty( CUSTOM_PROPERTY_NAMES[ Dali::Toolkit::MaskedImageView::SOURCE_SIZE ], mTargetSize );
-
-  mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ]
-    = self.RegisterProperty( CUSTOM_PROPERTY_NAMES[ Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ], Vector2::ZERO );
-
-  mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_SIZE ]
-    = self.RegisterProperty( CUSTOM_PROPERTY_NAMES[ Dali::Toolkit::MaskedImageView::MASK_SIZE ], mTargetSize );
-
-  mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_OFFSET ]
-    = self.RegisterProperty( CUSTOM_PROPERTY_NAMES[ Dali::Toolkit::MaskedImageView::MASK_OFFSET ], Vector2::ZERO );
-
-  // Create destination image (FBO)
-  mDestinationImage = FrameBufferImage::New( targetWidth, targetHeight, Pixel::RGBA8888 );
-
-  // Create source actor for off-screen image processing
-  mSourceImageActor = ImageActor::New( sourceImage );
-  self.Add( mSourceImageActor );
-  mSourceImageActor.SetParentOrigin( ParentOrigin::CENTER );
-  mSourceImageActor.SetPositionInheritanceMode( DONT_INHERIT_POSITION );
-  mSourceImageActor.SetInheritOrientation( false );
-  mSourceImageActor.SetInheritScale( false );
-  mSourceImageActor.SetColorMode( USE_OWN_COLOR );
-  mSourceImageActor.SetSize( Vector3::ONE );
-
-  // Apply masking effect to source actor
-  mMaskImage = maskImage;
-  ApplyMaskedImageShader( Dali::Toolkit::MaskedImageView::ROTATE_0 );
-
-  // Create actor to display result of off-screen rendering
-  mDestinationImageActor = ImageActor::New( mDestinationImage );
-  self.Add( mDestinationImageActor );
-  mDestinationImageActor.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION );
-
-  // Start the masking operation
-  mRenderTask = Stage::GetCurrent().GetRenderTaskList().CreateTask();
-  mRenderTask.SetSourceActor( mSourceImageActor );
-  mRenderTask.SetTargetFrameBuffer( mDestinationImage );
-  mRenderTask.SetInputEnabled( false );
-  mRenderTask.SetExclusive( true );
-  mRenderTask.SetClearEnabled( true );
-
-  Constraint clearColorConstraint = Constraint::New<Vector4>( mRenderTask, RenderTask::Property::CLEAR_COLOR, EqualToConstraint() );
-  clearColorConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::BACKGROUND_COLOR ] ) );
-  clearColorConstraint.Apply();
-  mRenderTask.FinishedSignal().Connect( this, &MaskedImageView::OnRenderTaskFinished );
-
-  // Edit mode initialization
-  mSourcePosition.mCurrentPinchSize = Vector2( targetWidth, targetHeight );
-  mMaskPosition.mCurrentPinchSize   = mSourcePosition.mCurrentPinchSize;
-}
-
-void MaskedImageView::ApplyMaskedImageShader( ImageRotation rotation )
-{
-  Actor self = Self();
-
-  // Vertex shader has different postfix for each rotation
-  std::stringstream vertexSource;
-  vertexSource << MASKED_IMAGE_VIEW_VERTEX_SOURCE;
-  if( Dali::Toolkit::MaskedImageView::ROTATE_90 == rotation )
-  {
-    vertexSource << MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE90;
-  }
-  else if( Dali::Toolkit::MaskedImageView::ROTATE_180 == rotation )
-  {
-    vertexSource << MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE180;
-  }
-  else if( Dali::Toolkit::MaskedImageView::ROTATE_270 == rotation )
-  {
-    vertexSource << MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE270;
-  }
-  else // Default to Dali::Toolkit::MaskedImageView::ROTATE_0
-  {
-    vertexSource << MASKED_IMAGE_VIEW_VERTEX_SOURCE_ROTATE0;
-  }
-
-  ShaderEffect shader = ShaderEffect::New( vertexSource.str(),
-                                           MASKED_IMAGE_VIEW_FRAGMENT_SOURCE,
-                                           GeometryType( GEOMETRY_TYPE_IMAGE ),
-                                           ShaderEffect::GeometryHints( ShaderEffect::HINT_BLENDING ) );
-
-  shader.SetUniform( "uTargetSize", mTargetSize );
-
-  shader.SetUniform( "uSourceSize", mTargetSize );
-  Constraint sourceSizeConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uSourceSize" ), EqualToConstraint() );
-  sourceSizeConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_SIZE ] ) );
-  sourceSizeConstraint.Apply();
-
-  shader.SetUniform( "uSourceOffset", Vector2::ZERO );
-  Constraint sourceOffsetConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uSourceOffset" ), EqualToConstraint() );
-  sourceOffsetConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ] ) );
-  sourceOffsetConstraint.Apply();
-
-  shader.SetUniform( "uMaskSize", mTargetSize );
-  Constraint maskSizeConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uMaskSize" ), EqualToConstraint() );
-  maskSizeConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_SIZE ] ) );
-  maskSizeConstraint.Apply();
-
-  shader.SetUniform( "uMaskOffset", mTargetSize );
-  Constraint maskOffsetConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uMaskOffset" ), EqualToConstraint() );
-  maskOffsetConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_OFFSET ] ) );
-  maskOffsetConstraint.Apply();
-
-  shader.SetEffectImage( mMaskImage );
-  mSourceImageActor.SetShaderEffect( shader );
-}
-
-void MaskedImageView::ClampSourceSizeAndOffset()
-{
-  float rotatedAspectRatio( mWidthOverHeight );
-  if( mWidthOverHeight > 0.0f &&
-      ( Dali::Toolkit::MaskedImageView::ROTATE_90  == mSourceRotation ||
-        Dali::Toolkit::MaskedImageView::ROTATE_270 == mSourceRotation ) )
-  {
-    rotatedAspectRatio = 1.0f / mWidthOverHeight;
-  }
-
-  Actor self = Self();
-
-  mSourcePosition.mCurrentPinchSize = ClampSourceSize( mSourcePosition.mCurrentPinchSize, mTargetSize, rotatedAspectRatio, mMaximumSourceScale );
-  self.SetProperty( GetPropertyIndex( Dali::Toolkit::MaskedImageView::SOURCE_SIZE ), mSourcePosition.mCurrentPinchSize );
-
-  mSourcePosition.mPanOffset = ClampSourceOffset( mSourcePosition.mPanOffset, mTargetSize, mSourcePosition.mCurrentPinchSize );
-  self.SetProperty( GetPropertyIndex( Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ), mSourcePosition.mPanOffset );
-}
-
-MaskedImageView::~MaskedImageView()
-{
-  // Guard to allow handle destruction after Core has been destroyed
-  if( Stage::IsInstalled() )
-  {
-    Stage::GetCurrent().GetRenderTaskList().RemoveTask( mRenderTask );
-  }
-}
-
-void MaskedImageView::OnControlSizeSet( const Vector3& targetSize )
-{
-  mDestinationImageActor.SetSize(targetSize);
-}
-
-void MaskedImageView::OnRenderTaskFinished( Dali::RenderTask& renderTask )
-{
-  Toolkit::MaskedImageView handle( GetOwner() );
-  mMaskFinishedSignal.Emit( handle );
-}
-
-} // namespace Internal
-
-} // namespace Toolkit
-
-} // namespace Dali
diff --git a/dali-toolkit/internal/controls/image-view/masked-image-view-impl.h b/dali-toolkit/internal/controls/image-view/masked-image-view-impl.h
deleted file mode 100644 (file)
index a1c8285..0000000
+++ /dev/null
@@ -1,275 +0,0 @@
-#ifndef __DALI_TOOLKIT_INTERNAL_MASKED_IMAGE_VIEW_H__
-#define __DALI_TOOLKIT_INTERNAL_MASKED_IMAGE_VIEW_H__
-
-/*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// EXTERNAL INCLUDES
-#include <dali/public-api/actors/image-actor.h>
-#include <dali/public-api/render-tasks/render-task.h>
-#include <dali/public-api/images/frame-buffer-image.h>
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/image-view/masked-image-view.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-namespace Internal
-{
-
-/**
- * @copydoc Dali::Toolkit::MaskedImageView
- */
-class MaskedImageView : public Control
-{
-public:
-
-  typedef Dali::Toolkit::MaskedImageView::ImageRotation ImageRotation;
-
-  /**
-   * Create a new MaskedImageView.
-   * @return A public handle to the newly allocated MaskedImageView.
-   */
-  static Dali::Toolkit::MaskedImageView New( unsigned int targetWidth,
-                                             unsigned int targetHeight,
-                                             Image sourceImage,
-                                             Image maskImage );
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::SetSourceImage()
-   */
-  void SetSourceImage( Image sourceImage );
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::GetSourceImage()
-   */
-  Image GetSourceImage();
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::SetMaskImage()
-   */
-  void SetMaskImage( Image maskImage );
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::GetMaskImage()
-   */
-  Image GetMaskImage();
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::GetPropertyIndex()
-   */
-  Property::Index GetPropertyIndex( Dali::Toolkit::MaskedImageView::CustomProperty customProperty ) const;
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::Pause()
-   */
-  void Pause();
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::Resume()
-   */
-  void Resume();
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::IsPaused()
-   */
-  bool IsPaused() const;
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::SetEditMode()
-   */
-  void SetEditMode( Dali::Toolkit::MaskedImageView::EditMode editMode );
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::GetEditMode()
-   */
-  Dali::Toolkit::MaskedImageView::EditMode GetEditMode() const;
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::SetSourceAspectRatio()
-   */
-  void SetSourceAspectRatio( float widthOverHeight );
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::GetSourceAspectRatio()
-   */
-  float GetSourceAspectRatio() const;
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::SetMaximumSourceScale()
-   */
-  void SetMaximumSourceScale( float scale );
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::GetMaximumSourceScale()
-   */
-  float GetMaximumSourceScale() const;
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::SetSourceRotation()
-   */
-  void SetSourceRotation( ImageRotation rotation );
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::GetSourceRotation()
-   */
-  ImageRotation GetSourceRotation() const;
-
-  /**
-   * @copydoc Dali::Toolkit::MaskedImageView::MaskFinishedSignal
-   */
-  Dali::Toolkit::MaskedImageView::MaskedImageViewSignal& MaskFinishedSignal();
-
-protected:
-
-  /**
-   * @copydoc Dali::CustomActorImpl::OnPropertySet()
-   */
-  void OnPropertySet( Property::Index index, Property::Value propertyValue );
-
-  /**
-   * Helper for edit mode.
-   */
-  void OnPan( Actor source, const PanGesture& gesture );
-
-  /**
-   * Helper for edit mode.
-   */
-  void OnPinch( Actor actor, const PinchGesture& pinch );
-
-  /**
-   * Construct a new MaskedImageView.
-   */
-  MaskedImageView();
-
-  /**
-   * 2nd-phase initialization.
-   */
-  void Initialize( unsigned int targetWidth,
-                   unsigned int targetHeight,
-                   Image sourceImage,
-                   Image maskImage );
-
-  /**
-   * Helper to apply the desired shader-effect for a given rotation.
-   * @param[in] rotation The rotation to apply to the source image.
-   */
-  void ApplyMaskedImageShader( ImageRotation rotation );
-
-  /**
-   * Helper to clamp the source image properties (only in edit mode).
-   */
-  void ClampSourceSizeAndOffset();
-
-  /**
-   * A reference counted object may only be deleted by calling Unreference()
-   */
-  virtual ~MaskedImageView();
-
-  /**
-   *
-   * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& targetSize )
-   */
-  virtual void OnControlSizeSet( const Vector3& targetSize );
-
-private:
-
-  // Undefined
-  MaskedImageView(const MaskedImageView&);
-
-  // Undefined
-  MaskedImageView& operator=(const MaskedImageView& rhs);
-
-  /**
-   * Emit MaskFinishedSignal when the render task finished rendering
-   * @param[in] renderTask the off-screen render task
-   */
-  void OnRenderTaskFinished( Dali::RenderTask& renderTask );
-
-private:
-
-  Vector2 mTargetSize;
-
-  Property::Index mCustomProperties[ Dali::Toolkit::MaskedImageView::CUSTOM_PROPERTY_COUNT ];
-
-  // Used for off-screen rendering
-  RenderTask mRenderTask;
-  ImageActor mSourceImageActor;
-  FrameBufferImage mDestinationImage;
-
-  // Create actor to display result of off-screen rendering
-  ImageActor mDestinationImageActor;
-
-  // Because ShaderEffect doesn't have a GetEffectImage()
-  Image mMaskImage;
-
-  // For edit mode
-  Dali::Toolkit::MaskedImageView::EditMode mEditMode;
-  PanGestureDetector mPanGestureDetector;
-  PinchGestureDetector mPinchDetector;
-  bool mSelfPropertySetting;
-
-  struct ImagePosition
-  {
-    Vector2 mPanOffset;
-    Vector2 mStartPinchSize;
-    Vector2 mCurrentPinchSize;
-  };
-  ImagePosition mSourcePosition;
-  ImagePosition mMaskPosition;
-
-  ImageRotation mSourceRotation;
-
-  // Limits for edit mode
-  float mWidthOverHeight;
-  float mMaximumSourceScale;
-
-  Dali::Toolkit::MaskedImageView::MaskedImageViewSignal mMaskFinishedSignal;
-};
-
-} // namespace Internal
-
-// Helpers for public-api forwarding methods
-
-inline Toolkit::Internal::MaskedImageView& GetImpl(Toolkit::MaskedImageView& pub)
-{
-  DALI_ASSERT_ALWAYS(pub);
-
-  Dali::RefObject& handle = pub.GetImplementation();
-
-  return static_cast<Toolkit::Internal::MaskedImageView&>(handle);
-}
-
-inline const Toolkit::Internal::MaskedImageView& GetImpl(const Toolkit::MaskedImageView& pub)
-{
-  DALI_ASSERT_ALWAYS(pub);
-
-  const Dali::RefObject& handle = pub.GetImplementation();
-
-  return static_cast<const Toolkit::Internal::MaskedImageView&>(handle);
-}
-
-} // namespace Toolkit
-
-} // namespace Dali
-
-#endif // __DALI_TOOLKIT_INTERNAL_MASKED_IMAGE_VIEW_H__
index 29e5bec..15de6ea 100644 (file)
@@ -268,7 +268,7 @@ void Magnifier::SetFrameVisibility(bool visible)
   }
 }
 
-void Magnifier::OnControlSizeSet(const Vector3& targetSize)
+void Magnifier::OnSizeSet(const Vector3& targetSize)
 {
   // TODO: Once Camera/CameraActor properties function as proper animatable properties
   // this code can disappear.
index 4def324..d4fea4e 100644 (file)
@@ -26,7 +26,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/magnifier/magnifier.h>
+#include <dali-toolkit/devel-api/controls/magnifier/magnifier.h>
 
 namespace Dali
 {
@@ -117,7 +117,7 @@ private:
 
 private:
 
-  virtual void OnControlSizeSet(const Vector3& targetSize);
+  virtual void OnSizeSet(const Vector3& targetSize);
 
 private:
 
index 0e9c635..eae7640 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-landscape-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-landscape-view.h>
 #include <dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.h>
 
 namespace Dali
index cc2e5ec..f64e351 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-portrait-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-portrait-view.h>
 #include <dali-toolkit/internal/controls/page-turn-view/page-turn-view-impl.h>
 
 namespace Dali
index 9a60b1a..a3a4fcc 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -425,13 +425,13 @@ void PageTurnView::SetupShadowView()
   mShadowView.Activate();
 }
 
-void PageTurnView::OnControlStageConnection()
+void PageTurnView::OnStageConnection()
 {
   SetupShadowView();
   mTurningPageLayer.RaiseToTop();
 }
 
-void PageTurnView::OnControlStageDisconnection()
+void PageTurnView::OnStageDisconnection()
 {
   if(mShadowView)
   {
@@ -455,12 +455,6 @@ void PageTurnView::OnControlStageDisconnection()
   }
 }
 
-void PageTurnView::OnControlSizeSet( const Vector3& size )
-{
-  // disable the SetSize of the control from the application
-  Self().SetSize( mControlSize );
-}
-
 void PageTurnView::SetSpineShadowParameter( const Vector2& spineShadowParameter )
 {
   mSpineShadowParameter = spineShadowParameter;
index 007fb2f..9ae696b 100644 (file)
@@ -27,9 +27,9 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-turn-view.h>
-#include <dali-toolkit/public-api/controls/page-turn-view/page-factory.h>
-#include <dali-toolkit/public-api/controls/shadow-view/shadow-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-turn-view.h>
+#include <dali-toolkit/devel-api/controls/page-turn-view/page-factory.h>
+#include <dali-toolkit/devel-api/controls/shadow-view/shadow-view.h>
 
 namespace Dali
 {
@@ -196,19 +196,14 @@ private: // from Control
   virtual void OnInitialize();
 
   /**
-   * @copydoc Toolkit::Control::OnControlStageConncection
+   * @copydoc CustomActorImpl::OnStageConnection()
    */
-  virtual void OnControlStageConnection();
+  virtual void OnStageConnection();
 
   /**
-   * @copydoc Toolkit::Control::OnControlStageDisConnection
+   * @copydoc CustomActorImpl::OnStageDisconnection()
    */
-  virtual void OnControlStageDisconnection();
-
-  /**
-   * @copydoc Toolkit::Control::OnControlSizeSet
-   */
-  virtual void OnControlSizeSet( const Vector3& size );
+  virtual void OnStageDisconnection();
 
 private: // implemented differently by PageTurnLandscapeView and PageTurnPortraitView
 
index b9b9da7..7577220 100755 (executable)
@@ -36,8 +36,9 @@
 #include <dali-toolkit/public-api/controls/buttons/button.h>
 #include <dali-toolkit/public-api/controls/control-impl.h>
 #include <dali-toolkit/public-api/controls/default-controls/solid-color-actor.h>
-#include <dali-toolkit/public-api/focus-manager/focus-manager.h>
+#include <dali-toolkit/public-api/focus-manager/accessibility-focus-manager.h>
 #include <dali-toolkit/internal/focus-manager/keyboard-focus-manager-impl.h>
+#include <dali-toolkit/internal/controls/buttons/button-impl.h>
 
 using namespace Dali;
 
@@ -422,7 +423,7 @@ void Popup::CreateBacking()
   mLayer.Add( mBacking );
   mBacking.SetOpacity(0.0f);
   mBacking.TouchedSignal().Connect( this, &Popup::OnBackingTouched );
-  mBacking.MouseWheelEventSignal().Connect(this, &Popup::OnBackingMouseWheelEvent);
+  mBacking.WheelEventSignal().Connect(this, &Popup::OnBackingWheelEvent);
 }
 
 void Popup::CreateDialog()
@@ -610,9 +611,9 @@ bool Popup::OnBackingTouched(Actor actor, const TouchEvent& event)
   return true;
 }
 
-bool Popup::OnBackingMouseWheelEvent(Actor actor, const MouseWheelEvent& event)
+bool Popup::OnBackingWheelEvent(Actor actor, const WheelEvent& event)
 {
-  // consume mouse wheel event in dimmed backing actor
+  // consume wheel event in dimmed backing actor
   return true;
 }
 
@@ -675,8 +676,8 @@ void Popup::OnRelayout( const Vector2& size, RelayoutContainer& container )
 
       button.SetPosition( buttonPosition );
 
-      button.PropagateRelayoutFlags();    // Reset relayout flags for relayout
-      container.Add( button, buttonSize );
+     //Todo: Use the size negotiation pass instead of SetSize directly
+     button.SetSize( buttonSize );
     }
   }
 }
@@ -809,7 +810,7 @@ float Popup::GetWidthForHeight( float height )
   return GetNaturalSize().width;
 }
 
-Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled)
+Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled)
 {
   Actor nextFocusableActor( currentFocusedActor );
 
@@ -852,7 +853,7 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C
       {
         switch ( direction )
         {
-          case Toolkit::Control::Left:
+          case Toolkit::Control::KeyboardFocus::LEFT:
           {
             if ( iter == focusableActors.begin() )
             {
@@ -864,7 +865,7 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C
             }
             break;
           }
-          case Toolkit::Control::Right:
+          case Toolkit::Control::KeyboardFocus::RIGHT:
           {
             if ( iter == focusableActors.end() - 1 )
             {
@@ -877,7 +878,7 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C
             break;
           }
 
-          case Toolkit::Control::Up:
+          case Toolkit::Control::KeyboardFocus::UP:
           {
             if ( *iter == mContent )
             {
@@ -904,7 +905,7 @@ Actor Popup::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::C
             break;
           }
 
-          case Toolkit::Control::Down:
+          case Toolkit::Control::KeyboardFocus::DOWN:
           {
             if ( mContent && mContent.IsKeyboardFocusable() )
             {
index 2d36e68..099e5e6 100755 (executable)
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/popup/popup.h>
-#include <dali-toolkit/internal/controls/popup/popup-style-impl.h>
 #include <dali-toolkit/public-api/controls/table-view/table-view.h>
 #include <dali-toolkit/public-api/controls/text-controls/text-label.h>
+#include <dali-toolkit/devel-api/controls/popup/popup.h>
+#include <dali-toolkit/internal/controls/popup/popup-style-impl.h>
 
 namespace Dali
 {
@@ -215,12 +215,12 @@ private:
   bool OnBackingTouched(Actor actor, const TouchEvent& event);
 
   /**
-   * Signal occurs when the mouse wheel event is occured on dimmed backing for the Popup.
-   * @param[in] actor The Actor got mouse wheel
-   * @param[in] event The Mouse Wheel Event.
+   * Signal occurs when the wheel event is occured on dimmed backing for the Popup.
+   * @param[in] actor The Actor got wheel
+   * @param[in] event The Wheel Event.
    * @return Whether to consume event or not.
    */
-  bool OnBackingMouseWheelEvent(Actor actor, const MouseWheelEvent& event);
+  bool OnBackingWheelEvent(Actor actor, const WheelEvent& event);
 
   /**
    * Signal occurs when the dialog has been touched.
@@ -279,7 +279,7 @@ private:
   /**
    * @copydoc Control::GetNextKeyboardFocusableActor()
    */
-  Actor GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled);
+  Actor GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled);
 
   /**
    * Create the root actor for the footer
index f1573b6..f65e77e 100755 (executable)
@@ -442,11 +442,11 @@ void ScrollBar::OnPan( Actor source, const PanGesture& gesture )
   }
 }
 
-void ScrollBar::OnControlSizeSet( const Vector3& size )
+void ScrollBar::OnSizeSet( const Vector3& size )
 {
   if(mIndicatorHeightPolicy == Toolkit::ScrollBar::Fixed)
   {
-    mIndicator.SetSize(Self().GetCurrentSize().width, mIndicatorFixedHeight);
+    mIndicator.SetSize(size.width, mIndicatorFixedHeight);
   }
 }
 
index 8c90758..f5321a4 100755 (executable)
@@ -201,9 +201,9 @@ private: // from Control
   virtual void OnInitialize();
 
   /**
-   * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& size )
+   * @copydoc CustomActorImpl::OnSizeSet( const Vector3& size )
    */
-  virtual void OnControlSizeSet( const Vector3& size );
+  virtual void OnSizeSet( const Vector3& size );
 
 private:
 
index 34838ad..2fa572d 100644 (file)
@@ -567,11 +567,11 @@ float DepthLayout::GetClosestOnScreenLayoutPosition(int itemID, float currentLay
   return scrollTo;
 }
 
-int DepthLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled)
+int DepthLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled)
 {
   switch( direction )
   {
-    case Toolkit::Control::Left:
+    case Toolkit::Control::KeyboardFocus::LEFT:
     {
       itemID--;
       if( itemID < 0 )
@@ -580,7 +580,7 @@ int DepthLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Con
       }
       break;
     }
-    case Toolkit::Control::Up:
+    case Toolkit::Control::KeyboardFocus::UP:
     {
       itemID += mImpl->mNumberOfColumns;
       if( itemID >= maxItems )
@@ -589,7 +589,7 @@ int DepthLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Con
       }
       break;
     }
-    case Toolkit::Control::Right:
+    case Toolkit::Control::KeyboardFocus::RIGHT:
     {
       itemID++;
       if( itemID >= maxItems )
@@ -598,7 +598,7 @@ int DepthLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Con
       }
       break;
     }
-    case Toolkit::Control::Down:
+    case Toolkit::Control::KeyboardFocus::DOWN:
     {
       itemID -= mImpl->mNumberOfColumns;
       if( itemID < 0 )
index 1d16a03..c1f18f9 100644 (file)
@@ -156,7 +156,7 @@ public:
   /**
    * @copydoc ItemLayout::GetNextFocusItemID()
    */
-  virtual int GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled);
+  virtual int GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled);
 
 private:
 
index 020bbcf..9339f0a 100644 (file)
@@ -676,11 +676,11 @@ Vector3 GridLayout::GetItemPosition(int itemID, float currentLayoutPosition, con
   return itemPosition;
 }
 
-int GridLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled)
+int GridLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled)
 {
   switch( direction )
   {
-    case Toolkit::Control::Left:
+    case Toolkit::Control::KeyboardFocus::LEFT:
     {
       itemID--;
       if( itemID < 0 )
@@ -689,7 +689,7 @@ int GridLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Cont
       }
       break;
     }
-    case Toolkit::Control::Up:
+    case Toolkit::Control::KeyboardFocus::UP:
     {
       itemID -= mImpl->mNumberOfColumns;
       if( itemID < 0 )
@@ -698,7 +698,7 @@ int GridLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Cont
       }
       break;
     }
-    case Toolkit::Control::Right:
+    case Toolkit::Control::KeyboardFocus::RIGHT:
     {
       itemID++;
       if( itemID >= maxItems )
@@ -707,7 +707,7 @@ int GridLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Cont
       }
       break;
     }
-    case Toolkit::Control::Down:
+    case Toolkit::Control::KeyboardFocus::DOWN:
     {
       itemID += mImpl->mNumberOfColumns;
       if( itemID >= maxItems )
index 0031559..b2b3bd9 100644 (file)
@@ -199,7 +199,7 @@ public:
   /**
    * @copydoc ItemLayout::GetNextFocusItemID()
    */
-  virtual int GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled);
+  virtual int GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled);
 
 private:
 
index ddf9427..e56760f 100644 (file)
@@ -25,7 +25,7 @@
 #include <dali/public-api/animation/constraints.h>
 #include <dali/devel-api/common/set-wrapper.h>
 #include <dali/public-api/common/stage.h>
-#include <dali/public-api/events/mouse-wheel-event.h>
+#include <dali/public-api/events/wheel-event.h>
 #include <dali/public-api/events/touch-event.h>
 #include <dali/public-api/object/type-registry.h>
 #include <dali/devel-api/object/type-registry-helper.h>
@@ -57,13 +57,13 @@ DALI_TYPE_REGISTRATION_END()
 
 const float DEFAULT_MINIMUM_SWIPE_SPEED = 1.0f;
 const float DEFAULT_MINIMUM_SWIPE_DISTANCE = 3.0f;
-const float DEFAULT_MOUSE_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION = 0.1f;
+const float DEFAULT_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION = 0.1f;
 
 const float DEFAULT_MINIMUM_SWIPE_DURATION = 0.45f;
 const float DEFAULT_MAXIMUM_SWIPE_DURATION = 2.6f;
 
 const float DEFAULT_REFRESH_INTERVAL_LAYOUT_POSITIONS = 20.0f; // 1 updates per 20 items
-const int MOUSE_WHEEL_EVENT_FINISHED_TIME_OUT = 500;  // 0.5 second
+const int WHEEL_EVENT_FINISHED_TIME_OUT = 500;  // 0.5 second
 
 const float DEFAULT_ANCHORING_DURATION = 1.0f;  // 1 second
 
@@ -276,7 +276,7 @@ Dali::Toolkit::ItemView ItemView::New(ItemFactory& factory)
 }
 
 ItemView::ItemView(ItemFactory& factory)
-: Scrollable( ControlBehaviour( DISABLE_SIZE_NEGOTIATION | REQUIRES_MOUSE_WHEEL_EVENTS | REQUIRES_KEYBOARD_NAVIGATION_SUPPORT ) ),
+: Scrollable( ControlBehaviour( DISABLE_SIZE_NEGOTIATION | REQUIRES_WHEEL_EVENTS | REQUIRES_KEYBOARD_NAVIGATION_SUPPORT ) ),
   mItemFactory(factory),
   mActiveLayout(NULL),
   mAnimatingOvershootOn(false),
@@ -287,7 +287,7 @@ ItemView::ItemView(ItemFactory& factory)
   mRefreshOrderHint(true/*Refresh item 0 first*/),
   mMinimumSwipeSpeed(DEFAULT_MINIMUM_SWIPE_SPEED),
   mMinimumSwipeDistance(DEFAULT_MINIMUM_SWIPE_DISTANCE),
-  mMouseWheelScrollDistanceStep(0.0f),
+  mWheelScrollDistanceStep(0.0f),
   mScrollDistance(0.0f),
   mScrollSpeed(0.0f),
   mTotalPanDisplacement(Vector2::ZERO),
@@ -308,12 +308,12 @@ void ItemView::OnInitialize()
   SetOvershootEnabled(true);
 
   Vector2 stageSize = Stage::GetCurrent().GetSize();
-  mMouseWheelScrollDistanceStep = stageSize.y * DEFAULT_MOUSE_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION;
+  mWheelScrollDistanceStep = stageSize.y * DEFAULT_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION;
 
   EnableGestureDetection(Gesture::Type(Gesture::Pan));
 
-  mMouseWheelEventFinishedTimer = Timer::New( MOUSE_WHEEL_EVENT_FINISHED_TIME_OUT );
-  mMouseWheelEventFinishedTimer.TickSignal().Connect( this, &ItemView::OnMouseWheelEventFinished );
+  mWheelEventFinishedTimer = Timer::New( WHEEL_EVENT_FINISHED_TIME_OUT );
+  mWheelEventFinishedTimer.TickSignal().Connect( this, &ItemView::OnWheelEventFinished );
 
   SetRefreshInterval(DEFAULT_REFRESH_INTERVAL_LAYOUT_POSITIONS);
 }
@@ -500,14 +500,14 @@ float ItemView::GetMinimumSwipeDistance() const
   return mMinimumSwipeDistance;
 }
 
-void ItemView::SetMouseWheelScrollDistanceStep(float step)
+void ItemView::SetWheelScrollDistanceStep(float step)
 {
-  mMouseWheelScrollDistanceStep = step;
+  mWheelScrollDistanceStep = step;
 }
 
-float ItemView::GetMouseWheelScrollDistanceStep() const
+float ItemView::GetWheelScrollDistanceStep() const
 {
-  return mMouseWheelScrollDistanceStep;
+  return mWheelScrollDistanceStep;
 }
 
 void ItemView::SetAnchoring(bool enabled)
@@ -986,14 +986,14 @@ bool ItemView::OnTouchEvent(const TouchEvent& event)
   return true; // consume since we're potentially scrolling
 }
 
-bool ItemView::OnMouseWheelEvent(const MouseWheelEvent& event)
+bool ItemView::OnWheelEvent(const WheelEvent& event)
 {
-  // Respond the mouse wheel event to scroll
+  // Respond the wheel event to scroll
   if (mActiveLayout)
   {
     Actor self = Self();
     const Vector3 layoutSize = Self().GetCurrentSize();
-    float layoutPositionDelta = GetCurrentLayoutPosition(0) - (event.z * mMouseWheelScrollDistanceStep * mActiveLayout->GetScrollSpeedFactor());
+    float layoutPositionDelta = GetCurrentLayoutPosition(0) - (event.z * mWheelScrollDistanceStep * mActiveLayout->GetScrollSpeedFactor());
     float firstItemScrollPosition = ClampFirstItemPosition(layoutPositionDelta, layoutSize, *mActiveLayout);
 
     self.SetProperty(Toolkit::ItemView::Property::LAYOUT_POSITION, firstItemScrollPosition );
@@ -1002,23 +1002,23 @@ bool ItemView::OnMouseWheelEvent(const MouseWheelEvent& event)
     mRefreshEnabled = true;
   }
 
-  if (mMouseWheelEventFinishedTimer.IsRunning())
+  if (mWheelEventFinishedTimer.IsRunning())
   {
-    mMouseWheelEventFinishedTimer.Stop();
+    mWheelEventFinishedTimer.Stop();
   }
 
-  mMouseWheelEventFinishedTimer.Start();
+  mWheelEventFinishedTimer.Start();
 
   return true;
 }
 
-bool ItemView::OnMouseWheelEventFinished()
+bool ItemView::OnWheelEventFinished()
 {
   if (mActiveLayout)
   {
     RemoveAnimation(mScrollAnimation);
 
-    // No more mouse wheel events coming. Do the anchoring if enabled.
+    // No more wheel events coming. Do the anchoring if enabled.
     mScrollAnimation = DoAnchoring();
     if (mScrollAnimation)
     {
@@ -1201,7 +1201,7 @@ bool ItemView::OnAccessibilityPan(PanGesture gesture)
   return true;
 }
 
-Actor ItemView::GetNextKeyboardFocusableActor(Actor actor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled)
+Actor ItemView::GetNextKeyboardFocusableActor(Actor actor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled)
 {
   Actor nextFocusActor;
   if(mActiveLayout)
index 5260c5c..16f0b0a 100644 (file)
@@ -121,14 +121,14 @@ public:
   float GetMinimumSwipeDistance() const;
 
   /**
-   * @copydoc Toolkit::ItemView::SetMouseWheelScrollDistanceStep
+   * @copydoc Toolkit::ItemView::SetWheelScrollDistanceStep
    */
-  void SetMouseWheelScrollDistanceStep(float step);
+  void SetWheelScrollDistanceStep(float step);
 
   /**
-   * @copydoc Toolkit::ItemView::GetMouseWheelScrollDistanceStep
+   * @copydoc Toolkit::ItemView::GetWheelScrollDistanceStep
    */
-  float GetMouseWheelScrollDistanceStep() const;
+  float GetWheelScrollDistanceStep() const;
 
   /**
    * @copydoc Toolkit::ItemView::SetAnchoring
@@ -343,11 +343,11 @@ private: // From CustomActorImpl
   virtual bool OnTouchEvent(const TouchEvent& event);
 
   /**
-   * From CustomActorImpl; called after a mouse-wheel-event is received by the owning actor.
-   * @param[in] event The mouse wheel event.
+   * From CustomActorImpl; called after a wheel-event is received by the owning actor.
+   * @param[in] event The wheel event.
    * @return True if the event should be consumed.
    */
-  virtual bool OnMouseWheelEvent(const MouseWheelEvent& event);
+  virtual bool OnWheelEvent(const WheelEvent& event);
 
 private: // From Control
 
@@ -364,7 +364,7 @@ private: // From Control
   /**
    * @copydoc Toolkit::Control::GetNextKeyboardFocusableActor()
    */
-  virtual Actor GetNextKeyboardFocusableActor(Actor actor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled);
+  virtual Actor GetNextKeyboardFocusableActor(Actor actor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled);
 
   /**
    * @copydoc Toolkit::Control::OnKeyboardFocusChangeCommitted()
@@ -477,10 +477,10 @@ private:
   void OnOvershootOnFinished(Animation& animation);
 
   /**
-   * This is called after a timeout when no new mouse wheel event is received for a certain period of time.
+   * This is called after a timeout when no new wheel event is received for a certain period of time.
    * @return will return false; one-shot timer.
    */
-  bool OnMouseWheelEventFinished();
+  bool OnWheelEventFinished();
 
   /**
    * Stops and removes animation if exists.
@@ -572,7 +572,7 @@ private:
 
   float mMinimumSwipeSpeed;
   float mMinimumSwipeDistance;
-  float mMouseWheelScrollDistanceStep; ///< The step of scroll distance in actor coordinates for each mouse wheel event received.
+  float mWheelScrollDistanceStep; ///< The step of scroll distance in actor coordinates for each wheel event received.
 
   float mScrollDistance;
   float mScrollSpeed;
@@ -581,7 +581,7 @@ private:
   float mScrollOvershoot;
   bool mIsFlicking;
 
-  Timer mMouseWheelEventFinishedTimer; ///< The timer to determine whether there is no mouse wheel event received for a certain period of time.
+  Timer mWheelEventFinishedTimer; ///< The timer to determine whether there is no wheel event received for a certain period of time.
 
   Dali::Gesture::State mGestureState;
 
index 4c2770b..ba36907 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -22,7 +22,7 @@
 #include <cstring> // for strcmp
 #include <dali/public-api/animation/constraints.h>
 #include <dali/public-api/common/stage.h>
-#include <dali/public-api/events/mouse-wheel-event.h>
+#include <dali/public-api/events/wheel-event.h>
 #include <dali/public-api/events/touch-event.h>
 #include <dali/public-api/object/type-registry.h>
 #include <dali/devel-api/object/type-registry-helper.h>
@@ -69,7 +69,7 @@ const float DEFAULT_MIN_FLICK_SPEED_THRESHOLD(500.0f);              ///< Minimum
 const float FREE_FLICK_SPEED_THRESHOLD = 200.0f;                    ///< Free-Flick threshold in pixels/ms
 const float AUTOLOCK_AXIS_MINIMUM_DISTANCE2 = 100.0f;               ///< Auto-lock axis after minimum distance squared.
 const float FLICK_ORTHO_ANGLE_RANGE = 75.0f;                        ///< degrees. (if >45, then supports diagonal flicking)
-const Vector2 DEFAULT_MOUSE_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION = Vector2(0.17f, 0.1f); ///< The step of horizontal scroll distance in the proportion of stage size for each mouse wheel event received.
+const Vector2 DEFAULT_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION = Vector2(0.17f, 0.1f); ///< The step of horizontal scroll distance in the proportion of stage size for each wheel event received.
 const unsigned long MINIMUM_TIME_BETWEEN_DOWN_AND_UP_FOR_RESET( 150u );
 const float TOUCH_DOWN_TIMER_INTERVAL = 100.0f;
 const float DEFAULT_SCROLL_UPDATE_DISTANCE( 30.0f );                ///< Default distance to travel in pixels for scroll update signal
@@ -578,7 +578,7 @@ Dali::Toolkit::ScrollView ScrollView::New()
 }
 
 ScrollView::ScrollView()
-: ScrollBase( ControlBehaviour( REQUIRES_MOUSE_WHEEL_EVENTS ) ),   // Enable size negotiation
+: ScrollBase( ControlBehaviour( REQUIRES_WHEEL_EVENTS ) ),   // Enable size negotiation
   mTouchDownTime(0u),
   mGestureStackDepth(0),
   mScrollStateFlags(0),
@@ -598,7 +598,7 @@ ScrollView::ScrollView()
   mFrictionCoefficient(DEFAULT_FRICTION_COEFFICIENT),
   mFlickSpeedCoefficient(DEFAULT_FLICK_SPEED_COEFFICIENT),
   mMaxFlickSpeed(DEFAULT_MAX_FLICK_SPEED),
-  mMouseWheelScrollDistanceStep(Vector2::ZERO),
+  mWheelScrollDistanceStep(Vector2::ZERO),
   mInAccessibilityPan(false),
   mInitialized(false),
   mScrolling(false),
@@ -635,7 +635,7 @@ void ScrollView::OnInitialize()
 
   mScrollPostPosition = mScrollPrePosition = Vector2::ZERO;
 
-  mMouseWheelScrollDistanceStep = Stage::GetCurrent().GetSize() * DEFAULT_MOUSE_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION;
+  mWheelScrollDistanceStep = Stage::GetCurrent().GetSize() * DEFAULT_WHEEL_SCROLL_DISTANCE_STEP_PROPORTION;
 
   mInitialized = true;
 
@@ -654,12 +654,11 @@ void ScrollView::OnInitialize()
   self.SetProperty(Toolkit::Scrollable::Property::CAN_SCROLL_VERTICAL, mCanScrollVertical);
   self.SetProperty(Toolkit::Scrollable::Property::CAN_SCROLL_HORIZONTAL, mCanScrollHorizontal);
 
-  Vector3 size = GetControlSize();
-  UpdatePropertyDomain(size);
+  UpdatePropertyDomain();
   SetInternalConstraints();
 }
 
-void ScrollView::OnControlStageConnection()
+void ScrollView::OnStageConnection()
 {
   DALI_LOG_SCROLL_STATE("[0x%X]", this);
 
@@ -675,7 +674,7 @@ void ScrollView::OnControlStageConnection()
   }
 }
 
-void ScrollView::OnControlStageDisconnection()
+void ScrollView::OnStageDisconnection()
 {
   DALI_LOG_SCROLL_STATE("[0x%X]", this);
 
@@ -813,8 +812,7 @@ void ScrollView::SetRulerX(RulerPtr ruler)
 {
   mRulerX = ruler;
 
-  Vector3 size = GetControlSize();
-  UpdatePropertyDomain(size);
+  UpdatePropertyDomain();
   UpdateMainInternalConstraint();
 }
 
@@ -822,14 +820,14 @@ void ScrollView::SetRulerY(RulerPtr ruler)
 {
   mRulerY = ruler;
 
-  Vector3 size = GetControlSize();
-  UpdatePropertyDomain(size);
+  UpdatePropertyDomain();
   UpdateMainInternalConstraint();
 }
 
-void ScrollView::UpdatePropertyDomain(const Vector3& size)
+void ScrollView::UpdatePropertyDomain()
 {
   Actor self = Self();
+  Vector3 size = self.GetTargetSize();
   Vector2 min = mMinScroll;
   Vector2 max = mMaxScroll;
   bool scrollPositionChanged = false;
@@ -1085,14 +1083,14 @@ void ScrollView::SetMaxFlickSpeed(float speed)
   mMaxFlickSpeed = speed;
 }
 
-void ScrollView::SetMouseWheelScrollDistanceStep(Vector2 step)
+void ScrollView::SetWheelScrollDistanceStep(Vector2 step)
 {
-  mMouseWheelScrollDistanceStep = step;
+  mWheelScrollDistanceStep = step;
 }
 
-Vector2 ScrollView::GetMouseWheelScrollDistanceStep() const
+Vector2 ScrollView::GetWheelScrollDistanceStep() const
 {
-  return mMouseWheelScrollDistanceStep;
+  return mWheelScrollDistanceStep;
 }
 
 unsigned int ScrollView::GetCurrentPage() const
@@ -1118,11 +1116,6 @@ Vector2 ScrollView::GetCurrentScrollPosition() const
   return -GetPropertyPosition();
 }
 
-void ScrollView::SetScrollPosition(const Vector2& position)
-{
-  mScrollPrePosition = position;
-}
-
 Vector2 ScrollView::GetDomainSize() const
 {
   Vector3 size = Self().GetCurrentSize();
@@ -1872,10 +1865,10 @@ bool ScrollView::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface
 void ScrollView::OnSizeAnimation(Animation& animation, const Vector3& targetSize)
 {
   // need to update domain properties for new size
-  UpdatePropertyDomain(targetSize);
+  UpdatePropertyDomain();
 }
 
-void ScrollView::OnControlSizeSet( const Vector3& size )
+void ScrollView::OnSizeSet( const Vector3& size )
 {
   // need to update domain properties for new size
   if( mDefaultMaxOvershoot )
@@ -1887,7 +1880,7 @@ void ScrollView::OnControlSizeSet( const Vector3& size )
       mMaxOvershoot = mUserMaxOvershoot;
     }
   }
-  UpdatePropertyDomain(size);
+  UpdatePropertyDomain();
   UpdateMainInternalConstraint();
   if( IsOvershootEnabled() )
   {
@@ -2049,11 +2042,11 @@ bool ScrollView::OnTouchEvent(const TouchEvent& event)
   return true;
 }
 
-bool ScrollView::OnMouseWheelEvent(const MouseWheelEvent& event)
+bool ScrollView::OnWheelEvent(const WheelEvent& event)
 {
   if(!mSensitive)
   {
-    // Ignore this mouse wheel event, if scrollview is insensitive.
+    // Ignore this wheel event, if scrollview is insensitive.
     return false;
   }
 
@@ -2065,7 +2058,7 @@ bool ScrollView::OnMouseWheelEvent(const MouseWheelEvent& event)
     if(mRulerX->GetType() == Ruler::Free)
     {
       // Free panning mode
-      targetScrollPosition.x += event.z * mMouseWheelScrollDistanceStep.x;
+      targetScrollPosition.x += event.z * mWheelScrollDistanceStep.x;
       ClampPosition(targetScrollPosition);
       ScrollTo(-targetScrollPosition);
     }
@@ -2081,7 +2074,7 @@ bool ScrollView::OnMouseWheelEvent(const MouseWheelEvent& event)
     if(mRulerY->GetType() == Ruler::Free)
     {
       // Free panning mode
-      targetScrollPosition.y += event.z * mMouseWheelScrollDistanceStep.y;
+      targetScrollPosition.y += event.z * mWheelScrollDistanceStep.y;
       ClampPosition(targetScrollPosition);
       ScrollTo(-targetScrollPosition);
     }
index aa9073f..86577c7 100644 (file)
@@ -2,7 +2,7 @@
 #define __DALI_TOOLKIT_INTERNAL_SCROLL_VIEW_H__
 
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -323,14 +323,14 @@ public:
   void SetMaxFlickSpeed(float speed);
 
   /**
-   * @copydoc Toolkit::ScrollView::GetMouseWheelScrollDistanceStep
+   * @copydoc Toolkit::ScrollView::GetWheelScrollDistanceStep
    */
-  Vector2 GetMouseWheelScrollDistanceStep() const;
+  Vector2 GetWheelScrollDistanceStep() const;
 
   /**
-   * @copydoc Toolkit::ScrollView::SetMouseWheelScrollDistanceStep
+   * @copydoc Toolkit::ScrollView::SetWheelScrollDistanceStep
    */
-  void SetMouseWheelScrollDistanceStep(Vector2 step);
+  void SetWheelScrollDistanceStep(Vector2 step);
 
   /**
    * @copydoc Toolkit::ScrollView::GetCurrentPage
@@ -343,11 +343,6 @@ public:
   Vector2 GetCurrentScrollPosition() const;
 
   /**
-   * @copydoc Toolkit::ScrollView::SetScrollPosition
-   */
-  void SetScrollPosition(const Vector2& position);
-
-  /**
    * @copydoc Toolkit::Scrollable::GetDomainSize
    */
   Vector2 GetDomainSize() const;
@@ -513,9 +508,9 @@ private: // private overriden functions from CustomActorImpl and Controls
   virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize);
 
   /**
-   * @copydoc Dali::Control::OnControlSizeSet(const Vector3&)
+   * @copydoc CustomActorImpl::OnSizeSet(const Vector3&)
    */
-  virtual void OnControlSizeSet( const Vector3& size );
+  virtual void OnSizeSet( const Vector3& size );
 
   /**
    * From CustomActorImpl; called after a child has been added to the owning actor.
@@ -540,11 +535,11 @@ private: // private overriden functions from CustomActorImpl and Controls
   virtual bool OnTouchEvent(const TouchEvent& event);
 
   /**
-   * From CustomActorImpl; called after a mouse-wheel-event is received by the owning actor.
-   * @param[in] event The mouse wheel event.
+   * From CustomActorImpl; called after a wheel-event is received by the owning actor.
+   * @param[in] event The wheel event.
    * @return True if the event should be consumed.
    */
-  virtual bool OnMouseWheelEvent(const MouseWheelEvent& event);
+  virtual bool OnWheelEvent(const WheelEvent& event);
 
   /**
    * @copydoc Toolkit::Control::OnInitialize()
@@ -552,14 +547,14 @@ private: // private overriden functions from CustomActorImpl and Controls
   virtual void OnInitialize();
 
   /**
-   * @copydoc Toolkit::Control::OnControlStageConnection()
+   * @copydoc CustomActorImpl::OnStageConnection()
    */
-  virtual void OnControlStageConnection();
+  virtual void OnStageConnection();
 
   /**
-   * @copydoc Toolkit::Control::OnControlStageConnection()
+   * @copydoc CustomActorImpl::OnStageDisconnection()
    */
-  virtual void OnControlStageDisconnection();
+  virtual void OnStageDisconnection();
 
   /**
    * @copydoc Toolkit::Control::OnAccessibilityPan()
@@ -660,10 +655,8 @@ private:
    * This is called internally whenever the Scroll Rulers are
    * modified. This will update the properties: 'scroll-position-min'
    * and 'scroll-position-max' to reflect the changes.
-   *
-   * @param[in] size size of the visible scroll area (ScrollView control size)
    */
-  void UpdatePropertyDomain(const Vector3& size);
+  void UpdatePropertyDomain();
 
   /**
    * Called when the gesture starts.
@@ -890,7 +883,7 @@ private:
   float mFlickSpeedCoefficient;                 ///< Flick velocity coefficient. Input touch velocity is multiplied by this.
   float mMaxFlickSpeed;                         ///< Maximum flick speed. Maximum speed of flick in stage.lengths/sec.
 
-  Vector2 mMouseWheelScrollDistanceStep;        ///< The step of scroll distance in actor coordinates in X and Y axes for each mouse wheel event received.
+  Vector2 mWheelScrollDistanceStep;        ///< The step of scroll distance in actor coordinates in X and Y axes for each wheel event received.
 
   //ScrollInternalConstraintsPtr mScrollInternalConstraints;
   Constraint mScrollMainInternalPrePositionConstraint;
index e445a65..f2fe0b9 100644 (file)
@@ -281,20 +281,6 @@ void ShadowView::OnSizeSet(const Vector3& targetSize)
 {
 }
 
-void ShadowView::OnStageConnection()
-{
-  // TODO: can't call this here, since SetImage() calls fail to connect images to stage, since parent chain not fully on stage yet
-  // Need to fix the stage connection so this callback can be used arbitrarily. At that point we  can simplify the API by removing the need for Activate() / Deactivate()
-  //Activate();
-}
-
-void ShadowView::OnStageDisconnection()
-{
-  // TODO: can't call this here, since SetImage() calls fails similarly to above
-  // Need to fix the stage connection so this callback can be used arbitrarily. At that point we  can simplify the API by removing the need for Activate() / Deactivate()
-  //Deactivate();
-}
-
 void ShadowView::ConstrainCamera()
 {
   if( mPointLight && mShadowPlane )
index e2afd04..5aa3595 100644 (file)
@@ -27,7 +27,7 @@
 #include <dali/public-api/shader-effects/shader-effect.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/shadow-view/shadow-view.h>
+#include <dali-toolkit/devel-api/controls/shadow-view/shadow-view.h>
 #include <dali-toolkit/public-api/controls/control-impl.h>
 #include <dali-toolkit/internal/filters/blur-two-pass-filter.h>
 
@@ -125,8 +125,6 @@ private:
 
   virtual void OnInitialize();
   virtual void OnSizeSet(const Vector3& targetSize);
-  virtual void OnStageConnection();
-  virtual void OnStageDisconnection();
 
   /**
    * Constrain the camera actor to the position of the point light, pointing
index 489e204..8ff89c3 100755 (executable)
@@ -209,7 +209,7 @@ void Slider::OnInitialize()
   self.SetSize( DEFAULT_HIT_REGION.x, DEFAULT_HIT_REGION.y );
 }
 
-void Slider::OnControlSizeSet( const Vector3& size )
+void Slider::OnSizeSet( const Vector3& size )
 {
   // Factor in handle overshoot into size of backing
   SetHitRegion( Vector2( size.x, GetHitRegion().y ) );
index b265d25..ea652fd 100755 (executable)
@@ -25,7 +25,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/slider/slider.h>
+#include <dali-toolkit/devel-api/controls/slider/slider.h>
 #include <dali-toolkit/public-api/controls/text-controls/text-label.h>
 
 namespace Dali
@@ -288,9 +288,9 @@ protected:
   virtual ~Slider();
 
   /**
-   * @copydoc Control::OnControlSizeSet( const Vector3& size )
+   * @copydoc CustomActorImpl::OnSizeSet( const Vector3& size )
    */
-  virtual void OnControlSizeSet( const Vector3& size );
+  virtual void OnSizeSet( const Vector3& size );
 
 private:
 
index 6e6dc1b..2c93d41 100644 (file)
@@ -252,7 +252,7 @@ void SuperBlurView::ClearBlurResource()
   }
 }
 
-void SuperBlurView::OnControlSizeSet( const Vector3& targetSize )
+void SuperBlurView::OnSizeSet( const Vector3& targetSize )
 {
   if( mTargetSize != Vector2(targetSize) )
   {
index cecc4c3..3488c2c 100644 (file)
@@ -20,7 +20,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/super-blur-view/super-blur-view.h>
+#include <dali-toolkit/devel-api/controls/super-blur-view/super-blur-view.h>
 #include <dali-toolkit/public-api/controls/gaussian-blur-view/gaussian-blur-view.h>
 
 namespace Dali
@@ -115,9 +115,9 @@ private: // from Control
   virtual void OnInitialize();
 
   /**
-   * @copydoc Toolkit::Control::OnControlSizeSet
+   * @copydoc CustomActorImpl::OnSizeSet()
    */
-  virtual void OnControlSizeSet(const Vector3& targetSize);
+  virtual void OnSizeSet(const Vector3& targetSize);
 
 private:
 
index 5a49cf4..bd96f77 100644 (file)
@@ -1142,7 +1142,7 @@ TableView::~TableView()
   // nothing to do
 }
 
-Actor TableView::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled)
+Actor TableView::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled)
 {
   Actor nextFocusableActor;
 
@@ -1165,7 +1165,7 @@ Actor TableView::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolki
 
       switch ( direction )
       {
-        case Toolkit::Control::Left:
+        case Toolkit::Control::KeyboardFocus::LEFT:
         {
           if(--currentColumn < 0)
           {
@@ -1178,7 +1178,7 @@ Actor TableView::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolki
           }
           break;
         }
-        case Toolkit::Control::Right:
+        case Toolkit::Control::KeyboardFocus::RIGHT:
         {
           if(++currentColumn > numberOfColumns - 1)
           {
@@ -1191,7 +1191,7 @@ Actor TableView::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolki
           }
           break;
         }
-        case Toolkit::Control::Up:
+        case Toolkit::Control::KeyboardFocus::UP:
         {
           if(--currentRow < 0)
           {
@@ -1200,7 +1200,7 @@ Actor TableView::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolki
           }
           break;
         }
-        case Toolkit::Control::Down:
+        case Toolkit::Control::KeyboardFocus::DOWN:
 
         {
           if(++currentRow > numberOfRows - 1)
index be41e47..d1d8aef 100644 (file)
@@ -261,7 +261,7 @@ private: // From Control
   /**
    * @copydoc Control::GetNextKeyboardFocusableActor
    */
-  virtual Actor GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled );
+  virtual Actor GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled );
 
   /**
    * @copydoc Control::GetNaturalSize()
index aec9e08..4eeab41 100644 (file)
@@ -117,7 +117,9 @@ DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "selection-handle-pressed-image-
 DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "selection-handle-pressed-image-right", STRING,    SELECTION_HANDLE_PRESSED_IMAGE_RIGHT )
 DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "selection-highlight-color",            STRING,    SELECTION_HIGHLIGHT_COLOR            )
 DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "decoration-bounding-box",              RECTANGLE, DECORATION_BOUNDING_BOX              )
+DALI_PROPERTY_REGISTRATION( Toolkit, TextField, "input-method-settings",                MAP,       INPUT_METHOD_SETTINGS                )
 
+DALI_SIGNAL_REGISTRATION( Toolkit, TextField, "text-changed",       SIGNAL_TEXT_CHANGED )
 DALI_SIGNAL_REGISTRATION( Toolkit, TextField, "max-length-reached", SIGNAL_MAX_LENGTH_REACHED )
 
 DALI_TYPE_REGISTRATION_END()
@@ -158,6 +160,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
         {
           impl.mRenderingBackend = backend;
           impl.mRenderer.Reset();
+          impl.RequestTextRelayout();
         }
         break;
       }
@@ -165,7 +168,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string text = value.Get< std::string >();
+          const std::string text = value.Get< std::string >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p TEXT %s\n", impl.mController.Get(), text.c_str() );
 
           impl.mController->SetText( text );
@@ -176,7 +179,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string text = value.Get< std::string >();
+          const std::string text = value.Get< std::string >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PLACEHOLDER_TEXT %s\n", impl.mController.Get(), text.c_str() );
 
           impl.mController->SetPlaceholderText( PLACEHOLDER_TYPE_INACTIVE, text );
@@ -187,7 +190,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string text = value.Get< std::string >();
+          const std::string text = value.Get< std::string >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PLACEHOLDER_TEXT_FOCUSED %s\n", impl.mController.Get(), text.c_str() );
 
           impl.mController->SetPlaceholderText( PLACEHOLDER_TYPE_ACTIVE, text );
@@ -198,13 +201,12 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string fontFamily = value.Get< std::string >();
+          const std::string fontFamily = value.Get< std::string >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p FONT_FAMILY %s\n", impl.mController.Get(), fontFamily.c_str() );
 
           if( impl.mController->GetDefaultFontFamily() != fontFamily )
           {
             impl.mController->SetDefaultFontFamily( fontFamily );
-            impl.RequestTextRelayout();
           }
         }
         break;
@@ -213,13 +215,12 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string fontStyle = value.Get< std::string >();
+          const std::string fontStyle = value.Get< std::string >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p FONT_STYLE %s\n", impl.mController.Get(), fontStyle.c_str() );
 
           if( impl.mController->GetDefaultFontStyle() != fontStyle )
           {
             impl.mController->SetDefaultFontStyle( fontStyle );
-            impl.RequestTextRelayout();
           }
         }
         break;
@@ -228,13 +229,12 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          float pointSize = value.Get< float >();
+          const float pointSize = value.Get< float >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p FONT_STYLE %f\n", impl.mController.Get(), pointSize );
 
           if( !Equals( impl.mController->GetDefaultPointSize(), pointSize ) )
           {
             impl.mController->SetDefaultPointSize( pointSize );
-            impl.RequestTextRelayout();
           }
         }
         break;
@@ -248,19 +248,14 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string alignStr = value.Get< std::string >();
+          const std::string alignStr = value.Get< std::string >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p HORIZONTAL_ALIGNMENT %f\n", impl.mController.Get(), alignStr.c_str() );
 
-          LayoutEngine& engine = impl.mController->GetLayoutEngine();
-          LayoutEngine::HorizontalAlignment alignment = Scripting::GetEnumeration< LayoutEngine::HorizontalAlignment >( alignStr.c_str(),
+          const LayoutEngine::HorizontalAlignment alignment = Scripting::GetEnumeration< LayoutEngine::HorizontalAlignment >( alignStr.c_str(),
                                                                                                                         HORIZONTAL_ALIGNMENT_STRING_TABLE,
                                                                                                                         HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT );
 
-          if( engine.GetHorizontalAlignment() != alignment )
-          {
-            engine.SetHorizontalAlignment( alignment );
-            impl.RequestTextRelayout();
-          }
+          impl.mController->SetHorizontalAlignment( alignment );
         }
         break;
       }
@@ -268,48 +263,43 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string alignStr = value.Get< std::string >();
+          const std::string alignStr = value.Get< std::string >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p VERTICAL_ALIGNMENT %f\n", impl.mController.Get(), alignStr.c_str() );
 
-          LayoutEngine& engine = impl.mController->GetLayoutEngine();
           LayoutEngine::VerticalAlignment alignment = Scripting::GetEnumeration< LayoutEngine::VerticalAlignment >( alignStr.c_str(),
                                                                                                                     VERTICAL_ALIGNMENT_STRING_TABLE,
                                                                                                                     VERTICAL_ALIGNMENT_STRING_TABLE_COUNT );
 
-          if( engine.GetVerticalAlignment() != alignment )
-          {
-            engine.SetVerticalAlignment( alignment );
-            impl.RequestTextRelayout();
-          }
+          impl.mController->SetVerticalAlignment( alignment );
         }
         break;
       }
       case Toolkit::TextField::Property::TEXT_COLOR:
       {
-        if ( impl.mController )
+        if( impl.mController )
         {
-          Vector4 textColor = value.Get< Vector4 >();
+          const Vector4 textColor = value.Get< Vector4 >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p TEXT_COLOR %f,%f,%f,%f\n", impl.mController.Get(), textColor.r, textColor.g, textColor.b, textColor.a );
 
-          if ( impl.mController->GetTextColor() != textColor )
+          if( impl.mController->GetTextColor() != textColor )
           {
             impl.mController->SetTextColor( textColor );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
       }
       case Toolkit::TextField::Property::PLACEHOLDER_TEXT_COLOR:
       {
-        if ( impl.mController )
+        if( impl.mController )
         {
-          Vector4 textColor = value.Get< Vector4 >();
+          const Vector4 textColor = value.Get< Vector4 >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PLACEHOLDER_TEXT_COLOR %f,%f,%f,%f\n", impl.mController.Get(), textColor.r, textColor.g, textColor.b, textColor.a );
 
-          if ( impl.mController->GetPlaceholderTextColor() != textColor )
+          if( impl.mController->GetPlaceholderTextColor() != textColor )
           {
             impl.mController->SetPlaceholderTextColor( textColor );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -318,13 +308,13 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          Vector2 shadowOffset = value.Get< Vector2 >();
+          const Vector2 shadowOffset = value.Get< Vector2 >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SHADOW_OFFSET %f,%f\n", impl.mController.Get(), shadowOffset.x, shadowOffset.y );
 
           if ( impl.mController->GetShadowOffset() != shadowOffset )
           {
             impl.mController->SetShadowOffset( shadowOffset );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -333,13 +323,13 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          Vector4 shadowColor = value.Get< Vector4 >();
+          const Vector4 shadowColor = value.Get< Vector4 >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SHADOW_COLOR %f,%f,%f,%f\n", impl.mController.Get(), shadowColor.r, shadowColor.g, shadowColor.b, shadowColor.a );
 
           if ( impl.mController->GetShadowColor() != shadowColor )
           {
             impl.mController->SetShadowColor( shadowColor );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -348,10 +338,11 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mDecorator )
         {
-          Vector4 color = value.Get< Vector4 >();
+          const Vector4 color = value.Get< Vector4 >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p PRIMARY_CURSOR_COLOR %f,%f\n", impl.mController.Get(), color.r, color.g, color.b, color.a );
 
           impl.mDecorator->SetColor( PRIMARY_CURSOR, color );
+          impl.RequestTextRelayout();
         }
         break;
       }
@@ -359,10 +350,11 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mDecorator )
         {
-          Vector4 color = value.Get< Vector4 >();
+          const Vector4 color = value.Get< Vector4 >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SECONDARY_CURSOR_COLOR %f,%f\n", impl.mController.Get(), color.r, color.g, color.b, color.a );
 
           impl.mDecorator->SetColor( SECONDARY_CURSOR, color );
+          impl.RequestTextRelayout();
         }
         break;
       }
@@ -370,10 +362,11 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          bool enable = value.Get< bool >();
+          const bool enable = value.Get< bool >();
           DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p ENABLE_CURSOR_BLINK %d\n", impl.mController.Get(), enable );
 
           impl.mController->SetEnableCursorBlink( enable );
+          impl.RequestTextRelayout();
         }
         break;
       }
@@ -381,7 +374,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mDecorator )
         {
-          float interval = value.Get< float >();
+          const float interval = value.Get< float >();
           DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p CURSOR_BLINK_INTERVAL %f\n", impl.mController.Get(), interval );
 
           impl.mDecorator->SetCursorBlinkInterval( interval );
@@ -392,7 +385,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mDecorator )
         {
-          float duration = value.Get< float >();
+          const float duration = value.Get< float >();
           DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p CURSOR_BLINK_INTERVAL %f\n", impl.mController.Get(), duration );
 
           impl.mDecorator->SetCursorBlinkDuration( duration );
@@ -401,29 +394,31 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       }
       case Toolkit::TextField::Property::GRAB_HANDLE_IMAGE:
       {
-        ResourceImage image = ResourceImage::New( value.Get< std::string >() );
+        const ResourceImage image = ResourceImage::New( value.Get< std::string >() );
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p GRAB_HANDLE_IMAGE %s\n", impl.mController.Get(), image.GetUrl().c_str() );
 
         if( impl.mDecorator )
         {
           impl.mDecorator->SetHandleImage( GRAB_HANDLE, HANDLE_IMAGE_RELEASED, image );
+          impl.RequestTextRelayout();
         }
         break;
       }
       case Toolkit::TextField::Property::GRAB_HANDLE_PRESSED_IMAGE:
       {
-        ResourceImage image = ResourceImage::New( value.Get< std::string >() );
+        const ResourceImage image = ResourceImage::New( value.Get< std::string >() );
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p GRAB_HANDLE_PRESSED_IMAGE %s\n", impl.mController.Get(), image.GetUrl().c_str() );
 
         if( impl.mDecorator )
         {
           impl.mDecorator->SetHandleImage( GRAB_HANDLE, HANDLE_IMAGE_PRESSED, image );
+          impl.RequestTextRelayout();
         }
         break;
       }
       case Toolkit::TextField::Property::SCROLL_THRESHOLD:
       {
-        float threshold = value.Get< float >();
+        const float threshold = value.Get< float >();
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SCROLL_THRESHOLD %f\n", impl.mController.Get(), threshold );
 
         if( impl.mDecorator )
@@ -434,7 +429,7 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       }
       case Toolkit::TextField::Property::SCROLL_SPEED:
       {
-        float speed = value.Get< float >();
+        const float speed = value.Get< float >();
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SCROLL_SPEED %f\n", impl.mController.Get(), speed );
 
         if( impl.mDecorator )
@@ -445,56 +440,61 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       }
       case Toolkit::TextField::Property::SELECTION_HANDLE_IMAGE_LEFT:
       {
-        ResourceImage image = ResourceImage::New( value.Get< std::string >() );
+        const ResourceImage image = ResourceImage::New( value.Get< std::string >() );
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_IMAGE_LEFT %f\n", impl.mController.Get(), image.GetUrl().c_str() );
 
         if( impl.mDecorator )
         {
           impl.mDecorator->SetHandleImage( LEFT_SELECTION_HANDLE, HANDLE_IMAGE_RELEASED, image );
+          impl.RequestTextRelayout();
         }
         break;
       }
       case Toolkit::TextField::Property::SELECTION_HANDLE_IMAGE_RIGHT:
       {
-        ResourceImage image = ResourceImage::New( value.Get< std::string >() );
+        const ResourceImage image = ResourceImage::New( value.Get< std::string >() );
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_IMAGE_RIGHT %f\n", impl.mController.Get(), image.GetUrl().c_str() );
 
         if( impl.mDecorator )
         {
           impl.mDecorator->SetHandleImage( RIGHT_SELECTION_HANDLE, HANDLE_IMAGE_RELEASED, image );
+          impl.RequestTextRelayout();
         }
         break;
       }
       case Toolkit::TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_LEFT:
       {
-        ResourceImage image = ResourceImage::New( value.Get< std::string >() );
+        const ResourceImage image = ResourceImage::New( value.Get< std::string >() );
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_PRESSED_IMAGE_LEFT %f\n", impl.mController.Get(), image.GetUrl().c_str() );
 
         if( impl.mDecorator )
         {
           impl.mDecorator->SetHandleImage( LEFT_SELECTION_HANDLE, HANDLE_IMAGE_PRESSED, image );
+          impl.RequestTextRelayout();
         }
         break;
       }
       case Toolkit::TextField::Property::SELECTION_HANDLE_PRESSED_IMAGE_RIGHT:
       {
-        ResourceImage image = ResourceImage::New( value.Get< std::string >() );
+        const ResourceImage image = ResourceImage::New( value.Get< std::string >() );
         DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField %p SELECTION_HANDLE_PRESSED_IMAGE_RIGHT %f\n", impl.mController.Get(), image.GetUrl().c_str() );
 
         if( impl.mDecorator )
         {
           impl.mDecorator->SetHandleImage( RIGHT_SELECTION_HANDLE, HANDLE_IMAGE_PRESSED, image );
+          impl.RequestTextRelayout();
         }
         break;
       }
       case Toolkit::TextField::Property::SELECTION_HIGHLIGHT_COLOR:
       {
-        Vector4 color = value.Get< Vector4 >();
+        const Vector4 color = value.Get< Vector4 >();
         DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p SELECTION_HIGHLIGHT_COLOR %f,%f\n", impl.mController.Get(), color.r, color.g, color.b, color.a );
 
         if( impl.mDecorator )
         {
           impl.mDecorator->SetHighlightColor( color );
+          impl.RequestTextRelayout();
         }
         break;
       }
@@ -502,10 +502,11 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mDecorator )
         {
-          Rect<int> box = value.Get< Rect<int> >();
+          const Rect<int> box = value.Get< Rect<int> >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p DECORATION_BOUNDING_BOX %d,%d %dx%d\n", impl.mController.Get(), box.x, box.y, box.width, box.height );
 
           impl.mDecorator->SetBoundingBox( box );
+          impl.RequestTextRelayout();
         }
         break;
       }
@@ -513,13 +514,19 @@ void TextField::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          int max = value.Get< int >();
+          const int max = value.Get< int >();
           DALI_LOG_INFO( gLogFilter, Debug::General, "TextField %p MAX_LENGTH %d\n", impl.mController.Get(), max );
 
           impl.mController->SetMaximumNumberOfCharacters( max );
         }
         break;
       }
+      case Toolkit::TextField::Property::INPUT_METHOD_SETTINGS:
+      {
+        const Property::Map map = value.Get<Property::Map>();
+        VirtualKeyboard::ApplySettings( map );
+        break;
+      }
     } // switch
   } // textfield
 }
@@ -572,6 +579,30 @@ Property::Value TextField::GetProperty( BaseObject* object, Property::Index inde
         }
         break;
       }
+      case Toolkit::TextField::Property::FONT_FAMILY:
+      {
+        if( impl.mController )
+        {
+          value = impl.mController->GetDefaultFontFamily();
+        }
+        break;
+      }
+      case Toolkit::TextField::Property::FONT_STYLE:
+      {
+        if( impl.mController )
+        {
+          value = impl.mController->GetDefaultFontStyle();
+        }
+        break;
+      }
+      case Toolkit::TextField::Property::POINT_SIZE:
+      {
+        if( impl.mController )
+        {
+          value = impl.mController->GetDefaultPointSize();
+        }
+        break;
+      }
       case Toolkit::TextField::Property::EXCEED_POLICY:
       {
         value = impl.mExceedPolicy;
@@ -778,6 +809,10 @@ Property::Value TextField::GetProperty( BaseObject* object, Property::Index inde
         }
         break;
       }
+      case Toolkit::TextField::Property::INPUT_METHOD_SETTINGS:
+      {
+        break;
+      }
     } //switch
   }
 
@@ -791,7 +826,11 @@ bool TextField::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface*
   bool connected( true );
   Toolkit::TextField field = Toolkit::TextField::DownCast( handle );
 
-  if( 0 == strcmp( signalName.c_str(), SIGNAL_MAX_LENGTH_REACHED ) )
+  if( 0 == strcmp( signalName.c_str(), SIGNAL_TEXT_CHANGED ) )
+  {
+    field.TextChangedSignal().Connect( tracker, functor );
+  }
+  else if( 0 == strcmp( signalName.c_str(), SIGNAL_MAX_LENGTH_REACHED ) )
   {
     field.MaxLengthReachedSignal().Connect( tracker, functor );
   }
@@ -804,6 +843,11 @@ bool TextField::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface*
   return connected;
 }
 
+Toolkit::TextField::TextChangedSignalType& TextField::TextChangedSignal()
+{
+  return mTextChangedSignal;
+}
+
 Toolkit::TextField::MaxLengthReachedSignalType& TextField::MaxLengthReachedSignal()
 {
   return mMaxLengthReachedSignal;
@@ -826,6 +870,8 @@ void TextField::OnInitialize()
   GetTapGestureDetector().SetMaximumTapsRequired( 2 );
   EnableGestureDetection(Gesture::Pan);
 
+  self.TouchedSignal().Connect( this, &TextField::OnTouched );
+
   // Set BoundingBox to stage size if not already set.
   if ( mDecorator->GetBoundingBox().IsEmpty() )
   {
@@ -838,7 +884,7 @@ void TextField::OnInitialize()
   self.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::HEIGHT );
 }
 
-void TextField::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change )
+void TextField::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change )
 {
   GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
 }
@@ -988,55 +1034,7 @@ bool TextField::OnKeyEvent( const KeyEvent& event )
 ImfManager::ImfCallbackData TextField::OnImfEvent( Dali::ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent )
 {
   DALI_LOG_INFO( gLogFilter, Debug::Verbose, "TextField::OnImfEvent %p eventName %d\n", mController.Get(), imfEvent.eventName );
-
-  bool update( false );
-
-  std::string text;
-  unsigned int cursorPosition( 0 );
-
-  switch ( imfEvent.eventName )
-  {
-    case ImfManager::COMMIT:
-    {
-      mController->InsertText( imfEvent.predictiveString, Text::Controller::COMMIT );
-      break;
-    }
-    case ImfManager::PREEDIT:
-    {
-      mController->InsertText( imfEvent.predictiveString, Text::Controller::PRE_EDIT );
-      update = true;
-      break;
-    }
-    case ImfManager::DELETESURROUNDING:
-    {
-      mController->RemoveText( imfEvent.cursorOffset, imfEvent.numberOfChars );
-      break;
-    }
-    case ImfManager::GETSURROUNDING:
-    {
-      mController->GetText( text );
-      cursorPosition = mController->GetLogicalCursorPosition();
-
-      imfManager.SetSurroundingText( text );
-      imfManager.SetCursorPosition( cursorPosition );
-      break;
-    }
-    case ImfManager::VOID:
-    {
-      // do nothing
-      break;
-    }
-  } // end switch
-
-  if( ImfManager::GETSURROUNDING != imfEvent.eventName )
-  {
-    mController->GetText( text );
-    cursorPosition = mController->GetLogicalCursorPosition();
-  }
-
-  ImfManager::ImfCallbackData callbackData( update, cursorPosition, text, false );
-
-  return callbackData;
+  return mController->OnImfEvent( imfManager, imfEvent );
 }
 
 void TextField::RequestTextRelayout()
@@ -1044,6 +1042,12 @@ void TextField::RequestTextRelayout()
   RelayoutRequest();
 }
 
+void TextField::TextChanged()
+{
+  Dali::Toolkit::TextField handle( GetOwner() );
+  mTextChangedSignal.Emit( handle );
+}
+
 void TextField::MaxLengthReached()
 {
   Dali::Toolkit::TextField handle( GetOwner() );
@@ -1089,6 +1093,11 @@ void TextField::KeyboardStatusChanged(bool keyboardShown)
   }
 }
 
+bool TextField::OnTouched( Actor actor, const TouchEvent& event )
+{
+  return true;
+}
+
 TextField::TextField()
 : Control( ControlBehaviour( REQUIRES_STYLE_CHANGE_SIGNALS ) ),
   mRenderingBackend( DEFAULT_RENDERING_BACKEND ),
index b57a171..437556b 100644 (file)
@@ -18,9 +18,6 @@
  *
  */
 
-// EXTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/imf-manager.h>
-
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
 #include <dali-toolkit/public-api/controls/text-controls/text-field.h>
@@ -83,6 +80,11 @@ public:
   static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor );
 
   /**
+   * @copydoc TextField::TextChangedSignal()
+   */
+  Toolkit::TextField::TextChangedSignalType&  TextChangedSignal();
+
+  /**
    * @copydoc TextField::MaxLengthReachedSignal()
    */
   Toolkit::TextField::MaxLengthReachedSignalType&  MaxLengthReachedSignal();
@@ -97,7 +99,7 @@ private: // From Control
   /**
    * @copydoc Control::OnStyleChange()
    */
-  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change );
+  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change );
 
   /**
    * @copydoc Control::GetNaturalSize()
@@ -140,11 +142,7 @@ private: // From Control
   virtual bool OnKeyEvent(const KeyEvent& event);
 
   /**
-   * @brief Event received from IMF manager
-   *
-   * @param[in] imfManager The IMF manager.
-   * @param[in] imfEvent The event received.
-   * @return A data struture indicating if update is needed, cursor position and current text.
+   * @copydoc Dali::Toolkit::Text::Controller::(ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent)
    */
   ImfManager::ImfCallbackData OnImfEvent( ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent );
 
@@ -154,6 +152,11 @@ private: // From Control
   virtual void RequestTextRelayout();
 
   /**
+   * @copydoc Text::ControlInterface::TextChanged()
+   */
+  virtual void TextChanged();
+
+  /**
    * @copydoc Text::ControlInterface::MaxLengthReached()
    */
   virtual void MaxLengthReached();
@@ -176,6 +179,14 @@ private: // Implementation
   void KeyboardStatusChanged( bool keyboardShown );
 
   /**
+   * @brief Callback when Textfield is touched
+   *
+   * @param[in] actor TextField touched
+   * @param[in] event TouchEvent information
+   */
+  bool OnTouched( Actor actor, const TouchEvent& event );
+
+  /**
    * Construct a new TextField.
    */
   TextField();
@@ -192,6 +203,7 @@ private: // Implementation
 private: // Data
 
   // Signals
+  Toolkit::TextField::TextChangedSignalType mTextChangedSignal;
   Toolkit::TextField::MaxLengthReachedSignalType mMaxLengthReachedSignal;
 
   Text::ControllerPtr mController;
index e888911..095e99f 100644 (file)
@@ -120,7 +120,7 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
     {
       case Toolkit::TextLabel::Property::RENDERING_BACKEND:
       {
-        int backend = value.Get< int >();
+        const int backend = value.Get< int >();
 
         if( impl.mRenderingBackend != backend )
         {
@@ -135,7 +135,6 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
         if( impl.mController )
         {
           impl.mController->SetText( value.Get< std::string >() );
-          impl.RequestTextRelayout();
         }
         break;
       }
@@ -143,12 +142,11 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string fontFamily = value.Get< std::string >();
+          const std::string fontFamily = value.Get< std::string >();
 
           if( impl.mController->GetDefaultFontFamily() != fontFamily )
           {
             impl.mController->SetDefaultFontFamily( fontFamily );
-            impl.RequestTextRelayout();
           }
         }
         break;
@@ -157,12 +155,11 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          std::string fontStyle = value.Get< std::string >();
+          const std::string fontStyle = value.Get< std::string >();
 
           if( impl.mController->GetDefaultFontStyle() != fontStyle )
           {
             impl.mController->SetDefaultFontStyle( fontStyle );
-            impl.RequestTextRelayout();
           }
         }
         break;
@@ -171,12 +168,11 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          float pointSize = value.Get< float >();
+          const float pointSize = value.Get< float >();
 
           if( !Equals( impl.mController->GetDefaultPointSize(), pointSize ) )
           {
             impl.mController->SetDefaultPointSize( pointSize );
-            impl.RequestTextRelayout();
           }
         }
         break;
@@ -185,55 +181,44 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          LayoutEngine& engine = impl.mController->GetLayoutEngine();
-          LayoutEngine::Layout layout = value.Get< bool >() ? LayoutEngine::MULTI_LINE_BOX : LayoutEngine::SINGLE_LINE_BOX;
-
-          if( engine.GetLayout() != layout )
-          {
-            engine.SetLayout( layout );
-            impl.RequestTextRelayout();
-          }
+          impl.mController->SetMultiLineEnabled( value.Get< bool >() );
         }
         break;
       }
       case Toolkit::TextLabel::Property::HORIZONTAL_ALIGNMENT:
       {
-        LayoutEngine& engine = impl.mController->GetLayoutEngine();
-        const LayoutEngine::HorizontalAlignment alignment = Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::HorizontalAlignment >( value.Get< std::string >().c_str(),
-                                                                                                                                           HORIZONTAL_ALIGNMENT_STRING_TABLE,
-                                                                                                                                           HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT );
-
-        if( engine.GetHorizontalAlignment() != alignment )
+        if( impl.mController )
         {
-          engine.SetHorizontalAlignment( alignment );
-          impl.RequestTextRelayout();
+          const LayoutEngine::HorizontalAlignment alignment = Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::HorizontalAlignment >( value.Get< std::string >().c_str(),
+                                                                                                                                             HORIZONTAL_ALIGNMENT_STRING_TABLE,
+                                                                                                                                             HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT );
+
+          impl.mController->SetHorizontalAlignment( alignment );
         }
         break;
       }
       case Toolkit::TextLabel::Property::VERTICAL_ALIGNMENT:
       {
-        LayoutEngine& engine = impl.mController->GetLayoutEngine();
-        const LayoutEngine::VerticalAlignment alignment = Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::VerticalAlignment >( value.Get< std::string >().c_str(),
-                                                                                                                                       VERTICAL_ALIGNMENT_STRING_TABLE,
-                                                                                                                                       VERTICAL_ALIGNMENT_STRING_TABLE_COUNT );
-
-        if( engine.GetVerticalAlignment() != alignment )
+        if( impl.mController )
         {
-          engine.SetVerticalAlignment( alignment );
-          impl.RequestTextRelayout();
+          const LayoutEngine::VerticalAlignment alignment = Scripting::GetEnumeration< Toolkit::Text::LayoutEngine::VerticalAlignment >( value.Get< std::string >().c_str(),
+                                                                                                                                         VERTICAL_ALIGNMENT_STRING_TABLE,
+                                                                                                                                         VERTICAL_ALIGNMENT_STRING_TABLE_COUNT );
+
+          impl.mController->SetVerticalAlignment( alignment );
         }
         break;
       }
 
       case Toolkit::TextLabel::Property::TEXT_COLOR:
       {
-        if ( impl.mController )
+        if( impl.mController )
         {
-          Vector4 textColor = value.Get< Vector4 >();
-          if ( impl.mController->GetTextColor() != textColor )
+          const Vector4 textColor = value.Get< Vector4 >();
+          if( impl.mController->GetTextColor() != textColor )
           {
             impl.mController->SetTextColor( textColor );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -243,11 +228,11 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          Vector2 shadowOffset = value.Get< Vector2 >();
+          const Vector2 shadowOffset = value.Get< Vector2 >();
           if ( impl.mController->GetShadowOffset() != shadowOffset )
           {
             impl.mController->SetShadowOffset( shadowOffset );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -256,11 +241,11 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          Vector4 shadowColor = value.Get< Vector4 >();
+          const Vector4 shadowColor = value.Get< Vector4 >();
           if ( impl.mController->GetShadowColor() != shadowColor )
           {
             impl.mController->SetShadowColor( shadowColor );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -269,11 +254,11 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          Vector4 color = value.Get< Vector4 >();
+          const Vector4 color = value.Get< Vector4 >();
           if ( impl.mController->GetUnderlineColor() != color )
           {
             impl.mController->SetUnderlineColor( color );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -282,11 +267,11 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
       {
         if( impl.mController )
         {
-          bool enabled = value.Get< bool >();
+          const bool enabled = value.Get< bool >();
           if ( impl.mController->IsUnderlineEnabled() != enabled )
           {
             impl.mController->SetUnderlineEnabled( enabled );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -300,7 +285,7 @@ void TextLabel::SetProperty( BaseObject* object, Property::Index index, const Pr
           if ( impl.mController->GetUnderlineHeight() != height )
           {
             impl.mController->SetUnderlineHeight( height );
-            impl.RequestTextRelayout();
+            impl.mRenderer.Reset();
           }
         }
         break;
@@ -335,11 +320,35 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde
         }
         break;
       }
+      case Toolkit::TextLabel::Property::FONT_FAMILY:
+      {
+        if( impl.mController )
+        {
+          value = impl.mController->GetDefaultFontFamily();
+        }
+        break;
+      }
+      case Toolkit::TextLabel::Property::FONT_STYLE:
+      {
+        if( impl.mController )
+        {
+          value = impl.mController->GetDefaultFontStyle();
+        }
+        break;
+      }
+      case Toolkit::TextLabel::Property::POINT_SIZE:
+      {
+        if( impl.mController )
+        {
+          value = impl.mController->GetDefaultPointSize();
+        }
+        break;
+      }
       case Toolkit::TextLabel::Property::MULTI_LINE:
       {
         if( impl.mController )
         {
-          value = static_cast<bool>( LayoutEngine::MULTI_LINE_BOX == impl.mController->GetLayoutEngine().GetLayout() );
+          value = impl.mController->IsMultiLineEnabled();
         }
         break;
       }
@@ -347,7 +356,7 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde
       {
         if( impl.mController )
         {
-          value = std::string( Scripting::GetEnumerationName< Toolkit::Text::LayoutEngine::HorizontalAlignment >( impl.mController->GetLayoutEngine().GetHorizontalAlignment(),
+          value = std::string( Scripting::GetEnumerationName< Toolkit::Text::LayoutEngine::HorizontalAlignment >( impl.mController->GetHorizontalAlignment(),
                                                                                                                   HORIZONTAL_ALIGNMENT_STRING_TABLE,
                                                                                                                   HORIZONTAL_ALIGNMENT_STRING_TABLE_COUNT ) );
         }
@@ -357,7 +366,7 @@ Property::Value TextLabel::GetProperty( BaseObject* object, Property::Index inde
       {
         if( impl.mController )
         {
-          value = std::string( Scripting::GetEnumerationName< Toolkit::Text::LayoutEngine::VerticalAlignment >( impl.mController->GetLayoutEngine().GetVerticalAlignment(),
+          value = std::string( Scripting::GetEnumerationName< Toolkit::Text::LayoutEngine::VerticalAlignment >( impl.mController->GetVerticalAlignment(),
                                                                                                                 VERTICAL_ALIGNMENT_STRING_TABLE,
                                                                                                                 VERTICAL_ALIGNMENT_STRING_TABLE_COUNT ) );
         }
@@ -432,7 +441,7 @@ void TextLabel::OnInitialize()
   engine.SetTextEllipsisEnabled( true );
 }
 
-void TextLabel::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change )
+void TextLabel::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change )
 {
   GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
 }
@@ -485,6 +494,11 @@ void TextLabel::RequestTextRelayout()
   RelayoutRequest();
 }
 
+void TextLabel::TextChanged()
+{
+  // TextLabel does not provide a signal for this
+}
+
 void TextLabel::MaxLengthReached()
 {
   // Pure Virtual from TextController Interface, only needed when inputting text
index 528a16f..fdb02a9 100644 (file)
@@ -75,7 +75,7 @@ private: // From Control
   /**
    * @copydoc Control::OnStyleChange()
    */
-  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change );
+  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change );
 
   /**
    * @copydoc Control::OnRelayout()
@@ -98,6 +98,11 @@ private: // From Control
   virtual void RequestTextRelayout();
 
   /**
+   * @copydoc Text::ControlInterface::TextChanged()
+   */
+  virtual void TextChanged();
+
+  /**
    * @copydoc Text::ControlInterface::MaxLengthReached()
    */
   virtual void MaxLengthReached();
index 0753579..892c563 100644 (file)
@@ -21,7 +21,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
 #include <dali-toolkit/public-api/controls/table-view/table-view.h>
-#include <dali-toolkit/public-api/controls/text-controls/text-selection-popup.h>
+#include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
 
 // EXTERNAL INCLUDES
 #include <dali/public-api/actors/image-actor.h>
index d9e85c5..1dc683b 100644 (file)
@@ -26,7 +26,6 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/alignment/alignment.h>
-#include <dali-toolkit/public-api/controls/table-view/table-view.h>
 
 namespace Dali
 {
@@ -67,25 +66,6 @@ Toolkit::ToolBar ToolBar::New()
   return toolBar;
 }
 
-void ToolBar::SetBackground( Actor background )
-{
-  Lock lock( mInitializing );
-
-  // ToolBar image
-  background.SetParentOrigin( Dali::ParentOrigin::TOP_CENTER );
-  background.SetAnchorPoint( Dali::AnchorPoint::TOP_CENTER );
-  background.SetSize( Vector2( mToolBarSize.width, mToolBarSize.height ) );
-
-  ImageActor renderableActor = ImageActor::DownCast( background );
-  if ( renderableActor )
-  {
-    renderableActor.SetSortModifier( 1.f );
-  }
-
-  Self().Add( background );
-  mBackground = background;
-}
-
 void ToolBar::AddControl( Actor control, float relativeSize, Toolkit::Alignment::Type alignment, const Toolkit::Alignment::Padding& padding )
 {
   // Work out index and update bases and offsets for further insertions.
@@ -356,12 +336,6 @@ void ToolBar::OnControlChildAdd(Actor& child)
   // actor is in mLayout not in Self().
 }
 
-void ToolBar::OnControlSizeSet( const Vector3& targetSize )
-{
-  mToolBarSize = targetSize;
-  mBackground.SetSize( Vector2( mToolBarSize.width, mToolBarSize.height ) );
-}
-
 } // namespace Internal
 
 } // namespace Toolkit
index 7fa6b3a..7caaed5 100644 (file)
@@ -23,8 +23,8 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/tool-bar/tool-bar.h>
 #include <dali-toolkit/public-api/controls/table-view/table-view.h>
+#include <dali-toolkit/devel-api/controls/tool-bar/tool-bar.h>
 
 namespace Dali
 {
@@ -52,11 +52,6 @@ public:
   static Toolkit::ToolBar New();
 
   /**
-   * @copydoc Dali::Toolkit::ToolBar::SetBackground()
-   */
-  void SetBackground( Actor background );
-
-  /**
    * @copydoc Dali::Toolkit::ToolBar::AddControl()
    */
   void AddControl( Dali::Actor control, float relativeSize, Toolkit::Alignment::Type alignment, const Toolkit::Alignment::Padding& padding );
@@ -81,12 +76,6 @@ private: // From Control
    */
   virtual void OnControlChildAdd(Actor& child);
 
-  /**
-   *
-   * @copydoc Toolkit::Control::OnControlSizeSet( const Vector3& targetSize )
-   */
-  virtual void OnControlSizeSet( const Vector3& targetSize );
-
 private:
   /**
    */
@@ -135,8 +124,6 @@ private:
   float              mRightRelativeSpace;       ///< Relative space between center and right groups of controls.
   float              mAccumulatedRelativeSpace; ///< Stores the total percentage space used by controls.
   bool               mInitializing;             ///< Allows the use of Actor's API to add controls.
-  Vector3            mToolBarSize;              ///< The size of tool bar
-  Actor              mBackground;               ///< The background of the tool bar
 
   std::map<Actor/*control*/,Toolkit::Alignment> mControls; ///< Stores a relationship between controls and their alignments used to place them inside the table view.
 };
index 1887934..e48339e 100644 (file)
@@ -22,7 +22,6 @@ toolkit_src_files = \
    $(toolkit_src_dir)/controls/buttons/radio-button-impl.cpp \
    $(toolkit_src_dir)/controls/effects-view/effects-view-impl.cpp \
    $(toolkit_src_dir)/controls/gaussian-blur-view/gaussian-blur-view-impl.cpp \
-   $(toolkit_src_dir)/controls/image-view/masked-image-view-impl.cpp \
    $(toolkit_src_dir)/controls/magnifier/magnifier-impl.cpp \
    $(toolkit_src_dir)/controls/popup/popup-impl.cpp \
    $(toolkit_src_dir)/controls/popup/popup-style-impl.cpp \
@@ -50,7 +49,7 @@ toolkit_src_files = \
    $(toolkit_src_dir)/controls/text-controls/text-label-impl.cpp \
    $(toolkit_src_dir)/controls/text-controls/text-selection-popup-impl.cpp \
    $(toolkit_src_dir)/controls/tool-bar/tool-bar-impl.cpp \
-   $(toolkit_src_dir)/focus-manager/focus-manager-impl.cpp \
+   $(toolkit_src_dir)/focus-manager/accessibility-focus-manager-impl.cpp \
    $(toolkit_src_dir)/focus-manager/keyboard-focus-manager-impl.cpp \
    $(toolkit_src_dir)/focus-manager/keyinput-focus-manager-impl.cpp \
    $(toolkit_src_dir)/filters/blur-two-pass-filter.cpp \
index 5a07ded..bc4b164 100644 (file)
@@ -22,7 +22,7 @@
 
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/controls/effects-view/effects-view.h>
+#include <dali-toolkit/devel-api/controls/effects-view/effects-view.h>
 
 namespace Dali
 {
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -16,7 +16,7 @@
  */
 
 // CLASS HEADER
-#include "focus-manager-impl.h"
+#include "accessibility-focus-manager-impl.h"
 
 // EXTERNAL INCLUDES
 #include <cstring> // for strcmp
@@ -107,7 +107,7 @@ bool IsActorFocusableFunction(Actor actor, Dali::HitTestAlgorithm::TraverseType
 
 }
 
-FocusManager::FocusManager()
+AccessibilityFocusManager::AccessibilityFocusManager()
 : mIsWrapped(false),
   mIsFocusWithinGroup(false),
   mIsEndcapFeedbackEnabled(false),
@@ -127,11 +127,11 @@ FocusManager::FocusManager()
   ChangeAccessibilityStatus();
 }
 
-FocusManager::~FocusManager()
+AccessibilityFocusManager::~AccessibilityFocusManager()
 {
 }
 
-FocusManager::ActorAdditionalInfo FocusManager::GetActorAdditionalInfo(const unsigned int actorID) const
+AccessibilityFocusManager::ActorAdditionalInfo AccessibilityFocusManager::GetActorAdditionalInfo(const unsigned int actorID) const
 {
   ActorAdditionalInfo data;
   IDAdditionalInfoConstIter iter = mIDAdditionalInfoContainer.find(actorID);
@@ -143,7 +143,7 @@ FocusManager::ActorAdditionalInfo FocusManager::GetActorAdditionalInfo(const uns
   return data;
 }
 
-void FocusManager::SynchronizeActorAdditionalInfo(const unsigned int actorID, const unsigned int order)
+void AccessibilityFocusManager::SynchronizeActorAdditionalInfo(const unsigned int actorID, const unsigned int order)
 {
   ActorAdditionalInfo actorInfo = GetActorAdditionalInfo(actorID);
   actorInfo.mFocusOrder = order;
@@ -151,7 +151,7 @@ void FocusManager::SynchronizeActorAdditionalInfo(const unsigned int actorID, co
   mIDAdditionalInfoContainer.insert(IDAdditionalInfoPair(actorID, actorInfo));
 }
 
-void FocusManager::SetAccessibilityAttribute(Actor actor, Toolkit::FocusManager::AccessibilityAttribute type, const std::string& text)
+void AccessibilityFocusManager::SetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityFocusManager::AccessibilityAttribute type, const std::string& text)
 {
   if(actor)
   {
@@ -165,7 +165,7 @@ void FocusManager::SetAccessibilityAttribute(Actor actor, Toolkit::FocusManager:
   }
 }
 
-std::string FocusManager::GetAccessibilityAttribute(Actor actor, Toolkit::FocusManager::AccessibilityAttribute type) const
+std::string AccessibilityFocusManager::GetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityFocusManager::AccessibilityAttribute type) const
 {
   std::string text;
 
@@ -178,7 +178,7 @@ std::string FocusManager::GetAccessibilityAttribute(Actor actor, Toolkit::FocusM
   return text;
 }
 
-void FocusManager::SetFocusOrder(Actor actor, const unsigned int order)
+void AccessibilityFocusManager::SetFocusOrder(Actor actor, const unsigned int order)
 {
   // Do nothing if the focus order of the actor is not changed.
   if(actor && GetFocusOrder(actor) != order)
@@ -245,7 +245,7 @@ void FocusManager::SetFocusOrder(Actor actor, const unsigned int order)
   }
 }
 
-unsigned int FocusManager::GetFocusOrder(Actor actor) const
+unsigned int AccessibilityFocusManager::GetFocusOrder(Actor actor) const
 {
   unsigned int focusOrder = 0;
 
@@ -258,7 +258,7 @@ unsigned int FocusManager::GetFocusOrder(Actor actor) const
   return focusOrder;
 }
 
-unsigned int FocusManager::GenerateNewFocusOrder() const
+unsigned int AccessibilityFocusManager::GenerateNewFocusOrder() const
 {
   unsigned int order = 1;
   FocusIDContainer::const_reverse_iterator iter = mFocusIDContainer.rbegin();
@@ -271,7 +271,7 @@ unsigned int FocusManager::GenerateNewFocusOrder() const
   return order;
 }
 
-Actor FocusManager::GetActorByFocusOrder(const unsigned int order)
+Actor AccessibilityFocusManager::GetActorByFocusOrder(const unsigned int order)
 {
   Actor actor = Actor();
 
@@ -285,7 +285,7 @@ Actor FocusManager::GetActorByFocusOrder(const unsigned int order)
   return actor;
 }
 
-bool FocusManager::SetCurrentFocusActor(Actor actor)
+bool AccessibilityFocusManager::SetCurrentFocusActor(Actor actor)
 {
   if(actor)
   {
@@ -295,7 +295,7 @@ bool FocusManager::SetCurrentFocusActor(Actor actor)
   return false;
 }
 
-bool FocusManager::DoSetCurrentFocusActor(const unsigned int actorID)
+bool AccessibilityFocusManager::DoSetCurrentFocusActor(const unsigned int actorID)
 {
   Actor rootActor = Stage::GetCurrent().GetRootLayer();
 
@@ -364,7 +364,7 @@ bool FocusManager::DoSetCurrentFocusActor(const unsigned int actorID)
 
         // Combine attribute texts to one text
         std::string informationText;
-        for(int i = 0; i < Toolkit::FocusManager::ACCESSIBILITY_ATTRIBUTE_NUM; i++)
+        for(int i = 0; i < Toolkit::AccessibilityFocusManager::ACCESSIBILITY_ATTRIBUTE_NUM; i++)
         {
           if(!GetActorAdditionalInfo(actorID).mAccessibilityAttributes[i].empty())
           {
@@ -386,23 +386,23 @@ bool FocusManager::DoSetCurrentFocusActor(const unsigned int actorID)
   return false;
 }
 
-Actor FocusManager::GetCurrentFocusActor()
+Actor AccessibilityFocusManager::GetCurrentFocusActor()
 {
   Actor rootActor = Stage::GetCurrent().GetRootLayer();
   return rootActor.FindChildById(mCurrentFocusActor.second);
 }
 
-Actor FocusManager::GetCurrentFocusGroup()
+Actor AccessibilityFocusManager::GetCurrentFocusGroup()
 {
   return GetFocusGroup(GetCurrentFocusActor());
 }
 
-unsigned int FocusManager::GetCurrentFocusOrder()
+unsigned int AccessibilityFocusManager::GetCurrentFocusOrder()
 {
   return mCurrentFocusActor.first;
 }
 
-bool FocusManager::MoveFocusForward()
+bool AccessibilityFocusManager::MoveFocusForward()
 {
   bool ret = false;
   mRecursiveFocusMoveCounter = 0;
@@ -430,7 +430,7 @@ bool FocusManager::MoveFocusForward()
   return ret;
 }
 
-bool FocusManager::MoveFocusBackward()
+bool AccessibilityFocusManager::MoveFocusBackward()
 {
   bool ret = false;
   mRecursiveFocusMoveCounter = 0;
@@ -459,7 +459,7 @@ bool FocusManager::MoveFocusBackward()
   return ret;
 }
 
-void FocusManager::DoActivate(Actor actor)
+void AccessibilityFocusManager::DoActivate(Actor actor)
 {
   if(actor)
   {
@@ -467,7 +467,7 @@ void FocusManager::DoActivate(Actor actor)
     if(control)
     {
       // Notify the control that it is activated
-      control.GetImplementation().Activate();
+      GetImplementation( control ).AccessibilityActivate();
     }
 
     // Send notification for the activation of focused actor
@@ -475,7 +475,7 @@ void FocusManager::DoActivate(Actor actor)
   }
 }
 
-void FocusManager::ClearFocus()
+void AccessibilityFocusManager::ClearFocus()
 {
   Actor actor = GetCurrentFocusActor();
   if(actor)
@@ -496,14 +496,14 @@ void FocusManager::ClearFocus()
   }
 }
 
-void FocusManager::Reset()
+void AccessibilityFocusManager::Reset()
 {
   ClearFocus();
   mFocusIDContainer.clear();
   mIDAdditionalInfoContainer.clear();
 }
 
-void FocusManager::SetFocusGroup(Actor actor, bool isFocusGroup)
+void AccessibilityFocusManager::SetFocusGroup(Actor actor, bool isFocusGroup)
 {
   if(actor)
   {
@@ -520,7 +520,7 @@ void FocusManager::SetFocusGroup(Actor actor, bool isFocusGroup)
   }
 }
 
-bool FocusManager::IsFocusGroup(Actor actor) const
+bool AccessibilityFocusManager::IsFocusGroup(Actor actor) const
 {
   // Check whether the actor is a focus group
   bool isFocusGroup = false;
@@ -537,7 +537,7 @@ bool FocusManager::IsFocusGroup(Actor actor) const
   return isFocusGroup;
 }
 
-Actor FocusManager::GetFocusGroup(Actor actor)
+Actor AccessibilityFocusManager::GetFocusGroup(Actor actor)
 {
   // Go through the actor's hierarchy to check which focus group the actor belongs to
   while (actor && !IsFocusGroup(actor))
@@ -548,37 +548,37 @@ Actor FocusManager::GetFocusGroup(Actor actor)
   return actor;
 }
 
-void FocusManager::SetGroupMode(bool enabled)
+void AccessibilityFocusManager::SetGroupMode(bool enabled)
 {
   mIsFocusWithinGroup = enabled;
 }
 
-bool FocusManager::GetGroupMode() const
+bool AccessibilityFocusManager::GetGroupMode() const
 {
   return mIsFocusWithinGroup;
 }
 
-void FocusManager::SetWrapMode(bool wrapped)
+void AccessibilityFocusManager::SetWrapMode(bool wrapped)
 {
   mIsWrapped = wrapped;
 }
 
-bool FocusManager::GetWrapMode() const
+bool AccessibilityFocusManager::GetWrapMode() const
 {
   return mIsWrapped;
 }
 
-void FocusManager::SetFocusIndicatorActor(Actor indicator)
+void AccessibilityFocusManager::SetFocusIndicatorActor(Actor indicator)
 {
   mFocusIndicatorActor = indicator;
 }
 
-Actor FocusManager::GetFocusIndicatorActor()
+Actor AccessibilityFocusManager::GetFocusIndicatorActor()
 {
   return mFocusIndicatorActor;
 }
 
-bool FocusManager::DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapped)
+bool AccessibilityFocusManager::DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapped)
 {
   DALI_LOG_INFO( gLogFilter, Debug::General, "[%s:%d] %d focusable actors\n", __FUNCTION__, __LINE__, mFocusIDContainer.size());
   DALI_LOG_INFO( gLogFilter, Debug::General, "[%s:%d] focus order : %d\n", __FUNCTION__, __LINE__, (*focusIDIter).first);
@@ -619,7 +619,7 @@ bool FocusManager::DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapp
     {
       DALI_LOG_INFO( gLogFilter, Debug::General, "[%s:%d] Overshot\n", __FUNCTION__, __LINE__);
       // Send notification for handling overshooted situation
-      mFocusOvershotSignal.Emit(GetCurrentFocusActor(), forward ? Toolkit::FocusManager::OVERSHOT_NEXT : Toolkit::FocusManager::OVERSHOT_PREVIOUS);
+      mFocusOvershotSignal.Emit(GetCurrentFocusActor(), forward ? Toolkit::AccessibilityFocusManager::OVERSHOT_NEXT : Toolkit::AccessibilityFocusManager::OVERSHOT_PREVIOUS);
 
       return false; // Try to move the focus out of the scope
     }
@@ -646,7 +646,7 @@ bool FocusManager::DoMoveFocus(FocusIDIter focusIDIter, bool forward, bool wrapp
   return true;
 }
 
-void FocusManager::SetFocusable(Actor actor, bool focusable)
+void AccessibilityFocusManager::SetFocusable(Actor actor, bool focusable)
 {
   if(actor)
   {
@@ -663,7 +663,7 @@ void FocusManager::SetFocusable(Actor actor, bool focusable)
   }
 }
 
-void FocusManager::CreateDefaultFocusIndicatorActor()
+void AccessibilityFocusManager::CreateDefaultFocusIndicatorActor()
 {
   // Create a focus indicator actor shared by all the focusable actors
   Image borderImage = ResourceImage::New(FOCUS_BORDER_IMAGE_PATH);
@@ -680,7 +680,7 @@ void FocusManager::CreateDefaultFocusIndicatorActor()
   SetFocusIndicatorActor(focusIndicator);
 }
 
-bool FocusManager::ChangeAccessibilityStatus()
+bool AccessibilityFocusManager::ChangeAccessibilityStatus()
 {
   AccessibilityManager manager = AccessibilityManager::Get();
   mIsAccessibilityTtsEnabled = manager.IsEnabled();
@@ -712,7 +712,7 @@ bool FocusManager::ChangeAccessibilityStatus()
   return true;
 }
 
-bool FocusManager::AccessibilityActionNext(bool allowEndFeedback)
+bool AccessibilityFocusManager::AccessibilityActionNext(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
@@ -725,7 +725,7 @@ bool FocusManager::AccessibilityActionNext(bool allowEndFeedback)
   }
 }
 
-bool FocusManager::AccessibilityActionPrevious(bool allowEndFeedback)
+bool AccessibilityFocusManager::AccessibilityActionPrevious(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
@@ -738,7 +738,7 @@ bool FocusManager::AccessibilityActionPrevious(bool allowEndFeedback)
   }
 }
 
-bool FocusManager::AccessibilityActionActivate()
+bool AccessibilityFocusManager::AccessibilityActionActivate()
 {
   bool ret = false;
 
@@ -752,7 +752,7 @@ bool FocusManager::AccessibilityActionActivate()
   return ret;
 }
 
-bool FocusManager::AccessibilityActionRead(bool allowReadAgain)
+bool AccessibilityFocusManager::AccessibilityActionRead(bool allowReadAgain)
 {
   bool ret = false;
 
@@ -778,7 +778,7 @@ bool FocusManager::AccessibilityActionRead(bool allowReadAgain)
   return ret;
 }
 
-bool FocusManager::AccessibilityActionReadNext(bool allowEndFeedback)
+bool AccessibilityFocusManager::AccessibilityActionReadNext(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
@@ -790,7 +790,7 @@ bool FocusManager::AccessibilityActionReadNext(bool allowEndFeedback)
   }
 }
 
-bool FocusManager::AccessibilityActionReadPrevious(bool allowEndFeedback)
+bool AccessibilityFocusManager::AccessibilityActionReadPrevious(bool allowEndFeedback)
 {
   if(mIsAccessibilityTtsEnabled)
   {
@@ -802,7 +802,7 @@ bool FocusManager::AccessibilityActionReadPrevious(bool allowEndFeedback)
   }
 }
 
-bool FocusManager::AccessibilityActionUp()
+bool AccessibilityFocusManager::AccessibilityActionUp()
 {
   bool ret = false;
 
@@ -815,7 +815,7 @@ bool FocusManager::AccessibilityActionUp()
       if(control)
       {
         // Notify the control that it is activated
-        ret = control.GetImplementation().OnAccessibilityValueChange(true);
+        ret = GetImplementation( control ).OnAccessibilityValueChange(true);
       }
     }
   }
@@ -823,7 +823,7 @@ bool FocusManager::AccessibilityActionUp()
   return ret;
 }
 
-bool FocusManager::AccessibilityActionDown()
+bool AccessibilityFocusManager::AccessibilityActionDown()
 {
   bool ret = false;
 
@@ -836,7 +836,7 @@ bool FocusManager::AccessibilityActionDown()
       if(control)
       {
         // Notify the control that it is activated
-        ret = control.GetImplementation().OnAccessibilityValueChange(false);
+        ret = GetImplementation( control ).OnAccessibilityValueChange(false);
       }
     }
   }
@@ -844,7 +844,7 @@ bool FocusManager::AccessibilityActionDown()
   return ret;
 }
 
-bool FocusManager::ClearAccessibilityFocus()
+bool AccessibilityFocusManager::ClearAccessibilityFocus()
 {
   if(mIsAccessibilityTtsEnabled)
   {
@@ -857,14 +857,14 @@ bool FocusManager::ClearAccessibilityFocus()
   }
 }
 
-bool FocusManager::AccessibilityActionBack()
+bool AccessibilityFocusManager::AccessibilityActionBack()
 {
   // TODO: Back to previous view
 
   return mIsAccessibilityTtsEnabled;
 }
 
-bool FocusManager::AccessibilityActionTouch(const TouchEvent& touchEvent)
+bool AccessibilityFocusManager::AccessibilityActionTouch(const TouchEvent& touchEvent)
 {
   bool handled = false;
 
@@ -873,13 +873,13 @@ bool FocusManager::AccessibilityActionTouch(const TouchEvent& touchEvent)
   Dali::Toolkit::Control control = Dali::Toolkit::Control::DownCast(GetCurrentFocusActor());
   if(control)
   {
-    handled = control.GetImplementation().OnAccessibilityTouch(touchEvent);
+    handled = GetImplementation( control ).OnAccessibilityTouch(touchEvent);
   }
 
   return handled;
 }
 
-bool FocusManager::HandlePanGesture(const Integration::PanGestureEvent& panEvent)
+bool AccessibilityFocusManager::HandlePanGesture(const Integration::PanGestureEvent& panEvent)
 {
   bool handled = false;
 
@@ -933,7 +933,7 @@ bool FocusManager::HandlePanGesture(const Integration::PanGestureEvent& panEvent
       pan.velocity.x = pan.displacement.x / panEvent.timeDelta;
       pan.velocity.y = pan.displacement.y / panEvent.timeDelta;
 
-      handled = control.GetImplementation().OnAccessibilityPan(pan);
+      handled = GetImplementation( control ).OnAccessibilityPan(pan);
     }
 
     // If the gesture is not handled by the control, check its parent
@@ -956,27 +956,27 @@ bool FocusManager::HandlePanGesture(const Integration::PanGestureEvent& panEvent
   return handled;
 }
 
-Toolkit::FocusManager::FocusChangedSignalType& FocusManager::FocusChangedSignal()
+Toolkit::AccessibilityFocusManager::FocusChangedSignalType& AccessibilityFocusManager::FocusChangedSignal()
 {
   return mFocusChangedSignal;
 }
 
-Toolkit::FocusManager::FocusOvershotSignalType& FocusManager::FocusOvershotSignal()
+Toolkit::AccessibilityFocusManager::FocusOvershotSignalType& AccessibilityFocusManager::FocusOvershotSignal()
 {
   return mFocusOvershotSignal;
 }
 
-Toolkit::FocusManager::FocusedActorActivatedSignalType& FocusManager::FocusedActorActivatedSignal()
+Toolkit::AccessibilityFocusManager::FocusedActorActivatedSignalType& AccessibilityFocusManager::FocusedActorActivatedSignal()
 {
   return mFocusedActorActivatedSignal;
 }
 
-bool FocusManager::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
+bool AccessibilityFocusManager::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
 {
   Dali::BaseHandle handle( object );
 
   bool connected( true );
-  FocusManager* manager = dynamic_cast<FocusManager*>( object );
+  AccessibilityFocusManager* manager = dynamic_cast<AccessibilityFocusManager*>( object );
 
   if( 0 == strcmp( signalName.c_str(), SIGNAL_FOCUS_CHANGED ) )
   {
@@ -1,8 +1,8 @@
-#ifndef __DALI_TOOLKIT_INTERNAL_FOCUS_MANAGER_H__
-#define __DALI_TOOLKIT_INTERNAL_FOCUS_MANAGER_H__
+#ifndef __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_FOCUS_MANAGER_H__
+#define __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_FOCUS_MANAGER_H__
 
 /*
- * Copyright (c) 2014 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
  *
  * Licensed under the Apache License, Version 2.0 (the "License");
  * you may not use this file except in compliance with the License.
@@ -27,7 +27,7 @@
 #include <dali/integration-api/events/pan-gesture-event.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/focus-manager/focus-manager.h>
+#include <dali-toolkit/public-api/focus-manager/accessibility-focus-manager.h>
 
 namespace Dali
 {
@@ -38,12 +38,12 @@ namespace Toolkit
 namespace Internal
 {
 
-class FocusManager;
+class AccessibilityFocusManager;
 
 /**
- * @copydoc Toolkit::FocusManager
+ * @copydoc Toolkit::AccessibilityFocusManager
  */
-class FocusManager : public Dali::BaseObject, Dali::AccessibilityActionHandler, Dali::AccessibilityGestureHandler
+class AccessibilityFocusManager : public Dali::BaseObject, Dali::AccessibilityActionHandler, Dali::AccessibilityGestureHandler
 {
 public:
 
@@ -56,7 +56,7 @@ public:
 
     unsigned int mFocusOrder; ///< The focus order of the actor. It is undefined by default.
 
-    std::string mAccessibilityAttributes[Toolkit::FocusManager::ACCESSIBILITY_ATTRIBUTE_NUM]; ///< The array of attribute texts
+    std::string mAccessibilityAttributes[Toolkit::AccessibilityFocusManager::ACCESSIBILITY_ATTRIBUTE_NUM]; ///< The array of attribute texts
   };
 
   typedef std::pair<unsigned int, unsigned int>        FocusIDPair;
@@ -70,141 +70,141 @@ public:
   typedef IDAdditionalInfoContainer::const_iterator    IDAdditionalInfoConstIter;
 
   /**
-   * Construct a new FocusManager.
+   * Construct a new AccessibilityFocusManager.
    */
-  FocusManager();
+  AccessibilityFocusManager();
 
   /**
-   * @copydoc Toolkit::FocusManager::SetAccessibilityAttribute
+   * @copydoc Toolkit::AccessibilityFocusManager::SetAccessibilityAttribute
    */
-  void SetAccessibilityAttribute(Actor actor, Toolkit::FocusManager::AccessibilityAttribute type, const std::string& text);
+  void SetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityFocusManager::AccessibilityAttribute type, const std::string& text);
 
   /**
-   * @copydoc Toolkit::FocusManager::GetAccessibilityAttribute
+   * @copydoc Toolkit::AccessibilityFocusManager::GetAccessibilityAttribute
    */
-  std::string GetAccessibilityAttribute(Actor actor, Toolkit::FocusManager::AccessibilityAttribute type) const;
+  std::string GetAccessibilityAttribute(Actor actor, Toolkit::AccessibilityFocusManager::AccessibilityAttribute type) const;
 
   /**
-   * @copydoc Toolkit::FocusManager::SetFocusOrder
+   * @copydoc Toolkit::AccessibilityFocusManager::SetFocusOrder
    */
   void SetFocusOrder(Actor actor, const unsigned int order);
 
   /**
-   * @copydoc Toolkit::FocusManager::GetFocusOrder
+   * @copydoc Toolkit::AccessibilityFocusManager::GetFocusOrder
    */
   unsigned int GetFocusOrder(Actor actor) const;
 
   /**
-   * @copydoc Toolkit::FocusManager::GenerateNewFocusOrder
+   * @copydoc Toolkit::AccessibilityFocusManager::GenerateNewFocusOrder
    */
   unsigned int GenerateNewFocusOrder() const;
 
   /**
-   * @copydoc Toolkit::FocusManager::GetActorByFocusOrder
+   * @copydoc Toolkit::AccessibilityFocusManager::GetActorByFocusOrder
    */
   Actor GetActorByFocusOrder(const unsigned int order);
 
   /**
-   * @copydoc Toolkit::FocusManager::SetCurrentFocusActor
+   * @copydoc Toolkit::AccessibilityFocusManager::SetCurrentFocusActor
    */
   bool SetCurrentFocusActor(Actor actor);
 
   /**
-   * @copydoc Toolkit::FocusManager::GetCurrentFocusActor
+   * @copydoc Toolkit::AccessibilityFocusManager::GetCurrentFocusActor
    */
   Actor GetCurrentFocusActor();
 
   /**
-   * @copydoc Toolkit::FocusManager::GetCurrentFocusGroup
+   * @copydoc Toolkit::AccessibilityFocusManager::GetCurrentFocusGroup
    */
   Actor GetCurrentFocusGroup();
 
   /**
-   * @copydoc Toolkit::FocusManager::GetCurrentFocusOrder
+   * @copydoc Toolkit::AccessibilityFocusManager::GetCurrentFocusOrder
    */
   unsigned int GetCurrentFocusOrder();
 
   /**
-   * @copydoc Toolkit::FocusManager::MoveFocusForward
+   * @copydoc Toolkit::AccessibilityFocusManager::MoveFocusForward
    */
   bool MoveFocusForward();
 
   /**
-   * @copydoc Toolkit::FocusManager::MoveFocusBackward
+   * @copydoc Toolkit::AccessibilityFocusManager::MoveFocusBackward
    */
   bool MoveFocusBackward();
 
   /**
-   * @copydoc Toolkit::FocusManager::ClearFocus
+   * @copydoc Toolkit::AccessibilityFocusManager::ClearFocus
    */
   void ClearFocus();
 
   /**
-   * @copydoc Toolkit::FocusManager::Reset
+   * @copydoc Toolkit::AccessibilityFocusManager::Reset
    */
   void Reset();
 
   /**
-   * @copydoc Toolkit::FocusManager::SetFocusGroup
+   * @copydoc Toolkit::AccessibilityFocusManager::SetFocusGroup
    */
   void SetFocusGroup(Actor actor, bool isFocusGroup);
 
   /**
-   * @copydoc Toolkit::FocusManager::IsFocusGroup
+   * @copydoc Toolkit::AccessibilityFocusManager::IsFocusGroup
    */
   bool IsFocusGroup(Actor actor) const;
 
   /**
-   * @copydoc Toolkit::FocusManager::SetGroupMode
+   * @copydoc Toolkit::AccessibilityFocusManager::SetGroupMode
    */
   void SetGroupMode(bool enabled);
 
   /**
-   * @copydoc Toolkit::FocusManager::GetGroupMode
+   * @copydoc Toolkit::AccessibilityFocusManager::GetGroupMode
    */
   bool GetGroupMode() const;
 
   /**
-   * @copydoc Toolkit::FocusManager::SetWrapMode
+   * @copydoc Toolkit::AccessibilityFocusManager::SetWrapMode
    */
   void SetWrapMode(bool wrapped);
 
   /**
-   * @copydoc Toolkit::FocusManager::GetWrapMode
+   * @copydoc Toolkit::AccessibilityFocusManager::GetWrapMode
    */
   bool GetWrapMode() const;
 
   /**
-   * @copydoc Toolkit::FocusManager::SetFocusIndicatorActor
+   * @copydoc Toolkit::AccessibilityFocusManager::SetFocusIndicatorActor
    */
   void SetFocusIndicatorActor(Actor indicator);
 
   /**
-   * @copydoc Toolkit::FocusManager::GetFocusIndicatorActor
+   * @copydoc Toolkit::AccessibilityFocusManager::GetFocusIndicatorActor
    */
   Actor GetFocusIndicatorActor();
 
   /**
-   * @copydoc Toolkit::FocusManager::GetFocusGroup
+   * @copydoc Toolkit::AccessibilityFocusManager::GetFocusGroup
    */
   Actor GetFocusGroup(Actor actor);
 
 public:
 
   /**
-   * @copydoc Toolkit::FocusManager::FocusChangedSignal()
+   * @copydoc Toolkit::AccessibilityFocusManager::FocusChangedSignal()
    */
-  Toolkit::FocusManager::FocusChangedSignalType& FocusChangedSignal();
+  Toolkit::AccessibilityFocusManager::FocusChangedSignalType& FocusChangedSignal();
 
   /**
-   * @copydoc Toolkit::FocusManager::FocusOvershotSignal()
+   * @copydoc Toolkit::AccessibilityFocusManager::FocusOvershotSignal()
    */
-  Toolkit::FocusManager::FocusOvershotSignalType& FocusOvershotSignal();
+  Toolkit::AccessibilityFocusManager::FocusOvershotSignalType& FocusOvershotSignal();
 
   /**
-   * @copydoc Toolkit::FocusManager::FocusedActorActivatedSignal()
+   * @copydoc Toolkit::AccessibilityFocusManager::FocusedActorActivatedSignal()
    */
-  Toolkit::FocusManager::FocusedActorActivatedSignalType& FocusedActorActivatedSignal();
+  Toolkit::AccessibilityFocusManager::FocusedActorActivatedSignalType& FocusedActorActivatedSignal();
 
   /**
    * Connects a callback function with the object's signals.
@@ -222,7 +222,7 @@ protected:
   /**
    * Destructor
    */
-  virtual ~FocusManager();
+  virtual ~AccessibilityFocusManager();
 
 private:
 
@@ -368,15 +368,15 @@ private:
 private:
 
   // Undefined
-  FocusManager(const FocusManager&);
+  AccessibilityFocusManager(const AccessibilityFocusManager&);
 
-  FocusManager& operator=(const FocusManager& rhs);
+  AccessibilityFocusManager& operator=(const AccessibilityFocusManager& rhs);
 
 private:
 
-  Toolkit::FocusManager::FocusChangedSignalType mFocusChangedSignal; ///< The signal to notify the focus change
-  Toolkit::FocusManager::FocusOvershotSignalType mFocusOvershotSignal; ///< The signal to notify the focus overshooted
-  Toolkit::FocusManager::FocusedActorActivatedSignalType mFocusedActorActivatedSignal; ///< The signal to notify the activation of focused actor
+  Toolkit::AccessibilityFocusManager::FocusChangedSignalType mFocusChangedSignal; ///< The signal to notify the focus change
+  Toolkit::AccessibilityFocusManager::FocusOvershotSignalType mFocusOvershotSignal; ///< The signal to notify the focus overshooted
+  Toolkit::AccessibilityFocusManager::FocusedActorActivatedSignalType mFocusedActorActivatedSignal; ///< The signal to notify the activation of focused actor
 
   bool mIsWrapped; ///< Whether the focus movement is wrapped around or not
   bool mIsFocusWithinGroup; ///< Whether the focus movement is limited to the current focus group or not
@@ -403,26 +403,26 @@ private:
 
 } // namespace Internal
 
-inline Internal::FocusManager& GetImpl(Dali::Toolkit::FocusManager& obj)
+inline Internal::AccessibilityFocusManager& GetImpl(Dali::Toolkit::AccessibilityFocusManager& obj)
 {
   DALI_ASSERT_ALWAYS(obj);
 
   Dali::BaseObject& handle = obj.GetBaseObject();
 
-  return static_cast<Internal::FocusManager&>(handle);
+  return static_cast<Internal::AccessibilityFocusManager&>(handle);
 }
 
-inline const Internal::FocusManager& GetImpl(const Dali::Toolkit::FocusManager& obj)
+inline const Internal::AccessibilityFocusManager& GetImpl(const Dali::Toolkit::AccessibilityFocusManager& obj)
 {
   DALI_ASSERT_ALWAYS(obj);
 
   const Dali::BaseObject& handle = obj.GetBaseObject();
 
-  return static_cast<const Internal::FocusManager&>(handle);
+  return static_cast<const Internal::AccessibilityFocusManager&>(handle);
 }
 
 } // namespace Toolkit
 
 } // namespace Dali
 
-#endif // __DALI_TOOLKIT_INTERNAL_FOCUS_MANAGER_H__
+#endif // __DALI_TOOLKIT_INTERNAL_ACCESSIBILITY_FOCUS_MANAGER_H__
index facff71..19573e8 100644 (file)
@@ -34,8 +34,8 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control.h>
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/focus-manager/focus-manager.h>
-#include <dali-toolkit/public-api/focus-manager/keyinput-focus-manager.h>
+#include <dali-toolkit/public-api/focus-manager/accessibility-focus-manager.h>
+#include <dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h>
 
 namespace Dali
 {
@@ -168,10 +168,6 @@ bool KeyboardFocusManager::DoSetCurrentFocusActor(const unsigned int actorID)
       // Save the current focused actor
       mCurrentFocusActor = actorID;
 
-      // Move the accessibility focus to the same actor
-//      Toolkit::FocusManager focusManager = Toolkit::FocusManager::Get();
-//      focusManager.SetCurrentFocusActor(actor);
-
       DALI_LOG_INFO( gLogFilter, Debug::General, "[%s:%d] SUCCEED\n", __FUNCTION__, __LINE__);
       return true;
     }
@@ -195,7 +191,7 @@ Actor KeyboardFocusManager::GetCurrentFocusGroup()
 bool KeyboardFocusManager::IsLayoutControl(Actor actor) const
 {
   Toolkit::Control control = Toolkit::Control::DownCast(actor);
-  return control && control.GetImplementation().IsKeyboardNavigationSupported();
+  return control && GetImplementation( control ).IsKeyboardNavigationSupported();
 }
 
 Toolkit::Control KeyboardFocusManager::GetParentLayoutControl(Actor actor) const
@@ -216,7 +212,7 @@ Toolkit::Control KeyboardFocusManager::GetParentLayoutControl(Actor actor) const
   return Toolkit::Control::DownCast(parent);
 }
 
-bool KeyboardFocusManager::MoveFocus(Toolkit::Control::KeyboardFocusNavigationDirection direction)
+bool KeyboardFocusManager::MoveFocus(Toolkit::Control::KeyboardFocus::Direction direction)
 {
   Actor currentFocusActor = GetCurrentFocusActor();
 
@@ -257,10 +253,10 @@ bool KeyboardFocusManager::MoveFocus(Toolkit::Control::KeyboardFocusNavigationDi
   return succeed;
 }
 
-bool KeyboardFocusManager::DoMoveFocusWithinLayoutControl(Toolkit::Control control, Actor actor, Toolkit::Control::KeyboardFocusNavigationDirection direction)
+bool KeyboardFocusManager::DoMoveFocusWithinLayoutControl(Toolkit::Control control, Actor actor, Toolkit::Control::KeyboardFocus::Direction direction)
 {
   // Ask the control for the next actor to focus
-  Actor nextFocusableActor = control.GetImplementation().GetNextKeyboardFocusableActor(actor, direction, mFocusGroupLoopEnabled);
+  Actor nextFocusableActor = GetImplementation( control ).GetNextKeyboardFocusableActor(actor, direction, mFocusGroupLoopEnabled);
   if(nextFocusableActor)
   {
     if(!nextFocusableActor.IsKeyboardFocusable())
@@ -299,7 +295,7 @@ bool KeyboardFocusManager::DoMoveFocusWithinLayoutControl(Toolkit::Control contr
             // If the application hasn't changed our proposed actor, we informs the layout control we will
             // move the focus to what the control returns. The control might wish to perform some actions
             // before the focus is actually moved.
-            control.GetImplementation().OnKeyboardFocusChangeCommitted(committedFocusActor);
+            GetImplementation( control ).OnKeyboardFocusChangeCommitted( committedFocusActor );
           }
 
           return SetCurrentFocusActor(committedFocusActor);
@@ -329,7 +325,7 @@ bool KeyboardFocusManager::DoMoveFocusToNextFocusGroup(bool forward)
   {
     // If the current focus group has a parent layout control, we can probably automatically
     // move the focus to the next focus group in the forward or backward direction.
-    Toolkit::Control::KeyboardFocusNavigationDirection direction = forward ? Toolkit::Control::Right : Toolkit::Control::Left;
+    Toolkit::Control::KeyboardFocus::Direction direction = forward ? Toolkit::Control::KeyboardFocus::RIGHT : Toolkit::Control::KeyboardFocus::LEFT;
     succeed = DoMoveFocusWithinLayoutControl(parentLayoutControl, GetCurrentFocusActor(), direction);
     parentLayoutControl = GetParentLayoutControl(parentLayoutControl);
   }
@@ -351,7 +347,7 @@ void KeyboardFocusManager::DoActivate(Actor actor)
     if(control)
     {
       // Notify the control that it is activated
-      control.GetImplementation().Activate();
+      GetImplementation( control ).AccessibilityActivate();
     }
 
     // Send notification for the activation of focused actor
@@ -522,7 +518,7 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event)
   AccessibilityManager accessibilityManager = AccessibilityManager::Get();
   bool isAccessibilityEnabled = accessibilityManager.IsEnabled();
 
-  Toolkit::FocusManager accessibilityFocusManager = Toolkit::FocusManager::Get();
+  Toolkit::AccessibilityFocusManager accessibilityFocusManager = Toolkit::AccessibilityFocusManager::Get();
 
   std::string keyName = event.keyPressedName;
 
@@ -542,7 +538,7 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event)
         else
         {
           // Move the focus towards left
-          MoveFocus(Toolkit::Control::Left);
+          MoveFocus(Toolkit::Control::KeyboardFocus::LEFT);
         }
 
         isFocusStartableKey = true;
@@ -565,7 +561,7 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event)
         else
         {
           // Move the focus towards right
-          MoveFocus(Toolkit::Control::Right);
+          MoveFocus(Toolkit::Control::KeyboardFocus::RIGHT);
         }
       }
       else
@@ -586,7 +582,7 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event)
       else
       {
         // Move the focus towards up
-        MoveFocus(Toolkit::Control::Up);
+        MoveFocus(Toolkit::Control::KeyboardFocus::UP);
       }
 
       isFocusStartableKey = true;
@@ -601,7 +597,7 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event)
       else
       {
         // Move the focus towards down
-        MoveFocus(Toolkit::Control::Down);
+        MoveFocus(Toolkit::Control::KeyboardFocus::DOWN);
       }
 
       isFocusStartableKey = true;
@@ -687,7 +683,7 @@ void KeyboardFocusManager::OnKeyEvent(const KeyEvent& event)
     {
       // No actor is focused but keyboard focus is activated by the key press
       // Let's try to move the initial focus
-      MoveFocus(Toolkit::Control::Right);
+      MoveFocus(Toolkit::Control::KeyboardFocus::RIGHT);
     }
     else if(mFocusIndicatorActor)
     {
index 1cd958a..bc456c2 100644 (file)
@@ -65,7 +65,7 @@ public:
   /**
    * @copydoc Toolkit::KeyboardFocusManager::MoveFocus
    */
-  bool MoveFocus(Toolkit::Control::KeyboardFocusNavigationDirection direction);
+  bool MoveFocus(Toolkit::Control::KeyboardFocus::Direction direction);
 
   /**
    * @copydoc Toolkit::KeyboardFocusManager::ClearFocus
@@ -171,7 +171,7 @@ private:
    * @param direction The direction of focus movement
    * @return Whether the focus is successful or not
    */
-  bool DoMoveFocusWithinLayoutControl(Toolkit::Control control, Actor actor, Toolkit::Control::KeyboardFocusNavigationDirection direction);
+  bool DoMoveFocusWithinLayoutControl(Toolkit::Control control, Actor actor, Toolkit::Control::KeyboardFocus::Direction direction);
 
   /**
    * Move the focus to the first focusable actor in the next focus group in the forward
index 9fee428..48f0ebf 100644 (file)
@@ -88,13 +88,13 @@ void KeyInputFocusManager::SetFocus( Toolkit::Control control )
   if( previousFocusControl )
   {
     // Notify the control that it has lost key input focus
-    previousFocusControl.GetImplementation().OnKeyInputFocusLost();
+    GetImplementation( previousFocusControl ).OnKeyInputFocusLost();
   }
 
   mFocusStack.PushBack( &control.GetBaseObject() );
 
   // Tell the new actor that it has gained focus.
-  control.GetImplementation().OnKeyInputFocusGained();
+  GetImplementation( control ).OnKeyInputFocusGained();
 
   // Emit the signal to inform focus change to the application.
   if ( !mKeyInputFocusChangedSignal.Empty() )
@@ -113,7 +113,7 @@ void KeyInputFocusManager::RemoveFocus( Toolkit::Control control )
       control.OffStageSignal().Disconnect( mSlotDelegate, &KeyInputFocusManager::OnFocusControlStageDisconnection );
 
       // Notify the control that it has lost key input focus
-      control.GetImplementation().OnKeyInputFocusLost();
+      GetImplementation( control ).OnKeyInputFocusLost();
 
       // If this is the top-most actor, pop it and change focus to the previous control
       if( pos == mFocusStack.End() - 1 )
@@ -124,7 +124,7 @@ void KeyInputFocusManager::RemoveFocus( Toolkit::Control control )
         if( previouslyFocusedControl )
         {
           // Tell the control that it has gained focus.
-          previouslyFocusedControl.GetImplementation().OnKeyInputFocusGained();
+          GetImplementation( previouslyFocusedControl ).OnKeyInputFocusGained();
         }
       }
       else
@@ -194,7 +194,7 @@ void KeyInputFocusManager::OnKeyEvent( const KeyEvent& event )
       if( control )
       {
         // Notify the control about the key event
-        consumed = control.GetImplementation().EmitKeyEventSignal( event );
+        consumed = GetImplementation( control ).EmitKeyEventSignal( event );
       }
     }
   }
index 8b03970..4a17c17 100644 (file)
@@ -24,7 +24,7 @@
 #include <dali/public-api/object/object-registry.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/focus-manager/keyinput-focus-manager.h>
+#include <dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h>
 #include <dali-toolkit/public-api/controls/control.h>
 
 namespace Dali
index bda3721..c8d9c6d 100644 (file)
@@ -21,8 +21,8 @@
 #include <dali/public-api/object/base-object.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/scripting/script.h>
-#include <dali-toolkit/public-api/scripting/script-plugin.h>
+#include <dali-toolkit/devel-api/scripting/script.h>
+#include <dali-toolkit/devel-api/scripting/script-plugin.h>
 
 
 namespace Dali
index 72f5e15..05da08f 100644 (file)
@@ -18,7 +18,7 @@
  *
  */
 
-#include <dali-toolkit/public-api/scripting/script-plugin.h>
+#include <dali-toolkit/devel-api/scripting/script-plugin.h>
 
 namespace Dali
 {
index 16fde99..814421e 100644 (file)
@@ -18,9 +18,6 @@
 #include "style-manager-impl.h"
 
 // EXTERNAL INCLUDES
-#include <fstream>
-#include <iostream>
-#include <sstream>
 #include <dali/devel-api/adaptor-framework/singleton-service.h>
 #include <dali/public-api/object/type-registry.h>
 #include <dali/devel-api/object/type-registry-helper.h>
@@ -29,7 +26,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/public-api/controls/control.h>
 #include <dali-toolkit/public-api/controls/control-impl.h>
-#include <dali-toolkit/public-api/styling/style-manager.h>
+#include <dali-toolkit/devel-api/styling/style-manager.h>
 
 namespace
 {
@@ -38,7 +35,7 @@ const char* LANDSCAPE_QUALIFIER = "landscape";
 const char* PORTRAIT_QUALIFIER  = "portrait";
 const char* FONT_SIZE_QUALIFIER = "font-size-";
 
-const char* DEFAULT_THEME = DALI_STYLE_DIR "tizen-default-theme.json";
+const char* DEFAULT_THEME = DALI_STYLE_DIR "dali-toolkit-default-theme.json";
 
 const char* PACKAGE_PATH_KEY = "PACKAGE_PATH";
 const char* DEFAULT_PACKAGE_PATH = DALI_DATA_READ_ONLY_DIR "/toolkit/";
@@ -101,19 +98,18 @@ Toolkit::StyleManager StyleManager::Get()
 
 StyleManager::StyleManager()
 : mOrientationDegrees( 0 ),  // Portrait
-  mDefaultFontSize( -1 )
+  mDefaultFontSize( -1 ),
+  mThemeFile( DEFAULT_THEME )
 {
   // Add theme builder constants
   mThemeBuilderConstants[ PACKAGE_PATH_KEY ] = DEFAULT_PACKAGE_PATH;
 
-  RequestDefaultTheme();
-
-  StyleMonitor styleMonitor( StyleMonitor::Get() );
-  if( styleMonitor )
+  mStyleMonitor = StyleMonitor::Get();
+  if( mStyleMonitor )
   {
-    styleMonitor.StyleChangeSignal().Connect( this, &StyleManager::StyleMonitorChange );
+    mStyleMonitor.StyleChangeSignal().Connect( this, &StyleManager::StyleMonitorChange );
 
-    mDefaultFontSize = styleMonitor.GetDefaultFontSize();
+    mDefaultFontSize = mStyleMonitor.GetDefaultFontSize();
   }
 }
 
@@ -329,17 +325,11 @@ bool StyleManager::LoadFile( const std::string& filename, std::string& stringOut
 {
   DALI_ASSERT_DEBUG( 0 != filename.length());
 
-  std::ifstream in( filename.c_str(), std::ios::in );
-  if( in )
+  // as toolkit is platform agnostic, it cannot load files from filesystem
+  // ask style monitor to load the style sheet
+  if( mStyleMonitor )
   {
-    std::stringstream buffer;
-    buffer << in.rdbuf();
-
-    stringOut = buffer.str();
-
-    in.close();
-
-    return true;
+    return mStyleMonitor.LoadThemeFile( filename, stringOut );
   }
 
   return false;
@@ -368,9 +358,7 @@ void StyleManager::SetTheme()
   mThemeBuilder = CreateBuilder( mThemeBuilderConstants );
   if ( LoadJSON( mThemeBuilder, mThemeFile ) )
   {
-    StyleChange change;
-    change.themeChange = true;
-    mStyleChangeSignal.Emit( Toolkit::StyleManager::Get(), change );
+    mStyleChangeSignal.Emit( Toolkit::StyleManager::Get(), StyleChange::THEME_CHANGE );
   }
   else
   {
@@ -394,11 +382,36 @@ void StyleManager::CacheBuilder( Toolkit::Builder builder, const std::string& ke
   mBuilderCache[ key ] = builder;
 }
 
-void StyleManager::StyleMonitorChange( StyleMonitor styleMonitor, StyleChange styleChange )
+void StyleManager::StyleMonitorChange( StyleMonitor styleMonitor, StyleChange::Type styleChange )
 {
-  if( styleChange.defaultFontSizeChange )
+  switch ( styleChange )
   {
-    mDefaultFontSize = styleMonitor.GetDefaultFontSize();
+    case StyleChange::DEFAULT_FONT_CHANGE:
+    {
+      break;
+    }
+
+    case StyleChange::DEFAULT_FONT_SIZE_CHANGE:
+    {
+      mDefaultFontSize = styleMonitor.GetDefaultFontSize();
+      break;
+    }
+
+    case StyleChange::THEME_CHANGE:
+    {
+      const std::string& newTheme = styleMonitor.GetTheme();
+      if( ! newTheme.empty() )
+      {
+        mThemeFile = newTheme;
+      }
+      else
+      {
+        mThemeFile = DEFAULT_THEME;
+      }
+
+      SetTheme();
+      break;
+    }
   }
 
   mStyleChangeSignal.Emit( Toolkit::StyleManager::Get(), styleChange );
index a658707..c612f7d 100644 (file)
@@ -19,7 +19,7 @@
 
 // EXTERNAL INCLUDES
 #include <string>
-#include <list>
+#include <dali/public-api/common/vector-wrapper.h>
 #include <dali/devel-api/common/map-wrapper.h>
 #include <dali/devel-api/adaptor-framework/style-monitor.h>
 #include <dali/public-api/object/base-object.h>
@@ -27,8 +27,8 @@
 #include <dali/public-api/signals/connection-tracker.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/styling/style-manager.h>
-#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali-toolkit/devel-api/styling/style-manager.h>
+#include <dali-toolkit/devel-api/builder/builder.h>
 
 namespace Dali
 {
@@ -140,7 +140,7 @@ public:
 
 private:
 
-  typedef std::list<std::string> StringList;
+  typedef std::vector<std::string> StringList;
 
   /**
    * @brief Internal helper method to read a file from file system.
@@ -222,9 +222,9 @@ private:
    * Callback for when style monitor raises a signal
    *
    * @param[in] styleMonitor The style monitor object
-   * @param[in] styleChange The style change data
+   * @param[in] styleChange The style change type
    */
-  void StyleMonitorChange( StyleMonitor styleMonitor, StyleChange styleChange );
+  void StyleMonitorChange( StyleMonitor styleMonitor, StyleChange::Type styleChange );
 
   // Undefined
   StyleManager(const StyleManager&);
@@ -237,6 +237,7 @@ private:
   typedef std::map< std::string, Toolkit::Builder > BuilderMap;
 
   Toolkit::Builder mThemeBuilder;     ///< Builder for all default theme properties
+  StyleMonitor mStyleMonitor;         ///< Style monitor handle
 
   Orientation mOrientation;           ///< Handle to application orientation object
   int mOrientationDegrees;            ///< Directly set value of orientation
index 34b3726..245e581 100644 (file)
@@ -29,6 +29,7 @@
 #include <dali/public-api/common/stage.h>
 #include <dali/public-api/events/tap-gesture.h>
 #include <dali/public-api/events/tap-gesture-detector.h>
+#include <dali/public-api/events/touch-event.h>
 #include <dali/public-api/events/pan-gesture.h>
 #include <dali/public-api/events/pan-gesture-detector.h>
 #include <dali/public-api/images/resource-image.h>
@@ -44,7 +45,7 @@
 #include <dali-toolkit/public-api/controls/buttons/push-button.h>
 #include <dali-toolkit/public-api/controls/default-controls/solid-color-actor.h>
 #include <dali-toolkit/public-api/controls/text-controls/text-label.h>
-#include <dali-toolkit/public-api/controls/text-controls/text-selection-popup.h>
+#include <dali-toolkit/devel-api/controls/text-controls/text-selection-popup.h>
 
 #ifdef DEBUG_ENABLED
 #define DECORATOR_DEBUG
@@ -531,6 +532,7 @@ struct Decorator::Impl : public ConnectionTracker
       grabHandle.grabArea.SetSizeModeFactor( DEFAULT_GRAB_HANDLE_RELATIVE_SIZE );
       grabHandle.actor.Add( grabHandle.grabArea );
 
+      grabHandle.grabArea.TouchedSignal().Connect( this, &Decorator::Impl::OnGrabHandleTouched );
       mTapDetector.Attach( grabHandle.grabArea );
       mPanGestureDetector.Attach( grabHandle.grabArea );
 
@@ -738,10 +740,6 @@ struct Decorator::Impl : public ConnectionTracker
     if( Gesture::Started == gesture.state )
     {
       handle.grabDisplacementX = handle.grabDisplacementY = 0;
-      if( mHandleImages[type][HANDLE_IMAGE_PRESSED] )
-      {
-        handle.actor.SetImage( mHandleImages[type][HANDLE_IMAGE_PRESSED] );
-      }
     }
 
     handle.grabDisplacementX += gesture.displacement.x;
@@ -759,7 +757,7 @@ struct Decorator::Impl : public ConnectionTracker
         mHandleScrolling = type;
         StartScrollTimer();
       }
-      else if( x > mTextControlParent.GetControlSize().width - mScrollThreshold )
+      else if( x > mTextControlParent.Self().GetTargetSize().width - mScrollThreshold )
       {
         mScrollDirection = SCROLL_LEFT;
         mHandleScrolling = type;
@@ -809,16 +807,42 @@ struct Decorator::Impl : public ConnectionTracker
     }
   }
 
+  bool OnGrabHandleTouched( Actor actor, const TouchEvent& event )
+  {
+    // Switch between pressed/release grab-handle images
+    if( event.GetPointCount() > 0 &&
+        mHandle[GRAB_HANDLE].actor )
+    {
+      const TouchPoint& point = event.GetPoint(0);
+
+      if( TouchPoint::Down == point.state &&
+          mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_PRESSED] )
+      {
+        mHandle[GRAB_HANDLE].actor.SetImage( mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_PRESSED] );
+      }
+      else if( TouchPoint::Up == point.state &&
+               mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_RELEASED] )
+      {
+        mHandle[GRAB_HANDLE].actor.SetImage( mHandleImages[GRAB_HANDLE][HANDLE_IMAGE_RELEASED] );
+      }
+    }
+
+    // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area
+    return true;
+  }
+
   bool OnHandleOneTouched( Actor actor, const TouchEvent& touch )
   {
     // TODO
-    return false;
+    // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area
+    return true;
   }
 
   bool OnHandleTwoTouched( Actor actor, const TouchEvent& touch )
   {
     // TODO
-    return false;
+    // Consume to avoid pop-ups accidentally closing, when handle is outside of pop-up area
+    return true;
   }
 
   // Popup
index f4fdd18..47db1e2 100644 (file)
@@ -455,8 +455,7 @@ void MultilanguageSupport::ValidateFonts( const Vector<Character>& text,
         {
           validateFontsPerScript = new ValidateFontsPerScript();
 
-          mValidFontsPerScriptCache.PushBack( validateFontsPerScript );
-          validFontsPerScriptCacheBuffer = mValidFontsPerScriptCache.Begin();
+          *( validFontsPerScriptCacheBuffer + script ) = validateFontsPerScript;
         }
 
         if( NULL != validateFontsPerScript )
index d7ed8f4..e485be9 100644 (file)
@@ -50,6 +50,11 @@ public:
   virtual void RequestTextRelayout() = 0;
 
   /**
+   * @brief Called to signal that text has been inserted or deleted.
+   */
+  virtual void TextChanged() = 0;
+
+  /**
    * @brief Called when the number of characters to be inserted exceeds the maximum limit
    */
   virtual void MaxLengthReached() = 0;
index f77714c..35c43b0 100644 (file)
@@ -1041,40 +1041,116 @@ void Controller::Impl::UpdateCursorPosition()
     return;
   }
 
-  CursorInfo cursorInfo;
-  GetCursorPosition( mEventData->mPrimaryCursorPosition,
-                     cursorInfo );
+  if( IsShowingPlaceholderText() )
+  {
+    // Do not want to use the place-holder text to set the cursor position.
 
-  const Vector2 offset = mEventData->mScrollPosition + mAlignmentOffset;
-  const Vector2 cursorPosition = cursorInfo.primaryPosition + offset;
+    // Use the line's height of the font's family set to set the cursor's size.
+    // If there is no font's family set, use the default font.
+    // Use the current alignment to place the cursor at the beginning, center or end of the box.
 
-  // Sets the cursor position.
-  mEventData->mDecorator->SetPosition( PRIMARY_CURSOR,
-                                       cursorPosition.x,
-                                       cursorPosition.y,
-                                       cursorInfo.primaryCursorHeight,
-                                       cursorInfo.lineHeight );
-  DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Primary cursor position: %f,%f\n", cursorPosition.x, cursorPosition.y );
+    float lineHeight = 0.f;
 
-  // Sets the grab handle position.
-  mEventData->mDecorator->SetPosition( GRAB_HANDLE,
-                                       cursorPosition.x,
-                                       cursorPosition.y,
-                                       cursorInfo.lineHeight );
+    FontId defaultFontId = 0u;
+    if( NULL == mFontDefaults )
+    {
+      defaultFontId = mFontClient.GetFontId( EMPTY_STRING,
+                                             EMPTY_STRING );
+    }
+    else
+    {
+      defaultFontId = mFontDefaults->GetFontId( mFontClient );
+    }
 
-  if( cursorInfo.isSecondaryCursor )
-  {
-    mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_BOTH );
-    mEventData->mDecorator->SetPosition( SECONDARY_CURSOR,
-                                         cursorInfo.secondaryPosition.x + offset.x,
-                                         cursorInfo.secondaryPosition.y + offset.y,
-                                         cursorInfo.secondaryCursorHeight,
-                                         cursorInfo.lineHeight );
-    DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Secondary cursor position: %f,%f\n", cursorInfo.secondaryPosition.x + offset.x, cursorInfo.secondaryPosition.y + offset.y );
+    Text::FontMetrics fontMetrics;
+    mFontClient.GetFontMetrics( defaultFontId, fontMetrics );
+
+    lineHeight = fontMetrics.ascender - fontMetrics.descender;
+
+
+    Vector2 cursorPosition;
+
+    switch( mLayoutEngine.GetHorizontalAlignment() )
+    {
+      case LayoutEngine::HORIZONTAL_ALIGN_BEGIN:
+      {
+        cursorPosition.x = 1.f;
+        break;
+      }
+      case LayoutEngine::HORIZONTAL_ALIGN_CENTER:
+      {
+        cursorPosition.x = floor( 0.5f * mControlSize.width );
+        break;
+      }
+      case LayoutEngine::HORIZONTAL_ALIGN_END:
+      {
+        cursorPosition.x = mControlSize.width;
+        break;
+      }
+    }
+
+    switch( mLayoutEngine.GetVerticalAlignment() )
+    {
+      case LayoutEngine::VERTICAL_ALIGN_TOP:
+      {
+        cursorPosition.y = 0.f;
+        break;
+      }
+      case LayoutEngine::VERTICAL_ALIGN_CENTER:
+      {
+        cursorPosition.y = floorf( 0.5f * ( mControlSize.height - lineHeight ) );
+        break;
+      }
+      case LayoutEngine::VERTICAL_ALIGN_BOTTOM:
+      {
+        cursorPosition.y = mControlSize.height - lineHeight;
+        break;
+      }
+    }
+
+    mEventData->mDecorator->SetPosition( PRIMARY_CURSOR,
+                                         cursorPosition.x,
+                                         cursorPosition.y,
+                                         lineHeight,
+                                         lineHeight );
   }
   else
   {
-    mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_PRIMARY );
+    CursorInfo cursorInfo;
+    GetCursorPosition( mEventData->mPrimaryCursorPosition,
+                       cursorInfo );
+
+    const Vector2 offset = mEventData->mScrollPosition + mAlignmentOffset;
+    const Vector2 cursorPosition = cursorInfo.primaryPosition + offset;
+
+    // Sets the cursor position.
+    mEventData->mDecorator->SetPosition( PRIMARY_CURSOR,
+                                         cursorPosition.x,
+                                         cursorPosition.y,
+                                         cursorInfo.primaryCursorHeight,
+                                         cursorInfo.lineHeight );
+    DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Primary cursor position: %f,%f\n", cursorPosition.x, cursorPosition.y );
+
+    // Sets the grab handle position.
+    mEventData->mDecorator->SetPosition( GRAB_HANDLE,
+                                         cursorPosition.x,
+                                         cursorPosition.y,
+                                         cursorInfo.lineHeight );
+
+    if( cursorInfo.isSecondaryCursor )
+    {
+      mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_BOTH );
+      mEventData->mDecorator->SetPosition( SECONDARY_CURSOR,
+                                           cursorInfo.secondaryPosition.x + offset.x,
+                                           cursorInfo.secondaryPosition.y + offset.y,
+                                           cursorInfo.secondaryCursorHeight,
+                                           cursorInfo.lineHeight );
+      DALI_LOG_INFO( gLogFilter, Debug::Verbose, "Secondary cursor position: %f,%f\n", cursorInfo.secondaryPosition.x + offset.x, cursorInfo.secondaryPosition.y + offset.y );
+    }
+    else
+    {
+      mEventData->mDecorator->SetActiveCursor( ACTIVE_CURSOR_PRIMARY );
+    }
   }
   DALI_LOG_INFO( gLogFilter, Debug::Verbose, "<--Controller::UpdateCursorPosition\n" );
 }
index 3020e67..ab2764c 100644 (file)
@@ -231,6 +231,12 @@ struct Controller::Impl
    */
   void QueueModifyEvent( ModifyEvent::Type type )
   {
+    if( ModifyEvent::TEXT_REPLACED == type)
+    {
+      // Cancel previously queued inserts etc.
+      mModifyEvents.clear();
+    }
+
     ModifyEvent event;
     event.type = type;
     mModifyEvents.push_back( event );
index 6400370..889ca68 100644 (file)
@@ -73,13 +73,10 @@ void Controller::EnableTextInput( DecoratorPtr decorator )
 
 void Controller::SetText( const std::string& text )
 {
-  // Cancel previously queued inserts etc.
-  mImpl->mModifyEvents.clear();
-
   // Remove the previously set text
   ResetText();
 
-  if( ! text.empty() )
+  if( !text.empty() )
   {
     //  Convert text into UTF-32
     Vector<Character>& utf32Characters = mImpl->mLogicalModel->mText;
@@ -104,12 +101,20 @@ void Controller::SetText( const std::string& text )
 
     // Update the rest of the model during size negotiation
     mImpl->QueueModifyEvent( ModifyEvent::TEXT_REPLACED );
+
+    // The natural size needs to be re-calculated.
+    mImpl->mRecalculateNaturalSize = true;
+
+    // Apply modifications to the model
+    mImpl->mOperationsPending = ALL_OPERATIONS;
   }
   else
   {
     ShowPlaceholderText();
   }
 
+  mImpl->RequestRelayout();
+
   if( mImpl->mEventData )
   {
     // Cancel previously queued events
@@ -118,6 +123,9 @@ void Controller::SetText( const std::string& text )
 
   // Reset keyboard as text changed
   mImpl->ResetImfManager();
+
+  // Do this last since it provides callbacks into application code
+  mImpl->mControlInterface.TextChanged();
 }
 
 void Controller::GetText( std::string& text ) const
@@ -160,7 +168,12 @@ void Controller::SetPlaceholderText( PlaceholderType type, const std::string& te
       mImpl->mEventData->mPlaceholderTextActive = text;
     }
 
-    ShowPlaceholderText();
+    // Update placeholder if there is no text
+    if( mImpl->IsShowingPlaceholderText() ||
+        0u == mImpl->mLogicalModel->mText.Count() )
+    {
+      ShowPlaceholderText();
+    }
   }
 }
 
@@ -280,9 +293,11 @@ void Controller::SetTextColor( const Vector4& textColor )
 {
   mImpl->mTextColor = textColor;
 
-  if( ! mImpl->IsShowingPlaceholderText() )
+  if( !mImpl->IsShowingPlaceholderText() )
   {
     mImpl->mVisualModel->SetTextColor( textColor );
+
+    mImpl->RequestRelayout();
   }
 }
 
@@ -346,6 +361,7 @@ void Controller::SetPlaceholderTextColor( const Vector4& textColor )
   if( mImpl->IsShowingPlaceholderText() )
   {
     mImpl->mVisualModel->SetTextColor( textColor );
+    mImpl->RequestRelayout();
   }
 }
 
@@ -362,6 +378,8 @@ const Vector4& Controller::GetPlaceholderTextColor() const
 void Controller::SetShadowOffset( const Vector2& shadowOffset )
 {
   mImpl->mVisualModel->SetShadowOffset( shadowOffset );
+
+  mImpl->RequestRelayout();
 }
 
 const Vector2& Controller::GetShadowOffset() const
@@ -372,6 +390,8 @@ const Vector2& Controller::GetShadowOffset() const
 void Controller::SetShadowColor( const Vector4& shadowColor )
 {
   mImpl->mVisualModel->SetShadowColor( shadowColor );
+
+  mImpl->RequestRelayout();
 }
 
 const Vector4& Controller::GetShadowColor() const
@@ -382,6 +402,8 @@ const Vector4& Controller::GetShadowColor() const
 void Controller::SetUnderlineColor( const Vector4& color )
 {
   mImpl->mVisualModel->SetUnderlineColor( color );
+
+  mImpl->RequestRelayout();
 }
 
 const Vector4& Controller::GetUnderlineColor() const
@@ -392,6 +414,8 @@ const Vector4& Controller::GetUnderlineColor() const
 void Controller::SetUnderlineEnabled( bool enabled )
 {
   mImpl->mVisualModel->SetUnderlineEnabled( enabled );
+
+  mImpl->RequestRelayout();
 }
 
 bool Controller::IsUnderlineEnabled() const
@@ -402,6 +426,8 @@ bool Controller::IsUnderlineEnabled() const
 void Controller::SetUnderlineHeight( float height )
 {
   mImpl->mVisualModel->SetUnderlineHeight( height );
+
+  mImpl->RequestRelayout();
 }
 
 float Controller::GetUnderlineHeight() const
@@ -842,6 +868,9 @@ bool Controller::DoRelayout( const Size& size,
         }
       } // REORDER
 
+      // TODO: I'm working on a patch that changes the LayoutEngine::Align() method.
+      //       The layoutParameters is not needed and this call can be moved outside the if().
+      //       Then there is no need to do the layout again to change the alignment.
       if( ALIGN & operations )
       {
         mImpl->mLayoutEngine.Align( layoutParameters,
@@ -866,6 +895,86 @@ bool Controller::DoRelayout( const Size& size,
   return viewUpdated;
 }
 
+void Controller::SetMultiLineEnabled( bool enable )
+{
+  const LayoutEngine::Layout layout = enable ? LayoutEngine::MULTI_LINE_BOX : LayoutEngine::SINGLE_LINE_BOX;
+
+  if( layout != mImpl->mLayoutEngine.GetLayout() )
+  {
+    // Set the layout type.
+    mImpl->mLayoutEngine.SetLayout( layout );
+
+    // Set the flags to redo the layout operations
+    const OperationsMask layoutOperations =  static_cast<OperationsMask>( LAYOUT             |
+                                                                          UPDATE_ACTUAL_SIZE |
+                                                                          ALIGN              |
+                                                                          REORDER );
+
+    mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending | layoutOperations );
+
+    mImpl->RequestRelayout();
+  }
+}
+
+bool Controller::IsMultiLineEnabled() const
+{
+  return LayoutEngine::MULTI_LINE_BOX == mImpl->mLayoutEngine.GetLayout();
+}
+
+void Controller::SetHorizontalAlignment( LayoutEngine::HorizontalAlignment alignment )
+{
+  if( alignment != mImpl->mLayoutEngine.GetHorizontalAlignment() )
+  {
+    // Set the alignment.
+    mImpl->mLayoutEngine.SetHorizontalAlignment( alignment );
+
+    // Set the flag to redo the alignment operation.
+    // TODO : Is not needed re-layout and reorder again but with the current implementation it is.
+    //        Im working on a different patch to fix an issue with the alignment. When that patch
+    //        is in, this issue can be fixed.
+    const OperationsMask layoutOperations =  static_cast<OperationsMask>( LAYOUT             |
+                                                                          UPDATE_ACTUAL_SIZE |
+                                                                          ALIGN              |
+                                                                          REORDER );
+
+    mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending | layoutOperations );
+
+    mImpl->RequestRelayout();
+  }
+}
+
+LayoutEngine::HorizontalAlignment Controller::GetHorizontalAlignment() const
+{
+  return mImpl->mLayoutEngine.GetHorizontalAlignment();
+}
+
+void Controller::SetVerticalAlignment( LayoutEngine::VerticalAlignment alignment )
+{
+  if( alignment != mImpl->mLayoutEngine.GetVerticalAlignment() )
+  {
+    // Set the alignment.
+    mImpl->mLayoutEngine.SetVerticalAlignment( alignment );
+
+    // Set the flag to redo the alignment operation.
+    // TODO : Is not needed re-layout and reorder again but with the current implementation it is.
+    //        Im working on a different patch to fix an issue with the alignment. When that patch
+    //        is in, this issue can be fixed.
+    const OperationsMask layoutOperations =  static_cast<OperationsMask>( LAYOUT             |
+                                                                          UPDATE_ACTUAL_SIZE |
+                                                                          ALIGN              |
+                                                                          REORDER );
+
+    mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending | layoutOperations );
+
+    mImpl->RequestRelayout();
+  }
+}
+
+LayoutEngine::VerticalAlignment Controller::GetVerticalAlignment() const
+{
+  return mImpl->mLayoutEngine.GetVerticalAlignment();
+}
+
 void Controller::CalculateTextAlignment( const Size& size )
 {
   // Get the direction of the first character.
@@ -980,6 +1089,8 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent )
 {
   DALI_ASSERT_DEBUG( mImpl->mEventData && "Unexpected KeyEvent" );
 
+  bool textChanged( false );
+
   if( mImpl->mEventData &&
       keyEvent.state == KeyEvent::Down )
   {
@@ -1022,6 +1133,8 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent )
         {
           mImpl->QueueModifyEvent( ModifyEvent::TEXT_DELETED );
         }
+
+        textChanged = true;
       }
     }
     else
@@ -1032,6 +1145,8 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent )
       mImpl->ClearPreEditFlag();
 
       InsertText( keyString, COMMIT );
+
+      textChanged = true;
     }
 
     mImpl->ChangeState( EventData::EDITING ); // todo Confirm this is the best place to change the state of
@@ -1039,6 +1154,12 @@ bool Controller::KeyEvent( const Dali::KeyEvent& keyEvent )
     mImpl->RequestRelayout();
   }
 
+  if( textChanged )
+  {
+    // Do this last since it provides callbacks into application code
+    mImpl->mControlInterface.TextChanged();
+  }
+
   return false;
 }
 
@@ -1152,9 +1273,10 @@ void Controller::InsertText( const std::string& text, Controller::InsertType typ
   {
     DALI_LOG_INFO( gLogFilter, Debug::Verbose, "MaxLengthReached (%d)\n", mImpl->mLogicalModel->mText.Count() );
 
-    mImpl->mControlInterface.MaxLengthReached();
-
     mImpl->ResetImfManager();
+
+    // Do this last since it provides callbacks into application code
+    mImpl->mControlInterface.MaxLengthReached();
   }
 }
 
@@ -1268,6 +1390,72 @@ void Controller::HandleEvent( HandleType handleType, HandleState state, float x,
   }
 }
 
+ImfManager::ImfCallbackData Controller::OnImfEvent( ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent )
+{
+  bool update( false );
+  bool requestRelayout = false;
+
+  std::string text;
+  unsigned int cursorPosition( 0 );
+
+  switch ( imfEvent.eventName )
+  {
+    case ImfManager::COMMIT:
+    {
+      InsertText( imfEvent.predictiveString, Text::Controller::COMMIT );
+      requestRelayout = true;
+      break;
+    }
+    case ImfManager::PREEDIT:
+    {
+      InsertText( imfEvent.predictiveString, Text::Controller::PRE_EDIT );
+      update = true;
+      requestRelayout = true;
+      break;
+    }
+    case ImfManager::DELETESURROUNDING:
+    {
+      RemoveText( imfEvent.cursorOffset, imfEvent.numberOfChars );
+      requestRelayout = true;
+      break;
+    }
+    case ImfManager::GETSURROUNDING:
+    {
+      GetText( text );
+      cursorPosition = GetLogicalCursorPosition();
+
+      imfManager.SetSurroundingText( text );
+      imfManager.SetCursorPosition( cursorPosition );
+      break;
+    }
+    case ImfManager::VOID:
+    {
+      // do nothing
+      break;
+    }
+  } // end switch
+
+  if( ImfManager::GETSURROUNDING != imfEvent.eventName )
+  {
+    GetText( text );
+    cursorPosition = GetLogicalCursorPosition();
+  }
+
+  if( requestRelayout )
+  {
+    mImpl->mOperationsPending = ALL_OPERATIONS;
+    mImpl->RequestRelayout();
+
+    // Do this last since it provides callbacks into application code
+    mImpl->mControlInterface.TextChanged();
+  }
+
+  ImfManager::ImfCallbackData callbackData( update, cursorPosition, text, false );
+
+  return callbackData;
+}
+
+
 Controller::~Controller()
 {
   delete mImpl;
@@ -1281,9 +1469,6 @@ void Controller::ShowPlaceholderText()
 
     mImpl->mEventData->mIsShowingPlaceholderText = true;
 
-    // Cancel previously queued inserts etc.
-    mImpl->mModifyEvents.clear();
-
     // Disable handles when showing place-holder text
     mImpl->mEventData->mDecorator->SetHandleActive( GRAB_HANDLE, false );
     mImpl->mEventData->mDecorator->SetHandleActive( LEFT_SELECTION_HANDLE, false );
@@ -1330,6 +1515,8 @@ void Controller::ShowPlaceholderText()
 
     // Apply modifications to the model
     mImpl->mOperationsPending = ALL_OPERATIONS;
+
+    // Update the rest of the model during size negotiation
     mImpl->QueueModifyEvent( ModifyEvent::TEXT_REPLACED );
   }
 }
index 63ec1c3..8a780a9 100644 (file)
@@ -20,6 +20,7 @@
 
 // EXTERNAL INCLUDES
 #include <string>
+#include <dali/devel-api/adaptor-framework/imf-manager.h>
 #include <dali/public-api/common/dali-vector.h>
 #include <dali/public-api/common/intrusive-ptr.h>
 #include <dali/public-api/events/gesture.h>
@@ -31,6 +32,7 @@
 // INTERNAL INCLUDES
 #include <dali-toolkit/internal/text/decorator/text-decorator.h>
 #include <dali-toolkit/internal/text/font-run.h>
+#include <dali-toolkit/internal/text/layouts/layout-engine.h>
 #include <dali-toolkit/internal/text/text-control-interface.h>
 #include <dali-toolkit/internal/text/text-view.h>
 
@@ -405,6 +407,38 @@ public:
                    Size& layoutSize );
 
   /**
+   * @brief Whether to enable the multi-line layout.
+   *
+   * @param[in] enable \e true enables the multi-line (by default)
+   */
+  void SetMultiLineEnabled( bool enable );
+
+  /**
+   * @return Whether the multi-line layout is enabled.
+   */
+  bool IsMultiLineEnabled() const;
+
+  /**
+   * @copydoc Dali::Toolkit::Text::LayoutEngine::SetHorizontalAlignment()
+   */
+  void SetHorizontalAlignment( LayoutEngine::HorizontalAlignment alignment );
+
+  /**
+   * @copydoc Dali::Toolkit::Text::LayoutEngine::GetHorizontalAlignment()
+   */
+  LayoutEngine::HorizontalAlignment GetHorizontalAlignment() const;
+
+  /**
+   * @copydoc Dali::Toolkit::Text::LayoutEngine::SetVerticalAlignment()
+   */
+  void SetVerticalAlignment( LayoutEngine::VerticalAlignment alignment );
+
+  /**
+   * @copydoc Dali::Toolkit::Text::LayoutEngine::GetVerticalAlignment()
+   */
+  LayoutEngine::VerticalAlignment GetVerticalAlignment() const;
+
+  /**
    * @brief Calulates the alignment of the whole text inside the bounding box.
    *
    * @param[in] size The size of the bounding box.
@@ -474,6 +508,15 @@ public:
    */
   virtual void HandleEvent( HandleType handle, HandleState state, float x, float y );
 
+  /**
+   * @brief Event received from IMF manager
+   *
+   * @param[in] imfManager The IMF manager.
+   * @param[in] imfEvent The event received.
+   * @return A data struture indicating if update is needed, cursor position and current text.
+   */
+  ImfManager::ImfCallbackData OnImfEvent( ImfManager& imfManager, const ImfManager::ImfEventData& imfEvent );
+
 protected:
 
   /**
index 20610c3..d1416e4 100644 (file)
@@ -21,7 +21,7 @@
 // EXTERNAL INCLUDES
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/transition-effects/cube-transition-cross-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-cross-effect.h>
 #include <dali-toolkit/internal/transition-effects/cube-transition-effect-impl.h>
 
 namespace Dali
index d1efb7d..5642749 100644 (file)
@@ -28,7 +28,7 @@
 #include <dali/public-api/images/resource-image.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/transition-effects/cube-transition-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-effect.h>
 
 namespace Dali
 {
index 564738c..0afee71 100644 (file)
@@ -21,7 +21,7 @@
 // EXTERNAL INCLUDES
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/transition-effects/cube-transition-fold-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-fold-effect.h>
 #include <dali-toolkit/internal/transition-effects/cube-transition-effect-impl.h>
 
 namespace Dali
index a99f075..baa0a14 100644 (file)
@@ -21,7 +21,7 @@
 // EXTERNAL INCLUDES
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/transition-effects/cube-transition-wave-effect.h>
+#include <dali-toolkit/devel-api/transition-effects/cube-transition-wave-effect.h>
 #include <dali-toolkit/internal/transition-effects/cube-transition-effect-impl.h>
 
 namespace Dali
index 0e87de0..c720ee1 100644 (file)
 #include <dali/integration-api/debug.h>
 
 // INTERNAL INCLUDES
-#include <dali-toolkit/public-api/focus-manager/keyinput-focus-manager.h>
+#include <dali-toolkit/devel-api/focus-manager/keyinput-focus-manager.h>
 #include <dali-toolkit/public-api/focus-manager/keyboard-focus-manager.h>
 #include <dali-toolkit/public-api/controls/control.h>
-#include <dali-toolkit/public-api/styling/style-manager.h>
+#include <dali-toolkit/devel-api/styling/style-manager.h>
 #include <dali-toolkit/internal/styling/style-manager-impl.h>
 
 namespace Dali
@@ -47,33 +47,116 @@ namespace Toolkit
 namespace
 {
 
-//#if defined(DEBUG_ENABLED)
-//Integration::Log::Filter* gLogFilter  = Integration::Log::Filter::New(Debug::NoLogging, false, "LOG_CONTROL");
-//#endif
-
-const float MAX_FLOAT_VALUE( std::numeric_limits<float>::max() );
-const Vector3 MAX_SIZE( MAX_FLOAT_VALUE, MAX_FLOAT_VALUE, MAX_FLOAT_VALUE );
-const float BACKGROUND_ACTOR_Z_POSITION( -0.1f );
-
+/**
+ * Creates control through type registry
+ */
 BaseHandle Create()
 {
   return Internal::Control::New();
 }
 
+/**
+ * Performs actions as requested using the action name.
+ * @param[in] object The object on which to perform the action.
+ * @param[in] actionName The action to perform.
+ * @param[in] attributes The attributes with which to perfrom this action.
+ * @return true if action has been accepted by this control
+ */
+const char* ACTION_CONTROL_ACTIVATED = "control-activated";
+static bool DoAction( BaseObject* object, const std::string& actionName, const Property::Map& attributes )
+{
+  bool ret = false;
+
+  if( object && ( 0 == strcmp( actionName.c_str(), ACTION_CONTROL_ACTIVATED ) ) )
+  {
+    Toolkit::Control control = Toolkit::Control::DownCast( BaseHandle( object ) );
+    if( control )
+    {
+      // if cast succeeds there is an implementation so no need to check
+      ret = Internal::GetImplementation( control ).OnAccessibilityActivated();
+    }
+  }
+
+  return ret;
+}
+
+/**
+ * Connects a callback function with the object's signals.
+ * @param[in] object The object providing the signal.
+ * @param[in] tracker Used to disconnect the signal.
+ * @param[in] signalName The signal to connect to.
+ * @param[in] functor A newly allocated FunctorDelegate.
+ * @return True if the signal was connected.
+ * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor.
+ */
+const char* SIGNAL_KEY_EVENT = "key-event";
+const char* SIGNAL_KEY_INPUT_FOCUS_GAINED = "key-input-focus-gained";
+const char* SIGNAL_KEY_INPUT_FOCUS_LOST = "key-input-focus-lost";
+const char* SIGNAL_TAPPED = "tapped";
+const char* SIGNAL_PANNED = "panned";
+const char* SIGNAL_PINCHED = "pinched";
+const char* SIGNAL_LONG_PRESSED = "long-pressed";
+static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
+{
+  Dali::BaseHandle handle( object );
+
+  bool connected( false );
+  Toolkit::Control control = Toolkit::Control::DownCast( handle );
+  if ( control )
+  {
+    Internal::Control& controlImpl( Internal::GetImplementation( control ) );
+    connected = true;
+
+    if ( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_EVENT ) )
+    {
+      controlImpl.KeyEventSignal().Connect( tracker, functor );
+    }
+    else if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_INPUT_FOCUS_GAINED ) )
+    {
+      controlImpl.KeyInputFocusGainedSignal().Connect( tracker, functor );
+    }
+    else if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_INPUT_FOCUS_LOST ) )
+    {
+      controlImpl.KeyInputFocusLostSignal().Connect( tracker, functor );
+    }
+    else if( 0 == strcmp( signalName.c_str(), SIGNAL_TAPPED ) )
+    {
+      controlImpl.EnableGestureDetection( Gesture::Tap );
+      controlImpl.GetTapGestureDetector().DetectedSignal().Connect( tracker, functor );
+    }
+    else if( 0 == strcmp( signalName.c_str(), SIGNAL_PANNED ) )
+    {
+      controlImpl.EnableGestureDetection( Gesture::Pan );
+      controlImpl.GetPanGestureDetector().DetectedSignal().Connect( tracker, functor );
+    }
+    else if( 0 == strcmp( signalName.c_str(), SIGNAL_PINCHED ) )
+    {
+      controlImpl.EnableGestureDetection( Gesture::Pinch );
+      controlImpl.GetPinchGestureDetector().DetectedSignal().Connect( tracker, functor );
+    }
+    else if( 0 == strcmp( signalName.c_str(), SIGNAL_LONG_PRESSED ) )
+    {
+      controlImpl.EnableGestureDetection( Gesture::LongPress );
+      controlImpl.GetLongPressGestureDetector().DetectedSignal().Connect( tracker, functor );
+    }
+  }
+  return connected;
+}
+
 // Setup signals and actions using the type-registry.
 DALI_TYPE_REGISTRATION_BEGIN( Control, CustomActor, Create );
 
 // Note: Properties are registered separately below.
 
-DALI_SIGNAL_REGISTRATION( Toolkit, Control, "key-event",              SIGNAL_KEY_EVENT              )
-DALI_SIGNAL_REGISTRATION( Toolkit, Control, "key-input-focus-gained", SIGNAL_KEY_INPUT_FOCUS_GAINED )
-DALI_SIGNAL_REGISTRATION( Toolkit, Control, "key-input-focus-lost",   SIGNAL_KEY_INPUT_FOCUS_LOST   )
-DALI_SIGNAL_REGISTRATION( Toolkit, Control, "tapped",                 SIGNAL_TAPPED                 )
-DALI_SIGNAL_REGISTRATION( Toolkit, Control, "panned",                 SIGNAL_PANNED                 )
-DALI_SIGNAL_REGISTRATION( Toolkit, Control, "pinched",                SIGNAL_PINCHED                )
-DALI_SIGNAL_REGISTRATION( Toolkit, Control, "long-pressed",           SIGNAL_LONG_PRESSED           )
+SignalConnectorType registerSignal1( typeRegistration, SIGNAL_KEY_EVENT, &DoConnectSignal );
+SignalConnectorType registerSignal2( typeRegistration, SIGNAL_KEY_INPUT_FOCUS_GAINED, &DoConnectSignal );
+SignalConnectorType registerSignal3( typeRegistration, SIGNAL_KEY_INPUT_FOCUS_LOST, &DoConnectSignal );
+SignalConnectorType registerSignal4( typeRegistration, SIGNAL_TAPPED, &DoConnectSignal );
+SignalConnectorType registerSignal5( typeRegistration, SIGNAL_PANNED, &DoConnectSignal );
+SignalConnectorType registerSignal6( typeRegistration, SIGNAL_PINCHED, &DoConnectSignal );
+SignalConnectorType registerSignal7( typeRegistration, SIGNAL_LONG_PRESSED, &DoConnectSignal );
 
-DALI_ACTION_REGISTRATION( Toolkit, Control, "control-activated",      ACTION_CONTROL_ACTIVATED      )
+TypeAction registerAction( typeRegistration, ACTION_CONTROL_ACTIVATED, &DoAction );
 
 DALI_TYPE_REGISTRATION_END()
 
@@ -138,7 +221,6 @@ void SetupBackgroundActor( Actor actor, const Vector4& color )
   actor.SetColor( color );
   actor.SetPositionInheritanceMode( USE_PARENT_POSITION_PLUS_LOCAL_POSITION );
   actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR );
-  actor.SetZ( BACKGROUND_ACTOR_Z_POSITION );
   actor.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::ALL_DIMENSIONS );
 }
 
@@ -154,7 +236,6 @@ void SetupBackgroundActorConstrained( Actor actor, Property::Index constrainingI
   actor.SetColor( color );
   actor.SetPositionInheritanceMode( USE_PARENT_POSITION_PLUS_LOCAL_POSITION );
   actor.SetColorMode( USE_OWN_MULTIPLY_PARENT_COLOR );
-  actor.SetZ( BACKGROUND_ACTOR_Z_POSITION );
 
   Constraint constraint = Constraint::New<Vector3>( actor,
                                                     constrainingIndex,
@@ -172,16 +253,6 @@ class Control::Impl : public ConnectionTracker
 {
 public:
 
-  /**
-   * Size indices for mMinMaxSize array
-   */
-  enum
-  {
-    MIN_SIZE_INDEX = 0,
-    MAX_SIZE_INDEX = 1
-  };
-
-public:
   // Construction & Destruction
   Impl(Control& controlImpl)
   : mControlImpl( controlImpl ),
@@ -193,12 +264,10 @@ public:
     mPanGestureDetector(),
     mTapGestureDetector(),
     mLongPressGestureDetector(),
-    mCurrentSize(),
-    mNaturalSize(),
     mFlags( Control::ControlBehaviour( ACTOR_BEHAVIOUR_NONE ) ),
     mIsKeyboardNavigationSupported( false ),
     mIsKeyboardFocusGroup( false ),
-    mInitialized( false )
+    mAddRemoveBackgroundChild( false )
   {
   }
 
@@ -260,7 +329,7 @@ public:
 
     if ( control )
     {
-      Control& controlImpl( control.GetImplementation() );
+      Control& controlImpl( GetImplementation( control ) );
 
       switch ( index )
       {
@@ -326,7 +395,7 @@ public:
 
     if ( control )
     {
-      Control& controlImpl( control.GetImplementation() );
+      Control& controlImpl( GetImplementation( control ) );
 
       switch ( index )
       {
@@ -346,10 +415,10 @@ public:
         {
           Property::Map map;
 
-          Actor actor = controlImpl.GetBackgroundActor();
-          if ( actor )
+          Background* back = controlImpl.mImpl->mBackground;
+          if( back )
           {
-            ImageActor imageActor = ImageActor::DownCast( actor );
+            ImageActor imageActor = ImageActor::DownCast( back->actor );
             if ( imageActor )
             {
               Image image = imageActor.GetImage();
@@ -389,14 +458,11 @@ public:
   PanGestureDetector mPanGestureDetector;
   TapGestureDetector mTapGestureDetector;
   LongPressGestureDetector mLongPressGestureDetector;
-  // @todo change all these to Vector2 when we have a chance to sanitize the public API as well
-  Vector3 mCurrentSize; ///< Stores the current control's size, this is the negotiated size
-  Vector3 mNaturalSize; ///< Stores the size set through the Actor's API. This is size the actor wants to be. Useful when reset to the initial size is needed.
 
   ControlBehaviour mFlags :CONTROL_BEHAVIOUR_FLAG_COUNT;    ///< Flags passed in from constructor.
   bool mIsKeyboardNavigationSupported :1;  ///< Stores whether keyboard navigation is supported by the control.
   bool mIsKeyboardFocusGroup :1;           ///< Stores whether the control is a focus group.
-  bool mInitialized :1;
+  bool mAddRemoveBackgroundChild:1;        ///< Flag to know when we are adding or removing our own actor to avoid call to OnControlChildAdd
 
   // Properties - these need to be members of Internal::Control::Impl as they need to function within this class.
   static PropertyRegistration PROPERTY_1;
@@ -431,101 +497,6 @@ Control::~Control()
   delete mImpl;
 }
 
-Vector3 Control::GetNaturalSize()
-{
-  // could be overridden in derived classes.
-  return mImpl->mNaturalSize;
-}
-
-float Control::CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension )
-{
-  // Could be overridden in derived classes.
-  return CalculateChildSizeBase( child, dimension );
-}
-
-bool Control::RelayoutDependentOnChildren( Dimension::Type dimension )
-{
-  return RelayoutDependentOnChildrenBase( dimension );
-}
-
-float Control::GetHeightForWidth( float width )
-{
-  // could be overridden in derived classes.
-  float height( 0.0f );
-  if ( mImpl->mNaturalSize.width > 0.0f )
-  {
-    height = mImpl->mNaturalSize.height * width / mImpl->mNaturalSize.width;
-  }
-  return height;
-}
-
-float Control::GetWidthForHeight( float height )
-{
-  // could be overridden in derived classes.
-  float width( 0.0f );
-  if ( mImpl->mNaturalSize.height > 0.0f )
-  {
-    width = mImpl->mNaturalSize.width * height / mImpl->mNaturalSize.height;
-  }
-  return width;
-}
-
-const Vector3& Control::GetControlSize() const
-{
-  return mImpl->mCurrentSize;
-}
-
-const Vector3& Control::GetSizeSet() const
-{
-  return mImpl->mNaturalSize;
-}
-
-void Control::SetKeyInputFocus()
-{
-  if( Self().OnStage() )
-  {
-    Toolkit::KeyInputFocusManager::Get().SetFocus(Toolkit::Control::DownCast(Self()));
-  }
-}
-
-bool Control::HasKeyInputFocus()
-{
-  bool result = false;
-  if( Self().OnStage() )
-  {
-    result = Toolkit::KeyInputFocusManager::Get().IsKeyboardListener(Toolkit::Control::DownCast(Self()));
-  }
-  return result;
-}
-
-void Control::ClearKeyInputFocus()
-{
-  if( Self().OnStage() )
-  {
-    Toolkit::KeyInputFocusManager::Get().RemoveFocus(Toolkit::Control::DownCast(Self()));
-  }
-}
-
-PinchGestureDetector Control::GetPinchGestureDetector() const
-{
-  return mImpl->mPinchGestureDetector;
-}
-
-PanGestureDetector Control::GetPanGestureDetector() const
-{
-  return mImpl->mPanGestureDetector;
-}
-
-TapGestureDetector Control::GetTapGestureDetector() const
-{
-  return mImpl->mTapGestureDetector;
-}
-
-LongPressGestureDetector Control::GetLongPressGestureDetector() const
-{
-  return mImpl->mLongPressGestureDetector;
-}
-
 void Control::SetStyleName( const std::string& styleName )
 {
   if( styleName != mImpl->mStyleName )
@@ -560,9 +531,12 @@ void Control::SetBackgroundColor( const Vector4& color )
 
     SetupBackgroundActorConstrained( meshActor, Actor::Property::SCALE, color );
 
-    // Set the background actor before adding so that we do not inform deriving classes
     background.actor = meshActor;
-    Self().Add( meshActor );
+    // Set the flag to avoid notifying children
+    mImpl->mAddRemoveBackgroundChild = true;
+    // use insert to guarantee its the first child (so that OVERLAY mode works)
+    Self().Insert( 0, meshActor );
+    mImpl->mAddRemoveBackgroundChild = false;
   }
   */
 
@@ -584,18 +558,23 @@ void Control::SetBackgroundImage( Image image )
 
   if ( background.actor )
   {
-    // Remove Current actor, unset AFTER removal so that we do not inform deriving classes
+    // Remove Current actor, unset AFTER removal
+    mImpl->mAddRemoveBackgroundChild = true;
     Self().Remove( background.actor );
+    mImpl->mAddRemoveBackgroundChild = false;
     background.actor.Reset();
   }
 
   /*
   ImageActor imageActor = ImageActor::New( image );
-  SetupBackgroundActor( imageActor, Actor::Property::SIZE, background.color );
+  SetupBackgroundActor( imageActor, background.color );
 
   // Set the background actor before adding so that we do not inform derived classes
   background.actor = imageActor;
-  Self().Add( imageActor );
+  mImpl->mAddRemoveBackgroundChild = true;
+  // use insert to guarantee its the first child (so that OVERLAY mode works)
+  Self().Insert( 0, imageActor );
+  mImpl->mAddRemoveBackgroundChild = false;
   */
 }
 
@@ -604,21 +583,91 @@ void Control::ClearBackground()
   if ( mImpl->mBackground )
   {
     Background& background( mImpl->GetBackground() );
+    mImpl->mAddRemoveBackgroundChild = true;
     Self().Remove( background.actor );
+    mImpl->mAddRemoveBackgroundChild = false;
 
     delete mImpl->mBackground;
     mImpl->mBackground = NULL;
   }
 }
 
-Actor Control::GetBackgroundActor() const
+void Control::EnableGestureDetection(Gesture::Type type)
 {
-  if ( mImpl->mBackground )
+  if ( (type & Gesture::Pinch) && !mImpl->mPinchGestureDetector )
   {
-    return mImpl->mBackground->actor;
+    mImpl->mPinchGestureDetector = PinchGestureDetector::New();
+    mImpl->mPinchGestureDetector.DetectedSignal().Connect(mImpl, &Impl::PinchDetected);
+    mImpl->mPinchGestureDetector.Attach(Self());
   }
 
-  return Actor();
+  if ( (type & Gesture::Pan) && !mImpl->mPanGestureDetector )
+  {
+    mImpl->mPanGestureDetector = PanGestureDetector::New();
+    mImpl->mPanGestureDetector.DetectedSignal().Connect(mImpl, &Impl::PanDetected);
+    mImpl->mPanGestureDetector.Attach(Self());
+  }
+
+  if ( (type & Gesture::Tap) && !mImpl->mTapGestureDetector )
+  {
+    mImpl->mTapGestureDetector = TapGestureDetector::New();
+    mImpl->mTapGestureDetector.DetectedSignal().Connect(mImpl, &Impl::TapDetected);
+    mImpl->mTapGestureDetector.Attach(Self());
+  }
+
+  if ( (type & Gesture::LongPress) && !mImpl->mLongPressGestureDetector )
+  {
+    mImpl->mLongPressGestureDetector = LongPressGestureDetector::New();
+    mImpl->mLongPressGestureDetector.DetectedSignal().Connect(mImpl, &Impl::LongPressDetected);
+    mImpl->mLongPressGestureDetector.Attach(Self());
+  }
+}
+
+void Control::DisableGestureDetection(Gesture::Type type)
+{
+  if ( (type & Gesture::Pinch) && mImpl->mPinchGestureDetector )
+  {
+    mImpl->mPinchGestureDetector.Detach(Self());
+    mImpl->mPinchGestureDetector.Reset();
+  }
+
+  if ( (type & Gesture::Pan) && mImpl->mPanGestureDetector )
+  {
+    mImpl->mPanGestureDetector.Detach(Self());
+    mImpl->mPanGestureDetector.Reset();
+  }
+
+  if ( (type & Gesture::Tap) && mImpl->mTapGestureDetector )
+  {
+    mImpl->mTapGestureDetector.Detach(Self());
+    mImpl->mTapGestureDetector.Reset();
+  }
+
+  if ( (type & Gesture::LongPress) && mImpl->mLongPressGestureDetector)
+  {
+    mImpl->mLongPressGestureDetector.Detach(Self());
+    mImpl->mLongPressGestureDetector.Reset();
+  }
+}
+
+PinchGestureDetector Control::GetPinchGestureDetector() const
+{
+  return mImpl->mPinchGestureDetector;
+}
+
+PanGestureDetector Control::GetPanGestureDetector() const
+{
+  return mImpl->mPanGestureDetector;
+}
+
+TapGestureDetector Control::GetTapGestureDetector() const
+{
+  return mImpl->mTapGestureDetector;
+}
+
+LongPressGestureDetector Control::GetLongPressGestureDetector() const
+{
+  return mImpl->mLongPressGestureDetector;
 }
 
 void Control::SetKeyboardNavigationSupport(bool isSupported)
@@ -631,25 +680,30 @@ bool Control::IsKeyboardNavigationSupported()
   return mImpl->mIsKeyboardNavigationSupported;
 }
 
-void Control::Activate()
-{
-  // Inform deriving classes
-  OnActivated();
-}
-
-bool Control::OnAccessibilityPan(PanGesture gesture)
+void Control::SetKeyInputFocus()
 {
-  return false; // Accessibility pan gesture is not handled by default
+  if( Self().OnStage() )
+  {
+    Toolkit::KeyInputFocusManager::Get().SetFocus(Toolkit::Control::DownCast(Self()));
+  }
 }
 
-bool Control::OnAccessibilityTouch(const TouchEvent& touchEvent)
+bool Control::HasKeyInputFocus()
 {
-  return false; // Accessibility touch event is not handled by default
+  bool result = false;
+  if( Self().OnStage() )
+  {
+    result = Toolkit::KeyInputFocusManager::Get().IsKeyboardListener(Toolkit::Control::DownCast(Self()));
+  }
+  return result;
 }
 
-bool Control::OnAccessibilityValueChange(bool isIncrease)
+void Control::ClearKeyInputFocus()
 {
-  return false; // Accessibility value change action is not handled by default
+  if( Self().OnStage() )
+  {
+    Toolkit::KeyInputFocusManager::Get().RemoveFocus(Toolkit::Control::DownCast(Self()));
+  }
 }
 
 void Control::SetAsKeyboardFocusGroup(bool isFocusGroup)
@@ -665,82 +719,39 @@ bool Control::IsKeyboardFocusGroup()
   return Toolkit::KeyboardFocusManager::Get().IsFocusGroup(Self());
 }
 
-Actor Control::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled)
+void Control::AccessibilityActivate()
 {
-  return Actor();
+  // Inform deriving classes
+  OnAccessibilityActivated();
 }
 
-void Control::OnKeyboardFocusChangeCommitted(Actor commitedFocusableActor)
+bool Control::OnAccessibilityActivated()
 {
+  return false; // Accessibility activation is not handled by default
 }
 
-bool Control::DoAction(BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes)
+bool Control::OnAccessibilityPan(PanGesture gesture)
 {
-  bool ret = false;
-
-  if( object && ( 0 == strcmp( actionName.c_str(), ACTION_CONTROL_ACTIVATED ) ) )
-  {
-    Toolkit::Control control = Toolkit::Control::DownCast( BaseHandle( object ) );
-    if( control )
-    {
-      // if cast succeeds there is an implementation so no need to check
-      control.GetImplementation().OnActivated();
-    }
-  }
+  return false; // Accessibility pan gesture is not handled by default
+}
 
-  return ret;
+bool Control::OnAccessibilityTouch(const TouchEvent& touchEvent)
+{
+  return false; // Accessibility touch event is not handled by default
 }
 
-bool Control::DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor )
+bool Control::OnAccessibilityValueChange(bool isIncrease)
 {
-  Dali::BaseHandle handle( object );
+  return false; // Accessibility value change action is not handled by default
+}
 
-  bool connected( false );
-  Toolkit::Control control = Toolkit::Control::DownCast( handle );
-  if ( control )
-  {
-    Control& controlImpl( control.GetImplementation() );
-    connected = true;
+Actor Control::GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled)
+{
+  return Actor();
+}
 
-    if ( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_EVENT ) )
-    {
-      controlImpl.KeyEventSignal().Connect( tracker, functor );
-    }
-    else if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_INPUT_FOCUS_GAINED ) )
-    {
-      controlImpl.KeyInputFocusGainedSignal().Connect( tracker, functor );
-    }
-    else if( 0 == strcmp( signalName.c_str(), SIGNAL_KEY_INPUT_FOCUS_LOST ) )
-    {
-      controlImpl.KeyInputFocusLostSignal().Connect( tracker, functor );
-    }
-    else if( 0 == strcmp( signalName.c_str(), SIGNAL_TAPPED ) )
-    {
-      controlImpl.EnableGestureDetection( Gesture::Tap );
-      controlImpl.GetTapGestureDetector().DetectedSignal().Connect( tracker, functor );
-    }
-    else if( 0 == strcmp( signalName.c_str(), SIGNAL_PANNED ) )
-    {
-      controlImpl.EnableGestureDetection( Gesture::Pan );
-      controlImpl.GetPanGestureDetector().DetectedSignal().Connect( tracker, functor );
-    }
-    else if( 0 == strcmp( signalName.c_str(), SIGNAL_PINCHED ) )
-    {
-      controlImpl.EnableGestureDetection( Gesture::Pinch );
-      controlImpl.GetPinchGestureDetector().DetectedSignal().Connect( tracker, functor );
-    }
-    else if( 0 == strcmp( signalName.c_str(), SIGNAL_LONG_PRESSED ) )
-    {
-      controlImpl.EnableGestureDetection( Gesture::LongPress );
-      controlImpl.GetLongPressGestureDetector().DetectedSignal().Connect( tracker, functor );
-    }
-    else
-    {
-      // signalName does not match any signal
-      connected = false;
-    }
-  }
-  return connected;
+void Control::OnKeyboardFocusChangeCommitted(Actor commitedFocusableActor)
+{
 }
 
 Toolkit::Control::KeyEventSignalType& Control::KeyEventSignal()
@@ -789,9 +800,6 @@ Control::Control( ControlBehaviour behaviourFlags )
 
 void Control::Initialize()
 {
-  // Calling deriving classes
-  OnInitialize();
-
   if( mImpl->mFlags & REQUIRES_STYLE_CHANGE_SIGNALS )
   {
     Toolkit::StyleManager styleManager = Toolkit::StyleManager::Get();
@@ -808,79 +816,26 @@ void Control::Initialize()
     SetKeyboardNavigationSupport( true );
   }
 
-  mImpl->mInitialized = true;
+  // Calling deriving classes
+  OnInitialize();
 }
 
-void Control::EnableGestureDetection(Gesture::Type type)
+void Control::OnInitialize()
 {
-  if ( (type & Gesture::Pinch) && !mImpl->mPinchGestureDetector )
-  {
-    mImpl->mPinchGestureDetector = PinchGestureDetector::New();
-    mImpl->mPinchGestureDetector.DetectedSignal().Connect(mImpl, &Impl::PinchDetected);
-    mImpl->mPinchGestureDetector.Attach(Self());
-  }
-
-  if ( (type & Gesture::Pan) && !mImpl->mPanGestureDetector )
-  {
-    mImpl->mPanGestureDetector = PanGestureDetector::New();
-    mImpl->mPanGestureDetector.DetectedSignal().Connect(mImpl, &Impl::PanDetected);
-    mImpl->mPanGestureDetector.Attach(Self());
-  }
-
-  if ( (type & Gesture::Tap) && !mImpl->mTapGestureDetector )
-  {
-    mImpl->mTapGestureDetector = TapGestureDetector::New();
-    mImpl->mTapGestureDetector.DetectedSignal().Connect(mImpl, &Impl::TapDetected);
-    mImpl->mTapGestureDetector.Attach(Self());
-  }
-
-  if ( (type & Gesture::LongPress) && !mImpl->mLongPressGestureDetector )
-  {
-    mImpl->mLongPressGestureDetector = LongPressGestureDetector::New();
-    mImpl->mLongPressGestureDetector.DetectedSignal().Connect(mImpl, &Impl::LongPressDetected);
-    mImpl->mLongPressGestureDetector.Attach(Self());
-  }
 }
 
-void Control::DisableGestureDetection(Gesture::Type type)
-{
-  if ( (type & Gesture::Pinch) && mImpl->mPinchGestureDetector )
-  {
-    mImpl->mPinchGestureDetector.Detach(Self());
-    mImpl->mPinchGestureDetector.Reset();
-  }
-
-  if ( (type & Gesture::Pan) && mImpl->mPanGestureDetector )
-  {
-    mImpl->mPanGestureDetector.Detach(Self());
-    mImpl->mPanGestureDetector.Reset();
-  }
-
-  if ( (type & Gesture::Tap) && mImpl->mTapGestureDetector )
-  {
-    mImpl->mTapGestureDetector.Detach(Self());
-    mImpl->mTapGestureDetector.Reset();
-  }
-
-  if ( (type & Gesture::LongPress) && mImpl->mLongPressGestureDetector)
-  {
-    mImpl->mLongPressGestureDetector.Detach(Self());
-    mImpl->mLongPressGestureDetector.Reset();
-  }
-}
-
-void Control::OnInitialize()
+void Control::OnControlChildAdd( Actor& child )
 {
 }
 
-void Control::OnActivated()
+void Control::OnControlChildRemove( Actor& child )
 {
 }
 
-void Control::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change )
+void Control::OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change )
 {
   // By default the control is only interested in theme (not font) changes
-  if( change.themeChange )
+  if( change == StyleChange::THEME_CHANGE )
   {
     GetImpl( styleManager ).ApplyThemeStyle( Toolkit::Control( GetOwner() ) );
   }
@@ -914,46 +869,6 @@ void Control::OnLongPress( const LongPressGesture& longPress )
 {
 }
 
-void Control::OnControlStageConnection()
-{
-}
-
-void Control::OnControlStageDisconnection()
-{
-}
-
-void Control::OnControlChildAdd( Actor& child )
-{
-}
-
-void Control::OnControlChildRemove( Actor& child )
-{
-}
-
-void Control::OnControlSizeSet( const Vector3& size )
-{
-}
-
-void Control::OnCalculateRelayoutSize( Dimension::Type dimension )
-{
-}
-
-void Control::OnLayoutNegotiated( float size, Dimension::Type dimension )
-{
-}
-
-void Control::OnRelayout( const Vector2& size, RelayoutContainer& container )
-{
-  for( unsigned int i = 0, numChildren = Self().GetChildCount(); i < numChildren; ++i )
-  {
-    container.Add( Self().GetChildAt( i ), size );
-  }
-}
-
-void Control::OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
-{
-}
-
 void Control::EmitKeyInputFocusSignal( bool focusGained )
 {
   Dali::Toolkit::Control handle( GetOwner() );
@@ -976,6 +891,14 @@ void Control::EmitKeyInputFocusSignal( bool focusGained )
   }
 }
 
+void Control::OnStageConnection()
+{
+}
+
+void Control::OnStageDisconnection()
+{
+}
+
 void Control::OnKeyInputFocusGained()
 {
   EmitKeyInputFocusSignal( true );
@@ -986,9 +909,38 @@ void Control::OnKeyInputFocusLost()
   EmitKeyInputFocusSignal( false );
 }
 
+void Control::OnChildAdd(Actor& child)
+{
+  // If this is the background actor, then we do not want to inform deriving classes
+  if ( mImpl->mAddRemoveBackgroundChild )
+  {
+    return;
+  }
+
+  // Notify derived classes.
+  OnControlChildAdd( child );
+}
+
+void Control::OnChildRemove(Actor& child)
+{
+  // If this is the background actor, then we do not want to inform deriving classes
+  if ( mImpl->mAddRemoveBackgroundChild )
+  {
+    return;
+  }
+
+  // Notify derived classes.
+  OnControlChildRemove( child );
+}
+
+void Control::OnSizeSet(const Vector3& targetSize)
+{
+  // Background is resized through size negotiation
+}
+
 void Control::OnSizeAnimation(Animation& animation, const Vector3& targetSize)
 {
-  // @todo consider animating negotiated child sizes to target size
+  // @todo size negotiate background to new size, animate as well?
 }
 
 bool Control::OnTouchEvent(const TouchEvent& event)
@@ -1006,63 +958,78 @@ bool Control::OnKeyEvent(const KeyEvent& event)
   return false; // Do not consume
 }
 
-bool Control::OnMouseWheelEvent(const MouseWheelEvent& event)
+bool Control::OnWheelEvent(const WheelEvent& event)
 {
   return false; // Do not consume
 }
 
-void Control::OnStageConnection()
+void Control::OnRelayout( const Vector2& size, RelayoutContainer& container )
 {
-  // Notify derived classes.
-  OnControlStageConnection();
+  for( unsigned int i = 0, numChildren = Self().GetChildCount(); i < numChildren; ++i )
+  {
+    container.Add( Self().GetChildAt( i ), size );
+  }
 }
 
-void Control::OnStageDisconnection()
+void Control::OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension )
 {
-  // Notify derived classes
-  OnControlStageDisconnection();
 }
 
-void Control::OnChildAdd(Actor& child)
+Vector3 Control::GetNaturalSize()
 {
-  // If this is the background actor, then we do not want to relayout or inform deriving classes
-  if ( mImpl->mBackground && ( child == mImpl->mBackground->actor ) )
+  if( mImpl->mBackground )
   {
-    return;
+    Actor actor = mImpl->mBackground->actor;
+    if( actor )
+    {
+      return actor.GetNaturalSize();
+    }
   }
+  return Vector3();
+}
 
-  // Notify derived classes.
-  OnControlChildAdd( child );
+float Control::CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension )
+{
+  return CalculateChildSizeBase( child, dimension );
 }
 
-void Control::OnChildRemove(Actor& child)
+float Control::GetHeightForWidth( float width )
 {
-  // If this is the background actor, then we do not want to relayout or inform deriving classes
-  if ( mImpl->mBackground && ( child == mImpl->mBackground->actor ) )
+  if( mImpl->mBackground )
   {
-    return;
+    Actor actor = mImpl->mBackground->actor;
+    if( actor )
+    {
+      return actor.GetHeightForWidth( width );
+    }
   }
-
-  // Notify derived classes.
-  OnControlChildRemove( child );
+  return GetHeightForWidthBase( width );
 }
 
-void Control::OnSizeSet(const Vector3& targetSize)
+float Control::GetWidthForHeight( float height )
 {
-  if( targetSize != mImpl->mNaturalSize )
+  if( mImpl->mBackground )
   {
-    // Only updates size if set through Actor's API
-    mImpl->mNaturalSize = targetSize;
+    Actor actor = mImpl->mBackground->actor;
+    if( actor )
+    {
+      return actor.GetWidthForHeight( height );
+    }
   }
+  return GetWidthForHeightBase( height );
+}
 
-  if( targetSize != mImpl->mCurrentSize )
-  {
-    // Update control size.
-    mImpl->mCurrentSize = targetSize;
+bool Control::RelayoutDependentOnChildren( Dimension::Type dimension )
+{
+  return RelayoutDependentOnChildrenBase( dimension );
+}
 
-    // Notify derived classes.
-    OnControlSizeSet( targetSize );
-  }
+void Control::OnCalculateRelayoutSize( Dimension::Type dimension )
+{
+}
+
+void Control::OnLayoutNegotiated( float size, Dimension::Type dimension )
+{
 }
 
 void Control::SignalConnected( SlotObserver* slotObserver, CallbackBase* callback )
@@ -1075,6 +1042,22 @@ void Control::SignalDisconnected( SlotObserver* slotObserver, CallbackBase* call
   mImpl->SignalDisconnected( slotObserver, callback );
 }
 
+Control& GetImplementation( Dali::Toolkit::Control& handle )
+{
+  CustomActorImpl& customInterface = handle.GetImplementation();
+  // downcast to control
+  Control& impl = dynamic_cast< Internal::Control& >( customInterface );
+  return impl;
+}
+
+const Control& GetImplementation( const Dali::Toolkit::Control& handle )
+{
+  const CustomActorImpl& customInterface = handle.GetImplementation();
+  // downcast to control
+  const Control& impl = dynamic_cast< const Internal::Control& >( customInterface );
+  return impl;
+}
+
 } // namespace Internal
 
 } // namespace Toolkit
index 1cbf04f..1c396c0 100644 (file)
@@ -35,14 +35,8 @@ namespace Dali
 
 namespace Toolkit
 {
-
 class StyleManager;
 
-namespace Internal DALI_INTERNAL
-{
-class KeyInputFocusManager;
-}
-
 namespace Internal
 {
 
@@ -57,6 +51,8 @@ class DALI_IMPORT_API Control : public CustomActorImpl, public ConnectionTracker
 {
 public:
 
+  class Extension; ///< Forward declare future extension interface
+
   // Creation & Destruction
 
   /**
@@ -72,55 +68,61 @@ public:
    */
   virtual ~Control();
 
-  // Size negotiation
+  // Styling
 
   /**
-   * @copydoc Dali::CustomActorImpl::GetHeightForWidth()
+   * @copydoc Dali::Toolkit::Control::SetStyleName
    */
-  virtual float GetHeightForWidth( float width );
+  void SetStyleName( const std::string& styleName );
 
   /**
-   * @copydoc Dali::CustomActorImpl::GetWidthForHeight()
+   * @copydoc Dali::Toolkit::Control::GetStyleName
    */
-  virtual float GetWidthForHeight( float height );
+  const std::string& GetStyleName() const;
+
+  // Background
 
   /**
-   * @copydoc Toolkit::Control::GetNaturalSize()
+   * @copydoc Dali::Toolkit::Control::SetBackgroundColor
    */
-  virtual Vector3 GetNaturalSize();
+  void SetBackgroundColor( const Vector4& color );
 
   /**
-   * @brief Retrieves the current Control's size.
-   *
-   * @return The control's size.
+   * @copydoc Dali::Toolkit::Control::GetBackgroundColor
    */
-  const Vector3& GetControlSize() const;
+  Vector4 GetBackgroundColor() const;
 
   /**
-   * @brief Retrieves the Control's size set by the Application / Control.
-   *
-   * @return The control's size.
+   * @copydoc Dali::Toolkit::Control::SetBackgroundImage
    */
-  const Vector3& GetSizeSet() const;
-
-  // Key Input
+  void SetBackgroundImage( Image image );
 
   /**
-   * @copydoc Toolkit::Control::SetKeyInputFocus()
+   * @copydoc Dali::Toolkit::Control::ClearBackground
    */
-  void SetKeyInputFocus();
+  void ClearBackground();
+
+  // Gesture Detection
 
   /**
-   * @copydoc Toolkit::Control::HasKeyInputFocus()
+   * @brief Allows deriving classes to enable any of the gesture detectors that are available.
+   *
+   * Gesture detection can be enabled one at a time or in bitwise format as shown:
+   * @code
+   * EnableGestureDetection(Gesture::Type(Gesture::Pinch | Gesture::Tap | Gesture::Pan));
+   * @endcode
+   * @param[in]  type  The gesture type(s) to enable.
    */
-  bool HasKeyInputFocus();
+  void EnableGestureDetection( Gesture::Type type );
 
   /**
-   * @copydoc Toolkit::Control::ClearKeyInputFocus()
+   * @brief Allows deriving classes to disable any of the gesture detectors.
+   *
+   * Like EnableGestureDetection, this can also be called using bitwise or.
+   * @param[in]  type  The gesture type(s) to disable.
+   * @see EnableGetureDetection
    */
-  void ClearKeyInputFocus();
-
-  // Gesture Detection
+  void DisableGestureDetection( Gesture::Type type );
 
   /**
    * @brief If deriving classes wish to fine tune pinch gesture
@@ -166,43 +168,6 @@ public:
    */
   LongPressGestureDetector GetLongPressGestureDetector() const;
 
-  // Background
-
-  /**
-   * @copydoc Dali::Toolkit::Control::SetStyleName
-   */
-  void SetStyleName( const std::string& styleName );
-
-  /**
-   * @copydoc Dali::Toolkit::Control::GetStyleName
-   */
-  const std::string& GetStyleName() const;
-
-  /**
-   * @copydoc Dali::Toolkit::Control::SetBackgroundColor
-   */
-  void SetBackgroundColor( const Vector4& color );
-
-  /**
-   * @copydoc Dali::Toolkit::Control::GetBackgroundColor
-   */
-  Vector4 GetBackgroundColor() const;
-
-  /**
-   * @copydoc Dali::Toolkit::Control::SetBackgroundImage
-   */
-  void SetBackgroundImage( Image image );
-
-  /**
-   * @copydoc Dali::Toolkit::Control::ClearBackground
-   */
-  void ClearBackground();
-
-  /**
-   * @copydoc Dali::Toolkit::Control::GetBackgroundActor
-   */
-  Actor GetBackgroundActor() const;
-
   // Keyboard Navigation
 
   /**
@@ -213,7 +178,7 @@ public:
    * The control doesn't support it by default.
    * @param[in] isSupported Whether this control supports two dimensional keyboard navigation.
    */
-  void SetKeyboardNavigationSupport(bool isSupported);
+  void SetKeyboardNavigationSupport( bool isSupported );
 
   /**
    * @brief Gets whether this control supports two dimensional keyboard navigation.
@@ -222,39 +187,22 @@ public:
    */
   bool IsKeyboardNavigationSupported();
 
-  // Called by Focus Managers
-
-  /**
-   * @brief Called by the focus manager and keyboard focus manager to Activate the Control
-   */
-  DALI_INTERNAL void Activate();
+  // Key Input
 
   /**
-   * @brief This method should be overridden by deriving classes when they wish to respond the accessibility
-   * pan gesture.
-   *
-   * @param[in] gesture The pan gesture.
-   * @return true if the pan gesture has been consumed by this control
+   * @copydoc Toolkit::Control::SetKeyInputFocus()
    */
-  virtual bool OnAccessibilityPan(PanGesture gesture);
+  void SetKeyInputFocus();
 
   /**
-   * @brief This method should be overridden by deriving classes when they wish to respond the accessibility
-   * touch event.
-   *
-   * @param[in] touchEvent The touch event.
-   * @return true if the touch event has been consumed by this control
+   * @copydoc Toolkit::Control::HasKeyInputFocus()
    */
-  virtual bool OnAccessibilityTouch(const TouchEvent& touchEvent);
+  bool HasKeyInputFocus();
 
   /**
-   * @brief This method should be overridden by deriving classes when they wish to respond
-   * the accessibility up and down action (i.e. value change of slider control).
-   *
-   * @param[in] isIncrease Whether the value should be increased or decreased
-   * @return true if the value changed action has been consumed by this control
+   * @copydoc Toolkit::Control::ClearKeyInputFocus()
    */
-  virtual bool OnAccessibilityValueChange(bool isIncrease);
+  void ClearKeyInputFocus();
 
   // Keyboard Focus
 
@@ -265,7 +213,7 @@ public:
    * can be limitied to its child actors). The control is not a focus group by default.
    * @param[in] isFocusGroup Whether this control is set as a focus group for keyboard navigation.
    */
-  void SetAsKeyboardFocusGroup(bool isFocusGroup);
+  void SetAsKeyboardFocusGroup( bool isFocusGroup );
 
   /**
    * @brief Gets whether this control is a focus group for keyboard navigation.
@@ -274,26 +222,39 @@ public:
    */
   bool IsKeyboardFocusGroup();
 
+  // Called by Focus Manager
+
   /**
-   * @brief Gets the next keyboard focusable actor in this control towards the given direction.
-   *
-   * A control needs to override this function in order to support two dimensional keyboard navigation.
-   * @param[in] currentFocusedActor The current focused actor.
-   * @param[in] direction The direction to move the focus towards.
-   * @param[in] loopEnabled Whether the focus movement should be looped within the control.
-   * @return the next keyboard focusable actor in this control or an empty handle if no actor can be focused.
+   * @brief Called by the accessibility focus manager and keyboard focus manager to activate the Control
    */
-  virtual Actor GetNextKeyboardFocusableActor(Actor currentFocusedActor, Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled);
+  DALI_INTERNAL void AccessibilityActivate();
+
+  // Signals
 
   /**
-   * @brief Informs this control that its chosen focusable actor will be focused.
-   *
-   * This allows the application to preform any actions if wishes
-   * before the focus is actually moved to the chosen actor.
+   * @copydoc Dali::Toolkit::Control::KeyEventSignal()
+   */
+  Toolkit::Control::KeyEventSignalType& KeyEventSignal();
+
+  /**
+   * @copydoc Dali::Toolkit::Control::KeyInputFocusGainedSignal()
+   */
+  Toolkit::Control::KeyInputFocusSignalType& KeyInputFocusGainedSignal();
+
+  /**
+   * @copydoc Dali::Toolkit::Control::KeyInputFocusLostSignal()
+   */
+  Toolkit::Control::KeyInputFocusSignalType& KeyInputFocusLostSignal();
+
+  /**
+   * @brief Called by the KeyInputFocusManager to emit key event signals.
    *
-   * @param[in] commitedFocusableActor The commited focusable actor.
+   * @param[in] event The key event.
+   * @return True if the event was consumed.
    */
-  virtual void OnKeyboardFocusChangeCommitted(Actor commitedFocusableActor);
+  DALI_INTERNAL bool EmitKeyEventSignal( const KeyEvent& event );
+
+protected: // For derived classes to call
 
   /**
    * @brief Emits KeyInputFocusGained signal if true else emits KeyInputFocusLost signal
@@ -304,198 +265,140 @@ public:
    */
   void EmitKeyInputFocusSignal( bool focusGained );
 
-  // Actions & Signals
+protected: // From CustomActorImpl, not to be used by application developers
 
   /**
-   * @brief Performs actions as requested using the action name.
-   *
-   * @param[in] object The object on which to perform the action.
-   * @param[in] actionName The action to perform.
-   * @param[in] attributes The attributes with which to perfrom this action.
-   * @return true if action has been accepted by this control
+   * @copydoc CustomActorImpl::OnStageConnection()
    */
-  static bool DoAction(BaseObject* object, const std::string& actionName, const PropertyValueContainer& attributes);
+  virtual void OnStageConnection();
 
   /**
-   * Connects a callback function with the object's signals.
-   * @param[in] object The object providing the signal.
-   * @param[in] tracker Used to disconnect the signal.
-   * @param[in] signalName The signal to connect to.
-   * @param[in] functor A newly allocated FunctorDelegate.
-   * @return True if the signal was connected.
-   * @post If a signal was connected, ownership of functor was passed to CallbackBase. Otherwise the caller is responsible for deleting the unused functor.
+   * @copydoc CustomActorImpl::OnStageDisconnection()
    */
-  static bool DoConnectSignal( BaseObject* object, ConnectionTrackerInterface* tracker, const std::string& signalName, FunctorDelegate* functor );
+  virtual void OnStageDisconnection();
 
   /**
-   * @copydoc Dali::Toolkit::Control::KeyEventSignal()
+   * @copydoc CustomActorImpl::OnChildAdd()
    */
-  Toolkit::Control::KeyEventSignalType& KeyEventSignal();
+  virtual void OnChildAdd( Actor& child );
 
   /**
-   * @copydoc Dali::Toolkit::Control::KeyInputFocusGainedSignal()
+   * @copydoc CustomActorImpl::OnChildRemove()
    */
-  Toolkit::Control::KeyInputFocusSignalType& KeyInputFocusGainedSignal();
+  virtual void OnChildRemove( Actor& child );
 
   /**
-   * @copydoc Dali::Toolkit::Control::KeyInputFocusLostSignal()
+   * @copydoc CustomActorImpl::OnSizeSet()
    */
-  Toolkit::Control::KeyInputFocusSignalType& KeyInputFocusLostSignal();
+  virtual void OnSizeSet( const Vector3& targetSize );
 
   /**
-   * @brief Called by the KeyInputFocusManager to emit key event signals.
-   *
-   * @param[in] event The key event.
-   * @return True if the event was consumed.
+   * @copydoc CustomActorImpl::OnSizeAnimation()
    */
-  DALI_INTERNAL bool EmitKeyEventSignal(const KeyEvent& event);
-
-protected:
-
-  // Construction
-
-  // Flags for the constructor
-  enum ControlBehaviour
-  {
-    REQUIRES_STYLE_CHANGE_SIGNALS        = 1 << ( CustomActorImpl::ACTOR_FLAG_COUNT + 0 ),     ///< True if needs to monitor style change signals such as theme/font change
-    REQUIRES_KEYBOARD_NAVIGATION_SUPPORT = 1 << ( CustomActorImpl::ACTOR_FLAG_COUNT + 1 ),     ///< True if needs to support keyboard navigation
-
-    LAST_CONTROL_BEHAVIOUR_FLAG
-  };
-
-  static const int CONTROL_BEHAVIOUR_FLAG_COUNT = Log< LAST_CONTROL_BEHAVIOUR_FLAG - 1 >::value + 1;      ///< Total count of flags
+  virtual void OnSizeAnimation( Animation& animation, const Vector3& targetSize );
 
   /**
-   * @brief Create a Control.
-   *
-   * @param[in] behaviourFlags Behavioural flags from ControlBehaviour enum
+   * @copydoc CustomActorImpl::OnTouchEvent()
    */
-  Control(ControlBehaviour behaviourFlags);
+  virtual bool OnTouchEvent( const TouchEvent& event );
 
   /**
-   * @brief Second phase initialization.
+   * @copydoc CustomActorImpl::OnHoverEvent()
    */
-  void Initialize();
-
-  // Gesture Detection
+  virtual bool OnHoverEvent( const HoverEvent& event );
 
   /**
-   * @brief Allows deriving classes to enable any of the gesture detectors that are available.
-   *
-   * Gesture detection can be enabled one at a time or in bitwise format as shown:
-   * @code
-   * EnableGestureDetection(Gesture::Type(Gesture::Pinch | Gesture::Tap | Gesture::Pan));
-   * @endcode
-   * @param[in]  type  The gesture type(s) to enable.
+   * @copydoc CustomActorImpl::OnKeyEvent()
    */
-  void EnableGestureDetection(Gesture::Type type);
+  virtual bool OnKeyEvent( const KeyEvent& event );
 
   /**
-   * @brief Allows deriving classes to disable any of the gesture detectors.
-   *
-   * Like EnableGestureDetection, this can also be called using bitwise or.
-   * @param[in]  type  The gesture type(s) to disable.
-   * @see EnableGetureDetection
+   * @copydoc CustomActorImpl::OnWheelEvent()
    */
-  void DisableGestureDetection(Gesture::Type type);
+  virtual bool OnWheelEvent( const WheelEvent& event );
 
   /**
-   * @copydoc Dali::CustomActorImpl::RelayoutDependentOnChildren()
+   * @copydoc CustomActorImpl::OnRelayout()
    */
-  virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS );
+  virtual void OnRelayout( const Vector2& size, RelayoutContainer& container );
 
-private:
+  /**
+   * @copydoc CustomActorImpl::OnSetResizePolicy()
+   */
+  virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension );
 
-  // For derived classes to override
+  /**
+   * @copydoc CustomActorImpl::GetNaturalSize()
+   */
+  virtual Vector3 GetNaturalSize();
 
   /**
-   * @brief This method is called after the Control has been initialized.
-   *
-   * Derived classes should do any second phase initialization by overriding this method.
+   * @copydoc CustomActorImpl::CalculateChildSize()
    */
-  virtual void OnInitialize();
+  virtual float CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension );
 
   /**
-   * @brief This method is called when the control is activated.
-   *
-   * Derived classes should override this if they wish to be notified when they are activated.
+   * @copydoc CustomActorImpl::GetHeightForWidth()
    */
-  virtual void OnActivated();
+  virtual float GetHeightForWidth( float width );
 
   /**
-   * @brief This method should be overridden by deriving classes requiring notifications when the style changes.
-   *
-   * @param[in] styleManager  The StyleManager object.
-   * @param[in] change  Information denoting what has changed.
+   * @copydoc CustomActorImpl::GetWidthForHeight()
    */
-  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange change );
+  virtual float GetWidthForHeight( float height );
 
   /**
-   * @brief Called whenever a pinch gesture is detected on this control.
-   *
-   * This can be overridden by deriving classes when pinch detection
-   * is enabled.  The default behaviour is to scale the control by the
-   * pinch scale.
-   *
-   * @note If overridden, then the default behaviour will not occur.
-   * @note Pinch detection should be enabled via EnableGestureDetection().
-   * @param[in]  pinch  The pinch gesture.
-   * @see EnableGestureDetection
+   * @copydoc CustomActorImpl::RelayoutDependentOnChildren()
    */
-  virtual void OnPinch(const PinchGesture& pinch);
+  virtual bool RelayoutDependentOnChildren( Dimension::Type dimension = Dimension::ALL_DIMENSIONS );
 
   /**
-   * @brief Called whenever a pan gesture is detected on this control.
-   *
-   * This should be overridden by deriving classes when pan detection
-   * is enabled.
-   *
-   * @note There is no default behaviour with panning.
-   * @note Pan detection should be enabled via EnableGestureDetection().
-   * @param[in]  pan  The pan gesture.
-   * @see EnableGestureDetection
+   * @copydoc CustomActorImpl::OnCalculateRelayoutSize()
    */
-  virtual void OnPan( const PanGesture& pan );
+  virtual void OnCalculateRelayoutSize( Dimension::Type dimension );
 
   /**
-   * @brief Called whenever a tap gesture is detected on this control.
-   *
-   * This should be overridden by deriving classes when tap detection
-   * is enabled.
-   *
-   * @note There is no default behaviour with a tap.
-   * @note Tap detection should be enabled via EnableGestureDetection().
-   * @param[in]  tap  The tap gesture.
-   * @see EnableGestureDetection
+   * @copydoc CustomActorImpl::OnLayoutNegotiated()
    */
-  virtual void OnTap( const TapGesture& tap );
+  virtual void OnLayoutNegotiated( float size, Dimension::Type dimension );
+
+protected: // Helpers for deriving classes
+
+  // Construction
+
+  // Flags for the constructor
+  enum ControlBehaviour
+  {
+    REQUIRES_STYLE_CHANGE_SIGNALS        = 1 << ( CustomActorImpl::ACTOR_FLAG_COUNT + 0 ),     ///< True if needs to monitor style change signals such as theme/font change
+    REQUIRES_KEYBOARD_NAVIGATION_SUPPORT = 1 << ( CustomActorImpl::ACTOR_FLAG_COUNT + 1 ),     ///< True if needs to support keyboard navigation
+
+    LAST_CONTROL_BEHAVIOUR_FLAG
+  };
+
+  static const int CONTROL_BEHAVIOUR_FLAG_COUNT = Log< LAST_CONTROL_BEHAVIOUR_FLAG - 1 >::value + 1;      ///< Total count of flags
 
   /**
-   * @brief Called whenever a long press gesture is detected on this control.
+   * @brief Control constructor
    *
-   * This should be overridden by deriving classes when long press
-   * detection is enabled.
-   *
-   * @note There is no default behaviour associated with a long press.
-   * @note Long press detection should be enabled via EnableGestureDetection().
-   * @param[in]  longPress  The long press gesture.
-   * @see EnableGestureDetection
+   * @param[in] behaviourFlags Behavioural flags from ControlBehaviour enum
    */
-  virtual void OnLongPress( const LongPressGesture& longPress );
+  Control( ControlBehaviour behaviourFlags );
 
   /**
-   * @brief Called whenever the control is added to the stage.
-   *
-   * Could be overridden by derived classes.
+   * @brief Second phase initialization.
    */
-  virtual void OnControlStageConnection();
+  void Initialize();
+
+public: // API for derived classes to override
+
+  // Lifecycle
 
   /**
-   * @brief Called whenever the control is removed from the stage.
+   * @brief This method is called after the Control has been initialized.
    *
-   * Could be overridden by derived classes.
+   * Derived classes should do any second phase initialization by overriding this method.
    */
-  virtual void OnControlStageDisconnection();
+  virtual void OnInitialize();
 
   /**
    * @brief Called whenever an Actor is added to the control.
@@ -515,143 +418,144 @@ private:
    */
   virtual void OnControlChildRemove( Actor& child );
 
-  /**
-   * @brief Called whenever the Control's size is set.
-   *
-   * Could be overridden by derived classes.
-   *
-   * @param[in] size The new size.
-   */
-  virtual void OnControlSizeSet( const Vector3& size );
-
-  /**
-   * @brief Called when the control gains key input focus.
-   *
-   * Should be overridden by derived classes if they need to customize what happens when focus is gained.
-   */
-  virtual void OnKeyInputFocusGained();
+  // Styling
 
   /**
-   * @brief Called when the control loses key input focus.
+   * @brief This method should be overridden by deriving classes requiring notifications when the style changes.
    *
-   * Should be overridden by derived classes if they need to customize what happens when focus is lost.
-   */
-  virtual void OnKeyInputFocusLost();
-
-  // From CustomActorImpl, derived classes can override these.
-
-  /**
-   * @copydoc Dali::CustomActorImpl::OnSizeAnimation(Animation&, const Vector3&)
+   * @param[in] styleManager  The StyleManager object.
+   * @param[in] change  Information denoting what has changed.
    */
-  virtual void OnSizeAnimation(Animation& animation, const Vector3& targetSize);
+  virtual void OnStyleChange( Toolkit::StyleManager styleManager, StyleChange::Type change );
 
-  /**
-   * @copydoc Dali::CustomActorImpl::OnTouchEvent(const TouchEvent&)
-   */
-  virtual bool OnTouchEvent(const TouchEvent& event);
+  // Accessibility
 
   /**
-   * @copydoc Dali::CustomActorImpl::OnHoverEvent(const HoverEvent&)
+   * @brief This method is called when the control is accessibility activated.
+   *
+   * Derived classes should override this to perform custom accessibility activation.
+   * @return true if this control can perform accessibility activation.
    */
-  virtual bool OnHoverEvent(const HoverEvent& event);
+  virtual bool OnAccessibilityActivated();
 
   /**
-   * @copydoc Dali::CustomActorImpl::OnKeyEvent(const KeyEvent&)
+   * @brief This method should be overridden by deriving classes when they wish to respond the accessibility
+   * pan gesture.
+   *
+   * @param[in] gesture The pan gesture.
+   * @return true if the pan gesture has been consumed by this control
    */
-  virtual bool OnKeyEvent(const KeyEvent& event);
+  virtual bool OnAccessibilityPan( PanGesture gesture );
 
   /**
-   * @copydoc Dali::CustomActorImpl::OnMouseWheelEvent(const MouseWheelEvent&)
+   * @brief This method should be overridden by deriving classes when they wish to respond the accessibility
+   * touch event.
+   *
+   * @param[in] touchEvent The touch event.
+   * @return true if the touch event has been consumed by this control
    */
-  virtual bool OnMouseWheelEvent(const MouseWheelEvent& event);
+  virtual bool OnAccessibilityTouch( const TouchEvent& touchEvent );
 
   /**
-   * @copydoc Dali::CustomActorImpl::OnCalculateRelayoutSize()
+   * @brief This method should be overridden by deriving classes when they wish to respond
+   * the accessibility up and down action (i.e. value change of slider control).
+   *
+   * @param[in] isIncrease Whether the value should be increased or decreased
+   * @return true if the value changed action has been consumed by this control
    */
-  virtual void OnCalculateRelayoutSize( Dimension::Type dimension );
+  virtual bool OnAccessibilityValueChange( bool isIncrease );
 
-  /**
-   * @copydoc Dali::CustomActorImpl::OnLayoutNegotiated()
-   */
-  virtual void OnLayoutNegotiated( float size, Dimension::Type dimension );
+  // Keyboard focus
 
   /**
-   * @copydoc Dali::CustomActorImpl::OnRelayout()
+   * @brief Called when the control gains key input focus.
+   *
+   * Should be overridden by derived classes if they need to customize what happens when focus is gained.
    */
-  virtual void OnRelayout( const Vector2& size, RelayoutContainer& container );
+  virtual void OnKeyInputFocusGained();
 
   /**
-   * @copydoc Dali::CustomActorImpl::OnSetResizePolicy()
+   * @brief Called when the control loses key input focus.
+   *
+   * Should be overridden by derived classes if they need to customize what happens when focus is lost.
    */
-  virtual void OnSetResizePolicy( ResizePolicy::Type policy, Dimension::Type dimension );
+  virtual void OnKeyInputFocusLost();
 
   /**
-   * @copydoc Dali::CustomActorImpl::CalculateChildSize()
+   * @brief Gets the next keyboard focusable actor in this control towards the given direction.
+   *
+   * A control needs to override this function in order to support two dimensional keyboard navigation.
+   * @param[in] currentFocusedActor The current focused actor.
+   * @param[in] direction The direction to move the focus towards.
+   * @param[in] loopEnabled Whether the focus movement should be looped within the control.
+   * @return the next keyboard focusable actor in this control or an empty handle if no actor can be focused.
    */
-  virtual float CalculateChildSize( const Dali::Actor& child, Dimension::Type dimension );
-
-  // From CustomActorImpl, derived classes should NOT override these.
+  virtual Actor GetNextKeyboardFocusableActor( Actor currentFocusedActor, Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled );
 
   /**
-   * @brief Sends a request to relayout this control.
-   *
-   * The control will be relaid out after the
-   * Dali::Stage::SignalMessageQueueFlushed() signal is emitted.
+   * @brief Informs this control that its chosen focusable actor will be focused.
    *
-   * It calls OnControlStageConnection() to notify derived classes.
+   * This allows the application to preform any actions if wishes
+   * before the focus is actually moved to the chosen actor.
    *
-   * @see Dali::CustomActorImpl::OnStageConnection()
+   * @param[in] commitedFocusableActor The commited focusable actor.
    */
-  virtual void OnStageConnection();
+  virtual void OnKeyboardFocusChangeCommitted( Actor commitedFocusableActor );
+
+  // Gestures
 
   /**
-   * @brief Calls OnControlStageDisconnection() to notify derived classed.
+   * @brief Called whenever a pinch gesture is detected on this control.
+   *
+   * This can be overridden by deriving classes when pinch detection
+   * is enabled.  The default behaviour is to scale the control by the
+   * pinch scale.
    *
-   * @see Dali::CustomActorImpl::OnStageDisconnection()
+   * @note If overridden, then the default behaviour will not occur.
+   * @note Pinch detection should be enabled via EnableGestureDetection().
+   * @param[in]  pinch  The pinch gesture.
+   * @see EnableGestureDetection
    */
-  virtual void OnStageDisconnection();
+  virtual void OnPinch( const PinchGesture& pinch );
 
   /**
-   * @brief Sends a request to relayout this control.
-   *
-   * The control will be relaid out after the
-   * Dali::Stage::SignalMessageQueueFlushed() signal is emitted.  It
-   * calls OnControlChildAdd() to notify derived classes.
-   *
-   * @note This method shouldn't be overridden by derived classes.
+   * @brief Called whenever a pan gesture is detected on this control.
    *
-   * @param[in] child The added actor.
+   * This should be overridden by deriving classes when pan detection
+   * is enabled.
    *
-   * @see Dali::CustomActorImpl::OnChildAdd(Actor&)
+   * @note There is no default behaviour with panning.
+   * @note Pan detection should be enabled via EnableGestureDetection().
+   * @param[in]  pan  The pan gesture.
+   * @see EnableGestureDetection
    */
-  virtual void OnChildAdd(Actor& child);
+  virtual void OnPan( const PanGesture& pan );
 
   /**
-   * @brief Sends a request to relayout this control.
-   *
-   * The control will be relaid out after the
-   * Dali::Stage::SignalMessageQueueFlushed() signal is emitted.  It
-   * calls OnControlChildRemove() to notify derived classes.
-   *
-   * @note This method shouldn't be overridden by derived classes.
+   * @brief Called whenever a tap gesture is detected on this control.
    *
-   * @param[in] child The removed actor.
+   * This should be overridden by deriving classes when tap detection
+   * is enabled.
    *
-   * @see Dali::CustomActorImpl::OnChildRemove(Actor&)
+   * @note There is no default behaviour with a tap.
+   * @note Tap detection should be enabled via EnableGestureDetection().
+   * @param[in]  tap  The tap gesture.
+   * @see EnableGestureDetection
    */
-  virtual void OnChildRemove(Actor& child);
+  virtual void OnTap( const TapGesture& tap );
 
   /**
-   * @brief It stores the size set by size negotiation and relayout.
-   *
-   * It also keeps a backup of the size set through the Actor's API used in the size negotiation.
-   * It calls the OnControlSizeSet() to notify derived classes.
+   * @brief Called whenever a long press gesture is detected on this control.
    *
-   * @param[in] targetSize The new size.
+   * This should be overridden by deriving classes when long press
+   * detection is enabled.
    *
-   * @see Dali::CustomActorImpl::OnSizeSet(const Vector3&)
+   * @note There is no default behaviour associated with a long press.
+   * @note Long press detection should be enabled via EnableGestureDetection().
+   * @param[in]  longPress  The long press gesture.
+   * @see EnableGestureDetection
    */
-  virtual void OnSizeSet(const Vector3& targetSize);
+  virtual void OnLongPress( const LongPressGesture& longPress );
 
   // From ConnectionTrackerInterface
 
@@ -665,18 +569,45 @@ private:
    */
   virtual void SignalDisconnected( SlotObserver* slotObserver, CallbackBase* callback );
 
+  /**
+   * Retrieve the extension for this control
+   *
+   * @return The extension if available, NULL otherwise
+   */
+  virtual Extension* GetControlExtension()
+  {
+    return NULL;
+  }
+
 private:
 
   // Undefined
-  DALI_INTERNAL Control(const Control&);
-  DALI_INTERNAL Control& operator=(const Control&);
+  DALI_INTERNAL Control( const Control& );
+  DALI_INTERNAL Control& operator=( const Control& );
 
   class Impl;
   Impl* mImpl;
 
-  friend class Internal::KeyInputFocusManager;     ///< KeyInputFocusManager needs to call several methods which are private. // TODO: Remove
 };
 
+/**
+ * @brief Get implementation from the handle
+ *
+ * @pre handle is initialized and points to a control
+ * @param handle
+ * @return implementation
+ */
+Internal::Control& GetImplementation( Dali::Toolkit::Control& handle );
+
+/**
+ * @brief Get implementation from the handle
+ *
+ * @pre handle is initialized and points to a control
+ * @param handle
+ * @return implementation
+ */
+const Internal::Control& GetImplementation( const Dali::Toolkit::Control& handle );
+
 } // namespace Internal
 
 } // namespace Toolkit
index 5bbc4e7..18eaeeb 100644 (file)
@@ -36,8 +36,8 @@ Control::Control()
 {
 }
 
-Control::Control(const Control& uiControl)
-: CustomActor( uiControl ? static_cast< const Internal::Control& >( uiControl.GetImplementation() ).GetOwner() : NULL)
+Control::Control( const Control& uiControl )
+: CustomActor( uiControl  )
 {
 }
 
@@ -59,99 +59,84 @@ Control Control::DownCast( BaseHandle handle )
   return DownCast< Control, Internal::Control >(handle);
 }
 
-Internal::Control& Control::GetImplementation()
-{
-  return static_cast<Internal::Control&>(CustomActor::GetImplementation());
-}
-
-const Internal::Control& Control::GetImplementation() const
-{
-  return static_cast<const Internal::Control&>(CustomActor::GetImplementation());
-}
-
 void Control::SetKeyInputFocus()
 {
-  GetImplementation().SetKeyInputFocus();
+  Internal::GetImplementation(*this).SetKeyInputFocus();
 }
 
 bool Control::HasKeyInputFocus()
 {
-  return GetImplementation().HasKeyInputFocus();
+  return Internal::GetImplementation(*this).HasKeyInputFocus();
 }
 
 void Control::ClearKeyInputFocus()
 {
-  GetImplementation().ClearKeyInputFocus();
+  Internal::GetImplementation(*this).ClearKeyInputFocus();
 }
 
 PinchGestureDetector Control::GetPinchGestureDetector() const
 {
-  return GetImplementation().GetPinchGestureDetector();
+  return Internal::GetImplementation(*this).GetPinchGestureDetector();
 }
 
 PanGestureDetector Control::GetPanGestureDetector() const
 {
-  return GetImplementation().GetPanGestureDetector();
+  return Internal::GetImplementation(*this).GetPanGestureDetector();
 }
 
 TapGestureDetector Control::GetTapGestureDetector() const
 {
-  return GetImplementation().GetTapGestureDetector();
+  return Internal::GetImplementation(*this).GetTapGestureDetector();
 }
 
 LongPressGestureDetector Control::GetLongPressGestureDetector() const
 {
-  return GetImplementation().GetLongPressGestureDetector();
+  return Internal::GetImplementation(*this).GetLongPressGestureDetector();
 }
 
 void Control::SetStyleName( const std::string& styleName )
 {
-  GetImplementation().SetStyleName( styleName );
+  Internal::GetImplementation(*this).SetStyleName( styleName );
 }
 
 const std::string& Control::GetStyleName() const
 {
-  return GetImplementation().GetStyleName();
+  return Internal::GetImplementation(*this).GetStyleName();
 }
 
 void Control::SetBackgroundColor( const Vector4& color )
 {
-  GetImplementation().SetBackgroundColor( color );
+  Internal::GetImplementation(*this).SetBackgroundColor( color );
 }
 
 Vector4 Control::GetBackgroundColor() const
 {
-  return GetImplementation().GetBackgroundColor();
+  return Internal::GetImplementation(*this).GetBackgroundColor();
 }
 
 void Control::SetBackgroundImage( Image image )
 {
-  GetImplementation().SetBackgroundImage( image );
+  Internal::GetImplementation(*this).SetBackgroundImage( image );
 }
 
 void Control::ClearBackground()
 {
-  GetImplementation().ClearBackground();
-}
-
-Actor Control::GetBackgroundActor() const
-{
-  return GetImplementation().GetBackgroundActor();
+  Internal::GetImplementation(*this).ClearBackground();
 }
 
 Control::KeyEventSignalType& Control::KeyEventSignal()
 {
-  return GetImplementation().KeyEventSignal();
+  return Internal::GetImplementation(*this).KeyEventSignal();
 }
 
 Control::KeyInputFocusSignalType& Control::KeyInputFocusGainedSignal()
 {
-  return GetImplementation().KeyInputFocusGainedSignal();
+  return Internal::GetImplementation(*this).KeyInputFocusGainedSignal();
 }
 
 Control::KeyInputFocusSignalType& Control::KeyInputFocusLostSignal()
 {
-  return GetImplementation().KeyInputFocusLostSignal();
+  return Internal::GetImplementation(*this).KeyInputFocusLostSignal();
 }
 
 Control::Control(Internal::Control& implementation)
index 7e4e693..e7511a1 100644 (file)
@@ -94,12 +94,15 @@ public:
   /**
    * @brief Describes the direction to move the keyboard focus towards.
    */
-  enum KeyboardFocusNavigationDirection
+  struct KeyboardFocus
   {
-    Left,   ///< Move keyboard focus towards the left direction
-    Right,  ///< Move keyboard focus towards the right direction
-    Up,     ///< Move keyboard focus towards the up direction
-    Down    ///< Move keyboard focus towards the down direction
+    enum Direction
+    {
+      LEFT,   ///< Move keyboard focus towards the left direction
+      RIGHT,  ///< Move keyboard focus towards the right direction
+      UP,     ///< Move keyboard focus towards the up direction
+      DOWN    ///< Move keyboard focus towards the down direction
+    };
   };
 
   // Typedefs
@@ -166,20 +169,6 @@ public:
    */
   static Control DownCast( BaseHandle handle );
 
-  /**
-   * @brief Retrieve the Control implementation.
-   *
-   * @return The implementation.
-   */
-  Internal::Control& GetImplementation();
-
-  /**
-   * @brief Retrieve the Control implementation.
-   *
-   * @return The implementation.
-   */
-  const Internal::Control& GetImplementation() const;
-
   // Key Input
 
   /**
@@ -248,7 +237,7 @@ public:
    */
   LongPressGestureDetector GetLongPressGestureDetector() const;
 
-  // Background
+  // Styling
 
   /**
    * @brief Sets the name of the style to be applied to the control.
@@ -296,13 +285,6 @@ public:
    */
   void ClearBackground();
 
-  /**
-   * @brief Retrieves the actor used as the background for this control.
-   *
-   * @return The actor that used as the background for this control.
-   */
-  Actor GetBackgroundActor() const;
-
   // Signals
 
   /**
diff --git a/dali-toolkit/public-api/controls/default-controls/check-button-factory.cpp b/dali-toolkit/public-api/controls/default-controls/check-button-factory.cpp
deleted file mode 100644 (file)
index 87fbb94..0000000
+++ /dev/null
@@ -1,147 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// CLASS HEADER
-#include "check-button-factory.h"
-
-// EXTERNAL INCLUDES
-#include <dali/public-api/actors/image-actor.h>
-#include <dali/public-api/images/resource-image.h>
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/alignment/alignment.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-namespace
-{
-
-Alignment CreateAlignedImage( Actor image )
-{
-  Alignment alignmentContainer = Toolkit::Alignment::New();
-  alignmentContainer.SetScaling( Toolkit::Alignment::ShrinkToFitKeepAspect );
-
-  alignmentContainer.Add( image );
-
-  return alignmentContainer;
-}
-
-Alignment CreateAlignedImage( const std::string& imagePath )
-{
-  Image image = ResourceImage::New( imagePath );
-
-  return CreateAlignedImage( ImageActor::New( image ) );
-}
-
-} // namespace
-
-
-CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath, const std::string& disabledBackgroundImagePath, const std::string& disabledSelectedImagePath )
-{
-  CheckBoxButton button = Toolkit::CheckBoxButton::New();
-
-  if( !backgroundImagePath.empty() )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImagePath ) );
-  }
-
-  if( !selectedImagePath.empty() )
-  {
-    button.SetSelectedImage( CreateAlignedImage( selectedImagePath ) );
-  }
-
-  if( !disabledBackgroundImagePath.empty() )
-  {
-    button.SetDisabledBackgroundImage( CreateAlignedImage( disabledBackgroundImagePath ) );
-  }
-
-  if( !disabledSelectedImagePath.empty() )
-  {
-    button.SetDisabledSelectedImage( CreateAlignedImage( disabledSelectedImagePath ) );
-  }
-
-  return button;
-}
-
-CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor, Actor disabledBackgroundImageActor, Actor disabledSelectedImagActor )
-{
-  CheckBoxButton button = Toolkit::CheckBoxButton::New();
-
-  if( backgroundImageActor )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImageActor ) );
-  }
-
-  if( selectedImageActor )
-  {
-    button.SetSelectedImage( CreateAlignedImage( selectedImageActor ) );
-  }
-
-  if( disabledBackgroundImageActor )
-  {
-    button.SetDisabledBackgroundImage( CreateAlignedImage( disabledBackgroundImageActor ) );
-  }
-
-  if( disabledSelectedImagActor )
-  {
-    button.SetDisabledSelectedImage( CreateAlignedImage( disabledSelectedImagActor ) );
-  }
-
-  return button;
-}
-
-CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath )
-{
-  CheckBoxButton button = Toolkit::CheckBoxButton::New();
-
-  if( !backgroundImagePath.empty() )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImagePath ) );
-  }
-
-  if( !selectedImagePath.empty() )
-  {
-    button.SetSelectedImage( CreateAlignedImage( selectedImagePath ) );
-  }
-
-  return button;
-}
-
-CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor )
-{
-  CheckBoxButton button = Toolkit::CheckBoxButton::New();
-
-  if( backgroundImageActor )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImageActor ) );
-  }
-
-  if( selectedImageActor )
-  {
-    button.SetSelectedImage( CreateAlignedImage( selectedImageActor ) );
-  }
-
-  return button;
-}
-
-} // namespace Toolkit
-
-} // namespace Dali
diff --git a/dali-toolkit/public-api/controls/default-controls/check-button-factory.h b/dali-toolkit/public-api/controls/default-controls/check-button-factory.h
deleted file mode 100644 (file)
index e78c1b8..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-#ifndef __DALI_TOOLKIT_CHECK_BUTTON_FACTORY_H__
-#define __DALI_TOOLKIT_CHECK_BUTTON_FACTORY_H__
-
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/buttons/check-box-button.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-/**
- * Creates a check box button with the given images.
- * Images will be shrunk to fit the button size keeping their aspect ratio.
- * @note Images won't be scaled to fill the whole button size.
- * @note If an image path is empty, this image is not set to the button.
- *
- * @param[in] backgroundImagePath Image path to be shown as button background.
- * @param[in] selectedImagePath Image path to be shown as selected button.
- * @param[in] disabledBackgroundImagePath Image path to be shown as button isabled background.
- * @param[in] disabledSelectedImagePath Image path to be shown as disabled selected button.
- */
-DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath, const std::string& disabledBackgroundImagePath, const std::string& disabledSelectedImagePath );
-
-/**
- * Creates a check box button with the given images.
- * Images will be shrunk to fit the button size keeping their aspect ratio.
- * @note Images won't be scaled to fill the whole button size.
- * @note If an image is an empty handle, this image is not set to the button.
- *
- * @param[in] backgroundImageActor  Image to be shown as button background.
- * @param[in] selectedImageActor  Image to be shown as selected button.
- * @param[in] disabledBackgroundImageActor Image to be shown as button disabled background.
- * @param[in] disabledSelectedImagActor Image to be shown as disabled selected button.
- */
-DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor, Actor disabledBackgroundImageActor, Actor disabledSelectedImagActor );
-
-/**
- * Creates a check box button with the given background and selected images.
- * Background and selected images will be shrunk to fit the button size keeping their aspect ratio.
- * @note Background and selected images won't be scaled to fill the whole button size.
- *
- * @param[in] backgroundImagePath  Image path to be shown as button background.
- * @param[in] selectedImagePath  Image path to be shown as selected button.
- */
-DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( const std::string& backgroundImagePath, const std::string& selectedImagePath );
-
-/**
- * Creates a check box button with the given background and selected images.
- * Background and selected images will be shrunk to fit the button size keeping their aspect ratio.
- * @note Background and selected images won't be scaled to fill the whole button size.
- *
- * @param[in] backgroundImageActor  Image to be shown as button background.
- * @param[in] selectedImageActor  Image to be shown as selected button.
- */
-DALI_IMPORT_API CheckBoxButton CreateCheckBoxButton( Actor backgroundImageActor, Actor selectedImageActor );
-
-} // namespace Toolkit
-
-} // namespace Dali
-
-#endif // __DALI_TOOLKIT_CHECK_BUTTON_FACTORY_H__
diff --git a/dali-toolkit/public-api/controls/default-controls/push-button-factory.cpp b/dali-toolkit/public-api/controls/default-controls/push-button-factory.cpp
deleted file mode 100644 (file)
index 6558ed5..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// HEADER
-#include <dali-toolkit/public-api/controls/default-controls/push-button-factory.h>
-
-// EXTERNAL INCLUDES
-#include <dali/public-api/actors/image-actor.h>
-#include <dali/public-api/images/resource-image.h>
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/alignment/alignment.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-namespace
-{
-
-Alignment CreateAlignedImage( Actor image )
-{
-  Alignment alignmentContainer = Toolkit::Alignment::New();
-  alignmentContainer.SetScaling( Toolkit::Alignment::ShrinkToFitKeepAspect );
-
-  alignmentContainer.Add( image );
-
-  return alignmentContainer;
-}
-
-Alignment CreateAlignedImage( const std::string& imagePath )
-{
-  Image image = ResourceImage::New( imagePath );
-  return CreateAlignedImage( ImageActor::New( image ) );
-}
-
-} // namespace
-
-
-PushButton CreatePushButton( const std::string& unselectedImagePath, const std::string& selectedImagePath, const std::string& backgroundImagePath,
-                             const std::string& disabledUnselectedImagePath, const std::string& disabledBackgroundImagePath )
-{
-  PushButton button = Toolkit::PushButton::New();
-
-  if( !unselectedImagePath.empty() )
-  {
-    button.SetButtonImage( CreateAlignedImage( unselectedImagePath ) );
-  }
-
-  if( !selectedImagePath.empty() )
-  {
-    button.SetSelectedImage( CreateAlignedImage( selectedImagePath ) );
-  }
-
-  if( !backgroundImagePath.empty() )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImagePath ) );
-  }
-
-  if( !disabledUnselectedImagePath.empty() )
-  {
-    button.SetDisabledImage( CreateAlignedImage( disabledUnselectedImagePath ) );
-  }
-
-  if( !disabledBackgroundImagePath.empty() )
-  {
-    button.SetDisabledBackgroundImage( CreateAlignedImage( disabledBackgroundImagePath ) );
-  }
-
-  return button;
-}
-
-PushButton CreatePushButton( Actor unselectedImageActor, Actor selectedImageActor, Actor backgroundImageActor,
-                             Actor disabledUnselectedImageActor, Actor disabledBackgroundImageActor )
-{
-  PushButton button = Toolkit::PushButton::New();
-
-  if( unselectedImageActor )
-  {
-    button.SetButtonImage( CreateAlignedImage( unselectedImageActor ) );
-  }
-
-  if( selectedImageActor )
-  {
-    button.SetSelectedImage( CreateAlignedImage( selectedImageActor ) );
-  }
-
-  if( backgroundImageActor )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImageActor ) );
-  }
-
-  if( disabledUnselectedImageActor )
-  {
-    button.SetDisabledImage( CreateAlignedImage( disabledUnselectedImageActor ) );
-  }
-
-  if( disabledBackgroundImageActor )
-  {
-    button.SetDisabledBackgroundImage( CreateAlignedImage( disabledBackgroundImageActor ) );
-  }
-
-  return button;
-}
-
-PushButton CreatePushButton( const std::string& backgroundImagePath )
-{
-  PushButton button = Toolkit::PushButton::New();
-
-  if( !backgroundImagePath.empty() )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImagePath ) );
-  }
-
-  return button;
-}
-
-PushButton CreatePushButton( Actor backgroundImageActor )
-{
-  PushButton button = Toolkit::PushButton::New();
-
-  if( backgroundImageActor )
-  {
-    button.SetBackgroundImage( CreateAlignedImage( backgroundImageActor ) );
-  }
-
-  return button;
-}
-
-} // namespace Toolkit
-
-} // namespace Dali
diff --git a/dali-toolkit/public-api/controls/default-controls/push-button-factory.h b/dali-toolkit/public-api/controls/default-controls/push-button-factory.h
deleted file mode 100644 (file)
index c04991d..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-#ifndef __DALI_TOOLKIT_PUSH_BUTTON_FACTORY_H__
-#define __DALI_TOOLKIT_PUSH_BUTTON_FACTORY_H__
-
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/buttons/push-button.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-/**
- * @brief Creates a push button with the given images.
- * Images will be shrunk to fit the button size keeping their aspect ratio.
- * @note Images won't be scaled to fill the whole button size.
- * @note If an image path is empty, this image is not set to the button.
- *
- * @param[in] unselectedImagePath         Image path to be shown when the button is unselected.
- * @param[in] selectedImagePath           Image path to be shown when the button is selected.
- * @param[in] backgroundImagePath         Image path to be shown as button background.
- * @param[in] disabledUnselectedImagePath Image path to be shown when the button is unselected and disabled.
- * @param[in] disabledBackgroundImagePath Image path to be shown as button background when the button is disabled.
- * @return A handle to the new push button
- */
-DALI_IMPORT_API PushButton CreatePushButton( const std::string& unselectedImagePath, const std::string& selectedImagePath, const std::string& backgroundImagePath,
-                             const std::string& disabledUnselectedImagePath, const std::string& disabledBackgroundImagePath );
-
-/**
- * @brief Creates a push button with the given images.
- *
- * Images will be shrunk to fit the button size keeping their aspect ratio.
- * @note Images won't be scaled to fill the whole button size.
- * @note If an image is an empty handle, this image is not set to the button.
- *
- * @param[in] unselectedImageActor         Image to be shown when the button is unselected.
- * @param[in] selectedImageActor           Image to be shown when the button is pressed.
- * @param[in] backgroundImageActor         Image to be shown as button background.
- * @param[in] disabledUnselectedImageActor Image to be shown when the button is unselected and disabled.
- * @param[in] disabledBackgroundImageActor Image to be shown as button background when the button is disabled.
- * @return A handle to the new pushbutton
- */
-DALI_IMPORT_API PushButton CreatePushButton( Actor unselectedImageActor, Actor selectedImageActor, Actor backgroundImageActor,
-                             Actor disabledUnselectedImageActor, Actor disabledBackgroundImageActor );
-
-/**
- * @brief Creates a push button with the given background image.
- *
- * Background image will be shrunk to fit the button size keeping its aspect ratio.
- * @note Background image won't be scaled to fill the whole button size.
- *
- * @param[in] backgroundImagePath  Image path to be shown as button background.
- * @return a handle to the new push button
- */
-DALI_IMPORT_API PushButton CreatePushButton( const std::string& backgroundImagePath );
-
-/**
- * @brief Creates a push button with the given background image.
- *
- * Background image will be shrunk to fit the button size keeping its aspect ratio.
- * @note Background image won't be scaled to fill the whole button size.
- *
- * @param[in] backgroundImageActor  Image to be shown as button background.
- * @return a handle to the new push button
- */
-DALI_IMPORT_API PushButton CreatePushButton( Actor backgroundImageActor );
-
-} // namespace Toolkit
-
-} // namespace Dali
-
-#endif // __DALI_TOOLKIT_PUSH_BUTTON_FACTORY_H__
diff --git a/dali-toolkit/public-api/controls/image-view/masked-image-view.cpp b/dali-toolkit/public-api/controls/image-view/masked-image-view.cpp
deleted file mode 100644 (file)
index 1b7bd37..0000000
+++ /dev/null
@@ -1,163 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/image-view/masked-image-view.h>
-#include <dali-toolkit/internal/controls/image-view/masked-image-view-impl.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-const float MaskedImageView::DEFAULT_MAXIMUM_SOURCE_SCALE(3.0f);
-
-MaskedImageView::MaskedImageView()
-{
-}
-
-MaskedImageView::MaskedImageView( const MaskedImageView& handle )
-: Control( handle )
-{
-}
-
-MaskedImageView& MaskedImageView::operator=( const MaskedImageView& handle )
-{
-  if( &handle != this )
-  {
-    Control::operator=( handle );
-  }
-  return *this;
-}
-
-MaskedImageView::~MaskedImageView()
-{
-}
-
-MaskedImageView MaskedImageView::New( unsigned int targetWidth,
-                                      unsigned int targetHeight,
-                                      Image sourceImage,
-                                      Image maskImage )
-{
-  return Internal::MaskedImageView::New( targetWidth, targetHeight, sourceImage, maskImage );
-}
-
-MaskedImageView MaskedImageView::DownCast( BaseHandle handle )
-{
-  return Control::DownCast<MaskedImageView, Internal::MaskedImageView>( handle );
-}
-
-void MaskedImageView::SetSourceImage( Image sourceImage )
-{
-  GetImpl(*this).SetSourceImage( sourceImage );
-}
-
-Image MaskedImageView::GetSourceImage()
-{
-  return GetImpl(*this).GetSourceImage();
-}
-
-void MaskedImageView::SetMaskImage( Image sourceImage )
-{
-  GetImpl(*this).SetMaskImage( sourceImage );
-}
-
-Image MaskedImageView::GetMaskImage()
-{
-  return GetImpl(*this).GetMaskImage();
-}
-
-Property::Index MaskedImageView::GetPropertyIndex( MaskedImageView::CustomProperty customProperty ) const
-{
-  return GetImpl(*this).GetPropertyIndex( customProperty );
-}
-
-void MaskedImageView::Pause()
-{
-  GetImpl(*this).Pause();
-}
-
-void MaskedImageView::Resume()
-{
-  GetImpl(*this).Resume();
-}
-
-bool MaskedImageView::IsPaused() const
-{
-  return GetImpl(*this).IsPaused();
-}
-
-void MaskedImageView::SetEditMode( MaskedImageView::EditMode editMode )
-{
-  GetImpl(*this).SetEditMode( editMode );
-}
-
-MaskedImageView::EditMode MaskedImageView::GetEditMode() const
-{
-  return GetImpl(*this).GetEditMode();
-}
-
-void MaskedImageView::SetSourceAspectRatio( float widthOverHeight )
-{
-  GetImpl(*this).SetSourceAspectRatio( widthOverHeight );
-}
-
-float MaskedImageView::GetSourceAspectRatio() const
-{
-  return GetImpl(*this).GetSourceAspectRatio();
-}
-
-void MaskedImageView::SetMaximumSourceScale( float scale )
-{
-  GetImpl(*this).SetMaximumSourceScale( scale );
-}
-
-float MaskedImageView::GetMaximumSourceScale() const
-{
-  return GetImpl(*this).GetMaximumSourceScale();
-}
-
-void MaskedImageView::SetSourceRotation( MaskedImageView::ImageRotation rotation )
-{
-  GetImpl(*this).SetSourceRotation( rotation );
-}
-
-MaskedImageView::ImageRotation MaskedImageView::GetSourceRotation() const
-{
-  return GetImpl(*this).GetSourceRotation();
-}
-
-MaskedImageView::MaskedImageViewSignal& MaskedImageView::MaskFinishedSignal()
-{
-  return GetImpl(*this).MaskFinishedSignal();
-}
-
-MaskedImageView::MaskedImageView(Internal::MaskedImageView& implementation)
-: Control(implementation)
-{
-}
-
-MaskedImageView::MaskedImageView( Dali::Internal::CustomActor* internal )
-: Control( internal )
-{
-  VerifyCustomActorPointer<Internal::MaskedImageView>(internal);
-}
-
-} // namespace Toolkit
-
-} // namespace Dali
diff --git a/dali-toolkit/public-api/controls/image-view/masked-image-view.h b/dali-toolkit/public-api/controls/image-view/masked-image-view.h
deleted file mode 100644 (file)
index b4e6208..0000000
+++ /dev/null
@@ -1,301 +0,0 @@
-#ifndef __DALI_TOOLKIT_MASKED_IMAGE_VIEW_H__
-#define __DALI_TOOLKIT_MASKED_IMAGE_VIEW_H__
-
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/public-api/controls/control.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-namespace Internal DALI_INTERNAL
-{
-class MaskedImageView;
-}
-
-/**
- * @brief MaskedImageView displays the result of an image created from a masking operation.
- *
- * Masking operations:
- *  - Firstly a target image size is chosen. The MaskedImageView handles the creation of this image internally. Initially the
- *    target image will be filled according to the BACKGROUND_COLOR property.
- *  - A source image is provided and positioned with the target image area. The position of the source image (in pixels), can
- *    be controlled using the SOURCE_OFFSET and SOURCE_SIZE properties. By default the source image is centered within the target
- *    image, and stretched to fill. Note that by default, no attempt is made to maintain the aspect ratio of the source image.
- *  - A mask image is provided and positioned in the same way as the source image, using the MASK_OFFSET and MASK_SIZE properties.
- *  - Conceptually the source image is then painted using the mask image as a stencil. Areas of the source which overlap with opaque
- *    areas of the mask, will be painted into the target image. However where the mask is transparent, the source will be faded away.
- *    Note that the edge of the mask image will be stretched to cover the entire target area.
- *
- * Initially MaskedImageView will perform the masking operation on a per-frame basis. This can impact performance, and may be
- * avoided by calling Pause() e.g. when the source & mask positions are not being modified. The Resume() method can then be called
- * to continue the masking operation when required.
- */
-class DALI_IMPORT_API MaskedImageView : public Control
-{
-public:
-
-  /**
-   * @brief The custom properties installed by this control.
-   */
-  enum CustomProperty
-  {
-    BACKGROUND_COLOR,    ///< Name "background-color", type Vector4
-    SOURCE_SIZE,         ///< Name "source-size",      type Vector2
-    SOURCE_OFFSET,       ///< Name "source-offset",    type Vector2
-    MASK_SIZE,           ///< Name "mask-size",        type Vector2
-    MASK_OFFSET,         ///< Name "mask-offset",      type Vector2
-
-    CUSTOM_PROPERTY_COUNT
-  };
-
-  /**
-   * @brief Edit mode for this control.
-   *
-   * @see SetEditMode()
-   */
-  enum EditMode
-  {
-    EDIT_DISABLED, ///< Editting is disabled
-    EDIT_SOURCE,   ///< Editting affects the source image
-    EDIT_MASK      ///< Editting affects the mask
-  };
-
-  /**
-   * @brief The rotation of the image.
-   *
-   * @see SetSourceRotation()
-   */
-  enum ImageRotation
-  {
-    ROTATE_0,   ///< No rotation
-    ROTATE_90,  ///< Image is rotated clockwise by 90 degrees
-    ROTATE_180, ///< Image is rotated clockwise by 180 degrees
-    ROTATE_270  ///< Image is rotated clockwise by 270 degrees
-  };
-
-  static const float DEFAULT_MAXIMUM_SOURCE_SCALE; ///< Default SetMaximumSourceScale() value
-
-  /**
-   * @brief Creates an empty MaskedImageView handle.
-   */
-  MaskedImageView();
-
-  /**
-   * @brief Copy constructor.
-   *
-   * Creates another handle that points to the same real object
-   * @param handle to copy from
-   */
-  MaskedImageView( const MaskedImageView& handle );
-
-  /**
-   * @brief Assignment operator.
-   *
-   * Changes this handle to point to another real object
-   * @param[in] handle the handle of the object to re-assign this to
-   * @return a reference to this
-   */
-  MaskedImageView& operator=( const MaskedImageView& handle );
-
-  /**
-   * @brief Destructor
-   *
-   * This is non-virtual since derived Handle types must not contain data or virtual methods.
-   */
-  ~MaskedImageView();
-
-  /**
-   * @brief Create the MaskedImageView control.
-   *
-   * @param[in] targetWidth The width of the target image
-   * @param[in] targetHeight The height of the target image
-   * @param[in] sourceImage The source image
-   * @param[in] maskImage The mask image
-   * @return A handle to the MaskedImageView control.
-   */
-  static MaskedImageView New( unsigned int targetWidth,
-                              unsigned int targetHeight,
-                              Image sourceImage,
-                              Image maskImage );
-
-  /**
-   * @brief Downcast an Object handle to MaskedImageView.
-   *
-   * If handle points to an MaskedImageView the downcast produces
-   * valid handle. If not the returned handle is left uninitialized.
-   *
-   * @param[in] handle Handle to an object
-   * @return handle to a MaskedImageView or an uninitialized handle
-   */
-  static MaskedImageView DownCast( BaseHandle handle );
-
-  /**
-   * @brief Set the image used as a source in the masking operation.
-   *
-   * @param[in] sourceImage The source image
-   */
-  void SetSourceImage( Image sourceImage );
-
-  /**
-   * @brief Retrieve the image used as a source in the masking operation.
-   *
-   * @return sourceImage The source image
-   */
-  Image GetSourceImage();
-
-  /**
-   * @brief Set the image used as a mask in the masking operation.
-   *
-   * @param[in] maskImage The mask image
-   */
-  void SetMaskImage( Image maskImage );
-
-  /**
-   * @brief Retrieve the image used as a mask in the masking operation.
-   *
-   * @return sourceImage The mask image
-   */
-  Image GetMaskImage();
-
-  /**
-   * @brief Get the property index for a custom MaskedImageView property.
-   *
-   * @param[in] customProperty A custom property enum defined in this class.
-   * @return The property index e.g. for use with Animation::AnimateTo()
-   */
-  Dali::Property::Index GetPropertyIndex( CustomProperty customProperty ) const;
-
-  /**
-   * @brief Pause the masking operation to improve performance.
-   *
-   * Call this when the source & mask positions etc. are not being modified.
-   */
-  void Pause();
-
-  /**
-   * @brief Resume the masking operation.
-   *
-   */
-  void Resume();
-
-  /**
-   * @brief Query whether the masking operation has been paused.
-   *
-   * @return True if the masking operation has been paused.
-   */
-  bool IsPaused() const;
-
-  /**
-   * @brief Enable or disable an edit mode.
-   *
-   * The default is EDIT_DISABLED.
-   * @param[in] editMode The edit mode required.
-   */
-  void SetEditMode( EditMode editMode );
-
-  /**
-   * @brief Query which edit mode is enabled.
-   */
-  EditMode GetEditMode() const;
-
-  /**
-   * @brief Set the aspect ratio to be preserved when editing the source image.
-   *
-   * @param[in] widthOverHeight The aspect ratio i.e. width divided by height. If a value
-   * of zero or less is set, then the aspect ratio of the source image will be ignored.
-   */
-  void SetSourceAspectRatio( float widthOverHeight );
-
-  /**
-   * @brief Query the aspect ratio preserved when editing the source image.
-   *
-   * @return The aspect ratio (width divided by height) or zero if no aspect ratio is set.
-   */
-  float GetSourceAspectRatio() const;
-
-  /**
-   * @brief Set the maximum scale applied when editing the source image.
-   *
-   * The minimum scale is implied by the target width/height i.e. the source image will
-   * always fill that area when edit mode is enabled.
-   * @param[in] scale The maximum scale.
-   */
-  void SetMaximumSourceScale( float scale );
-
-  /**
-   * @brief Query the maximum scale applied when editing the source image.
-   *
-   * @return The maximum scale.
-   */
-  float GetMaximumSourceScale() const;
-
-  /**
-   * @brief Set the rotation applied to the source image.
-   *
-   * @param[in] rotation The new rotation; by default the source image is not rotated (ROTATE_0).
-   */
-  void SetSourceRotation( ImageRotation rotation );
-
-  /**
-   * @brief Query the rotation applied to the source image.
-   *
-   * @return The current rotation.
-   */
-  ImageRotation GetSourceRotation() const;
-
-public: /* Signals */
-
-  /// @brief Finished signal type.
-  typedef Signal< void (MaskedImageView& source) > MaskedImageViewSignal;
-
-  /**
-   * @brief Signal emitted when the render task which targets the
-   * frame buffer of the masked image has finished.
-   *
-   * This signal carries information of the control handle to the callback function.
-   * @return the signal
-   */
-  MaskedImageViewSignal& MaskFinishedSignal();
-
-public: // Not intended for application developers
-
-  /**
-   * @brief Creates a handle using the Toolkit::Internal implementation.
-   *
-   * @param[in]  implementation  The Control implementation.
-   */
-  DALI_INTERNAL MaskedImageView(Internal::MaskedImageView& implementation);
-
-  /**
-   * @brief Allows the creation of this Control from an Internal::CustomActor pointer.
-   *
-   * @param[in]  internal  A pointer to the internal CustomActor.
-   */
-  explicit DALI_INTERNAL MaskedImageView(Dali::Internal::CustomActor* internal);
-};
-
-} // namespace Toolkit
-
-} // namespace Dali
-
-#endif // __DALI_TOOLKIT_MASKED_IMAGE_VIEW_H__
diff --git a/dali-toolkit/public-api/controls/scrollable/item-view/item-factory.cpp b/dali-toolkit/public-api/controls/scrollable/item-view/item-factory.cpp
deleted file mode 100644 (file)
index 4aec6f3..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-#include <dali-toolkit/public-api/controls/scrollable/item-view/item-factory.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-ItemFactory::~ItemFactory()
-{
-}
-
-} // namespace Toolkit
-
-} // namespace Dali
index e02c62b..d018716 100644 (file)
@@ -35,10 +35,12 @@ class ItemFactory
 {
 public:
 
+  class Extension; ///< Forward declare future extension interface
+
   /**
    * @brief Virtual destructor.
    */
-  DALI_EXPORT_API virtual ~ItemFactory() = 0;
+  DALI_EXPORT_API virtual ~ItemFactory() {};
 
   /**
    * @brief Query the number of items available from the factory.
@@ -63,6 +65,16 @@ public:
    * @param[in] actor The actor that represents the released item.
    */
   virtual void ItemReleased(unsigned int itemId, Actor actor) {};
+
+  /**
+   * Retrieve the extension for this control
+   *
+   * @return The extension if available, NULL otherwise
+   */
+  virtual Extension* GetExtension()
+  {
+    return NULL;
+  }
 };
 
 } // namespace Toolkit
index 39e09a3..0dc2bb4 100644 (file)
@@ -95,12 +95,12 @@ float ItemLayout::GetClosestOnScreenLayoutPosition(int itemID, float currentLayo
   return currentLayoutPosition;
 }
 
-int ItemLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled)
+int ItemLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled)
 {
   switch( direction )
   {
-    case Control::Left:
-    case Control::Up:
+    case Control::KeyboardFocus::LEFT:
+    case Control::KeyboardFocus::UP:
     {
       itemID--;
       if( itemID < 0 )
@@ -109,8 +109,8 @@ int ItemLayout::GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Cont
       }
       break;
     }
-    case Control::Right:
-    case Control::Down:
+    case Control::KeyboardFocus::RIGHT:
+    case Control::KeyboardFocus::DOWN:
     {
       itemID++;
       if( itemID >= maxItems )
index 5eda5d4..2ed5f1e 100644 (file)
@@ -304,7 +304,7 @@ public:
    * @param[in] loopEnabled Whether the KeyboardFocusManager is set to wrap around between first and last item
    * @return The next item ID.
    */
-  DALI_IMPORT_API virtual int GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocusNavigationDirection direction, bool loopEnabled);
+  DALI_IMPORT_API virtual int GetNextFocusItemID(int itemID, int maxItems, Dali::Toolkit::Control::KeyboardFocus::Direction direction, bool loopEnabled);
 
   /**
    * @brief Query the flick speed factor of the layout while swipping.
index 1ee9b3d..6daa933 100644 (file)
@@ -128,14 +128,14 @@ float ItemView::GetMinimumSwipeDistance() const
   return GetImpl(*this).GetMinimumSwipeDistance();
 }
 
-void ItemView::SetMouseWheelScrollDistanceStep(float step)
+void ItemView::SetWheelScrollDistanceStep(float step)
 {
-  GetImpl(*this).SetMouseWheelScrollDistanceStep(step);
+  GetImpl(*this).SetWheelScrollDistanceStep(step);
 }
 
-float ItemView::GetMouseWheelScrollDistanceStep() const
+float ItemView::GetWheelScrollDistanceStep() const
 {
-  return GetImpl(*this).GetMouseWheelScrollDistanceStep();
+  return GetImpl(*this).GetWheelScrollDistanceStep();
 }
 
 void ItemView::SetAnchoring(bool enabled)
index 60a2312..ca51a44 100644 (file)
@@ -217,18 +217,18 @@ public:
   float GetMinimumSwipeDistance() const;
 
   /**
-   * @brief Set the step of scroll distance in actor coordinates for each mouse wheel event received.
+   * @brief Set the step of scroll distance in actor coordinates for each wheel event received.
    *
    * @param[in] step The step of scroll distance(pixel).
    */
-  void SetMouseWheelScrollDistanceStep(float step);
+  void SetWheelScrollDistanceStep(float step);
 
   /**
-   * @brief Get the step of scroll distance in actor coordinates for each mouse wheel event received.
+   * @brief Get the step of scroll distance in actor coordinates for each wheel event received.
    *
    * @return The step of scroll distance(pixel)
    */
-  float GetMouseWheelScrollDistanceStep() const;
+  float GetWheelScrollDistanceStep() const;
 
   /**
    * @brief Set whether to enable the animation for the layout to
index 158acfa..398939e 100644 (file)
@@ -248,7 +248,7 @@ unsigned int FixedRuler::GetPageFromPosition(float position, bool wrap) const
     {
       position = WrapInDomain(position, mDomain.min, mDomain.max);
     }
-    page = floor((position - mDomain.min) / mSpacing + 0.5f);
+    page = std::max(static_cast<double>(0.0f), floor((position - mDomain.min) / mSpacing + 0.5f));
 
     if(wrap)
     {
@@ -486,14 +486,14 @@ void ScrollView::SetMaxFlickSpeed(float speed)
   GetImpl(*this).SetMaxFlickSpeed(speed);
 }
 
-Vector2 ScrollView::GetMouseWheelScrollDistanceStep() const
+Vector2 ScrollView::GetWheelScrollDistanceStep() const
 {
-  return GetImpl(*this).GetMouseWheelScrollDistanceStep();
+  return GetImpl(*this).GetWheelScrollDistanceStep();
 }
 
-void ScrollView::SetMouseWheelScrollDistanceStep(Vector2 step)
+void ScrollView::SetWheelScrollDistanceStep(Vector2 step)
 {
-  GetImpl(*this).SetMouseWheelScrollDistanceStep(step);
+  GetImpl(*this).SetWheelScrollDistanceStep(step);
 }
 
 Vector2 ScrollView::GetCurrentScrollPosition() const
@@ -501,11 +501,6 @@ Vector2 ScrollView::GetCurrentScrollPosition() const
   return GetImpl(*this).GetCurrentScrollPosition();
 }
 
-void ScrollView::SetScrollPosition(const Vector2& position)
-{
-  GetImpl(*this).SetScrollPosition(position);
-}
-
 unsigned int ScrollView::GetCurrentPage() const
 {
   return GetImpl(*this).GetCurrentPage();
index eebf4da..fb9d5cb 100644 (file)
@@ -840,24 +840,24 @@ public:
 
   /**
    * @brief Gets the step of scroll distance in actor coordinates for
-   * each mouse wheel event received in free panning mode.
+   * each wheel event received in free panning mode.
    *
    * @return The step of scroll distance(pixel) in X and Y axes.
    */
-  Vector2 GetMouseWheelScrollDistanceStep() const;
+  Vector2 GetWheelScrollDistanceStep() const;
 
   /**
    * @brief Sets the step of scroll distance in actor coordinates for
-   * each mouse wheel event received in free panning mode.
+   * each wheel event received in free panning mode.
    *
    * @param[in] step The step of scroll distance(pixel) in X and Y axes.
    *
    * @note: If snap points are defined in the rulers, it will always
    * scroll to the next snap point towards the scroll direction while
-   * receiving the mouse wheel events.
+   * receiving the wheel events.
    *
    */
-  void SetMouseWheelScrollDistanceStep(Vector2 step);
+  void SetWheelScrollDistanceStep(Vector2 step);
 
   /**
    * @brief Retrieves current scroll position.
@@ -867,14 +867,6 @@ public:
   Vector2 GetCurrentScrollPosition() const;
 
   /**
-   * @brief Sets the current scroll position, overriding current scroll animations. If panning is currently taking place
-   *        SetScrollPosition will have no effect. Try to ensure panning has stopped before calling this function.
-   *
-   * @param[in] position The new scroll position to set.
-   */
-  void SetScrollPosition(const Vector2& position);
-
-  /**
    * @brief Retrieves current scroll page based on ScrollView
    * dimensions being the size of one page, and all pages laid out in
    * a grid fashion, increasing from left to right until the end of
index 5340137..3a833f3 100644 (file)
@@ -59,6 +59,11 @@ TextField TextField::DownCast( BaseHandle handle )
   return Control::DownCast<TextField, Internal::TextField>(handle);
 }
 
+TextField::TextChangedSignalType& TextField::TextChangedSignal()
+{
+  return Dali::Toolkit::GetImpl( *this ).TextChangedSignal();
+}
+
 TextField::MaxLengthReachedSignalType& TextField::MaxLengthReachedSignal()
 {
   return Dali::Toolkit::GetImpl( *this ).MaxLengthReachedSignal();
index 96de982..4f3da41 100644 (file)
@@ -38,6 +38,7 @@ class TextField;
  *  * Signals
  * | %Signal Name           | Method                                              |
  * |------------------------|-----------------------------------------------------|
+ * | text-changed           | @ref TextChangedSignal()                            |
  * | max-length-reached     | @ref MaxLengthReachedSignal()                       |
  *
  */
@@ -90,7 +91,8 @@ public:
       SELECTION_HANDLE_PRESSED_IMAGE_LEFT,      ///< name "selection-handle-pressed-image-left"  The image to display when the left selection handle is pressed,           type STRING
       SELECTION_HANDLE_PRESSED_IMAGE_RIGHT,     ///< name "selection-handle-pressed-image-right" The image to display when the right selection handle is pressed,          type STRING
       SELECTION_HIGHLIGHT_COLOR,                ///< name "selection-highlight-color"            The color of the selection highlight,                                     type VECTOR4
-      DECORATION_BOUNDING_BOX                   ///< name "decoration-bounding-box"              The decorations (handles etc) will positioned within this area on-screen, type RECTANGLE
+      DECORATION_BOUNDING_BOX,                  ///< name "decoration-bounding-box"              The decorations (handles etc) will positioned within this area on-screen, type RECTANGLE
+      INPUT_METHOD_SETTINGS                     ///< name "input-method-settings"                The settings to relating to the System's Input Method, Key and Value      type MAP
     };
   };
 
@@ -108,6 +110,7 @@ public:
   // Type Defs
 
   /// @brief Max Characters Exceed signal type;
+  typedef Signal<void ( TextField ) > TextChangedSignalType;
   typedef Signal<void ( TextField ) > MaxLengthReachedSignalType;
 
   /**
@@ -157,6 +160,17 @@ public:
   // Signals
 
   /**
+   * @brief This signal is emitted when the text changes.
+   *
+   * A callback of the following type may be connected:
+   * @code
+   *   void YourCallbackName( TextField textField );
+   * @endcode
+   * @return The signal to connect to.
+   */
+  TextChangedSignalType& TextChangedSignal();
+
+  /**
    * @brief This signal is emitted when inserted text exceeds the maximum character limit.
    *
    * A callback of the following type may be connected:
index d1c1763..59e5a69 100644 (file)
@@ -31,7 +31,7 @@ namespace Toolkit
 
 const unsigned int TOOLKIT_MAJOR_VERSION = 1;
 const unsigned int TOOLKIT_MINOR_VERSION = 0;
-const unsigned int TOOLKIT_MICRO_VERSION = 41;
+const unsigned int TOOLKIT_MICRO_VERSION = 43;
 const char * const TOOLKIT_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index 81bdafb..76c306d 100755 (executable)
@@ -1,29 +1,16 @@
 # Add local source files here
 
 public_api_src_files = \
-  $(public_api_src_dir)/builder/builder.cpp \
-  $(public_api_src_dir)/builder/json-parser.cpp \
-  $(public_api_src_dir)/builder/tree-node.cpp \
   $(public_api_src_dir)/controls/control-impl.cpp \
   $(public_api_src_dir)/controls/control.cpp \
   $(public_api_src_dir)/controls/alignment/alignment.cpp \
-  $(public_api_src_dir)/controls/bubble-effect/bubble-emitter.cpp \
   $(public_api_src_dir)/controls/buttons/button.cpp \
   $(public_api_src_dir)/controls/buttons/check-box-button.cpp \
   $(public_api_src_dir)/controls/buttons/push-button.cpp \
   $(public_api_src_dir)/controls/buttons/radio-button.cpp \
-  $(public_api_src_dir)/controls/default-controls/check-button-factory.cpp \
-  $(public_api_src_dir)/controls/default-controls/push-button-factory.cpp \
   $(public_api_src_dir)/controls/default-controls/solid-color-actor.cpp \
-  $(public_api_src_dir)/controls/magnifier/magnifier.cpp \
-  $(public_api_src_dir)/controls/page-turn-view/page-factory.cpp \
-  $(public_api_src_dir)/controls/page-turn-view/page-turn-landscape-view.cpp \
-  $(public_api_src_dir)/controls/page-turn-view/page-turn-portrait-view.cpp \
-  $(public_api_src_dir)/controls/page-turn-view/page-turn-view.cpp \
-  $(public_api_src_dir)/controls/popup/popup.cpp \
   $(public_api_src_dir)/controls/scroll-bar/scroll-bar.cpp \
   $(public_api_src_dir)/controls/scrollable/item-view/default-item-layout.cpp \
-  $(public_api_src_dir)/controls/scrollable/item-view/item-factory.cpp \
   $(public_api_src_dir)/controls/scrollable/item-view/item-layout.cpp \
   $(public_api_src_dir)/controls/scrollable/item-view/item-view.cpp \
   $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view-constraints.cpp \
@@ -31,27 +18,12 @@ public_api_src_files = \
   $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view-page-path-effect.cpp \
   $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view.cpp \
   $(public_api_src_dir)/controls/scrollable/scrollable.cpp \
-  $(public_api_src_dir)/controls/shadow-view/shadow-view.cpp \
-  $(public_api_src_dir)/controls/slider/slider.cpp \
-  $(public_api_src_dir)/controls/super-blur-view/super-blur-view.cpp \
   $(public_api_src_dir)/controls/table-view/table-view.cpp \
   $(public_api_src_dir)/controls/text-controls/text-label.cpp \
   $(public_api_src_dir)/controls/text-controls/text-field.cpp \
-  $(public_api_src_dir)/controls/text-controls/text-selection-popup.cpp \
-  $(public_api_src_dir)/controls/tool-bar/tool-bar.cpp \
-  $(public_api_src_dir)/controls/bloom-view/bloom-view.cpp \
-  $(public_api_src_dir)/controls/effects-view/effects-view.cpp \
   $(public_api_src_dir)/controls/gaussian-blur-view/gaussian-blur-view.cpp \
-  $(public_api_src_dir)/controls/image-view/masked-image-view.cpp \
-  $(public_api_src_dir)/focus-manager/focus-manager.cpp \
+  $(public_api_src_dir)/focus-manager/accessibility-focus-manager.cpp \
   $(public_api_src_dir)/focus-manager/keyboard-focus-manager.cpp \
-  $(public_api_src_dir)/focus-manager/keyinput-focus-manager.cpp \
-  $(public_api_src_dir)/styling/style-manager.cpp \
-  $(public_api_src_dir)/transition-effects/cube-transition-cross-effect.cpp \
-  $(public_api_src_dir)/transition-effects/cube-transition-effect.cpp \
-  $(public_api_src_dir)/transition-effects/cube-transition-fold-effect.cpp \
-  $(public_api_src_dir)/transition-effects/cube-transition-wave-effect.cpp \
-  $(public_api_src_dir)/scripting/script.cpp \
   $(public_api_src_dir)/dali-toolkit-version.cpp \
   $(public_api_src_dir)/enums.cpp
 
@@ -61,11 +33,6 @@ public_api_header_files = \
   $(public_api_src_dir)/dali-toolkit-version.h \
   $(public_api_src_dir)/enums.h
 
-public_api_builder_header_files = \
-  $(public_api_src_dir)/builder/builder.h \
-  $(public_api_src_dir)/builder/json-parser.h \
-  $(public_api_src_dir)/builder/tree-node.h
-
 public_api_controls_header_files = \
   $(public_api_src_dir)/controls/control-impl.h \
   $(public_api_src_dir)/controls/control.h
@@ -79,26 +46,12 @@ public_api_buttons_header_files = \
   $(public_api_src_dir)/controls/buttons/push-button.h \
   $(public_api_src_dir)/controls/buttons/radio-button.h
 
-public_api_bloom_view_header_files = \
-  $(public_api_src_dir)/controls/bloom-view/bloom-view.h
-
-public_api_bubble_emitter_header_files = \
-  $(public_api_src_dir)/controls/bubble-effect/bubble-emitter.h
-
 public_api_default_controls_header_files = \
-  $(public_api_src_dir)/controls/default-controls/check-button-factory.h \
-  $(public_api_src_dir)/controls/default-controls/push-button-factory.h \
   $(public_api_src_dir)/controls/default-controls/solid-color-actor.h
 
-public_api_effects_view_header_files = \
-  $(public_api_src_dir)/controls/effects-view/effects-view.h
-
 public_api_gaussian_blur_view_header_files = \
   $(public_api_src_dir)/controls/gaussian-blur-view/gaussian-blur-view.h
 
-public_api_image_view_header_files = \
-  $(public_api_src_dir)/controls/image-view/masked-image-view.h
-
 public_api_item_view_header_files = \
   $(public_api_src_dir)/controls/scrollable/item-view/default-item-layout.h \
   $(public_api_src_dir)/controls/scrollable/item-view/item-factory.h \
@@ -106,18 +59,6 @@ public_api_item_view_header_files = \
   $(public_api_src_dir)/controls/scrollable/item-view/item-view-declarations.h \
   $(public_api_src_dir)/controls/scrollable/item-view/item-view.h
 
-public_api_magnifier_header_files = \
-  $(public_api_src_dir)/controls/magnifier/magnifier.h
-
-public_api_page_turn_view_header_files = \
-  $(public_api_src_dir)/controls/page-turn-view/page-factory.h \
-  $(public_api_src_dir)/controls/page-turn-view/page-turn-landscape-view.h \
-  $(public_api_src_dir)/controls/page-turn-view/page-turn-portrait-view.h \
-  $(public_api_src_dir)/controls/page-turn-view/page-turn-view.h
-
-public_api_popup_header_files = \
-  $(public_api_src_dir)/controls/popup/popup.h
-
 public_api_scrollable_header_files = \
   $(public_api_src_dir)/controls/scrollable/scrollable.h
 
@@ -130,70 +71,16 @@ public_api_scroll_view_header_files = \
   $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view-page-path-effect.h \
   $(public_api_src_dir)/controls/scrollable/scroll-view/scroll-view.h
 
-public_api_slider_header_files = \
-  $(public_api_src_dir)/controls/slider/slider.h
-
-public_api_shadow_view_header_files = \
-  $(public_api_src_dir)/controls/shadow-view/shadow-view.h
-
-public_api_super_blur_view_header_files = \
-  $(public_api_src_dir)/controls/super-blur-view/super-blur-view.h
-
 public_api_table_view_header_files = \
   $(public_api_src_dir)/controls/table-view/table-view.h
 
 public_api_text_controls_header_files = \
   $(public_api_src_dir)/controls/text-controls/text-label.h \
-  $(public_api_src_dir)/controls/text-controls/text-field.h \
-  $(public_api_src_dir)/controls/text-controls/text-selection-popup.h
-
-public_api_tool_bar_header_files = \
-  $(public_api_src_dir)/controls/tool-bar/tool-bar.h
+  $(public_api_src_dir)/controls/text-controls/text-field.h
 
 public_api_focus_manager_header_files = \
-  $(public_api_src_dir)/focus-manager/focus-manager.h \
-  $(public_api_src_dir)/focus-manager/keyboard-focus-manager.h \
-  $(public_api_src_dir)/focus-manager/keyinput-focus-manager.h
-
-public_api_shader_effects_header_files = \
-  $(public_api_src_dir)/shader-effects/alpha-discard-effect.h \
-  $(public_api_src_dir)/shader-effects/bendy-effect.h \
-  $(public_api_src_dir)/shader-effects/blind-effect.h \
-  $(public_api_src_dir)/shader-effects/bouncing-effect.h \
-  $(public_api_src_dir)/shader-effects/carousel-effect.h \
-  $(public_api_src_dir)/shader-effects/displacement-effect.h \
-  $(public_api_src_dir)/shader-effects/dissolve-effect.h \
-  $(public_api_src_dir)/shader-effects/dissolve-local-effect.h \
-  $(public_api_src_dir)/shader-effects/distance-field-effect.h \
-  $(public_api_src_dir)/shader-effects/image-region-effect.h \
-  $(public_api_src_dir)/shader-effects/iris-effect.h \
-  $(public_api_src_dir)/shader-effects/mask-effect.h \
-  $(public_api_src_dir)/shader-effects/mirror-effect.h \
-  $(public_api_src_dir)/shader-effects/motion-blur-effect.h \
-  $(public_api_src_dir)/shader-effects/motion-stretch-effect.h \
-  $(public_api_src_dir)/shader-effects/nine-patch-mask-effect.h \
-  $(public_api_src_dir)/shader-effects/overlay-effect.h \
-  $(public_api_src_dir)/shader-effects/quadratic-bezier.h \
-  $(public_api_src_dir)/shader-effects/ripple-effect.h \
-  $(public_api_src_dir)/shader-effects/ripple2d-effect.h \
-  $(public_api_src_dir)/shader-effects/shear-effect.h \
-  $(public_api_src_dir)/shader-effects/soft-button-effect.h \
-  $(public_api_src_dir)/shader-effects/spot-effect.h \
-  $(public_api_src_dir)/shader-effects/square-dissolve-effect.h \
-  $(public_api_src_dir)/shader-effects/swirl-effect.h
-
-public_api_styling_header_files = \
-  $(public_api_src_dir)/styling/style-manager.h
-
-public_api_transition_effects_header_files = \
-  $(public_api_src_dir)/transition-effects/cube-transition-effect.h \
-  $(public_api_src_dir)/transition-effects/cube-transition-cross-effect.h \
-  $(public_api_src_dir)/transition-effects/cube-transition-fold-effect.h \
-  $(public_api_src_dir)/transition-effects/cube-transition-wave-effect.h
-
-public_api_scripting_header_files = \
-  $(public_api_src_dir)/scripting/script.h \
-  $(public_api_src_dir)/scripting/script-plugin.h
+  $(public_api_src_dir)/focus-manager/accessibility-focus-manager.h \
+  $(public_api_src_dir)/focus-manager/keyboard-focus-manager.h
 
 public_api_rendering_backend_header_files = \
   $(public_api_src_dir)/text/rendering-backend.h
diff --git a/dali-toolkit/public-api/focus-manager/accessibility-focus-manager.cpp b/dali-toolkit/public-api/focus-manager/accessibility-focus-manager.cpp
new file mode 100644 (file)
index 0000000..83af89d
--- /dev/null
@@ -0,0 +1,204 @@
+/*
+ * Copyright (c) 2015 Samsung Electronics Co., Ltd.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ *
+ */
+
+// CLASS HEADER
+#include <dali-toolkit/public-api/focus-manager/accessibility-focus-manager.h>
+
+// EXTERNAL INCLUDES
+#include <dali/devel-api/adaptor-framework/singleton-service.h>
+
+// INTERNAL INCLUDES
+#include <dali-toolkit/internal/focus-manager/accessibility-focus-manager-impl.h>
+
+namespace Dali
+{
+
+namespace Toolkit
+{
+
+AccessibilityFocusManager::AccessibilityFocusManager()
+{
+}
+
+AccessibilityFocusManager::~AccessibilityFocusManager()
+{
+}
+
+AccessibilityFocusManager AccessibilityFocusManager::Get()
+{
+  AccessibilityFocusManager manager;
+
+  // Check whether the accessibility focus manager is already created
+  SingletonService singletonService( SingletonService::Get() );
+  if ( singletonService )
+  {
+    Dali::BaseHandle handle = singletonService.GetSingleton(typeid(AccessibilityFocusManager));
+    if(handle)
+    {
+      // If so, downcast the handle of singleton to focus manager
+      manager = AccessibilityFocusManager(dynamic_cast<Internal::AccessibilityFocusManager*>(handle.GetObjectPtr()));
+    }
+
+    if(!manager)
+    {
+      // If not, create the accessibility focus manager and register it as a singleton
+      manager = AccessibilityFocusManager(new Internal::AccessibilityFocusManager());
+      singletonService.Register(typeid(manager), manager);
+    }
+  }
+
+  return manager;
+}
+
+AccessibilityFocusManager::AccessibilityFocusManager(Internal::AccessibilityFocusManager *impl)
+  : BaseHandle(impl)
+{
+}
+
+void AccessibilityFocusManager::SetAccessibilityAttribute(Actor actor, AccessibilityAttribute type, const std::string& text)
+{
+  GetImpl(*this).SetAccessibilityAttribute(actor, type, text);
+}
+
+std::string AccessibilityFocusManager::GetAccessibilityAttribute(Actor actor, AccessibilityAttribute type) const
+{
+  return GetImpl(*this).GetAccessibilityAttribute(actor, type);
+}
+
+void AccessibilityFocusManager::SetFocusOrder(Actor actor, const unsigned int order)
+{
+  GetImpl(*this).SetFocusOrder(actor, order);
+}
+
+unsigned int AccessibilityFocusManager::GetFocusOrder(Actor actor) const
+{
+  return GetImpl(*this).GetFocusOrder(actor);
+}
+
+unsigned int AccessibilityFocusManager::GenerateNewFocusOrder() const
+{
+  return GetImpl(*this).GenerateNewFocusOrder();
+}
+
+Actor AccessibilityFocusManager::GetActorByFocusOrder(const unsigned int order)
+{
+  return GetImpl(*this).GetActorByFocusOrder(order);
+}
+
+bool AccessibilityFocusManager::SetCurrentFocusActor(Actor actor)
+{
+  return GetImpl(*this).SetCurrentFocusActor(actor);
+}
+
+Actor AccessibilityFocusManager::GetCurrentFocusActor()
+{
+  return GetImpl(*this).GetCurrentFocusActor();
+}
+
+Actor AccessibilityFocusManager::GetCurrentFocusGroup()
+{
+  return GetImpl(*this).GetCurrentFocusGroup();
+}
+
+unsigned int AccessibilityFocusManager::GetCurrentFocusOrder()
+{
+  return GetImpl(*this).GetCurrentFocusOrder();
+}
+
+bool AccessibilityFocusManager::MoveFocusForward()
+{
+  return GetImpl(*this).MoveFocusForward();
+}
+
+bool AccessibilityFocusManager::MoveFocusBackward()
+{
+  return GetImpl(*this).MoveFocusBackward();
+}
+
+void AccessibilityFocusManager::ClearFocus()
+{
+  GetImpl(*this).ClearFocus();
+}
+
+void AccessibilityFocusManager::Reset()
+{
+  GetImpl(*this).Reset();
+}
+
+void AccessibilityFocusManager::SetFocusGroup(Actor actor, bool isFocusGroup)
+{
+  GetImpl(*this).SetFocusGroup(actor, isFocusGroup);
+}
+
+bool AccessibilityFocusManager::IsFocusGroup(Actor actor) const
+{
+  return GetImpl(*this).IsFocusGroup(actor);
+}
+
+void AccessibilityFocusManager::SetGroupMode(bool enabled)
+{
+  GetImpl(*this).SetGroupMode(enabled);
+}
+
+bool AccessibilityFocusManager::GetGroupMode() const
+{
+  return GetImpl(*this).GetGroupMode();
+}
+
+void AccessibilityFocusManager::SetWrapMode(bool wrapped)
+{
+  GetImpl(*this).SetWrapMode(wrapped);
+}
+
+bool AccessibilityFocusManager::GetWrapMode() const
+{
+  return GetImpl(*this).GetWrapMode();
+}
+
+void AccessibilityFocusManager::SetFocusIndicatorActor(Actor indicator)
+{
+  GetImpl(*this).SetFocusIndicatorActor(indicator);
+}
+
+Actor AccessibilityFocusManager::GetFocusIndicatorActor()
+{
+  return GetImpl(*this).GetFocusIndicatorActor();
+}
+
+Actor AccessibilityFocusManager::GetFocusGroup(Actor actor)
+{
+  return GetImpl(*this).GetFocusGroup(actor);
+}
+
+AccessibilityFocusManager::FocusChangedSignalType& AccessibilityFocusManager::FocusChangedSignal()
+{
+  return GetImpl(*this).FocusChangedSignal();
+}
+
+AccessibilityFocusManager::FocusOvershotSignalType& AccessibilityFocusManager::FocusOvershotSignal()
+{
+  return GetImpl(*this).FocusOvershotSignal();
+}
+
+AccessibilityFocusManager::FocusedActorActivatedSignalType& AccessibilityFocusManager::FocusedActorActivatedSignal()
+{
+  return GetImpl(*this).FocusedActorActivatedSignal();
+}
+
+} // namespace Toolkit
+
+} // namespace Dali
@@ -1,5 +1,5 @@
-#ifndef __DALI_TOOLKIT_FOCUS_MANAGER_H__
-#define __DALI_TOOLKIT_FOCUS_MANAGER_H__
+#ifndef __DALI_TOOLKIT_ACCESSIBILITY_FOCUS_MANAGER_H__
+#define __DALI_TOOLKIT_ACCESSIBILITY_FOCUS_MANAGER_H__
 
 /*
  * Copyright (c) 2015 Samsung Electronics Co., Ltd.
@@ -30,12 +30,12 @@ namespace Toolkit
 
 namespace Internal DALI_INTERNAL
 {
-class FocusManager;
+class AccessibilityFocusManager;
 }
 
 /**
- * @brief Manages registration of actors in a focus chain and changing the focused
- * actor within that chain.
+ * @brief Manages registration of actors in a accessibility focus chain and changing the
+ * focused actor within that chain.
  *
  * This class provides the functionality of registering the focus order and description
  * of actors and maintaining the focus chain.
@@ -51,7 +51,7 @@ class FocusManager;
  * | focus-overshot          | @ref FocusOvershotSignal()         |
  * | focused-actor-activated | @ref FocusedActorActivatedSignal() |
  */
-class DALI_IMPORT_API FocusManager : public BaseHandle
+class DALI_IMPORT_API AccessibilityFocusManager : public BaseHandle
 {
 public:
 
@@ -90,30 +90,30 @@ public:
   typedef Signal< void ( Actor ) > FocusedActorActivatedSignalType;
 
   /**
-   * @brief Create a FocusManager handle; this can be initialised with FocusManager::New().
+   * @brief Create a AccessibilityFocusManager handle; this can be initialised with AccessibilityFocusManager::New().
    *
    * Calling member functions with an uninitialised handle is not allowed.
    */
-  FocusManager();
+  AccessibilityFocusManager();
 
   /**
    * @brief Destructor
    *
    * This is non-virtual since derived Handle types must not contain data or virtual methods.
    */
-  ~FocusManager();
+  ~AccessibilityFocusManager();
 
   /**
-   * @brief Get the singleton of FocusManager object.
+   * @brief Get the singleton of AccessibilityFocusManager object.
    *
-   * @return A handle to the FocusManager control.
+   * @return A handle to the AccessibilityFocusManager control.
    */
-  static FocusManager Get();
+  static AccessibilityFocusManager Get();
 
   /**
    * @brief Set the information of the specified actor's accessibility attribute.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The Actor has been initialized.
    * @param actor The actor the text to be set with
    * @param type The attribute type the text to be set with
@@ -124,7 +124,7 @@ public:
   /**
    * @brief Get the text of the specified actor's accessibility attribute.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The Actor has been initialized.
    * @param actor The actor to be queried
    * @param type The attribute type to be queried
@@ -145,7 +145,7 @@ public:
    * description but with no focus order being set yet) and therefore
    * that actor is not focusable.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The Actor has been initialized.
    * @param actor The actor the focus order to be set with
    * @param order The focus order of the actor
@@ -158,7 +158,7 @@ public:
    * When the focus order is 0, it means the focus order of the actor
    * is undefined.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The Actor has been initialized.
    * @param actor The actor to be queried
    * @return The focus order of the actor
@@ -176,7 +176,7 @@ public:
    * 1 where FOLast is the focus order of the very last control in the
    * focus chain.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @return The focus order of the actor
    */
   unsigned int GenerateNewFocusOrder() const;
@@ -187,7 +187,7 @@ public:
    * It will return an empty handle if the actor is not in the stage
    * or has a focus order of 0.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @param order The focus order of the actor
    *
    * @return The actor that has the specified focus order or an empty
@@ -202,7 +202,7 @@ public:
    * have a defined focus order and must be focusable, visible and in
    * the stage.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The Actor has been initialized.
    * @param actor The actor to be focused
    * @return Whether the focus is successful or not
@@ -212,7 +212,7 @@ public:
   /**
    * @brief Get the current focused actor.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @return A handle to the current focused actor or an empty handle if no actor is focused.
    */
   Actor GetCurrentFocusActor();
@@ -220,7 +220,7 @@ public:
   /**
    * @brief Get the focus group of current focused actor.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    *
    * @return A handle to the immediate parent of the current focused
    * actor which is also a focus group, or an empty handle if no actor
@@ -230,7 +230,7 @@ public:
 
   /**
    * @brief Get the focus order of currently focused actor.
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    *
    * @return The focus order of the currently focused actor or 0 if no
    * actor is in focus.
@@ -244,7 +244,7 @@ public:
    * When the focus movement is wrapped around, the focus will be moved
    * to the first focusable actor when it reaches the end of the focus chain.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @return true if the moving was successful
    */
   bool MoveFocusForward();
@@ -257,7 +257,7 @@ public:
    * moved to the last focusable actor when it reaches the beginning
    * of the focus chain.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @return true if the moving was successful
    */
   bool MoveFocusBackward();
@@ -267,13 +267,13 @@ public:
    * that no actor is focused in the focus chain.
    *
    * It will emit focus changed signal without current focused actor
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    */
   void ClearFocus();
 
   /**
    * @brief Clear the every registered focusable actor from focus-manager.
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    */
   void Reset();
 
@@ -281,7 +281,7 @@ public:
    * @brief Set whether an actor is a focus group that can limit the
    * scope of focus movement to its child actors in the focus chain.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The Actor has been initialized.
    * @param actor The actor to be set as a focus group.
    * @param isFocusGroup Whether to set the actor to be a focus group or not.
@@ -291,7 +291,7 @@ public:
   /**
    * @brief Check whether the actor is set as a focus group or not.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The Actor has been initialized.
    * @param actor The actor to be checked.
    * @return Whether the actor is set as a focus group.
@@ -304,7 +304,7 @@ public:
    * When the group mode is enabled, the focus movement will be limited to the child actors
    * of the current focus group including the current focus group itself. The current focus
    * group is the closest ancestor of the current focused actor that set as a focus group.
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @param enabled Whether the group mode is enabled or not
    */
   void SetGroupMode(bool enabled);
@@ -312,7 +312,7 @@ public:
   /**
    * @brief Get whether the group mode is enabled or not.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @return Whether the group mode is enabled or not.
    */
   bool GetGroupMode() const;
@@ -323,7 +323,7 @@ public:
    *
    * When both the wrap mode and the group mode are enabled, focus will be
    * wrapped within the current focus group. Focus will not be wrapped in default.
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @param wrapped Whether the focus movement is wrapped around or not
    */
   void SetWrapMode(bool wrapped);
@@ -331,7 +331,7 @@ public:
   /**
    * @brief Get whether the wrap mode is enabled or not.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @return Whether the wrap mode is enabled or not.
    */
   bool GetWrapMode() const;
@@ -340,10 +340,10 @@ public:
    * @brief Set the focus indicator actor.
    *
    * This will replace the default focus indicator actor in
-   * FocusManager and will be added to the focused actor as a
+   * AccessibilityFocusManager and will be added to the focused actor as a
    * highlight.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @pre The indicator actor has been initialized.
    * @param indicator The indicator actor to be added
    */
@@ -352,7 +352,7 @@ public:
   /**
    * @brief Get the focus indicator actor.
    *
-   * @pre The FocusManager has been initialized.
+   * @pre The AccessibilityFocusManager has been initialized.
    * @return A handle to the focus indicator actor
    */
   Actor GetFocusIndicatorActor();
@@ -405,9 +405,9 @@ public:
 
 private:
 
-  explicit DALI_INTERNAL FocusManager(Internal::FocusManager *impl);
+  explicit DALI_INTERNAL AccessibilityFocusManager(Internal::AccessibilityFocusManager *impl);
 
-}; // class FocusManager
+}; // class AccessibilityFocusManager
 
 } // namespace Toolkit
 
diff --git a/dali-toolkit/public-api/focus-manager/focus-manager.cpp b/dali-toolkit/public-api/focus-manager/focus-manager.cpp
deleted file mode 100644 (file)
index c24c93e..0000000
+++ /dev/null
@@ -1,204 +0,0 @@
-/*
- * Copyright (c) 2015 Samsung Electronics Co., Ltd.
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- *
- */
-
-// CLASS HEADER
-#include <dali-toolkit/public-api/focus-manager/focus-manager.h>
-
-// EXTERNAL INCLUDES
-#include <dali/devel-api/adaptor-framework/singleton-service.h>
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/internal/focus-manager/focus-manager-impl.h>
-
-namespace Dali
-{
-
-namespace Toolkit
-{
-
-FocusManager::FocusManager()
-{
-}
-
-FocusManager::~FocusManager()
-{
-}
-
-FocusManager FocusManager::Get()
-{
-  FocusManager manager;
-
-  // Check whether the focus manager is already created
-  SingletonService singletonService( SingletonService::Get() );
-  if ( singletonService )
-  {
-    Dali::BaseHandle handle = singletonService.GetSingleton(typeid(FocusManager));
-    if(handle)
-    {
-      // If so, downcast the handle of singleton to focus manager
-      manager = FocusManager(dynamic_cast<Internal::FocusManager*>(handle.GetObjectPtr()));
-    }
-
-    if(!manager)
-    {
-      // If not, create the focus manager and register it as a singleton
-      manager = FocusManager(new Internal::FocusManager());
-      singletonService.Register(typeid(manager), manager);
-    }
-  }
-
-  return manager;
-}
-
-FocusManager::FocusManager(Internal::FocusManager *impl)
-  : BaseHandle(impl)
-{
-}
-
-void FocusManager::SetAccessibilityAttribute(Actor actor, AccessibilityAttribute type, const std::string& text)
-{
-  GetImpl(*this).SetAccessibilityAttribute(actor, type, text);
-}
-
-std::string FocusManager::GetAccessibilityAttribute(Actor actor, AccessibilityAttribute type) const
-{
-  return GetImpl(*this).GetAccessibilityAttribute(actor, type);
-}
-
-void FocusManager::SetFocusOrder(Actor actor, const unsigned int order)
-{
-  GetImpl(*this).SetFocusOrder(actor, order);
-}
-
-unsigned int FocusManager::GetFocusOrder(Actor actor) const
-{
-  return GetImpl(*this).GetFocusOrder(actor);
-}
-
-unsigned int FocusManager::GenerateNewFocusOrder() const
-{
-  return GetImpl(*this).GenerateNewFocusOrder();
-}
-
-Actor FocusManager::GetActorByFocusOrder(const unsigned int order)
-{
-  return GetImpl(*this).GetActorByFocusOrder(order);
-}
-
-bool FocusManager::SetCurrentFocusActor(Actor actor)
-{
-  return GetImpl(*this).SetCurrentFocusActor(actor);
-}
-
-Actor FocusManager::GetCurrentFocusActor()
-{
-  return GetImpl(*this).GetCurrentFocusActor();
-}
-
-Actor FocusManager::GetCurrentFocusGroup()
-{
-  return GetImpl(*this).GetCurrentFocusGroup();
-}
-
-unsigned int FocusManager::GetCurrentFocusOrder()
-{
-  return GetImpl(*this).GetCurrentFocusOrder();
-}
-
-bool FocusManager::MoveFocusForward()
-{
-  return GetImpl(*this).MoveFocusForward();
-}
-
-bool FocusManager::MoveFocusBackward()
-{
-  return GetImpl(*this).MoveFocusBackward();
-}
-
-void FocusManager::ClearFocus()
-{
-  GetImpl(*this).ClearFocus();
-}
-
-void FocusManager::Reset()
-{
-  GetImpl(*this).Reset();
-}
-
-void FocusManager::SetFocusGroup(Actor actor, bool isFocusGroup)
-{
-  GetImpl(*this).SetFocusGroup(actor, isFocusGroup);
-}
-
-bool FocusManager::IsFocusGroup(Actor actor) const
-{
-  return GetImpl(*this).IsFocusGroup(actor);
-}
-
-void FocusManager::SetGroupMode(bool enabled)
-{
-  GetImpl(*this).SetGroupMode(enabled);
-}
-
-bool FocusManager::GetGroupMode() const
-{
-  return GetImpl(*this).GetGroupMode();
-}
-
-void FocusManager::SetWrapMode(bool wrapped)
-{
-  GetImpl(*this).SetWrapMode(wrapped);
-}
-
-bool FocusManager::GetWrapMode() const
-{
-  return GetImpl(*this).GetWrapMode();
-}
-
-void FocusManager::SetFocusIndicatorActor(Actor indicator)
-{
-  GetImpl(*this).SetFocusIndicatorActor(indicator);
-}
-
-Actor FocusManager::GetFocusIndicatorActor()
-{
-  return GetImpl(*this).GetFocusIndicatorActor();
-}
-
-Actor FocusManager::GetFocusGroup(Actor actor)
-{
-  return GetImpl(*this).GetFocusGroup(actor);
-}
-
-FocusManager::FocusChangedSignalType& FocusManager::FocusChangedSignal()
-{
-  return GetImpl(*this).FocusChangedSignal();
-}
-
-FocusManager::FocusOvershotSignalType& FocusManager::FocusOvershotSignal()
-{
-  return GetImpl(*this).FocusOvershotSignal();
-}
-
-FocusManager::FocusedActorActivatedSignalType& FocusManager::FocusedActorActivatedSignal()
-{
-  return GetImpl(*this).FocusedActorActivatedSignal();
-}
-
-} // namespace Toolkit
-
-} // namespace Dali
index 316af96..2e0ffbe 100644 (file)
@@ -60,7 +60,7 @@ Actor KeyboardFocusManager::GetCurrentFocusActor()
   return GetImpl(*this).GetCurrentFocusActor();
 }
 
-bool KeyboardFocusManager::MoveFocus(Control::KeyboardFocusNavigationDirection direction)
+bool KeyboardFocusManager::MoveFocus(Control::KeyboardFocus::Direction direction)
 {
   return GetImpl(*this).MoveFocus(direction);
 }
index 68638a3..6afcd6b 100644 (file)
@@ -55,7 +55,7 @@ class DALI_IMPORT_API KeyboardFocusManager : public BaseHandle
 public:
 
   /// @brief Pre focus change signal
-  typedef Signal< Actor ( Actor, Actor, Control::KeyboardFocusNavigationDirection ) > PreFocusChangeSignalType;
+  typedef Signal< Actor ( Actor, Actor, Control::KeyboardFocus::Direction ) > PreFocusChangeSignalType;
 
   /// @brief Focus changed signal
   typedef Signal< void ( Actor, Actor ) > FocusChangedSignalType;
@@ -117,7 +117,7 @@ public:
    * @param direction The direction of focus movement
    * @return true if the movement was successful
    */
-  bool MoveFocus(Control::KeyboardFocusNavigationDirection direction);
+  bool MoveFocus(Control::KeyboardFocus::Direction direction);
 
   /**
    * @brief Clear the focus from the current focused actor if any, so
@@ -214,7 +214,7 @@ public: // Signals
    *
    * A callback of the following type may be connected:
    * @code
-   *   Actor YourCallbackName(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocusNavigationDirection direction);
+   *   Actor YourCallbackName(Actor currentFocusedActor, Actor proposedActorToFocus, Control::KeyboardFocus::Direction direction);
    * @endcode
    * @pre The Object has been initialized.
    * @return The signal to connect to.
diff --git a/dali-toolkit/styles/mobile/tizen-default-theme.json b/dali-toolkit/styles/mobile/tizen-default-theme.json
deleted file mode 120000 (symlink)
index bdcd8ba..0000000
+++ /dev/null
@@ -1 +0,0 @@
-./tizen-dark-theme.json
\ No newline at end of file
diff --git a/dali-toolkit/styles/tizen-default-theme.json b/dali-toolkit/styles/tizen-default-theme.json
deleted file mode 120000 (symlink)
index c09c1a1..0000000
+++ /dev/null
@@ -1 +0,0 @@
-tizen-dark-theme.json
\ No newline at end of file
index ce7bd16..0179c50 100644 (file)
@@ -1,2 +1,2 @@
 <hr>\r
-<a href="http://www.samsung.com">Copyright (c) 2008-2014 Samsung Electronics, Co., Ltd.</a></body></html>\r
+<a href="http://www.samsung.com">Copyright (c) 2008-2015 Samsung Electronics, Co., Ltd.</a></body></html>\r
diff --git a/docs/content/figures/image-scaling/cards.jpg b/docs/content/figures/image-scaling/cards.jpg
new file mode 100644 (file)
index 0000000..9af5d02
Binary files /dev/null and b/docs/content/figures/image-scaling/cards.jpg differ
diff --git a/docs/content/figures/image-scaling/concept-rectangles.svg b/docs/content/figures/image-scaling/concept-rectangles.svg
new file mode 100644 (file)
index 0000000..0b4cebc
--- /dev/null
@@ -0,0 +1,909 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1052.3622"
+   height="744.09448"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="concept-rectangles.svg"
+   inkscape:export-filename="/tmp/page.png"
+   inkscape:export-xdpi="89.269394"
+   inkscape:export-ydpi="89.269394">
+  <defs
+     id="defs4">
+    <marker
+       inkscape:stockid="DotL"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="DotL"
+       style="overflow:visible">
+      <path
+         id="path4335"
+         d="M -2.5,-1.0 C -2.5,1.7600000 -4.7400000,4.0 -7.5,4.0 C -10.260000,4.0 -12.5,1.7600000 -12.5,-1.0 C -12.5,-3.7600000 -10.260000,-6.0 -7.5,-6.0 C -4.7400000,-6.0 -2.5,-3.7600000 -2.5,-1.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt"
+         transform="scale(0.8) translate(7.4, 1)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Mend"
+       style="overflow:visible;">
+      <path
+         id="path4301"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(0.6) rotate(180) translate(0,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow2Lend"
+       style="overflow:visible;">
+      <path
+         id="path4295"
+         style="fill-rule:evenodd;stroke-width:0.62500000;stroke-linejoin:round;"
+         d="M 8.7185878,4.0337352 L -2.2072895,0.016013256 L 8.7185884,-4.0017078 C 6.9730900,-1.6296469 6.9831476,1.6157441 8.7185878,4.0337352 z "
+         transform="scale(1.1) rotate(180) translate(1,0)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow1Lend"
+       orient="auto"
+       refY="0.0"
+       refX="0.0"
+       id="Arrow1Lend"
+       style="overflow:visible;">
+      <path
+         id="path4277"
+         d="M 0.0,0.0 L 5.0,-5.0 L -12.5,0.0 L 5.0,5.0 L 0.0,0.0 z "
+         style="fill-rule:evenodd;stroke:#000000;stroke-width:1.0pt;"
+         transform="scale(0.8) rotate(180) translate(12.5,0)" />
+    </marker>
+    <linearGradient
+       id="linearGradient5404"
+       osb:paint="gradient">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5406" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5408" />
+    </linearGradient>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend-0"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4301-1"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend-1"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4301-7"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend-2"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4301-75"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend-08"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4301-71"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+    <marker
+       inkscape:stockid="Arrow2Mend"
+       orient="auto"
+       refY="0"
+       refX="0"
+       id="Arrow2Mend-5"
+       style="overflow:visible">
+      <path
+         inkscape:connector-curvature="0"
+         id="path4301-6"
+         style="fill-rule:evenodd;stroke-width:0.625;stroke-linejoin:round"
+         d="M 8.7185878,4.0337352 -2.2072895,0.01601326 8.7185884,-4.0017078 c -1.7454984,2.3720609 -1.7354408,5.6174519 -6e-7,8.035443 z"
+         transform="scale(-0.6,-0.6)" />
+    </marker>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.45254834"
+     inkscape:cx="743.41974"
+     inkscape:cy="837.71772"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1158"
+     inkscape:window-x="1200"
+     inkscape:window-y="418"
+     inkscape:window-maximized="1"
+     objecttolerance="4"
+     gridtolerance="4">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3181"
+       empspacing="4"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="32px"
+       spacingy="32px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.2677)">
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/image-scaling/cards.jpg"
+       xlink:href="cards.jpg"
+       y="-387.63782"
+       x="160"
+       id="image4157"
+       height="256"
+       width="256"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30"
+       width="128"
+       height="192.00003"
+       x="128"
+       y="636.36212"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-3"
+       width="1.0498172e-05"
+       height="192"
+       x="191.99998"
+       y="188.36218"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.63730645;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-0"
+       width="96.000015"
+       height="1.7800441e-05"
+       x="143.99998"
+       y="508.36218"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-31"
+       width="192"
+       height="192"
+       x="512"
+       y="188.36212"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.14999795;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-34"
+       width="95.999939"
+       height="95.999954"
+       x="560"
+       y="460.36221"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-4"
+       width="128"
+       height="192.00003"
+       x="544"
+       y="636.36212"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.27617979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 224,284.36215 c 256,0 256,0 256,0"
+       id="path4268"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 288,732.36221 c 224,0 224,0 224,0"
+       id="path4268-0"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 280.67645,508.36215 c 224,0 247.40075,3e-5 247.40075,3e-5"
+       id="path4268-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:none"
+       d="m 352,-99.6378 c 0,159.99998 0,383.99998 0,383.99998"
+       id="path5307"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:url(#DotL)"
+       d="m 320,-99.6378 0,607.99998"
+       id="path5879"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 688.3995,508.36218 c 224,0 239.6005,0 239.6005,0"
+       id="path4268-4-4"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 704,732.36218 96,0 0,-224"
+       id="path6099"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 736,284.36218 64,0 0,224 0,0 0,0"
+       id="path6101"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccccc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-4-1"
+       width="96"
+       height="96"
+       x="960"
+       y="460.32184"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-31-3"
+       width="256"
+       height="256"
+       x="160"
+       y="-387.63782"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 864,508.36218 c 0,-511.9999802 0,-735.99998 0,-735.99998 l -416,0"
+       id="path6157"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/image-scaling/cards.jpg"
+       xlink:href="cards.jpg"
+       y="636.36243"
+       x="1423.9999"
+       id="image4157-4-5"
+       height="96.000244"
+       width="96.000244"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 1088,508.36218 c 72.8302,0 192,0 192,0"
+       id="path4268-4-4-9"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6201"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(128,1044.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6203"><rect
+           id="rect6205"
+           width="132.37465"
+           height="33.093662"
+           x="1085.7874"
+           y="-436.24619" /></flowRegion><flowPara
+         id="flowPara6207" /></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6415"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(128,1044.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6417"><rect
+           id="rect6419"
+           width="129.22287"
+           height="96.129211"
+           x="-3.1517775"
+           y="-119.49255" /></flowRegion><flowPara
+         id="flowPara6421" /></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6423"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(128,1044.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6425"><rect
+           id="rect6427"
+           width="129.22287"
+           height="111.8881"
+           x="0"
+           y="-117.91666" /></flowRegion><flowPara
+         id="flowPara6429"
+         style="font-weight:normal">Requested Size</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6431"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(-44.87499,5.9402098)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6433"><rect
+           id="rect6435"
+           width="168.25861"
+           height="49.914528"
+           x="193.83432"
+           y="-119.49255" /></flowRegion><flowPara
+         id="flowPara6437">Raw size (e.)</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6439"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(128,1044.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6441"><rect
+           id="rect6443"
+           width="256"
+           height="89.944725"
+           x="352"
+           y="-119.90552"
+           ry="0" /></flowRegion><flowPara
+         id="flowPara6445">Target for fitting</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6447"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(114.89062,696.48284)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6449"><rect
+           id="rect6451"
+           width="130.3277"
+           height="34.676437"
+           x="830.49335"
+           y="-116.34077" /></flowRegion><flowPara
+         id="flowPara6453">Fitted Size</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6455"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(285.45703,886.12794)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6457"><rect
+           id="rect6459"
+           width="192"
+           height="52.511868"
+           x="1090.3438"
+           y="-113.69655" /></flowRegion><flowPara
+         id="flowPara6461">Scaled Pixels</flowPara></flowRoot>    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:6.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-3-0"
+       width="1.4271966"
+       height="8.0063074e-11"
+       x="192"
+       y="-3.6378176"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-30-31-3-4"
+       width="256"
+       height="256"
+       x="480"
+       y="-131.63782"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.35555581;stroke-dasharray:4.19999981, 12.59999943;stroke-dashoffset:0"
+       id="rect6501-6"
+       width="320"
+       height="1184"
+       x="448"
+       y="-163.63782"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:4.2;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.35555581000000003;stroke-dasharray:4.2,12.6;stroke-dashoffset:0"
+       id="rect6501"
+       width="192"
+       height="1024"
+       x="96"
+       y="-35.637817"
+       ry="0"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot6521"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(128,1044.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion6523"><rect
+           id="rect6525"
+           width="16.714825"
+           height="34.543972"
+           x="603.96234"
+           y="-92.761055" /></flowRegion><flowPara
+         id="flowPara6527" /></flowRoot>    <path
+       style="fill:none;stroke:#000000;stroke-width:4.27617979;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-end:url(#Arrow2Mend)"
+       d="m 224,-3.6378202 c 192,0 199.26801,0 199.26801,0"
+       id="path4268-1"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:none"
+       d="m 384,-99.63782 c 0,95.9999998 0,95.9999998 0,95.9999998"
+       id="path5307-3"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="cc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 800,284.36218 c 0,-287.9999802 0,-287.9999802 0,-287.9999802 l -32,0"
+       id="path6571"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none;marker-mid:none;marker-end:none"
+       d="m 448,-291.6378 c 832,0 736,-2e-5 736,-2e-5 l 0,800"
+       id="path6573"
+       inkscape:connector-curvature="0"
+       sodipodi:nodetypes="ccc"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/image-scaling/cards.jpg"
+       xlink:href="cards.jpg"
+       y="444.36243"
+       x="1407.9999"
+       id="image4157-0"
+       height="128.00024"
+       width="128.00024"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/image-scaling/cards.jpg"
+       xlink:href="cards.jpg"
+       y="124.36218"
+       x="1344"
+       id="image4157-4"
+       height="256"
+       width="256"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot7007"
+       style="fill:black;stroke:none;stroke-opacity:1;stroke-width:1px;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;font-family:Sans;font-style:normal;font-weight:normal;font-size:24px;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;text-align:center"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion7009"><rect
+           id="rect7011"
+           width="14.182999"
+           height="64.611435"
+           x="1279.6217"
+           y="594.38507" /></flowRegion><flowPara
+         id="flowPara7013" /></flowRoot>    <rect
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.35555581;stroke-dasharray:4.2, 12.6;stroke-dashoffset:0"
+       id="rect6501-6-0"
+       width="320"
+       height="736.00024"
+       x="1312"
+       y="92.362183"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot7035"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(-34.212099,300.28395)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion7037"><rect
+           id="rect7039"
+           width="128.02527"
+           height="133.95055"
+           x="1151.9747"
+           y="361.1535" /></flowRegion><flowPara
+         id="flowPara7041">SamplingMode</flowPara></flowRoot>    <path
+       style="fill:none;stroke:#000000;stroke-width:4.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="m 1184,328.09448 c 0,-128 0,-128 0,-128"
+       id="path7439"
+       inkscape:connector-curvature="0"
+       transform="translate(0,308.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot7035-9"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(-351.98437,301.85984)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion7037-2"><rect
+           id="rect7039-7"
+           width="128.02527"
+           height="133.95055"
+           x="1151.9747"
+           y="361.1535" /></flowRegion><flowPara
+         id="flowPara7041-2">Fitting Mode</flowPara></flowRoot>    <path
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       d="m 864,636.36218 c 0,-128 0,-128 0,-128"
+       id="path7439-2"
+       inkscape:connector-curvature="0"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.35555576;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect7524"
+       width="88.249771"
+       height="73.972183"
+       x="821.03802"
+       y="350.12228"
+       transform="translate(0,308.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"
+       ry="20.057787" />
+    <rect
+       style="fill:none;stroke:#000000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:0.3555557;stroke-dasharray:none;stroke-dashoffset:0"
+       id="rect7526"
+       width="128"
+       height="77.123962"
+       x="1120"
+       y="346.97052"
+       transform="translate(0,308.2677)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"
+       ry="23.400755" />
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="1482.6659"
+       y="403.63452"
+       id="text7530"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532"
+         x="1482.6659"
+         y="403.63452">k.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="1472"
+       y="604.36218"
+       id="text7534"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7536"
+         x="1472"
+         y="604.36218">l.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="1472"
+       y="753.48798"
+       id="text7538"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7540"
+         x="1472"
+         y="753.48798">m.</tspan></text>
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="path7542"
+       sodipodi:cx="1424"
+       sodipodi:cy="-327.90552"
+       sodipodi:rx="16"
+       sodipodi:ry="16"
+       d="m 1440,-327.90552 c 0,8.83656 -7.1634,16 -16,16 -8.8366,0 -16,-7.16344 -16,-16 0,-8.83655 7.1634,-16 16,-16 8.8366,0 16,7.16345 16,16 z"
+       transform="matrix(0.5,0,0,0.5,472,672.43994)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="path7542-2"
+       sodipodi:cx="1424"
+       sodipodi:cy="-327.90552"
+       sodipodi:rx="16"
+       sodipodi:ry="16"
+       d="m 1440,-327.90552 c 0,8.83656 -7.1634,16 -16,16 -8.8366,0 -16,-7.16344 -16,-16 0,-8.83655 7.1634,-16 16,-16 8.8366,0 16,7.16345 16,16 z"
+       transform="matrix(0.5,0,0,0.5,152,672.43994)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       sodipodi:type="arc"
+       style="fill:#000000;fill-opacity:1;stroke:none"
+       id="path7542-1"
+       sodipodi:cx="1424"
+       sodipodi:cy="-327.90552"
+       sodipodi:rx="16"
+       sodipodi:ry="16"
+       d="m 1440,-327.90552 c 0,8.83656 -7.1634,16 -16,16 -8.8366,0 -16,-7.16344 -16,-16 0,-8.83655 7.1634,-16 16,-16 8.8366,0 16,7.16345 16,16 z"
+       transform="matrix(0.5,0,0,0.5,88,672.51025)"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="192"
+       y="34.160557"
+       id="text7530-8"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7"
+         x="192"
+         y="34.160557">a.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="192"
+       y="414.78287"
+       id="text7530-8-1"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-2"
+         x="192"
+         y="414.78287">b.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="192"
+       y="546.16058"
+       id="text7530-8-6"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-9"
+         x="192"
+         y="546.16058">c.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="192"
+       y="866.16058"
+       id="text7530-8-7"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-4"
+         x="192"
+         y="866.16058">d.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="608"
+       y="162.16058"
+       id="text7530-8-3"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-6"
+         x="608"
+         y="162.16058">f.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="608"
+       y="418.16058"
+       id="text7530-8-33"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-48"
+         x="608"
+         y="418.16058">g.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="608"
+       y="596.53143"
+       id="text7530-8-0"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-0"
+         x="608"
+         y="596.53143">h.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="608"
+       y="866.16058"
+       id="text7530-8-68"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-66"
+         x="608"
+         y="866.16058">i.</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       x="1003.7878"
+       y="632.43921"
+       id="text7530-8-2"
+       sodipodi:linespacing="125%"
+       inkscape:export-filename="/tmp/concept-rectangles.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><tspan
+         sodipodi:role="line"
+         id="tspan7532-7-68"
+         x="1003.7878"
+         y="632.43921">j.</tspan></text>
+  </g>
+</svg>
diff --git a/docs/content/figures/image-scaling/dog.jpg b/docs/content/figures/image-scaling/dog.jpg
new file mode 100644 (file)
index 0000000..f7d2cc4
Binary files /dev/null and b/docs/content/figures/image-scaling/dog.jpg differ
diff --git a/docs/content/figures/image-scaling/door.jpg b/docs/content/figures/image-scaling/door.jpg
new file mode 100644 (file)
index 0000000..7317ea5
Binary files /dev/null and b/docs/content/figures/image-scaling/door.jpg differ
diff --git a/docs/content/figures/image-scaling/example-fitting-mode-options.svg b/docs/content/figures/image-scaling/example-fitting-mode-options.svg
new file mode 100644 (file)
index 0000000..f64443b
--- /dev/null
@@ -0,0 +1,547 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1052.3622"
+   height="744.09448"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="example-fitting-mode-options.svg"
+   inkscape:export-filename="/tmp/1.png"
+   inkscape:export-xdpi="89.269394"
+   inkscape:export-ydpi="89.269394">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient5404"
+       osb:paint="gradient">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5406" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5408" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="1"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.63456256"
+     inkscape:cx="704.49723"
+     inkscape:cy="501.75416"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1158"
+     inkscape:window-x="1200"
+     inkscape:window-y="418"
+     inkscape:window-maximized="1"
+     objecttolerance="4"
+     gridtolerance="4">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3181"
+       empspacing="4"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="32px"
+       spacingy="32px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.2677)">
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/door.jpg"
+       xlink:href="door.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="256"
+       height="256"
+       id="image6106"
+       x="32"
+       y="92.362183" />
+    <g
+       id="g6199"
+       transform="matrix(0.75,0,0,0.75,158.83024,-448.90946)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394">
+      <image
+         sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/door.jpg"
+         xlink:href="door.jpg"
+         inkscape:export-ydpi="89.269394"
+         inkscape:export-xdpi="89.269394"
+         inkscape:export-filename="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/shared-javascript-and-cpp-documentation/door-scale-to-fill2.png"
+         y="764.36218"
+         x="512"
+         id="image6106-0"
+         height="256"
+         width="256" />
+      <rect
+         y="764.36218"
+         x="719.81006"
+         height="258.6265"
+         width="51.309372"
+         id="rect6179"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         inkscape:export-filename="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/shared-javascript-and-cpp-documentation/door-scale-to-fill.png"
+         inkscape:export-xdpi="89.269394"
+         inkscape:export-ydpi="89.269394" />
+      <rect
+         y="764.36218"
+         x="512"
+         height="259.15176"
+         width="48.189934"
+         id="rect6179-2"
+         style="fill:#ffffff;fill-opacity:1;stroke:none"
+         inkscape:export-filename="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/shared-javascript-and-cpp-documentation/door-scale-to-fill.png"
+         inkscape:export-xdpi="89.269394"
+         inkscape:export-ydpi="89.269394" />
+      <rect
+         inkscape:export-ydpi="89.269394"
+         inkscape:export-xdpi="89.269394"
+         inkscape:export-filename="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/shared-javascript-and-cpp-documentation/door-scale-to-fill2.png"
+         y="764.36218"
+         x="560"
+         height="256.00003"
+         width="160"
+         id="rect3183-1-9-1-6"
+         style="fill:none;stroke:#ff0000;stroke-width:4.28426027;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.21319532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1"
+       width="120"
+       height="192.00003"
+       x="356"
+       y="124.36218"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/door.jpg"
+       xlink:href="door.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="120"
+       height="135.85014"
+       id="image6106-5"
+       x="804"
+       y="152.43707" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.21319532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-4"
+       width="120"
+       height="192.00003"
+       x="804"
+       y="124.36212"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/door.jpg"
+       xlink:href="door.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="120"
+       height="135.85014"
+       id="image6106-5-3"
+       x="1030.3395"
+       y="152.43707" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.21319532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-4-1"
+       width="120"
+       height="192.00003"
+       x="1030.3395"
+       y="124.36212"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/door.jpg"
+       xlink:href="door.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="192"
+       height="192"
+       id="image6106-4"
+       x="1218.3396"
+       y="124.36218" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.21319532;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-3"
+       width="120"
+       height="192.00003"
+       x="1254.3396"
+       y="124.36218"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/dog.jpg"
+       xlink:href="dog.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="256"
+       height="256"
+       id="image6359"
+       x="32"
+       y="412.36218" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.31857371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-0"
+       width="128.00003"
+       height="192"
+       x="-604.36218"
+       y="320"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"
+       transform="matrix(0,-1,1,0,0,0)" />
+    <g
+       id="g6476"
+       transform="translate(-7.128906e-7,-384.82965)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394">
+      <image
+         sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/dog.jpg"
+         xlink:href="dog.jpg"
+         y="829.19183"
+         x="544"
+         id="image6359-2"
+         height="192"
+         width="192" />
+      <rect
+         transform="translate(0,308.2677)"
+         y="520.09448"
+         x="544"
+         height="32"
+         width="192"
+         id="rect6470"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         transform="translate(0,308.2677)"
+         y="680.09448"
+         x="541.66046"
+         height="33.94965"
+         width="196.67912"
+         id="rect6474"
+         style="fill:#ffffff;fill-opacity:1;stroke:none" />
+      <rect
+         transform="matrix(0,-1,1,0,0,0)"
+         inkscape:export-ydpi="89.269394"
+         inkscape:export-xdpi="89.269394"
+         inkscape:export-filename="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/shared-javascript-and-cpp-documentation/example-scale-to-fill-sequence.png"
+         y="544"
+         x="-989.19183"
+         height="192"
+         width="128.00003"
+         id="rect3183-1-9-1-0-2"
+         style="fill:none;stroke:#ff0000;stroke-width:3.31857371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/dog.jpg"
+       xlink:href="dog.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="192"
+       height="192"
+       id="image6359-2-2"
+       x="994.33954"
+       y="445.19183" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.31857371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-0-4"
+       width="128.00003"
+       height="192"
+       x="-605.19183"
+       y="994.33954"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"
+       transform="matrix(0,-1,1,0,0,0)" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/dog.jpg"
+       xlink:href="dog.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="128"
+       height="128"
+       id="image6359-2-2-2"
+       x="1250.3396"
+       y="477.19183" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.31857371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-0-0"
+       width="128.00003"
+       height="192"
+       x="-605.19183"
+       y="1218.3396"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"
+       transform="matrix(0,-1,1,0,0,0)" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/dog.jpg"
+       xlink:href="dog.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="128"
+       height="128"
+       id="image6359-2-2-2-1"
+       x="800"
+       y="476.36218" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:3.31857371;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9-1-0-0-6"
+       width="128.00003"
+       height="192"
+       x="-604.36218"
+       y="768"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"
+       transform="matrix(0,-1,1,0,0,0)" />
+    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3024"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(0,244.2677)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion3026"><rect
+           id="rect3028"
+           width="256.29398"
+           height="127.03266"
+           x="33.429649"
+           y="746.32312" /></flowRegion><flowPara
+         id="flowPara3030">Raw Image</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3032"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(0,244.2677)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion3034"><rect
+           id="rect3036"
+           width="192.25842"
+           height="96.91716"
+           x="318.32953"
+           y="744.09448" /></flowRegion><flowPara
+         id="flowPara3038">Fitting Target</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3040"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(0,244.2677)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion3042"><rect
+           id="rect3044"
+           width="192.25842"
+           height="91.40155"
+           x="542.89368"
+           y="744.88245" /></flowRegion><flowPara
+         id="flowPara3046">SCALE_TO_FILL</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3048"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(0,244.2677)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion3050"><rect
+           id="rect3052"
+           width="193.83432"
+           height="96.91716"
+           x="767.45782"
+           y="744.09448" /></flowRegion><flowPara
+         id="flowPara3054">SHRINK_TO_FIT</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3056"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(0,244.2677)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion3058"><rect
+           id="rect3060"
+           width="193.83432"
+           height="126.85905"
+           x="990.44611"
+           y="745.67035" /></flowRegion><flowPara
+         id="flowPara3062">FIT_WIDTH</flowPara></flowRoot>    <flowRoot
+       xml:space="preserve"
+       id="flowRoot3064"
+       style="font-size:24px;font-style:normal;font-weight:normal;text-align:center;line-height:125%;letter-spacing:0px;word-spacing:0px;text-anchor:middle;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
+       transform="translate(0,244.2677)"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394"><flowRegion
+         id="flowRegion3066"><rect
+           id="rect3068"
+           width="193.04637"
+           height="100.06894"
+           x="1215.7982"
+           y="744.88245" /></flowRegion><flowPara
+         id="flowPara3070">FIT_HEIGHT</flowPara></flowRoot>    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/liberty.jpg"
+       xlink:href="liberty.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       width="256"
+       height="256"
+       id="image3239"
+       x="32"
+       y="700.36218" />
+    <g
+       id="g4034"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394">
+      <rect
+         y="764.36218"
+         x="352"
+         height="128"
+         width="128"
+         id="rect3244"
+         style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+         inkscape:export-filename="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/shared-javascript-and-cpp-documentation/fitting-mode-options.png"
+         inkscape:export-xdpi="89.269394"
+         inkscape:export-ydpi="89.269394" />
+    </g>
+    <g
+       transform="translate(224,-1.9531262e-7)"
+       id="g4034-5"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394">
+      <image
+         sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/liberty.jpg"
+         xlink:href="liberty.jpg"
+         y="764.36218"
+         x="352"
+         id="image3239-9-8"
+         height="128"
+         width="128" />
+      <rect
+         y="764.36218"
+         x="352"
+         height="128"
+         width="128"
+         id="rect3244-5"
+         style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+    <g
+       transform="translate(448,-1.9531262e-7)"
+       id="g4034-4"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394">
+      <image
+         sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/liberty.jpg"
+         xlink:href="liberty.jpg"
+         y="764.36218"
+         x="352"
+         id="image3239-9-88"
+         height="128"
+         width="128" />
+      <rect
+         y="764.36218"
+         x="352"
+         height="128"
+         width="128"
+         id="rect3244-9"
+         style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+    <g
+       transform="translate(672,-1.9531262e-7)"
+       id="g4034-3"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394">
+      <image
+         sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/liberty.jpg"
+         xlink:href="liberty.jpg"
+         y="764.36218"
+         x="352"
+         id="image3239-9-85"
+         height="128"
+         width="128" />
+      <rect
+         y="764.36218"
+         x="352"
+         height="128"
+         width="128"
+         id="rect3244-8"
+         style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+    <g
+       transform="translate(896,-1.9531262e-7)"
+       id="g4034-2"
+       inkscape:export-filename="/tmp/fitting-mode-options.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394">
+      <image
+         sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/liberty.jpg"
+         xlink:href="liberty.jpg"
+         y="764.36218"
+         x="352"
+         id="image3239-9-7"
+         height="128"
+         width="128" />
+      <rect
+         y="764.36218"
+         x="352"
+         height="128"
+         width="128"
+         id="rect3244-95"
+         style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
+    </g>
+  </g>
+</svg>
diff --git a/docs/content/figures/image-scaling/example-scale-to-fill-problem.svg b/docs/content/figures/image-scaling/example-scale-to-fill-problem.svg
new file mode 100644 (file)
index 0000000..fcdde97
--- /dev/null
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1052.3622"
+   height="744.09448"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="example-scale-to-fill-problem.svg"
+   inkscape:export-filename="/tmp/example-scale-to-fill-sequence.png"
+   inkscape:export-xdpi="89.269394"
+   inkscape:export-ydpi="89.269394">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient5404"
+       osb:paint="gradient">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5406" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5408" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.94173904"
+     inkscape:cx="330.62812"
+     inkscape:cy="291.60912"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1158"
+     inkscape:window-x="1200"
+     inkscape:window-y="418"
+     inkscape:window-maximized="1"
+     objecttolerance="4"
+     gridtolerance="4">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3181"
+       empspacing="4"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="32px"
+       spacingy="32px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.2677)">
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/phone.png"
+       xlink:href="phone.png"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/image3087.png"
+       width="187"
+       height="348"
+       id="image3087"
+       x="736"
+       y="608.36218" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/gallery-large-12.jpg"
+       xlink:href="gallery-large-12.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/image3087.png"
+       width="512"
+       height="512"
+       id="image3178"
+       x="32"
+       y="508.36218" />
+    <rect
+       style="fill:#ffffff;fill-opacity:1;stroke-width:4.19999980999999956;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke:#ff0000;stroke-opacity:1"
+       id="rect3183"
+       width="154.95831"
+       height="254.03409"
+       x="753.73383"
+       y="347.32999"
+       transform="translate(0,308.2677)"
+       inkscape:export-filename="/tmp/image3087.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:4.19999980999999956;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3957"
+       width="512"
+       height="512"
+       x="32"
+       y="200.09448"
+       transform="translate(0,308.2677)"
+       ry="0"
+       inkscape:export-filename="/tmp/image3087.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#ff0000;stroke-width:4.2;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 554.87974,200.09448 C 736,345.39199 736,346.14284 736,346.14284"
+       id="path5414"
+       inkscape:connector-curvature="0"
+       transform="translate(0,308.2677)"
+       inkscape:export-filename="/tmp/image3087.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <path
+       style="fill:none;stroke:#ff0000;stroke-width:4.20000000000000018;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;stroke-miterlimit:4;stroke-dasharray:none"
+       d="M 553.37804,712.09448 C 736,604.43598 736,604.43598 736,604.43598"
+       id="path5416"
+       inkscape:connector-curvature="0"
+       transform="translate(0,308.2677)"
+       inkscape:export-filename="/tmp/image3087.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+  </g>
+</svg>
diff --git a/docs/content/figures/image-scaling/example-scale-to-fill-sequence.svg b/docs/content/figures/image-scaling/example-scale-to-fill-sequence.svg
new file mode 100644 (file)
index 0000000..12d0eec
--- /dev/null
@@ -0,0 +1,172 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+   xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   xmlns:xlink="http://www.w3.org/1999/xlink"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="1052.3622"
+   height="744.09448"
+   id="svg2"
+   version="1.1"
+   inkscape:version="0.48.3.1 r9886"
+   sodipodi:docname="example-scale-to-fill-sequence.svg"
+   inkscape:export-filename="/tmp/example-scale-to-fill-problem.png"
+   inkscape:export-xdpi="89.269394"
+   inkscape:export-ydpi="89.269394">
+  <defs
+     id="defs4">
+    <linearGradient
+       id="linearGradient5404"
+       osb:paint="gradient">
+      <stop
+         style="stop-color:#ffffff;stop-opacity:1;"
+         offset="0"
+         id="stop5406" />
+      <stop
+         style="stop-color:#ffffff;stop-opacity:0;"
+         offset="1"
+         id="stop5408" />
+    </linearGradient>
+  </defs>
+  <sodipodi:namedview
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="0.94173902"
+     inkscape:cx="676.6218"
+     inkscape:cy="430.48889"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="true"
+     inkscape:window-width="1920"
+     inkscape:window-height="1158"
+     inkscape:window-x="1200"
+     inkscape:window-y="418"
+     inkscape:window-maximized="1"
+     objecttolerance="4"
+     gridtolerance="4">
+    <inkscape:grid
+       type="xygrid"
+       id="grid3181"
+       empspacing="4"
+       visible="true"
+       enabled="true"
+       snapvisiblegridlinesonly="true"
+       spacingx="32px"
+       spacingy="32px" />
+  </sodipodi:namedview>
+  <metadata
+     id="metadata7">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+        <dc:title></dc:title>
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1"
+     transform="translate(0,-308.2677)">
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:4.19999980999999956;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3957"
+       width="512"
+       height="512"
+       x="32"
+       y="200.09448"
+       transform="translate(0,308.2677)"
+       ry="0"
+       inkscape:export-filename="/tmp/rect3957.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/gallery-large-12.jpg"
+       xlink:href="gallery-large-12.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/rect3957.png"
+       width="512"
+       height="512"
+       id="image3178"
+       x="32"
+       y="508.36218" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/gallery-large-12.jpg"
+       xlink:href="gallery-large-12.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/rect3957.png"
+       width="256"
+       height="256"
+       id="image3178-6"
+       x="640"
+       y="636.36218" />
+    <rect
+       style="fill:none;stroke:#ff0000;stroke-width:4.19999981;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect5513"
+       width="256"
+       height="256"
+       x="640"
+       y="636.36218"
+       inkscape:export-filename="/tmp/rect3957.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <image
+       sodipodi:absref="/home/SERILOCAL/andrew.cox/git/opendali-features/dali-toolkit/docs/content/figures/gallery-large-12.jpg"
+       xlink:href="gallery-large-12.jpg"
+       inkscape:export-ydpi="89.269394"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-filename="/tmp/rect3957.png"
+       width="256"
+       height="256"
+       id="image3178-6-5"
+       x="992"
+       y="636.36218" />
+    <rect
+       style="fill:#000000;fill-opacity:0.74666664;stroke:none"
+       id="rect5554"
+       width="50.182735"
+       height="256"
+       x="992"
+       y="328.09448"
+       transform="translate(0,308.2677)"
+       inkscape:export-filename="/tmp/rect3957.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:#000000;fill-opacity:0.74666628;stroke:none"
+       id="rect5554-1"
+       width="50.182735"
+       height="256"
+       x="1197.8173"
+       y="636.36218"
+       inkscape:export-filename="/tmp/rect3957.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+    <rect
+       style="fill:none;fill-opacity:1;stroke:#ff0000;stroke-width:4.19999980999999956;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
+       id="rect3183-1-9"
+       width="154.95831"
+       height="254.03409"
+       x="1043.3221"
+       y="637.48846"
+       inkscape:export-filename="/tmp/rect3957.png"
+       inkscape:export-xdpi="89.269394"
+       inkscape:export-ydpi="89.269394" />
+  </g>
+</svg>
diff --git a/docs/content/figures/image-scaling/gallery-large-12.jpg b/docs/content/figures/image-scaling/gallery-large-12.jpg
new file mode 100644 (file)
index 0000000..7173b85
Binary files /dev/null and b/docs/content/figures/image-scaling/gallery-large-12.jpg differ
diff --git a/docs/content/figures/image-scaling/liberty.jpg b/docs/content/figures/image-scaling/liberty.jpg
new file mode 100644 (file)
index 0000000..e42dba7
Binary files /dev/null and b/docs/content/figures/image-scaling/liberty.jpg differ
diff --git a/docs/content/figures/image-scaling/phone-transparent-screen.png b/docs/content/figures/image-scaling/phone-transparent-screen.png
new file mode 100644 (file)
index 0000000..e8a988b
Binary files /dev/null and b/docs/content/figures/image-scaling/phone-transparent-screen.png differ
diff --git a/docs/content/figures/image-scaling/phone.png b/docs/content/figures/image-scaling/phone.png
new file mode 100644 (file)
index 0000000..250b881
Binary files /dev/null and b/docs/content/figures/image-scaling/phone.png differ
diff --git a/docs/content/images/animation/animated-path.png b/docs/content/images/animation/animated-path.png
new file mode 100644 (file)
index 0000000..04ae2a6
Binary files /dev/null and b/docs/content/images/animation/animated-path.png differ
diff --git a/docs/content/images/architecture.png b/docs/content/images/architecture.png
new file mode 100644 (file)
index 0000000..d9aaa26
Binary files /dev/null and b/docs/content/images/architecture.png differ
diff --git a/docs/content/images/dali-threads.png b/docs/content/images/dali-threads.png
new file mode 100644 (file)
index 0000000..997d238
Binary files /dev/null and b/docs/content/images/dali-threads.png differ
diff --git a/docs/content/images/example-documentation/example-code.png b/docs/content/images/example-documentation/example-code.png
deleted file mode 100644 (file)
index 7d9cab6..0000000
Binary files a/docs/content/images/example-documentation/example-code.png and /dev/null differ
diff --git a/docs/content/images/image-scaling/concept-rectangles.jpg b/docs/content/images/image-scaling/concept-rectangles.jpg
new file mode 100644 (file)
index 0000000..edd6eca
Binary files /dev/null and b/docs/content/images/image-scaling/concept-rectangles.jpg differ
diff --git a/docs/content/images/image-scaling/demo-fitting-sampling.jpg b/docs/content/images/image-scaling/demo-fitting-sampling.jpg
new file mode 100644 (file)
index 0000000..5d07fcd
Binary files /dev/null and b/docs/content/images/image-scaling/demo-fitting-sampling.jpg differ
diff --git a/docs/content/images/image-scaling/demo-sampling-modes.jpg b/docs/content/images/image-scaling/demo-sampling-modes.jpg
new file mode 100644 (file)
index 0000000..ffe94a8
Binary files /dev/null and b/docs/content/images/image-scaling/demo-sampling-modes.jpg differ
diff --git a/docs/content/images/image-scaling/example-scale-to-fill-problem.jpg b/docs/content/images/image-scaling/example-scale-to-fill-problem.jpg
new file mode 100644 (file)
index 0000000..33ed74f
Binary files /dev/null and b/docs/content/images/image-scaling/example-scale-to-fill-problem.jpg differ
diff --git a/docs/content/images/image-scaling/example-scale-to-fill-sequence.jpg b/docs/content/images/image-scaling/example-scale-to-fill-sequence.jpg
new file mode 100644 (file)
index 0000000..e432e76
Binary files /dev/null and b/docs/content/images/image-scaling/example-scale-to-fill-sequence.jpg differ
diff --git a/docs/content/images/image-scaling/fitting-mode-options.jpg b/docs/content/images/image-scaling/fitting-mode-options.jpg
new file mode 100644 (file)
index 0000000..3d085b8
Binary files /dev/null and b/docs/content/images/image-scaling/fitting-mode-options.jpg differ
diff --git a/docs/content/images/image-scaling/sampling_modes_box.png b/docs/content/images/image-scaling/sampling_modes_box.png
new file mode 100644 (file)
index 0000000..9e54e89
Binary files /dev/null and b/docs/content/images/image-scaling/sampling_modes_box.png differ
diff --git a/docs/content/images/image-scaling/sampling_modes_box_then_linear.png b/docs/content/images/image-scaling/sampling_modes_box_then_linear.png
new file mode 100644 (file)
index 0000000..cc32253
Binary files /dev/null and b/docs/content/images/image-scaling/sampling_modes_box_then_linear.png differ
diff --git a/docs/content/images/image-scaling/sampling_modes_box_then_nearest.png b/docs/content/images/image-scaling/sampling_modes_box_then_nearest.png
new file mode 100644 (file)
index 0000000..a1792f6
Binary files /dev/null and b/docs/content/images/image-scaling/sampling_modes_box_then_nearest.png differ
diff --git a/docs/content/images/image-scaling/sampling_modes_linear.png b/docs/content/images/image-scaling/sampling_modes_linear.png
new file mode 100644 (file)
index 0000000..a51c346
Binary files /dev/null and b/docs/content/images/image-scaling/sampling_modes_linear.png differ
diff --git a/docs/content/images/image-scaling/sampling_modes_nearest.png b/docs/content/images/image-scaling/sampling_modes_nearest.png
new file mode 100644 (file)
index 0000000..02d3391
Binary files /dev/null and b/docs/content/images/image-scaling/sampling_modes_nearest.png differ
diff --git a/docs/content/images/image-scaling/sampling_modes_no_filter.png b/docs/content/images/image-scaling/sampling_modes_no_filter.png
new file mode 100644 (file)
index 0000000..4825696
Binary files /dev/null and b/docs/content/images/image-scaling/sampling_modes_no_filter.png differ
diff --git a/docs/content/images/item-view/depth.png b/docs/content/images/item-view/depth.png
new file mode 100644 (file)
index 0000000..86c879d
Binary files /dev/null and b/docs/content/images/item-view/depth.png differ
diff --git a/docs/content/images/item-view/grid.png b/docs/content/images/item-view/grid.png
new file mode 100644 (file)
index 0000000..398da01
Binary files /dev/null and b/docs/content/images/item-view/grid.png differ
diff --git a/docs/content/images/item-view/spiral.png b/docs/content/images/item-view/spiral.png
new file mode 100644 (file)
index 0000000..1825a11
Binary files /dev/null and b/docs/content/images/item-view/spiral.png differ
diff --git a/docs/content/images/resource/9-patch-full.png b/docs/content/images/resource/9-patch-full.png
new file mode 100644 (file)
index 0000000..3895bc8
Binary files /dev/null and b/docs/content/images/resource/9-patch-full.png differ
diff --git a/docs/content/images/resource/9-patch-zoomed.png b/docs/content/images/resource/9-patch-zoomed.png
new file mode 100644 (file)
index 0000000..2196d66
Binary files /dev/null and b/docs/content/images/resource/9-patch-zoomed.png differ
diff --git a/docs/content/images/resource/9-patch.png b/docs/content/images/resource/9-patch.png
new file mode 100644 (file)
index 0000000..7a20d38
Binary files /dev/null and b/docs/content/images/resource/9-patch.png differ
diff --git a/docs/content/images/stage-hand/blocks.png b/docs/content/images/stage-hand/blocks.png
new file mode 100644 (file)
index 0000000..fc5a28d
Binary files /dev/null and b/docs/content/images/stage-hand/blocks.png differ
diff --git a/docs/content/images/stage-hand/inner-workings.png b/docs/content/images/stage-hand/inner-workings.png
new file mode 100644 (file)
index 0000000..f77f16f
Binary files /dev/null and b/docs/content/images/stage-hand/inner-workings.png differ
diff --git a/docs/content/images/stage-hand/netstat.png b/docs/content/images/stage-hand/netstat.png
new file mode 100644 (file)
index 0000000..905f2c1
Binary files /dev/null and b/docs/content/images/stage-hand/netstat.png differ
diff --git a/docs/content/images/stage-hand/stagehand-logo.png b/docs/content/images/stage-hand/stagehand-logo.png
new file mode 100644 (file)
index 0000000..bdd1104
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-logo.png differ
diff --git a/docs/content/images/stage-hand/stagehand-mainscreen.png b/docs/content/images/stage-hand/stagehand-mainscreen.png
new file mode 100644 (file)
index 0000000..64ac3ea
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-mainscreen.png differ
diff --git a/docs/content/images/stage-hand/stagehand-modify.png b/docs/content/images/stage-hand/stagehand-modify.png
new file mode 100644 (file)
index 0000000..f1c2b48
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-modify.png differ
diff --git a/docs/content/images/stage-hand/stagehand-netcat.png b/docs/content/images/stage-hand/stagehand-netcat.png
new file mode 100644 (file)
index 0000000..c6d8cb8
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-netcat.png differ
diff --git a/docs/content/images/stage-hand/stagehand-performance.png b/docs/content/images/stage-hand/stagehand-performance.png
new file mode 100644 (file)
index 0000000..4f1d518
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-performance.png differ
diff --git a/docs/content/images/stage-hand/stagehand-refesh.png b/docs/content/images/stage-hand/stagehand-refesh.png
new file mode 100644 (file)
index 0000000..d7f77c4
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-refesh.png differ
diff --git a/docs/content/images/stage-hand/stagehand-save.png b/docs/content/images/stage-hand/stagehand-save.png
new file mode 100644 (file)
index 0000000..326fc0c
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-save.png differ
diff --git a/docs/content/images/stage-hand/stagehand-screenshot.png b/docs/content/images/stage-hand/stagehand-screenshot.png
new file mode 100644 (file)
index 0000000..bedbeac
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-screenshot.png differ
diff --git a/docs/content/images/stage-hand/stagehand-settings.png b/docs/content/images/stage-hand/stagehand-settings.png
new file mode 100644 (file)
index 0000000..f3b434d
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-settings.png differ
diff --git a/docs/content/images/stage-hand/stagehand-tizen-connection.png b/docs/content/images/stage-hand/stagehand-tizen-connection.png
new file mode 100644 (file)
index 0000000..fa4243a
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-tizen-connection.png differ
diff --git a/docs/content/images/stage-hand/stagehand-ubuntu-connection.png b/docs/content/images/stage-hand/stagehand-ubuntu-connection.png
new file mode 100644 (file)
index 0000000..cf824b9
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-ubuntu-connection.png differ
diff --git a/docs/content/images/stage-hand/stagehand-zoom.png b/docs/content/images/stage-hand/stagehand-zoom.png
new file mode 100644 (file)
index 0000000..e509acd
Binary files /dev/null and b/docs/content/images/stage-hand/stagehand-zoom.png differ
index e76d89e..c34c256 100644 (file)
@@ -1,94 +1,97 @@
-# DALi introduction
-
-## DALi 3D ( Dynamic Animation Library )
-
-DALi is a quick and easy way of allowing developers to create Rich UI Applications like:
-
- + Image & Video galleries
- + Music players
- + Games
- + Maps
- + Homescreens / launch pads
- + Advanced watch faces for wearable devices
-
-DALi is based on OpenGL ES 2.0 & 3.0, however it hides the complexity of
-the OpenGL API from developers and provides a clean cross-platform C++ & JavaScript framework.
-
-+ Create Images, Text and Meshes
-+ Create shaders using GLSL
-+ Provide multiple cameras and render targets
-+ Provides Layers to aid in 2D UI layout
-+ Easy to use Animation framework
-+ Automatic background loading of resources ( images / text / meshes )
-+ Runs all animations in a seperate thread. This helps maintain 60 FPS even if JavaScript is performing a long operation ( e.g. Garbage Collection ).
-+ Provides keyboard / touch / mouse handling
-
-![ ](screen-shot.png)
-
-## Introduction
-- \link fundamentals Dali Fundamentals \endlink
-- \link dali-application Dali Application and Adaptor \endlink
-- \link hello-world Hello World - explained \endlink
-- \link handle-body-idiom Handle â€“ body idiom \endlink
-
-## Actors
- - \link image-mesh-actor Image and Mesh actors \endlink
- - \link event-system Event Handling \endlink
- - \link custom-actor Custom Actor \endlink
-
- ## ShaderEffects
- - \link shader-intro Shader Effects\endlink
-
- ## Animation
- - \link animation-example Example and Usage\endlink
- - \link animation-rotation Rotation with quaternions \endlink
- - \link animation-shader Shader Animation \endlink
- - \link animation-multi-threading-notes Multi-threading Notes \endlink
-
- ## Constraints
- - \link constraints Introduction to Constraints \endlink
-
-## Size Negotation
- - \link size-negotiation Size Negotiation \endlink
-
- ## UI Controls
- - \link text-label Text Label\endlink
- - \link scroll-view Scroll View \endlink
- - \link size-negotiation-controls Size Negotiation for Controls \endlink
- - \link type-registration Type Registration \endlink
- - \link properties Properties \endlink
- - \link background Background \endlink
-
- ## Dynamics
- - \link dynamics-intro Introduction to Dynamics\endlink
- - \link dynamics-initialization Initializing the Simulation\endlink
- - \link dynamics-bodies Bodies - adding and controlling dynamic objects \endlink
- - \link dynamics-joints Joints - linking objects\endlink
- - \link dynamics-collisions Collision Detection and Filtering\endlink
-
- ## Scripting
- - \link scriptoverview JSON and JavaScript Overview \endlink
- - \link script-json-specification JSON Specification\endlink
- - \link script-hello Hello World in script \endlink
- - \link javascriptwrapping JavaScript Wrapping Guide for DALi developers\endlink
-
- ## Rendering
- - \link viewing-modes Viewing modes \endlink
-
- ## Profiling
- - \link performanceprofiling Performance Profiling \endlink
- - \link resourcetracking Resource Tracking \endlink
-
- ## Performance
- - \link performancetips Performance Tips \endlink
- - \link textureatlases Texture Atlases  \endlink
- - \link texturecompression Compressing Textures \endlink
-
-## Testing
- See [Automated Tests](@ref auto_testing) for instructions.
-
-
-## Modifying this documentation
-- \link documentationguide Modifying this documentation \endlink
-
+# DALi Introduction
+
+### Introduction
+ + [What is DALi?](@ref dali-introduction)
+ + [Features](@ref dali-features)
+ + [High Level Design](@ref dali-hld)
+  + [Components](@ref dali-components)
+  + [Main, Update & Render Threads](@ref dali-threads)
+ + [DALi Fundamentals](@ref fundamentals)
+  + [Actors & Stage](@ref actors-and-stage)
+  + [Coordinate System](@ref coordinate-system)
+  + [Scene Graph](@ref scene-graph)
+  + [Handle / Body Idiom](@ref handle-body-idiom)
+  + [Signals](@ref signals)
+  + [Properties](@ref properties)
+  + [Actions](@ref actions)
+ + [Tutorial: Hello World](@ref hello-world)
+
+### Getting Started
+ + [How to build DALi on Ubuntu Desktop](@ref build-ubuntu)
+
+### Programming Guide
+ + [Programming Languages:](@ref programming-languages)
+  + [C++](@ref c-plus-plus)
+  + [JavaScript](@ref java-script-support)
+  + [JSON](@ref json-support)
+ + [Application](@ref dali-application)
+ + [Actors](@ref actors-and-stage)
+  + [Positioning](@ref positioning-actors)
+  + [Event Handling](@ref event-system)
+  + [Layouting](@ref size-negotiation)
+  + [Image Actor](@ref image-actor)
+ + [Animation](@ref animation)
+  + [Basic Framework](@ref animation-basics)
+  + [Key Frame Animations](@ref animation-key-frame)
+  + [Path Animations](@ref animation-paths)
+  + [Constraints](@ref constraints)
+   + [Equal To Constraint](@ref constraints-equal-to)
+   + [Relative To Constraint](@ref constraints-relative-to)
+  + [Multi-threading Notes](@ref animation-multi-threading-notes)
+  + [Shader Animation](@ref animation-shader)
+
+### Resources
+ + [Resource Image](@ref resource-image)
+ + [9 Patch Image](@ref resource-9-patch)
+ + [Buffer Image](@ref resource-buffer)
+
+### Control Base Class
+ + [Background Feature](@ref background)
+ + Keyboard Focus
+ + Accessibility
+
+### UI Components
+ + [Text Label](@ref text-label)
+ + [Text Field](@ref text-field)
+ + Buttons
+ + TableView
+ + [Scroll View](@ref scroll-view)
+ + [ItemView](@ref item-view)
+
+### RenderTasks
+
+### Shader Effects
+ + [Overview](@ref shader-intro)
+
+### Scripting
+ + [JSON and JavaScript Overview](@ref scriptoverview)
+ + [JSON Syntax](@ref script-json-specification)
+ + [Scripting Hello World](@ref script-hello)
+
+### Tools
+ + Environment Variables
+ + [Resource Tracking](@ref resourcetracking)
+ + Logging
+ + [Stagehand - DALi Visual Debugger](@ref stagehand)
+
+### Viewing Modes
+ + [Overview](@ref viewing-modes)
+
+### Extending DALi
+ + Control Base Class Services
+ + How to write Custom UI Components
+  + [Size Negotiation for Controls](@ref size-negotiation-controls)
+  + [Type Registration](@ref type-registration)
+  + How to make Controls Scriptable
+ + [Automated Tests](@ref auto_testing)
+ + [Programming Guide](@ref documentationguide)
+ + [JavaScript Wrapping Guide for DALi developers](@ref javascriptwrapping)
+
+### Application Optimization Guide
+ + [Texture Atlases](@ref textureatlases)
+ + [Texture Compression](@ref texturecompression)
+ + [Rescaling Images](@ref resourceimagescaling)
+ + Performance & Debugging
+ + [Performance Tips](@ref performancetips)
+ + [Performance Profiling](@ref performanceprofiling)
 
diff --git a/docs/content/programming-guide/animation-example.h b/docs/content/programming-guide/animation-example.h
deleted file mode 100644 (file)
index 347fc5e..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-/*! \page animation-example Example and Usage
-
-   We will start by showing the steps for animating an actors position and opacity so the actor moves whilst the opacity changes.
-
-   Next more interesting animations methods (effects) with individual timing will be explained.
-
-   \section simple-anim Simple Animation moving an actor whilst altering opacity.
-
-   We declare an animation called myAnimation
-
-   @code
-   Dali::Animation myAnimation
-   @endcode
-
-   A new animation instance is created with a specified duration.  Here the duration of the animation will be 0.5 seconds.
-   Some other settings are incorporated by default and will be explained later.
-   @code
-   myAnimation = Animation::New(0.5f);
-   @endcode
-
-   Here we add the animators, these are the building blocks (functions) of the animation and define what we want to see
-   @code
-   myAnimation.AnimateTo(Property(actor, Actor::Property::OPACITY), 1.0f);
-   myAnimation.AnimateTo(Property(actor, Actor::Property::POSITION), Vector3(x, y, z));
-   @endcode
-
-   start animation, when this is called we want the animation to start playing so here the actor will move whilst the opacity changes.
-   @code
-   myAnimation.Play();
-   @endcode
-   \section advanced-anims Adding more advanced animators, if simply moving the actor is not enough we have further animations methods.
-
-   AnimateBy and AnimateTo, method names are appended by 'By' or 'To' either animate to a supplied value or animate by a supplied value.  For example an actor at (10,10,10) calling AnimateBy(Property(actor, Actor::Property::POSITION), 50,0,0) would mean its location is (60,0,0) whilst AnimateTo(Property(actor, Actor::Property::POSITION), 50,0,0) would result in a location (50,0,0).
-
-   Dali::AlphaFunction can be used to give interesting effects to the animation, for example the MOVEment of an actor on screen can speed up and slow down following a sine curve by using the Dali::AlphaFunction::EASE_IN_OUT_SINE instead of AlphaFunction::LINEAR
-
-   @code
-   myAnimation.AnimateTo(Property(actor, Actor::Property::POSITION), Vector3(x, y, z), AlphaFunction::LINEAR, delay, ANIMATOR_DURATION);
-   myAnimation.AnimateTo(Property(actor, Actor::Property::SIZE), actorSize, AlphaFunction::EASE_IN, delay, ANIMATOR_DURATION);
-   @endcode
-   \section playback-control Controlling a playing animation
-
-   The 3 controls we have are start, pause and stop
-   @code
-   Dali::Animation::Play();
-   Dali::Animation::Stop();
-   Dali::Animation::Pause();
-   @endcode
-
-   \section default-settings Default settings
-   The call Dali::Animation::New provides some default settings but each has a setter function if the defaults are not suitable. (Getters also exist)
-   @code
-   Dali::Animation::SetEndAction
-   Dali::Animation::SetLooping
-   Dali::Animation::SetDefaultAlphaFunction
-   @endcode
-
-   \section end-signal End Signal
-   The following signal can be connected to if it is required to know when an animation is complete.
-   /code Dali::Animation::SignalFinish(); /endcode
-
- */
-
index 5955eb1..4c06450 100644 (file)
@@ -3,9 +3,9 @@
 
 <h2 class="pg">Multi-threaded Architecture</h2>
 
-Dali animations and rendering occur in a dedicated rendering thread.  This allows animations to run smoothly, regardless of the time taken to process inputs events etc. in application code.
+DALi animations and rendering occur in a dedicated rendering thread.  This allows animations to run smoothly, regardless of the time taken to process inputs events etc. in application code.
 
-Internally Dali contains a scene-graph, which mirrors the Actor hierachy.  The scene-graph objects perform the actual animation & rendering, whilst Actors provide thread-safe access.
+Internally DALi contains a scene-graph, which mirrors the Actor hierachy.  The scene-graph objects perform the actual animation & rendering, whilst Actors provide thread-safe access.
 
 An example actor hierachy is shown below, in which one of the actors is being animated.  The objects in green are created by the application code, whilst the private objects in blue are used in the dedicated rendering thread.
 
diff --git a/docs/content/programming-guide/animation-rotation.h b/docs/content/programming-guide/animation-rotation.h
deleted file mode 100644 (file)
index 0bd51a0..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*! \page animation-rotation Rotation with quaternions
- *
- * \ref Dali::Quaternion "Quaternions" are used to specify unique orientations on actors. They are also
- * very useful for calculating smooth transitions between orientations.
- *
- * The Dali::Actor class provides the ability to set the orientation
- * by both angle+axis and quaternion. It also allows you to rotate the
- * actor around another quaternion.
- *
- * @code
- * Dali::Actor actor;
- * actor.SetOrientation(Quaternion(Radian(Degree(45.0f)).value, Vector3::XAXIS)),
- *
- * Quaternion q(Radian(Degree(30.0f)).value, Vector3(1.0f, 1.0f, 0.0f));
- * actor.RotateBy(q);
- * @endcode
- *
- * The Dali::Animation class provides several AnimateTo methods that
- * use \ref Dali::Quaternion "Quaternions" directly to change the orientation.
- *
- * @code
- * mAnimation = Animation::New(5.0f); // 5 seconds
- * Quaternion q(Radian(Degree(45.0f)).value, Vector3::YAXIS);
- * Quaternion r(Radian(Degree(30.0f)).value, Vector3::ZAXIS);
- * q *= r;
- * mAnimation.AnimateTo(Property(mActor, Actor::Property::ORIENTATION), q, AlphaFunction::EASE_IN_OUT);
- * mAnimation.Play();
- * @endcode
- */
index 9394b3c..7780cc2 100644 (file)
@@ -1,7 +1,7 @@
 /*! \page constraints Constraints
  *
 
-<h2 class="pg">Introduction</h2>
+<h1 class="pg">Introduction</h1>
 
 Constraints are used to modify the property of an actor, based on other properties of the same actor; properties of the actor's parent; or properties of another actor altogether, when the modification needs to be at run-time.
 Custom functions or functors can be supplied, where the desired value of the property can be calculated.
@@ -15,7 +15,7 @@ This means that Constraints override the values set by Animations.
 
 Not all properties can be used as a constraint input, please see Dali::Handle::IsPropertyAConstraintInput() for more details.
 
-<h2 class="pg">When to use a Constraint</h2>
+<h1 class="pg">When to use a Constraint</h1>
 
 Constraints are designed as a way of modifying properties that cannot be modified by any existing built in functionality; Like Animations, Size negotiation or Parent anchor, origin settings.
 As they provide the ability for the application developer to execute their own code within the update thread, DALi can no-longer guarantee the timeliness of this code, or how optimised it may be.
@@ -60,13 +60,13 @@ Consider the following use cases as an example of when and when not to use a con
 
 For most general cases, the position and size requirements of a child or parent actor (from it's child or parent) can be calculated with Size Negotiation.
 
-<h2 class="pg">Constraint Sources</h2>
+<h1 class="pg">Constraint Sources</h1>
 
 These are properties of this (or another actor) that are used as inputs into the constraint.
 The constraint will take these values, optionally perform a calculation on them (if using a custom functor) and write the result to the specified property of the target actor.
 The source actor is specified as either the same actor, it's parent or another actor.
 
-<h3 class="pg">Local Source</h3>
+<h2 class="pg">Local Source</h2>
 
 A local source is based on the local properties (i.e. size, position, scale, orientation, color) of an actor.
 For example, the actor's orientation could be used as a constraint input source.
@@ -75,7 +75,7 @@ For example, the actor's orientation could be used as a constraint input source.
 Dali::ConstraintSource source( Dali::LocalSource( Dali::Actor::Property::ORIENTATION ) );
 @endcode
 
-<h3 class="pg">Parent Source</h3>
+<h2 class="pg">Parent Source</h2>
 
 A parent source is based on properties of the actor's parent.
 For example, a parent's position can be used as a constraint input source.
@@ -84,7 +84,7 @@ For example, a parent's position can be used as a constraint input source.
 Dali::ConstraintSource source( Dali::ParentSource( Dali::Actor::Property::POSITION ) );
 @endcode
 
-<h3 class="pg">Source</h3>
+<h2 class="pg">Source</h2>
 
 Finally, you can base your source on the properties of another handle altogether.
 For example, a sibling actor's color could be used as a constraint input source.
@@ -93,7 +93,7 @@ For example, a sibling actor's color could be used as a constraint input source.
 Dali::ConstraintSource source( Dali::Source( anotherHandle, Dali::Actor::Property::COLOR ) );
 @endcode
 
-<h2 class="pg">The Constraint Function</h2>
+<h1 class="pg">The Constraint Function</h1>
 
 The signature of the constraint function is:
 
@@ -124,9 +124,9 @@ const Dali::Vector3& parentPosition( inputs[2]->GetVector3() );
 const Dali::Vector3& parentSize( inputs[3]->GetVector3() );
 @endcode
 
-<h2 class="pg">Creating a Constraint</h2>
+<h1 class="pg">Creating a Constraint</h1>
 
-<h3 class="pg">Using C Functions</h3>
+<h2 class="pg">Using C Functions</h2>
 
 If you do not have any data that is changed at runtime, then C functions should be used.
 For example, the color of an actor could be changed based on its position along the x-axis till a preset distance of 100, beyond which it is transparent.
@@ -163,7 +163,7 @@ void MyConstraintFunction( Dali::Vector4& current, const Dali::PropertyInputCont
 
 Please have a look at Dali::Constraint::New() for more details.
 
-<h3 class="pg">Using Functors</h3>
+<h2 class="pg">Using Functors</h2>
 
 If you need to store some data in a struct/class, then a functor can be used.
 Reusing the last example, the color of an actor is changed based on its position along the x-axis, but the distance when it is transparent is different for each applied constraint.
@@ -216,9 +216,9 @@ MyFunctor could then be used with another constraint with a different distance.
 Please have a look at Dali::Constraint::New(Handle, Property::Index, const T&) for more details.
 
 Instead of using the default functor, another method can be declared in the class or struct and used as the constraint function.
-Please have a look at appropriate Dali::Constraint::New() method for more details.
+Please have a look at the appropriate Dali::Constraint::New() method for more details.
 
-<h2 class="pg">Removing Constraints</h2>
+<h1 class="pg">Removing Constraints</h1>
 
 The actor's constraints can later be removed in several ways:
 
@@ -228,5 +228,24 @@ actor.RemoveConstraints(); // Removes ALL constraints applied to an actor
 actor.RemoveConstraint( tag ); // All constraints with the tag are removed from the actor (tag can be set using SetTag)
 @endcode
 
+\section constraints-equal-to Equal To Constraint
+
+The built in Dali::EqualToConstraint can be used if all that is required is setting a property equal to another property:
+@code
+Dali::Constraint constraint = Dali::Constraint::New< Vector3 >( actor, Dali::Actor::Property::POSITION, Dali::EqualToConstraint() );
+constraint.AddSource( Dali::Source( anotherActor, Dali::Actor::Property::POSITION ) );
+constraint.Apply();
+@endcode
+Here actor's position is set to equal the position of anotherActor.
+
+\section constraints-relative-to Relative To Constraint
+
+The built in Dali::RelativeToConstraint and Dali::RelativeToConstraintFloat can be used if all that is required is setting a property relative to another property:
+@code
+Dali::Constraint constraint = Dali::Constraint::New< Vector3 >( actor, Dali::Actor::Property::POSITION, Dali::RelativeToConstraint( 2.0f ) );
+constraint.AddSource( Dali::Source( anotherActor, Dali::Actor::Property::POSITION ) );
+constraint.Apply();
+@endcode
+Here actor's position is relative to the position of anotherActor, i.e., if anotherActor is at (10.0f, 20.0f, 30.0f), actor will be at (20.0f, 40.0f, 60.0f).
 *
 */
diff --git a/docs/content/programming-guide/custom-actor.h b/docs/content/programming-guide/custom-actor.h
deleted file mode 100644 (file)
index 808bfca..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*! \page custom-actor Custom Actor
- * The Dali::CustomActor is used as a base class for UI controls.  It is a proxy object to enable derived classes access
- * to a subset of the methods defined in the internal Actor class.
- *
- * Classes deriving from Custom Actor should follow the same handle - body design principle as the rest of the Dali API.
- *
- * One class of the new UI control should inherit from Dali::CustomActor, while a second should inherit
- * Dali::CustomActorImpl.  This implementation class contains a number of pure virtual methods that enable the new UI
- * control to respond to a variety of events such as touch and notification of being added to the stage.
- *
- * For example, if creating a new button widget called myNewButton, the user would create two classes, myNewButton which
- * derives from Dali::CustomActor and an implementation part myNewButtonImpl which would derive from Dali::CustomActorImpl.
- *
- * In the New() method for the myNewButton class, the user should then create a new instance of the myNewButtonImpl class
- * and pass this to the constructor of the myNewButton object.  Internally the connection will be made
- * between the new widget actor and Dali, thus allowing messages such as OnPropertySet to be received by the new actor.
- *
- * It is the responsibility of the implementation of the new UI control to implement the method bodies for the inherited
- * pure virtual methods from Dali::CustomActorImpl.  Obviously the application won't compile if the methods are not
- * overidden, but the user does not need to fill in the code for methods they don't want or need to use.
- *
- * After the implementation object is created it is passed back to the basic Text View through the constructor,the
- * constructor uses this passed in object to initialise the internal implementation objects.
- *
- * After both the objects are created it calls an init method on the implementation which is used to initialise
- * objects.  THis is the preferred way to do things so to avoid errors in the constructors.
- *
- * If desired, the user can then use the myNewButtonImpl implementation class to handle only the callback message
- * handler methods, and do all the rest of their widget processing the the main myNewButton class.  Access to the
- * implementation class can be gained using the GetImpl(*this) method.  For example:
- *
- */
index 07cc934..3ca80c2 100644 (file)
@@ -1,24 +1,26 @@
-/*! \page dali-application Dali Application and Adaptor
+/*! \page dali-application DALi Application
  *
 <h2 class="pg">Creating an Application</h2>
 
-The Adaptor framework provides several classes which intialises and sets up Dali appropriately so that the application writer does not have to.  These classes also provides many platform related services (e.g. orienation change notifications, timer services etc.).
+The Adaptor framework provides provides a Dali::Application class which initialises and sets up DALi appropriately so that the application writer does not have to.
+This provides many platform related services.
 
-The simplest way to create an application that uses Dali is to utilise the Dali::Application class.  In addition to initialising the environment used by Dali, it also provides several signals which the user can connect to when certain platform related activities occur.  It also ensures that, upon system events, Dali is called in a thread-safe manner.
+Several signals can be connected to so that the application writer is informed when certain platform related activities occur.
+It also ensures that, upon system events, DALi is called in a thread-safe manner.
 
 The following example shows how to create a Dali::Application instance and connect to its initialise signal (which is where a Dali::Actor hierarchy should be created).
 
 @code
 void CreateProgram(Application& app)
 {
-  // Create Dali components...
+  // Create DALi components...
   Dali::Actor actor = Actor::New();
   ...
 }
 
 int main (int argc, char **argv)
 {
-  Application app = Application::New(&argc, &argv);
+  Dali::Application app = Application::New(&argc, &argv);
   app.InitSignal().Connect(&CreateProgram);
   app.MainLoop();
 }
@@ -26,98 +28,8 @@ int main (int argc, char **argv)
 
 Please see the Dali::Application class for other signals to which the application can connect.
 
-<h2 class="pg">Using an Adaptor or EvasPlugin instead of the Application class</h2>
-
-If the application requires finer grained control, an Dali::Adaptor can be created instead.  This allows the application writer to create other platform related functionality themselves (e.g managing the main loop, providing a surface to render to etc.).
-
-When using the Adaptor, the application writer can specify the use of normal window creation and drawing by using the New method with an appropriate Window.
-
-If the application writer wants Dali to draw to a specific surface then they need to create a Dali::RenderSurface instance and use the Adaptor constructor which takes the Dali::RenderSurface as the parameter.
-
-The only signal provided by the adaptors is a <i>surface resized signal</i>; the application writer will have to handle system signals like <i>initialise, pause, terminate </i> etc. themselves.  It is also important that any calls to Dali are made in a thread-safe manner from your application when using the adaptor directly.
-
-An adaptor can be created as shown below:
-
-@code
-void CreateProgram(void* data)
-{
-  // Start Adaptor
-  Dali::Adaptor* adaptor = reinterpret_cast<Dali::Adaptor*>(data);
-  adaptor->Start();
-
-  // Create Dali components...
-  // Can instantiate here, if required
-}
-
-int main ()
-{
-  // Initialise platform
-  MyPlatform.Init();
-
-  // Create an 800 by 1280 window positioned at (0,0).
-  Dali::PositionSize positionSize(0, 0, 800, 1280);
-  Dali::Window window = Dali::Window::New( positionSize, "My Application" );
-  Dali::Adaptor& adaptor = Dali::Adaptor::New( window );
-
-  // Assuming second parameter takes in data which is passed back to the callback function
-  MyPlatform.InitialisationConnection(&CreateProgram, &adaptor);
-
-  // Start Main Loop of your platform
-  MyPlatform.StartMainLoop();
-
-  return 0;
-}
-@endcode
-
-A Dali::EvasPlugin instance can be created by EFL applications that wish to use Dali.  Like the Adaptor, it also provides a means for initialising the resources required by the Dali::Core.
-
-The Dali::EvasPlugin emits several signals which the user can connect to.  The user should not create any Dali objects in the main function and instead should connect to the Init signal of the EvasPlugin and create the Dali objects in the connected callback.
-
-A Dali::EvasPlugin can be used in an EFL application as shown below:
-
-@code
-void Created(EvasPlugin& evasPlugin)
-{
-  // Create Dali components...
-  // Can instantiate here, if required
-}
-
-void Resized(EvasPlugin& evasPlugin)
-{
-  // Set size properties of Dali components
-  // Set screen layout
-}
-
-int main (int argc, char **argv)
-{
-  // Initialise Elementary
-  elm_init(&argc, &argv);
-
-  // Create an Evas Window
-  Evas_Object* win = elm_win_add(...);
-
-  // Get the actual window
-  Evas* e = evas_object_evas_get(win);
-
-  // Create the EvasPlugin and pass the actual window
-  Dali::EvasPlugin evasPlugin = Dali::EvasPlugin(e);
-
-  evasPlugin.SignalInit().Connect(&Created);
-  evasPlugin.SignalResize().Connect(&Resized);
-
-  // Retrieve the Evas_Object from the plugin and show it.
-  Evas_Object* evasObject = evasPlugin.GetEvasObject();
-  evas_object_show(evasObject);
-
-  // add evasObject to layout such as elm_box
-
-  // Start main loop
-  elm_run();
-}
-@endcode
-
 <h2 class="pg">Window</h2>
-Dali provides a Window class to manage drawing to a default surface. It is also responsible for drawing the Indicator bar if required. The Application class automatically creates a Window which the application author can access after the SignalInit has fired.
+DALi provides a Window class to manage drawing to a default surface. It is also responsible for drawing the Indicator bar if required. The Application class automatically creates a Window which the application author can access after the SignalInit has fired.
 
 @code
 void CreateProgram(Application& app)
@@ -127,32 +39,12 @@ void CreateProgram(Application& app)
 
 int main (int argc, char **argv)
 {
-  Application app = Application::New(argc, argv);
+  Dali::Application app = Application::New(argc, argv);
   app.SignalInit().Connect(&CreateProgram);
   app.MainLoop();
 }
 @endcode
 
-<h2 class="pg">Orientation</h2>
-
-The Adaptor Framework also provides a means of retrieving the current device orientation and connection to a signal when the orientation of the device changes.  The Dali::Application class provides access to an already created Dali::Orientation object.  If using a Dali::Adaptor, an instance of the Dali::Orientation class has to be created in the application.
-
-The following example shows how to connect to an orientation changed signal through the Dali::Application class:
-
-@code
-void OrientationChanged(const Orientation& orientation)
-{
-  int degrees = orientation.GetDegrees();
-  ...
-}
-
-int main(int argc, char **argv)
-{
-  Application app = Application::New(&argc, &argv);
-  app.GetWindow().GetOrientation().SignalChanged().Connect(&OrientationChanged);
-}
-@endcode
-
 <h2 class="pg">Timers</h2>
 
 Timers are also provided by the Adaptor Framework so that the application writer can execute a portion of their code periodically or just once, after a delay.  The example below shows how a Dali::Timer can be created and used:
@@ -167,7 +59,7 @@ bool Tick()
 ...
 
 // Elsewhere
-Timer timer = Timer::New(2000); // 2 second timeout
+Dali::Timer timer = Dali::Timer::New(2000); // 2 second timeout
 timer.SignalTick().Connect(&Tick);
 ...
 @endcode
diff --git a/docs/content/programming-guide/dynamics-bodies.h b/docs/content/programming-guide/dynamics-bodies.h
deleted file mode 100644 (file)
index 42c8195..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/**
- * \page dynamics-bodies Dynamics - Bodies
- * A Dali::DynamicsBody can be "Rigid" or "Soft". Rigid bodies require much less processing and should be used
- * in preference to a soft body.\n
- * All bodies are controlled by the simulation, the application developer can influence them by setting their
- * linear or angular velocities, but direct control of their position is not possible until the Dali::DynamicsBody is flagged
- * as a \ref kinematic-body "kinematic object".\n
- *
- * \section create-body Creating a body
- * <p>
- * Each Dali::DynamicsBody is created by an Dali::Actor through its Dali::Actor::EnableDynamics method using a
- * Dali::DynamicsBodyConfig object to specify options for the Dali::DynamicsBody.
- * \code
- * // Initialize and get a handle to the Dali::DynamicsWorld
- * Dali::DynamicsWorldConfig worldConfig( Dali::DynamicsWorldConfig::New() );
- * Dali::DynamicsWorld dynamicsWorld( Dali::Stage::GetCurrent().InitializeDynamics( worldConfig ) );
- * // Create an actor to represent the world
- * Dali::Actor dynamicsRootActor( Dali::Actor::New() );
- * dynamicsWorld.SetRootActor( dynamicsRootActor );
- * Dali::Stage::GetCurrent().Add( dynamicsRootActor );
- *
- * // create an actor to represent a rigid body
- * Dali::Actor actor( Dali::Actor::New() );
- * actor.SetParentOrigin( Dali::ParentOrigin::CENTER );
- * dynamicsRootActor.Add( actor );
- * // Enable dynamics for the actor, creating a rigid body with default configuration
- * actor.EnableDynamics( Dali::DynamicsBodyConfig::New() );
- * \endcode
- *
- * \section create-body-advanced Specifying options
- * <h4>Mass</h4>
- * Use Dali::DynamicsBodyConfig::SetMass to specify the mass of the body [default: 1].
- * <h4>Elasticity</h4>
- * Use Dali::DynamicsBodyConfig::SetElasticity to specify the elasticity of the body [default: 0.85].\n
- * This may also be known as the co-efficient of restitution or &apos;bounciness&apos;.
- * <h4>Damping</h4>
- * Use Dali::DynamicsBodyConfig::SetLinearDamping to specify the linear damping coefficient [default: 0].\n
- * and Dali::DynamicsBodyConfig::SetAngularDamping to specify the angular damping coefficient [default: 0].\n
- * <h4>Friction</h4>
- * Use Dali::DynamicsBodyConfig::SetFriction to specify the friction of the body [default: 0.5].\n
- * <h4>Collision Filtering</h4>
- * See \link dynamics-collisions Collision Detection and Filtering \endlink\n\n
- * Use Dali::DynamicsBodyConfig::SetCollisionGroup to specify the collision filter group.\n
- * Use Dali::DynamicsBodyConfig::SetCollisionMask to specify the collision filter mask.\n
- * <h3>Soft body specific options</h3>
- * <h4>Stiffness</h4>
- * Use Dali::DynamicsBodyConfig::SetStiffness to specify the stiffness of the links between the mesh vertices used to
- * define the soft body. Values clamped between 0 and 1 [default: 1].\n
- * <h4>Anchor hardness</h4>
- * Use Dali::DynamicsBodyConfig::SetAnchorHardness to specify the hardness or drift correction applied to anchors.
- * Values clamped between 0 and 1 [default: 0.7]. Smaller values mean less drift correction.\n
- * <h4>Conservation</h4>
- * Use Dali::DynamicsBodyConfig::SetShapeConservation to specify the shape conservation coefficient,
- * or the magnitude of the force which will attempt to maintain the soft bodies shape (see \ref Dali::DynamicsBody::ConserveShape).\n
- * Use Dali::DynamicsBodyConfig::SetVolumeConservation to specify the volume conservation coefficient,
- * or the magnitude of the force which will attempt to maintain the soft bodies volume (see \ref Dali::DynamicsBody::ConserveVolume).
- * Smaller values mean less conservation.\n
- * <h4>Create a rigid body with advanced options</h4>
- * \code
- * Dali::DynamicsBodyConfig bodyConfig( Dali::DynamicsBodyConfig::New() );
- * // increase mass from the default
- * bodyConfig.SetMass( 2.5f );
- * // set elasticity so that the velocity of the object will be halved after a collision
- * // (assuming the other body has a mass = 1 and a velocity 0f 0).
- * bodyConfig.SetElasticity( 0.5f );
- * // increase the rate at which a bodies linear velocity will decrease
- * bodyConfig.SetLinearDamping( 0.5f );
- * // reduce the friction to zero
- * bodyConfig.SetFriction( 0.0f );
- * // Ignore all collisions
- * bodyConfig.SetCollisionGroup( 0 );
- * bodyConfig.SetCollisionMask( 0 );
- *
- * // create an actor for the Dali::DynamicsBody
- * Actor actor( Actor::New() );
- * actor.SetParentOrigin( Dali::ParentOrigin::CENTER );
- * // create the Dali::DynamicsBody
- * actor.EnableDynamics( bodyConfig );
- *
- * // add to the simulation
- * dynamicsRootActor.Add( actor );
- * \endcode
- * <h4>Create a soft body with advanced options</h4>
- * \code
- * // Create a unit mesh with 25 vertices
- * Dali::Mesh mesh( Dali::Mesh::NewPlane(1.0f, 1.0f, 5, 5) );
- *
- * Dali::DynamicsBodyConfig bodyConfig( Dali::DynamicsBodyConfig::New() );
- * // select a soft body
- * bodyConfig.SetType( Dali::DynamicsBodyConfig::SOFT );
- * // set the mesh as the soft body shape
- * bodyConfig.SetShape( Dali::DynamicsShape::NewMesh( mesh ) );
- * // decrease the stiffness of the links between the soft body vertices
- * bodyConfig.SetStiffness( 0.25f );
- * // Make anchors very loose/weak
- * bodyConfig.SetAnchorHardness( 0.1f );
- *
- * // create an actor for the Dali::DynamicsBody
- * Actor actor( MeshActor::New(mesh) );
- * actor.SetParentOrigin( Dali::ParentOrigin::CENTER );
- * // create the Dali::DynamicsBody
- * actor.EnableDynamics( bodyConfig );
- *
- * // add to the simulation
- * dynamicsRootActor.Add( actor );
- * \endcode
- * \image html dynamics/dynamics-soft.png "A soft body (with debug rendering enabled)"
- * \section kinematic-body Kinematic bodies
- * A kinematic body is not controlled by the simulation, there is a one-way interaction with other dynamic objects
- * under control of the simulation, where other objects will be pushed away, but the kinematic object will be unaffected.\n
- * Kinematic objects can be animated with DALi's \ref animation-example "animation system", each DALi update the simulation will
- * get the current position of associated DALi actor.\n Use Dali::DynamicsBody::SetKinematic to make a kinematic object.
- * <h3>Animating a kinematic object</h3>
- * Other dynamics enabled actors that collide with the kinematic object during the animation will be pushed
- * away.
- * \code
- * ...
- * // create an actor to represent a rigid body
- * Dali::Actor actor( Dali::Actor::New() );
- * dynamicsRootActor.Add( actor );
- * // Enable dynamics for the actor, creating a rigid body with default configuration
- * actor.EnableDynamics( Dali::DynamicsBodyConfig::New() );
- * // get the DynamicsBody handle
- * DynamicsBody body( actor.GetDynamicsBody() );
- * body.SetKinematic( true );
- * // create a second animation to move the actor 100 units to the right
- * Animation animation( Animation::New( 1 ) );
- * animation.AnimateBy( Property( actor, Actor::Property::POSITION ), Vector3( 100, 0, 0 ), AlphaFunction::LINEAR );
- * animation.Play();
- * \endcode
- * <hr>
- * <p>See also
- * <ul>
- *  <li>Dali::DynamicsBodyConfig</li>
- *  <li>Dali::Actor::EnableDynamics</li>
- *  <li>\link dynamics-initialization DynamicsWorld Initialization and Usage\endlink</li>
- * </ul>
- * </p>
- */
-
diff --git a/docs/content/programming-guide/dynamics-collisions.h b/docs/content/programming-guide/dynamics-collisions.h
deleted file mode 100644 (file)
index 3dc6d14..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/**
- * \page dynamics-collisions Collisions
- * \section collision-detection Collision Detection
- * <p>
- * Collision detection is automatic and occurs between all Dali::DynamicsBody objects in the simulation.@n
- * To respond to a detected collisions, the application developer can connect to a signal provided by
- * a Dali::DynamicsWorld object.
- * \code
- * ...
- *
- * // DynamicsWorld initialization code
- *
- * ...
- *
- * // Connect a signal handler to the signal
- * Dali::DynamicsWorld theWorld( Stage::GetCurrent().GetDynamicsWorld() );
- * theWorld.SignalCollision().Connect( this, &myClass::OnDynamicsCollision );
- *
- * ...
- *
- * // Implement a signal handler
- * void myClass::OnDynamicsCollision( Dali::DynamicsWorld world, Dali::DynamicsCollision collisionData )
- * {
- *   std::cout << "Collision between "
- *             << collisionData.GetActorA().GetName() << " and "
- *             << collisionData.GetActorB().GetName() << " ";
- *
- *   if( collisionData.GetImpactForce() != 0.0f )
- *   {
- *     std::cout << "detected (impact force: " << collisionData.GetImpactForce() << " )";
- *   }
- *   else
- *   {
- *     std::cout << "ended";
- *   }
- *   std::cout << std::endl;
- * }
- * \endcode
- *
- * <hr>
- * \section collision-filtering Collision Filtering
- *
- * <p>
- * When a large number of Dali::DynamicsBody objects are added to the simulation, collision detection can become a
- * significant performance drain, where every possible pairing of objects needs to be checked for collisions.</p>
- * <p>You can significantly reduce the number of pairs considered for collision detection by using a collision filter.</p>
- * <p>Each Dali::DynamicsBody can belong to a user defined collision filter group and have a user defined collision filter mask.<p>
- * <p>A Dali::DynamicsBody pair are considered for collision detection if one or more bits in the filter group from each Dali::DynamicsBody
- * matches one or more bits in the filter mask of the other Dali::DynamicsBody.
- * </p>
- * <center><table border="1">
- * <caption>Truth table</caption>
- * <tr align="center">
- * <th>&nbsp;P&nbsp;</th>
- * <th>&nbsp;Q&nbsp;</th>
- * <th>tested for collision?</th>
- * </tr>
- * <tr align="center">
- * <td>0</th>
- * <td>0</th>
- * <td>no</th>
- * </tr>
- * <tr align="center">
- * <td>0</th>
- * <td>1</th>
- * <td>no</th>
- * </tr>
- * <tr align="center">
- * <td>1</th>
- * <td>0</th>
- * <td>no</th>
- * </tr>
- * <tr align="center">
- * <td>1</th>
- * <td>1</th>
- * <td>yes</th>
- * </tr>
- * </table></center>
- * <p>
- * where <b>P</b> = bitwise AND of the collision group from the first Dali::DynamicsBody and the collision mask from the second Dali::DynamicsBody\n
- * and   <b>Q</b> = bitwise AND of the collision group from the second Dali::DynamicsBody and the collision mask from the first Dali::DynamicsBody.
- * </p><br>
- * <p>
- * <b>Pseudo code for the filter check.</b>
- * \code
- * const bool canCollide( (  firstBody->GetCollisionGroup() & secondBody->GetCollisionMask() &&
- *                        ( secondBody->GetCollisionGroup() &  firstBody->GetCollisionMask() );
- * \endcode
- * </p>
- * <h3 class="pg">Code example - Illustrating how to create multiple filter groups and masks.</h3>
- * \code
- * // Define some collision groups
- * const short int group0( 1 << 1 );
- * const short int group1( 1 << 2 );
- * const short int group2( 1 << 3 );
- *
- * // Create some Dali::DynamicsBodyConfig objects
- * Dali::DynamicsBodyConfig bodyConfig0( Dali::DynamicsBodyConfig::New() );
- * Dali::DynamicsBodyConfig bodyConfig1( Dali::DynamicsBodyConfig::New() );
- * Dali::DynamicsBodyConfig bodyConfig2( Dali::DynamicsBodyConfig::New() );
- *
- * // Assign the collision filters to the configurations
- * bodyConfig0->SetCollisionGroup(group0);
- * bodyConfig0->SetCollisionMask( group1 | group2 );
- * bodyConfig1->SetCollisionGroup(group1);
- * bodyConfig1->SetCollisionMask(group0);
- * bodyConfig2->SetCollisionGroup(group2);
- * bodyConfig2->SetCollisionMask(group0 | group2);
- * \endcode
- * <p>
- * Collision detection is \b enabled between Dali::DynamicsBody pairs of...
- * <ul>
- *  <li>group0 and group1 objects.</li>
- *  <li>group0 and group2 objects.</li>
- *  <li>group2 objects.</li>
- * </ul>
- * Collision detection is \b disabled between Dali::DynamicsBody pairs of...
- * <ul>
- *  <li>group0 objects.</li>
- *  <li>group1 objects.</li>
- *  <li>group1 and group2 objects.</li>
- * </ul>
- * </p>
- *
- * See
- * <ul>
- *  <li>Dali::DynamicsWorld::SignalCollision</li>
- *  <li>Dali::DynamicsCollision</li>
- *  <li>\ref Dali::DynamicsBodyConfig::SetCollisionGroup - to set the collision group</li>
- *  <li>\ref Dali::DynamicsBodyConfig::SetCollisionMask - to set the collision mask</li>
- * </ul>
- */
-
diff --git a/docs/content/programming-guide/dynamics-initialization.h b/docs/content/programming-guide/dynamics-initialization.h
deleted file mode 100644 (file)
index 638bd31..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/**
- * \page dynamics-initialization Initializing the Simulation
- * \section dynamics-prerequisites Dynamics prerequisites
- * <p>
- * In order to reduce binary size on devices, by default Dali core is built without Dynamics support. \n
- * This can be enabled by adding the --enable-debug option to configure. The configure command should output this: \n
- * \code
- * Configuration
- * -------------
- *  Dynamics support:                 yes
- * \endcode
- * <p>In addition to rebuilding Dali, a physics plugin (e.g. bullet, havok) should be installed on the target device.
- * Dali adaptor provides the bullet plugin e.g. install dali-adaptor-dali-bullet-plugin-X.armv7l.rpm.
- *
- * \section initializing-world Initializing the World
- * <p>
- * The simulation is encapsulated and controlled by a instance of a Dali::DynamicsWorld object.\n
- * \code
- * // DynamicsWorld initialisation code
- * Dali::DynamicsWorldConfig worldConfig( Dali::DynamicsWorldConfig::New() );
- * Dali::Stage::GetCurrent().InitializeDynamics( worldConfig );
- * \endcode
- * <p>If the DynamicsWorld handle empty, then a prerequisite is missing (see above).
- * Use a Dali::DynamicsWorldConfig object to specify options for the type of simulation required.\n
- * Dali::DynamicsWorldConfig::RIGID supports rigid body dynamics only, while Dali::DynamicsWorldConfig::SOFT supports
- * both rigid and soft body dynamics. Rigid body dynamics uses less CPU than soft body dynamics and is simpler to set up.
- * \code
- * // DynamicsWorld initialisation code
- * Dali::DynamicsWorldConfig worldConfig( Dali::DynamicsWorldConfig::New() );
- * // Choose a rigid body capable simulation
- * worldConfig.SetType( Dali::DynamicsWorldConfig::RIGID );
- * // or a soft and rigid body simulation
- * worldConfig.SetType( Dali::DynamicsWorldConfig::SOFT );
- * // Request Dali::Stage to create an instance of the DynamicsWorld
- * Dali::Stage::GetCurrent().InitializeDynamics( worldConfig );
- * \endcode
- *
- * \section initializing-world-advanced Advanced Initialization
- * <h3>Units</h3>
- * <p>All distance units in the simulation are based on meters, so positioning an actor at (0, -500, -1000)
- * will position it 0.5km in the air and 1km away from the camera.\n So if the actor was to fall under
- * the control of gravity it will seem to fall in slow motion. To counteract this the simulation units can
- * be modified using Dali::DynamicsWorldConfig::SetUnit. The default value is set to 0.01 to change the
- * simulation units to centimeters.
- * </p>
- * \code
- * // change simulation back to meters
- * worldConfig.SetUnit(1.0f);
- * // or change simulation unit to millimeters
- * worldConfig.SetUnit(1.0f/1000.0f);
- * \endcode
- *
- * <h3>Simulation update ticks</h3>
- * <p>The application developer can set the number of simulation time steps / DALi update tick using
- * Dali::DynamicsWorldConfig::SetSimulationSubSteps.\n
- * Use this to advance the simulation in smaller time steps, thus gaining a more accurate
- * simulation for collision detection.\n
- * Using this API may adversely affect performance, as the dynamics simulation is performing many more
- * calculations each DAli tick than normal.</p>
- * \code
- * // Assume DAli is updating at 60Hz (16.667ms / update)
- * //Setting subSteps to 1 will update the simulation once per DALi update.
- * worldConfig.SetSimulationSubSteps(1);
- * //Setting subSteps to 4 will perform 4 simulation updates per DALi update each with a time step of Approx 4.2ms.
- * worldConfig.SetSimulationSubSteps(1);
- * \endcode
- * \section manipulating-world Using the World
- * <h3>The Dynamics Simulation Root Actor</h3>
- * <p>To manipulate the world within the scene-graph it must be connected to a Dali::Actor.\n
- * All Rigid or Soft bodies that will be simulated must each be connected to a Dali::Actor which is a
- * direct child of the dynamics root actor.</p>
- * \code
- * // Create an actor to represent our view of the simulation
- * Dali::Actor dynamicsRootActor( Dali::Actor::New() );
- * // retrieve a handle to the DynamicsWorld object initialized previously
- * Dali::DynamicsWorld dynamicsWorld( Dali::Stage::GetCurrent().GetDynamicsWorld() );
- * // Connect the Dali::DynamicsWorld and the Dali::Actor
- * dynamicsWorld.SetRootActor( dynamicsRootActor );
- * // Add root actor to Dali::Stage
- * Dali::Stage::GetCurrent().Add( dynamicsRootActor );
- * \endcode
- * <h3>Gravity</h3>
- * <p>The gravity applicable to the entire simulation can be set through Dali::DynamicsWorld::SetGravity.\n
- * The gravity will apply a constant force on all Dali::DynamicsBody objects added to the world which have a
- * non zero mass and are not flagged as kinematic.</p>
- * \code
- * // Set gravity to apply a force on the negative Y axis
- * dynamicsWorld.SetGravity( Vector3( 0.0f, -10.0f, 0.0f ) );
- * \endcode
- * <hr>
- * <p>See also
-* <p>See
- * <ul>
- *  <li>Dali::DynamicsWorldConfig</li>
- *  <li>Dali::DynamicsWorld</li>
- *  <li>Dali::Stage::InitializeDynamics</li>
- * </ul>
- * </p>
- *
- */
-
diff --git a/docs/content/programming-guide/dynamics-intro.h b/docs/content/programming-guide/dynamics-intro.h
deleted file mode 100644 (file)
index 3f444b1..0000000
+++ /dev/null
@@ -1,21 +0,0 @@
-/*! \page dynamics-intro Dynamics - Introduction
- *
- * Dynamics gives the application developer a means to simulate physical kinetic properties on solid shapes.
- * Simple physical shapes can be associated with a given actor, e.g., an actor representing a ball would have
- * a spherical shape. Other simple shapes include cube, cone, cylinder and capsule (a pill or lozenge shape).
- * \image html dynamics/dynamics-shapes.png "Simple Shapes"
- * The application developer can provide more complex shapes using arbitrary meshes, however, this will use more
- * CPU than the simple shapes.\n\n
- * Dali supports both rigid body and soft body simulations.
- * <ul>
- * <li>Rigid body simulation means that the shapes used in the simulation cannot deform. This is simpler, and requires
- * less processing power.</li>
- * <li>Soft body simulation allows the shapes used in the simulation to deform, e.g. a rubber ball will squash and change
- * shape when it hits a wall; or a cloth flag will flutter, etc.</li>
- * </ul>
- * Both forms of simulation provide automatic collision detection, and can be detected on all bodies in the simulation.
- * The application developer can use signals to listen for detected collisions.
- *
- * \image html dynamics/dynamics-rigid.png "Example application"
- */
-
diff --git a/docs/content/programming-guide/dynamics-joints.h b/docs/content/programming-guide/dynamics-joints.h
deleted file mode 100644 (file)
index 3cf8d2e..0000000
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * \page dynamics-joints Joints
- * A Dali::DynamicsJoint represents a connection (or link) between a Dali::DynamicsBody pair.
- * A Joint can optionally allow \ref linear "linear motion" and/or \ref angular "angular rotation" around its origin on one or more axis, and
- * can have a \ref motors "motor" or \ref springs "spring" enabled on those axis.
- * \image html dynamics/dynamics-joint2.png
- * \section create-joint Creating a joint
- * <p>Each Dali::DynamicsJoint is created by a Dali::Actor through its Dali::Actor::AddDynamicsJoint method.\n
- * This method takes two parameters\n
- * 1. The other Dali::Actor in the joint relationship.\n
- * 2. A Dali::Vector3 relative offset from the owning Dali::Actor's current position.\n
- * A joint is active in the simulation when both of the actors are connected to the Stage via the Dali::Actor
- * set with Dali::DynamicsWorld::SetRootActorDynamics.
- * </p>
- * <h3>A code example creating two actors connected by a joint</h3>
- * \code
- * // create an actor to represent a rigid body
- * Dali::Actor actor1( Dali::Actor::New() );
- * // Enable dynamics for the actor, creating a rigid body with default configuration
- * actor1.EnableDynamics( Dali::DynamicsBodyConfig::New() );
- * actor1.SetPosition( Vector3( 0, 0, 0 ) );
- * // create an actor to represent a second rigid body
- * Dali::Actor actor2( Dali::Actor::New() );
- * actor1.SetPosition( Vector3( 100, 0, 0 ) );
- * // Enable dynamics for the actor, creating a rigid body with default configuration
- * actor2.EnableDynamics( Dali::DynamicsBodyConfig::New() );
- * // create the joint
- * Vector3 relativeOffset( 25, 0, 0 );
- * actor1.AddDynamicsJoint( actor2, relativeOffset );
- * \endcode
- * The joint is 25 units to the right of actor1 and 75 units to the left of actor2. If
- * either actor is moved the joint will follow pulling the other actor with it.
- * \section linear Linear Limits
- * \image html dynamics/dynamics-joint.png "A joint allowing linear motion on the Y Axis"
- * Limits control how much translation is allowed relative to the joints origin point, use Dali::DynamicsJoint::SetLinearLimit
- * to set linear limits.
- * \code
- * ...
- * actor1.AddDynamicsJoint( actor2, Vector3(0, 0, 0) );
- * DynamicsJoint joint( actor1.GetDynamicsJoint(actor2) );
- *
- * // Allow translation from the joint's origin along the X axis of +/- 50 units
- * joint.SetLinearLimit( Dali::DynamicsJoint::LINEAR_X, -50, 50);
- * \endcode
- * \section angular Angular Limits
- * Limits control how much rotation is allowed around the joint's origin point, use Dali::DynamicsJoint::SetAngularLimit
- * to set angular limits.
- * \code
- * ...
- * actor1.AddDynamicsJoint( actor2, Vector3(0, 0, 0) );
- * DynamicsJoint joint( actor1.GetDynamicsJoint(actor2) );
- *
- * // Allow rotation around the joint's origin on the Z axis of - 45 degrees and +90 degrees
- * joint.SetAngularLimit( Dali::DynamicsJoint::ANGULAR_Z, -Dali::Degree(45), Dali::Degree(90) );
- * \endcode
- * \section motors Motors
- * Motors apply a force along a given axis towards the lower or upper limit set on that axis.\n
- * Use Dali::DynamicsJoint::EnableMotor to enable/disable a motor.\n
- * The torque of the motor can be set with Dali::DynamicsJoint::SetMotorForce and the velocity
- * with Dali::DynamicsJoint::SetMotorVelocity.
- * \code
- * ...
- * actor1.AddDynamicsJoint( actor2, Vector3(0, 0, 0) );
- * DynamicsJoint joint( actor1.GetDynamicsJoint(actor2) );
- *
- * // allow angular rotation on the Z axis
- * joint.SetAngularLimit(Dali::DynamicsJoint::ANGULAR_Z, -Dali::Degree(90), Dali::Degree(90));
- * // enable the Z axis angular motor
- * joint.EnableMotor(Dali::DynamicsJoint::ANGULAR_Z, true);
- * // set the motor torque
- * joint.SetMotorForce(Dali::DynamicsJoint::ANGULAR_Z, 0.5f);
- * // set the motor velocity (acts towards lower limit)
- * joint.SetMotorVelocity(Dali::DynamicsJoint::ANGULAR_Z, -10.0f);
- * \endcode
- * \section springs Springs
- * Springs apply a force to keep the Dali::DynamicsJoint origin at the spring's center point.
- * A spring can be enabled for a given axis using Dali::DynamicsJoint::EnableSpring.\n
- * The center point is set as a ratio between the lower and upper limits on the given axis using
- * Dali::DynamicsJoint::SetSpringCenterPoint.\n
- * The magnitude of the spring's centering force can be set with Dali::DynamicsJoint::SetSpringStiffness.\n
- * Dali::DynamicsJoint::SetSpringDamping can be used to limit the amount of overshoot and oscillations
- * of the spring as it settles at its center point.
- * \code
- * ...
- * actor1.AddDynamicsJoint( actor2, Vector3(0, 0, 0) );
- * DynamicsJoint joint( actor1.GetDynamicsJoint(actor2) );
- *
- * // allow linear motion on Y axis
- * joint.SetLinearLimit(Dali::DynamicsJoint::LINEAR_Y, -50, 50);
- * // enable the Y axis linear spring
- * joint.EnableSpring(Dali::DynamicsJoint::LINEAR_Y, true);
- * // set the center point of the spring at -40 ( 10% of the limits set )
- * joint.SetSpringCenterPoint(Dali::DynamicsJoint::LINEAR_Y, 0.1f);
- * // set the springs stiffness or centering force
- * joint.SetSpringStiffness(Dali::DynamicsJoint::LINEAR_Y, 40.0f);
- * // allow more oscillations before the spring comes to reset
- * joint.SetSpringDamping(Dali::DynamicsJoint::LINEAR_Y, 0.1f);
- * \endcode
- * <hr>
- * <p>See also
- * <ul>
- *  <li>Dali::DynamicsJoint</li>
- *  <li>Dali::Actor::AddDynamicsJoint</li>
- *  <li>Dali::Actor::GetDynamicsJoint</li>
- * </ul>
- * </p>
- */
-
index ee9899f..f360947 100644 (file)
@@ -1,10 +1,10 @@
 /*! \page event-system Event Handling
 
-Dali emits several signals to an application to inform it of user actions.
+DALi emits several signals to an application to inform it of user actions.
 
 <h2 class="pg">Touch Events</h2>
 
-An application can be notified when a user interacts with the touch screen on the device by connecting to the touch signal provided by Dali::Actor.  This signal will be emitted by Dali whenever the touch occurs within the connected actor's bounds.
+An application can be notified when a user interacts with the touch screen on the device by connecting to the touch signal provided by Dali::Actor.  This signal will be emitted by DALi whenever the touch occurs within the connected actor's bounds.
 
 Each point on the screen that is currently being touched or where touch has stopped is represented by a Dali::TouchPoint.  This object stores information about the state of the touch point (down, up, motion etc.) and the co-ordinates of the touch.
 
index 89b0f8c..6bd8a9b 100644 (file)
@@ -1,7 +1,7 @@
 /*! \page handle-body-idiom Handle â€“ body
 <h2 class="pg">What is the Handle/Body (Pimpl) pattern?</h2>
 It is a technique for hiding implementation details in the header file.
-Dali achieves it by using "handles" in the public API. These handles internally contain a reference counted pointer to the concrete implementation.
+DALi achieves it by using "handles" in the public API. These handles internally contain a reference counted pointer to the concrete implementation.
 
 <h2 class="pg">Why does Dali::Object use the Handle/Body (Pimpl) pattern?</h2>
 It provides:
@@ -13,15 +13,15 @@ Implementation details are hidden, only the required API is visible for the appl
 This way the danger of API/ABI breaks is also reduced since the implementation of a class can change without modifying the public API.
 
 \par Easier memory management
-Dali objects have implicit smart-pointer semantics.
-Each Dali::Object contains a single reference counted object which can be intitialized with the static "New" methods in the Dali API.
+DALi objects have implicit smart-pointer semantics.
+Each Dali::Object contains a single reference counted object which can be intitialized with the static "New" methods in the DALi API.
 This means that C++ new/delete operators do not have to be used (or paired) in the user code (RAII idiom).
 Of course there's no way of stopping users from allocating heap memory, but calls to the new operator can be minimised.
 
 <h2 class="pg">What does 'implicit smart-pointer semantics' mean in the case of Dali?</h2>
 
-Since Dali objects are just handles, they can be copied by value. When a Dali object is copied, both the copy and original will point to the same Dali resource.
-The internal Dali resources are reference counted; copying a Dali object will increase the reference count. A resource will not be deleted until all its Dali::Object handles are destroyed, or reset.
+Since DALi objects are just handles, they can be copied by value. When a DALi object is copied, both the copy and original will point to the same DALi resource.
+The internal DALi resources are reference counted; copying a DALi object will increase the reference count. A resource will not be deleted until all its Dali::Object handles are destroyed, or reset.
 
 \code
 class AnimationTest
index 2065659..9c4383f 100644 (file)
@@ -2,11 +2,11 @@
 
 The following steps are required for displaying the sentence 'Hello World' with Dali:
 
-- initialize the Dali library
+- initialize the DALi library
 - create an Actor showing text
 - add it to the Stage
 
-To understand the basic building blocks of the UI make sure to read the chapter on \link fundamentals Dali Fundamentals\endlink first.
+To understand the basic building blocks of the UI make sure to read the chapter on \link fundamentals DALi Fundamentals\endlink first.
 
 Let's take a look at the code for this test application.
 
@@ -85,8 +85,8 @@ int main( int argc, char **argv )
 
  There are a couple of steps which are very important to understand.
 
- <h2 class="pg"> Initializing Dali </h2>
- The application should not use the Dali library until it has sent the init complete signal!
+ <h2 class="pg"> Initializing DALi </h2>
+ The application should not use the DALi library until it has sent the init complete signal!
  That's why we connect our ExampleApp::Create callback to Dali::Application's SignalInit signal:
  \code
    ...
@@ -96,7 +96,7 @@ int main( int argc, char **argv )
 
  <h2 class="pg"> Reference counting </h2>
  The application should store Actors' and resources' handles.
- Dali objects are reference counted, which makes sure they exist only as long as they are needed.
+ DALi objects are reference counted, which makes sure they exist only as long as they are needed.
  That's why we store the Actor's handle:
  \code
    ...
diff --git a/docs/content/programming-guide/image-actor.h b/docs/content/programming-guide/image-actor.h
new file mode 100644 (file)
index 0000000..99a42cd
--- /dev/null
@@ -0,0 +1,103 @@
+/*! \page image-actor Image Actors
+ *
+ *
+ * <h1 class="pg">Overview</h1>
+ * The Dali::ImageActor inherits from Dali::Actor and provide means to display resources like Images on the stage.
+ * All the Dali::Actor methods can be called on them.<br>
+ *
+ * - <b>ImageActor:</b> An actor for displaying Images. It allows the developer to display a Dali::Image object on the stage.<br>
+ *
+ * <h1 class="pg">Image Actor</h1>
+ *
+ * <h2 class="pg">Construction</h2>
+ * The Image Actor is constructed by passing a Dali::Image object.
+ * Dali::Image is an abstract base class with multiple derived classes.
+ * Dali::ResourceImage is used for the common case of loading an image
+ * from a file.
+ *
+ * @code
+ * Dali::Image image = ResourceImage::New( myImageFilename );
+ * Dali::ImageActor myImageActor = ImageActor::New( image );
+ * @endcode
+ *
+ * <h3 class="pg">Resizing at Load Time</h3>
+ * An application loading images from an external source will often want to
+ * display those images at a lower resolution than their native ones.
+ * To support this, DALi can resize an image at load time so that its
+ * in-memory copy uses less space and its visual quality benefits from being
+ * prefiltered.
+ * There are four algorithms which can be used to fit an image to a desired
+ * rectangle, a desired width or a desired height
+ * (see Dali::FittingMode).
+ *
+ * Here is an example doing rescaling:
+ *
+ * @code
+ * Dali::Image image = Dali::ResourceImage::New( filename, ImageDimensions( 240, 240 ), FittingMode::SCALE_TO_FILL );
+ * @endcode
+ *
+ * This example sets the size and fitting mode appropriately for a large thumbnail
+ * during Dali::ResourceImage construction.
+ * In general, to enable scaling on load, pass a non-zero width or height and
+ * one of the four fitting modes to the Dali::ResourceImage creator function
+ * as shown above.
+ *
+ * The fitting modes and a suggested use-case for each are as follows:
+ * <ol>
+ *   <li> Dali::FittingMode::SHRINK_TO_FIT Full-screen image display: Limit loaded image resolution to device resolution but show all of image.
+ *   <li> Dali::FittingMode::SCALE_TO_FILL Thumbnail gallery grid: Limit loaded image resolution to screen tile, filling whole tile but losing a few pixels to match the tile shape.
+ *   <li> Dali::FittingMode::FIT_WIDTH Image columns: Limit loaded image resolution to column.
+ *   <li> Dali::FittingMode::FIT_HEIGHT Image rows: Limit loaded image resolution to row height.
+ * </ol>
+ *
+ * The dali-demo project contains a full example under
+ * <code>examples/image-scaling-and-filtering</code>
+ * and a specific sampling mode example under
+ * <code>examples/image-scaling-irregular-grid</code>.
+ *
+ * There are more details on this topic in the
+ * \link resourceimagescaling Rescaling Images \endlink
+ * section.
+ *
+ * <h2 class="pg">Style</h2>
+ * The Actor can render an image in two different ways.<br>
+ * -# STYLE_QUAD: A simple flat quad style for rendering images.<br>
+ * -# STYLE_NINE_PATCH: This style gives the flexibility to stretch images by dividing it into 9 sections.
+ * The four corners are not scaled; the four edges are scaled in one axis, and the middle is scaled in both axes.<br>
+ *
+ * @code
+ * // default : ImageActor::STYLE_QUAD
+ * myImageActor.SetStyle (Dali::ImageActor::STYLE_NINE_PATCH);
+ * @endcode
+ *
+ *
+ * <h2 class="pg">Border</h2>
+ * The border is used in the ImageActor::STYLE_NINE_PATCH. It defines the border values of the image for stretching.<br>
+ *
+ * @code
+ * Dali::ImageActor::Border border(0.45,0.15,0.45,0.15);
+ * myImageActor.SetBorder(border);
+ * @endcode
+ *
+ *
+ * <h2 class="pg">Pixel area</h2>
+ * The area of the image to be displayed by the Image Actor can be set by setting the Pixel area. Pixel area is relative to the top-left (0,0) of the image.
+ * @code
+ * Rect<int> pixel1( myX, myY, myWidth, myHeight );
+ * if(!myImageActor.IsPixelAreaSet())
+ * {
+ *   myImageActor.SetPixelArea( pixel1 );
+ * }
+ *
+ * //Removes the pixel are set
+ * myImageActor.ClearPixelArea();
+ * @endcode
+ *
+ *
+ * <h2 class="pg">Changing the image</h2>
+ * The Image Actor needs a reference to a Dali::Image object on creation. However the Image object can be later changed by calling DaliActor:SetImage
+ * @code
+ * myImageActor.SetImage( newImage );
+ * @endcode
+ *
+ */
diff --git a/docs/content/programming-guide/image-mesh-actor.h b/docs/content/programming-guide/image-mesh-actor.h
deleted file mode 100644 (file)
index c579101..0000000
+++ /dev/null
@@ -1,133 +0,0 @@
-/*! \page image-mesh-actor Image and Mesh actors
- *
- *
- * <h1 class="pg">Overview</h1>
- * The Dali::ImageActor & Dali::MeshActor are inherited from Dali::Actor and provide means to display resources like Images and Geometries (Triangle meshes) on the stage.
- * All the Dali::Actor methods can be called on them.<br>
- *
- * - <b>ImageActor:</b> An actor for displaying Images. It allows the developer to display a Dali::Image object on the stage.<br>
- * - <b>MeshActor:</b>  An actor for displaying one or more mesh geometries. It may have children, which may be plain actors or other mesh actors.<br>
- *
- * <h1 class="pg">Image Actor</h1>
- *
- * <h2 class="pg">Construction</h2>
- * The Image Actor is constructed by passing a Dali::Image object
- *
- * @code
- * Dali::Image image = Image::New(myImageFilename);
- * Dali::ImageActor myImageActor = ImageActor::New(image);
- * @endcode
- *
- * <h3 class="pg">Resizing at Load Time</h3>
- * An application loading images from an external source will often want to
- * display those images at a lower resolution than their native ones.
- * To support this, %Dali can resize an image at load time so that its in-memory
- * copy uses less space and its visual quality benefits from being prefiltered.
- * There are four algorithms which can be used to fit an image to a desired
- * rectangle, a desired width or a desired height
- * (see Dali::ImageAttributes::ScalingMode).
- *
- * Here is an example doing rescaling:
- *
- * @code
- * Dali::ImageAttributes attributes;
- * attributes.SetSize( 256, 192 );
- * attributes.SetScalingMode( Dali::ImageAttributes::ScaleToFill );
- * Dali::Image image = Dali::Image::New( filename, attributes );
- * @endcode
- *
- * This example sets the size and scaling mode appropriately for a large thumbnail
- * on an Dali::ImageAttributes instance and passes that to Dali::Image construction.
- * In general, to enable scaling on load, set-up a Dali::ImageAttributes object with
- * a non-zero width or height and one of the four scaling modes, and pass it into a
- * Dali::Image creator function as shown above.
- *
- * The scaling modes and a suggested use-case for each are as follows:
- * <ol>
- *   <li> Dali::ImageAttributes::ShrinkToFit Full-screen image display: Limit loaded image resolution to device resolution.
- *   <li> Dali::ImageAttributes::ScaleToFill Thumbnail gallery grid: Limit loaded image resolution to screen tile.
- *   <li> Dali::ImageAttributes::FitWidth Image columns: Limit loaded image resolution to column.
- *   <li> Dali::ImageAttributes::FitHeight Image rows: Limit loaded image resolution to row height.
- * </ol>
- *
- * The dali-demo project contains a full example under <code>examples/image</code>.
- *
- * <h2 class="pg">Style</h2>
- * The Actor can render an image in two different ways.<br>
- * -# STYLE_QUAD: A simple flat quad style for rendering images.<br>
- * -# STYLE_NINE_PATCH: This style gives the flexibility to stretch images by dividing it into 9 sections.
- * The four corners are not scaled; the four edges are scaled in one axis, and the middle is scaled in both axes.<br>
- *
- * @code
- * // default : ImageActor::STYLE_QUAD
- * myImageActor.SetStyle (Dali::ImageActor::STYLE_NINE_PATCH);
- * @endcode
- *
- *
- * <h2 class="pg">Border</h2>
- * The border is used in the ImageActor::STYLE_NINE_PATCH. It defines the border values of the image for stretching.<br>
- *
- * @code
- * Dali::ImageActor::Border border(0.45,0.15,0.45,0.15);
- * myImageActor.SetBorder(border);
- * @endcode
- *
- *
- * <h2 class="pg">Pixel area</h2>
- * The area of the image to be displayed by the Image Actor can be set by setting the Pixel area. Pixel area is relative to the top-left (0,0) of the image.
- * @code
- * Rect<int> pixel1( myX, myY, myWidth, myHeight );
- * if(!myImageActor.IsPixelAreaSet())
- * {
- *   myImageActor.SetPixelArea( pixel1 );
- * }
- *
- * //Removes the pixel are set
- * myImageActor.ClearPixelArea();
- * @endcode
- *
- *
- * <h2 class="pg">Changing the image</h2>
- * The Image Actor needs a reference to a Dali::Image object on creation. However the Image object can be later changed by calling DaliActor:SetImage
- * @code
- * myImageActor.SetImage( newImage );
- * @endcode
- *
- * <h2 class="pg">Fade in</h2>
- * It's possible to fade in the image gradually when first rendered.
- * @code
- * if (!myImageActor.GetFadeIn())
- * {
- *   myImageActor.SetFadeIn(true);
- * }
- *
- * // default : 1 Second
- * myImageActor.SetFadeInDuration(seconds);
- * @endcode
- *
- *
- * <h1 class="pg">Mesh Actor</h1>
- *
- * <h2 class="pg">Construction</h2>
- * The mesh actor is created by passing a reference to Dali::Mesh object
- *
- * @code
- * Dali::Mesh mesh = Dali::Mesh::New();
- * Dali::MeshActor myMeshActor = Dali::MeshActor::New(mesh);
- * @endcode
-
- *
- * <h2 class="pg">Modifying material</h2>
- * The developer can change the material of mesh actor using the material entity name.
- *
- * @code
- * Dali::Image image = Dali::Image::New(myTextureFile);
- * myCustomMaterial = Dali::Material::New("CustomMaterial");
- * myCustomMaterial.SetDiffuseTexture(image);
- * Dali::MeshActor::SetMaterial(myMeshActor, materialEntityNameInModel, 0, myCustomMaterial);
- *
- * @endcode
- *
- *
- */
-
diff --git a/docs/content/programming-guide/item-view.h b/docs/content/programming-guide/item-view.h
deleted file mode 100644 (file)
index 43cd656..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-/*! \page item-view Item View
- * Your text here
- *
- * References to Dali::Toolkit::ItemView will work...
- *
- */
-
index 0a85d51..bde81c2 100644 (file)
@@ -3,7 +3,7 @@
 @section what-is-a-property What is a property?
 
 A property is a value used by an object that can be modified or read externally to that object.
-This could be from within Dali or externally by an application.
+This could be from within DALi or externally by an application.
 
 <h2 class="pg">What is a property used for?</h2>
 
index d811594..75fef8f 100644 (file)
@@ -6,44 +6,6 @@
 The shader effects allow the developer to apply visual deformations on the actors.
 They can affect the geometry, the colors and textures of the actor.
 
-There are some utility functions in Dali::Toolkit to create some useful shader effects:
-@code
-//Bendy effect bends the geometry around a point, useful to do a page turn effect
-Dali::ShaderEffect bendyEffect = Dali::Toolkit::CreateBendyEffect();
-
-//Dissolve effect does a dissolve effect on the actor texture
-Dali::ShaderEffect dissolveEffect = Dali::Toolkit::CreateDissolveEffect();
-
-//Ripple effect does a concentric wave effect on the actor texture
-Dali::ShaderEffect rippleEffect = Dali::Toolkit::CreateRippleEffect();
-
-@endcode
-
-@image html shader-effect-ripple.png "Ripple Effect"
-
-<br>
-<br>
-<h2 class="pg">Example and Usage</h2>
-Here is an example on how to use a shader effect, using the RippleEffect.
-
-First create the shader effect.
-@code
-Dali::ShaderEffect effect = Dali::Toolkit::CreateRippleEffect();
-@endcode
-
-Then set the values of the uniforms.
-@code
-// Set the amplitude
-effect.SetUniform("uAmplitude", 45.0f );
-// Set the center
-effect.SetUniform("uCenter", Vector2() );
-@endcode
-
-Finally apply the shader effect to an actor:
-@code
-actor.SetShaderEffect( effect );
-@endcode
-
 
 <br>
 <br>
index a69d1e8..2f3ac40 100644 (file)
@@ -74,24 +74,10 @@ A table view is added to the popup to specify layout. It will fill to the width
 mPopupLayout.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
 mPopupLayout.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
 @endcode
-Override the OnRelayout method to position and resize the buttons. The trick to this is that the buttons do not know they are part of a popup and are
-about to be resized so could already have had their sizes negotiated. The call to PropagateRelayoutFlags on the button will ensure that it and all
-its child dependents are ready for a new size negotiation pass. The container.Add call will add the button to the relayout queue to be processed this frame.
-The buttonSize parameter is the desired size for the button. The desired size will only be set if the size policy of the button has already been changed to
-ResizePolicy::USE_ASSIGNED_SIZE, which is what happens when a button is added to the popup.
+Override the OnRelayout method to position and resize the buttons.
 @code
-void Popup::AddButton( Toolkit::Button button )
-...
-button.SetResizePolicy( ResizePolicy::USE_ASSIGNED_SIZE, Dimension::ALL_DIMENSIONS );
-...
-
 void Popup::OnRelayout( const Vector2& size, RelayoutContainer& container )
 ...
-button.SetPosition( buttonPosition );
-
-button.PropagateRelayoutFlags();    // Reset relayout flags for relayout
-container.Add( button, buttonSize );
-...
 @endcode
 Another aspect to the popup is that depending which resize policies are active on it then the inner table view requires different resize policies itself.
 OnSetResizePolicy can be overridden to receive notice that the resize policy has changed on the control and action can be taken.
diff --git a/docs/content/shared-javascript-and-cpp-documentation/animation.md b/docs/content/shared-javascript-and-cpp-documentation/animation.md
new file mode 100644 (file)
index 0000000..889106c
--- /dev/null
@@ -0,0 +1,129 @@
+<!--
+/**-->
+
+# Animation {#animation}
+
+DALi provides a rich and easy to use animation framework which allows the creation of visually rich applications.
+Dali::Animation can be used to animate the properties of any number of objects, typically Actors.
+
+## Creating a basic Animation {#animation-basics}
+
+Create an animation object that will take place over 3 seconds:
+~~~{.cpp}
+Dali::Animation animation = Animation::New( 3.0f );
+~~~
+
+### Animating Properties
+
+There are two distint ways in which properties can be animated within DALi:
+- **AnimateTo:** The property will animate **TO** the value in the given time.
+- **AnimateBy:** The property will animate **BY** the value in the given time.
+
+(Assume actor1 & actor2 are at position 10.0f, 10.0f, 0.0f at the start of the animation)
+~~~{.cpp}
+// Animate the position of actor1 TO 10.0f, 50.0f, 0.0f
+animation.AnimateTo( Property( actor1, Dali::Actor::Property::POSITION ), Vector3(10.0f, 50.0f, 0.0f) ); // End Position: 10.0f, 50.0f, 0.0f
+
+// Animate the position of actor2 BY 10.0f, 50.0f, 0.0f
+animation.AnimateBy( Property( actor2, Dali::Actor::Property::POSITION ), Vector3(10.0f, 50.0f, 0.0f) ); // End Position: 20.0f, 60.0f, 0.0f
+~~~
+
+### Playback Control
+
+When an animation is created, it can be played:
+~~~{.cpp}
+animation.Play();
+~~~
+
+Stop and Pause are also supported.
+~~~{.cpp}
+animation.Stop();
+animation.Pause();
+~~~
+
+### Notifications
+
+Using DALi's signal framework, applications can be notified when the animation finishes:
+
+~~~{.cpp}
+
+void ExampleCallback( Animation& source )
+{
+  std::cout << "Animation has finished" << std::endl;
+}
+...
+animation.FinishedSignal().Connect( ExampleCallback );
+~~~
+
+### Alpha Functions
+
+Alpha functions are used in animations to specify the rate of change of the animation parameter over time.
+The built in supported functions can be viewed in Dali::AlphaFunction::BuiltinFunction.
+
+It is possible to specify a different alpha function for each animator in an Animation object:
+~~~{.cpp}
+animation.AnimateTo( Property( actor1, Dali::Actor::Property::POSITION ), Vector3(10.0f, 50.0f, 0.0f), Dali::AlphaFunction::EASE_IN );
+~~~
+
+### Other Actions
+
+An animation can be looped:
+~~~{.cpp}
+animation.SetLooping( true );
+~~~
+
+By default, when an animation ends, the properties that it was animating are BAKED.
+However, the property changes can be **discarded** when the animation ends (or is stopped):
+~~~{.cpp}
+animation.SetEndAction( Animation::Discard );
+~~~
+
+## Key-Frame Animation {#animation-key-frame}
+
+DALi provides support for animating between several different values, i.e. key-frames.
+A key frame takes a progress value between 0.0f and 1.0f (0 and 100% respectively) and portrays the value of the property when the animation has progressed that much.
+You can create several key frames:
+~~~{.cpp}
+Dali::KeyFrames keyFrames = Dali::KeyFrames::New();
+keyFrames.Add( 0.0f, Vector3( 10.0f, 10.0f, 10.0f ) );
+keyFrames.Add( 0.7f, Vector3( 200.0f, 200.0f, 200.0f ) );
+keyFrames.Add( 1.0f, Vector3( 100.0f, 100.0f, 100.0f ) );
+~~~
+And then add them to your animation.
+~~~{.cpp}
+animation.AnimateBetween( Property( actor1, Dali::Actor::Property::POSITION ), keyFrames );
+~~~
+When you play the animation, DALi will animate the position of actor1 between the key-frames specified.
+'actor1' will animate from (10.0f, 10.0f, 10.0f) to (200.0f, 200.f, 200.0f) by 70% of the animation time,
+and then spend the remaining time animating back to (100.0f, 100.0f, 100.0f).
+
+The advantage of specifying a key-frame at 0% is that regardless of where 'actor1' is, it will start from position (10.0f, 10.0f, 10.0f).
+If AnimateTo was used, then the start position would have been actor1's current position.
+
+## Path Animations {#animation-paths}
+
+A Dali::Path can be used to animate the position and orientation of actors.
+
+![ ](animation/animated-path.png)
+
+The black points in the diagram are points where the DALi logo will travel to.
+The red points are the control points which express the curvature of the path on the black points.
+
+This, in code will be represented as follows:
+~~~{.cpp}
+Path path = Path::New();
+path.AddPoint( Vector3( 50.0f, 10.0f, 0.0f ));
+path.AddPoint( Vector3( 90.0f, 50.0f, 0.0f ));
+path.AddPoint( Vector3( 10.0f, 90.0f, 0.0f ));
+~~~
+The control points can be added manually using Dali::Path::AddControlPoint or Path can auto-generate them for you:
+~~~{.cpp}
+path.GenerateControlPoints(0.25f);
+~~~
+Here 0.25f represents the curvature of the path you require. Please see Dali::Path::GenerateControlPoints for more information.
+
+To animate actor1 along this path:
+~~~{.cpp}
+animation.Animate( actor1, path, Vector3::ZERO );
+~~~
+The third parameter is the forward vector (in local space coordinate system) that will be oriented with the path's tangent direction.
\ No newline at end of file
diff --git a/docs/content/shared-javascript-and-cpp-documentation/build-guide.md b/docs/content/shared-javascript-and-cpp-documentation/build-guide.md
new file mode 100644 (file)
index 0000000..d6cd7e1
--- /dev/null
@@ -0,0 +1,80 @@
+<!--
+/**-->
+# Build Guide {#build-guide}
+
+## Ubuntu {#build-ubuntu}
+
+These instructions explain how to build the DALi library for the Ubuntu 14.04 desktop environment.
+
+### Minimum Requirements
+
++ Ubuntu 14.04
++ Ensure ALL sources are selected:
+ + Go to Ubuntu Settings and then to "Software & Updates".
+ + In the "Ubuntu Software" tab, ensure ALL software sources are ticked. (This is required because we install some community-maintained free & open-source software).
+
+### Creating a DALi environment
+
+DALi provides a script to set up your desktop environment. This script can be found in the dali-core repository.
+
++ Fetch ALL 4 repositories from tizen.org.
++ In the parent directory of these repositories, run the following command:
+  ~~~{.sh}
+  dali-core/build/scripts/dali_env -c
+  ~~~
+  This will also download any dependencies that the dali repositories require.
+
++ You can save the environment variables to a file:
+  ~~~{.sh}
+  dali-env/opt/bin/dali_env -s > setenv
+  ~~~
+
+The last few steps only need to be done once.
+
+You will have to source your environment variables every time you open up a new terminal (or you can add to .bashrc if you prefer).
+You can do this by sourcing the '''setenv''' script you created above:
+~~~{.sh}
+. setenv
+~~~
+
+### Building the repositories
+
+#### dali-core
+~~~{.sh}
+cd dali-core/build/tizen
+autoreconf --install
+./configure --prefix=$DESKTOP_PREFIX
+make install -j8
+~~~
+
+#### dali-adaptor
+~~~{.sh}
+cd dali-adaptor/build/tizen
+autoreconf --install
+./configure --prefix=$DESKTOP_PREFIX --enable-profile=UBUNTU --enable-gles=20
+make install -j8
+~~~
+
+#### dali-toolkit
+~~~{.sh}
+cd dali-toolkit/build/tizen
+autoreconf --install
+./configure --prefix=$DESKTOP_PREFIX
+make install -j8
+~~~
+
+#### dali-demo
+~~~{.sh}
+cd dali-demo/build/tizen
+cmake -DCMAKE_INSTALL_PREFIX=$DESKTOP_PREFIX .
+make install -j8
+~~~
+
+### Running dali-demo
+
+Ensure you have sourced your environment as mentioned above and then just run:
+~~~{.sh}
+dali-demo
+~~~
+
+*/
diff --git a/docs/content/shared-javascript-and-cpp-documentation/dali-introduction.md b/docs/content/shared-javascript-and-cpp-documentation/dali-introduction.md
new file mode 100644 (file)
index 0000000..67ec0a6
--- /dev/null
@@ -0,0 +1,31 @@
+<!--
+/**-->
+
+# DALi 3D ( Dynamic Animation Library ) {#dali-introduction}
+
+DALi is a quick and easy way of allowing developers to create Rich UI Applications like:
+
+ + Image & Video galleries
+ + Music players
+ + Games
+ + Maps
+ + Homescreens / launch pads
+ + Advanced watch faces for wearable devices
+
+DALi is based on OpenGL ES 2.0 & 3.0, however it hides the complexity of
+the OpenGL API from developers and provides a clean cross-platform C++ & JavaScript framework.
+
+## Features {#dali-features}
+
+ + Create Images & Text
+ + Create shaders using GLSL
+ + Provide multiple cameras and render targets
+ + Provides Layers to aid in 2D UI layout
+ + Easy to use Animation framework
+ + Automatic background loading of resources ( images / text / meshes )
+ + Runs all animations in a seperate thread. This helps maintain 60 FPS even if JavaScript is performing a long operation ( e.g. Garbage Collection ).
+ + Provides keyboard / touch / mouse handling
+
+![ ](screen-shot.png)
+
+*/
index a1200e6..af3b3e7 100644 (file)
@@ -1,5 +1,5 @@
-/**
- *
+<!--
+/**-->
 
 # Writing documentation for the DALi programing guide  {#documentationguide}
 
@@ -29,10 +29,26 @@ The space between the brackets is the alternative text. This means you will neve
 ~~~
   
 ## Example
-![ ](../assets/img/example-documentation/example-code.png)
-![ ](example-code.png)
 
+Please have a look at the numerous markdown files to see the header and footer requirements.
 
+You can add tags to your headings as follows:
+~~~{.md}
+# MyChapter {#my-chapter}
+~~~
+Which will allow you to link to this section as follows:
+~~~{.md}
+[Go To MyChapter](@ref my-chapter)
+~~~
+
+Code blocks can be enclosed within 2 blocks of 3 tildas(~).
+
+You can even specify your language type, for example:
+~~~{.md}
+~~~{.cpp}
+...
+~~~{.js}
+~~~
 
 #### Why use GitHub flavoured markdown?
  - Table support is good and language specific code blocks are easier to define ( javascript/C++).
index 115001b..2442180 100644 (file)
@@ -1,13 +1,18 @@
-/**
- *
-# Dali Fundamentals  {#fundamentals}
+<!--
+/**-->
 
-## Actors and the Stage
+# DALi Fundamentals  {#fundamentals}
+
+## Actors and the Stage {#actors-and-stage}
+
+Actor is the primary object with which DALi applications interact.
+A DALi application uses a hierachy of Dali::Actor objects to position visible content.
+An actor inherits a position relative to its parent, and can be moved relative to this point.
+UI controls can be built by combining multiple actors.
+
+The Stage is a top-level object used for displaying a tree of Actors.
+To display the contents of an actor, it must be added to the Dali::Stage,
 
-A Dali application uses a hierachy of Dali::Actor objects to position visible content.  An actor inherits a position relative to its parent, and can be moved relative to this point.  UI controls can be built by combining multiple actors.
-  
-To display the contents of an actor, it must be connected to the Dali::Stage.  This provides an invisible root (top-level) actor, to which all other actors are added.  A direct or indirect child of the root actor is considered "on-stage".  Multi-touch events are received through signals emitted by on-stage actors.
-  
 The following example shows how to connect a new actor to the stage:
 
 ~~~{.cpp}
@@ -20,15 +25,17 @@ var actor = new dali.Actor();
 dali.stage.add( actor );
 ~~~
 
-## The Coordinate System
+## The Coordinate System {#coordinate-system}
 
-The Stage has a 2D size, which matches the size of the application window.  The default coordinate system in Dali has the origin at the top-left corner, with positive X to right, and position Y going
-downwards.  This is intended to be convenient when laying-out 2D views.
+The Stage has a 2D size, which matches the size of the application window.
+The default **unit 1 is 1 pixel with default camera and** the default coordinate system in DALi has the **origin at the top-left corner, with positive X to right, and position Y going
+downwards**.  This is intended to be convenient when laying-out 2D views.
 
 ![ ](../assets/img/coordinate-system-and-stage.png)
 ![ ](coordinate-system-and-stage.png)
 
-## Positioning Actors
+
+## Positioning Actors {#positioning-actors}
 
 An actor inherits its parent's position.  The relative position between the actor & parent is determined by 3 properties:
 1) ParentOrigin.  This Vector3 property defines a point within the parent actor's area.
@@ -36,14 +43,14 @@ An actor inherits its parent's position.  The relative position between the acto
 ![ ](../assets/img/parent-origin.png)
 ![ ](parent-origin.png)
 
-The default is "top-left", which can be visualized in 2D as (0, 0), but is actually Vector3(0, 0, 0.5) in the 3D Dali world.  The actor's position is relative to this point.
+The default is "top-left", which can be visualized in 2D as (0, 0), but is actually Vector3(0, 0, 0.5) in the 3D DALi world.  The actor's position is relative to this point.
 
 2) AnchorPoint.  This Vector3 property defines a point within the child actor's area.
 
 ![ ](../assets/img/anchor-point.png)
 ![ ](anchor-point.png)
 
-The default is "center", which can be visualized in 2D as (0.5, 0.5), but is actually Vector3(0.5, 0.5, 0.5) in the 3D Dali world.  The actor's position is also relative to this point.
+The default is "center", which can be visualized in 2D as (0.5, 0.5), but is actually Vector3(0.5, 0.5, 0.5) in the 3D DALi world.  The actor's position is also relative to this point.
 
 3) Position.  This is the position vector between the parent-origin and anchor-point.
 
@@ -54,7 +61,28 @@ Therefore by default, an actors position is the distance between its center and
 
 An actor added directly to the stage with position (X = stageWidth*0.5, Y = stageHeight*0.5), would appear in the center of the screen.  Likewise an actor with position (X = actorWidth*0.5, Y = actorWidth*0.5), would appear at the top-left of the screen.
 
-Note that since Dali is a 3D toolkit, this behaviour is the result of a default perspective camera setup.
+Note that since DALi is a 3D toolkit, this behaviour is the result of a default perspective camera setup.
+
+## Scene Graph {#scene-graph}
+
+From wikipedia...
+  
+A scene graph is a collection of nodes in a graph or tree structure.
+A node may have many children but often only a single parent,
+with the effect of a parent applied to all its child nodes;
+an operation performed on a group automatically propagates
+its effect to all of its members. In many programs, associating
+a geometrical transformation matrix (see also transformation and matrix)
+at each group level and concatenating such matrices together is an
+efficient and natural way to process such operations. A common feature,
+for instance, is the ability to group related shapes/objects into a
+compound object that can then be moved, transformed, selected,
+etc. as easily as a single object.
+
+### How does this relate to the DALi public API?
+
+Actors are effectively nodes that receive input (touch events) and act as a
+container for draw-able elements (which are also nodes) and other actors.
 
 @class _Guide_DALi_Fundamentals
 
diff --git a/docs/content/shared-javascript-and-cpp-documentation/high-level-design.md b/docs/content/shared-javascript-and-cpp-documentation/high-level-design.md
new file mode 100644 (file)
index 0000000..eaa18a3
--- /dev/null
@@ -0,0 +1,28 @@
+<!--
+/**-->
+
+# High Level Design {#dali-hld}
+
+## Components {#dali-components}
+
+ + **DALi Core:** Event handling, Scene Graph, Rendering, Resource Management
+ + **DALi Adaptor:** Threading Model, Integration with the main loop.
+ + **DALi Platform Abstraction:** Resource loading & decoding in multiple threads (part of dali-adaptor)
+ + **DALi Toolkit:** Reusable UI Controls, Effects & Scripting Support
+
+![ ](../assets/img/architecture.png)
+![ ](architecture.png)
+
+## Main, Update & Render Threads {#dali-threads}
+
+DALi uses a multithreaded architecture in order to provide the best performance and scalability.
+
+ + **Event Thread:** The main thread in which application code and event handling runs.
+ + **Update Thread:** Updates the nodes on the scene as well as running animations & constraints
+ + **Render Thread:** OpenGL drawing, texture and geometry uploading etc.
+ + **Resource Threads:** Loads images and decodes into bitmaps etc.
+
+![ ](../assets/img/dali-threads.png)
+![ ](dali-threads.png)
+
+*/
diff --git a/docs/content/shared-javascript-and-cpp-documentation/item-view.md b/docs/content/shared-javascript-and-cpp-documentation/item-view.md
new file mode 100644 (file)
index 0000000..1313253
--- /dev/null
@@ -0,0 +1,73 @@
+<!--
+/**-->
+
+# Item View {#item-view}
+
+An Item view is a scrollable container that contains several items.
+It can have several layouts.
+There are a few built-in layouts that the application writer can use:
+
+|GRID                    |SPIRAL                    |DEPTH                    |
+|:----------------------:|:------------------------:|:-----------------------:|
+|![ ](item-view/grid.png)|![ ](item-view/spiral.png)|![ ](item-view/depth.png)|
+
+The application writer can also create their own custom layout by inheriting from Dali::Toolkit::ItemLayout.
+
+## Item Factory
+
+To create an item-view, the application writer has to provide an item-factory.
+An ItemFactory provides methods to create items and how many items there are among other things.
+
+~~~{.cpp}
+class MyFactory : public Dali::Toolkit::ItemFactory
+{
+public:
+  virtual unsigned int GetNumberOfItems()
+  {
+    // Should return the number of items
+    return MY_ITEM_COUNT;
+  }
+
+  virtual Actor NewItem( unsigned int itemId )
+  {
+    // We should create the actor here that represents our item based on the itemId given.
+
+    // Here we'll create an ImageActor which uses the the itemId to parse the image in a particular directory.
+    std::ostringstream imageName;
+    imageName << "my-image-folder/" << itemId << ".png"; // If item was 10, then this would result in my-image-folder/10.png
+    Dali::ResourceImage image = Dali::ResourceImage::New( imageName.str() );
+
+    // Create an Image Actor from the image and return
+    return Dali::ImageActor::New( image );
+  }
+};
+~~~
+These overridden methods in our factory will be called by the Item View.
+
+## Creating an ItemView
+
+~~~{.cpp}
+MyFactory factory; // Should store this as a member variable
+Dali::Toolkit::ItemView itemView = Dali::Toolkit::ItemView::New( factory ); // Pass in our factory
+itemView.SetParentOrigin( ParentOrigin::CENTER );
+itemView.SetAnchorPoint( AnchorPoint::CENTER );
+
+// Now create a layout
+Dali::Toolkit::ItemLayoutPtr spiralLayout = Dali::Toolkit::DefaultItemLayout::New( Dali::Toolkit::DefaultItemLayout::SPIRAL );
+
+// ... and add the layout to the item view
+itemView.AddLayout( spiralLayout );
+
+// More layouts can be created and added to the item-view
+
+// Activate the layout
+itemView.ActivateLayout(
+  0,                                   // The layout ID matches the order in which layouts are added
+  Dali::Stage::GetCurrent().GetSize(), // Use the stage's size as our item-view size
+  0 );                                 // We want the item-view to appear straight away
+
+// And add to the stage
+Dali::Stage::GetCurrent().Add( itemView );
+~~~
+
+*/
\ No newline at end of file
index 287c8cf..b235b61 100644 (file)
@@ -1,5 +1,6 @@
-/**
- *
+<!--
+/**-->
+
 # JavaScript wrapping guide  {#javascriptwrapping}
 
 This guide outlines what files to modify when the DALi C++ public API changes.
@@ -104,10 +105,11 @@ v8 will detect myActor is a wrapped object, and call getId() on that wrapped obj
 The wrapped object, then forwards the command to the real DALi object.
   
 Whenever we want to access functions / properties of that wrapped object, we unwrap it
-to get access to the Dali object.
+to get access to the DALi object.
   
-Each wrapped object registers with Dali garbage collector so they can be deleted
-when Dali shuts down
+Each wrapped object registers with DALi garbage collector so they can be deleted
+when DALi shuts down
 
 @class _Guide_JavaScript_Wrapping
+
 */
\ No newline at end of file
index ba1fc6d..f3a1df2 100644 (file)
@@ -1,5 +1,5 @@
-/**
- *
+<!--
+/**-->
 
 Multi-Touch Events
 ==================
@@ -144,5 +144,5 @@ Hit Priority of above Actor tree (all overlays): 1 - Lowest. 6 - Highest.
      touch signals are also emitted from the touch-down actor with an "Interrupted" state.
 
 @class MultiTouch
-*
+
 */
index 1fb8f06..60a4435 100644 (file)
@@ -1,5 +1,5 @@
-/**
- *
+<!--
+/**-->
 
 # Performance Profiling  {#performanceprofiling}
 
@@ -8,7 +8,7 @@ DALi has many mechanisms for analysing performance including kernel, system and
 
 
 ## Background
-The Dali rendering pipeline has 2 stages.
+The DALi rendering pipeline has 2 stages.
 
 Each stage is typically run once per frame.
 
@@ -42,7 +42,7 @@ To run at a solid 60 FPS (16 milliseconds per frame), it is recommended to stay
 This will leave enough time for the output to be composited (if the system uses a compositor) and to avoid using
 too much CPU power.
   
-The main Dali application thread which deals with event processing is independent of the update / render threads.
+The main DALi application thread which deals with event processing is independent of the update / render threads.
 This means animations won't stop if the main thread decides to do a long operation like downloading a file from the internet.
   
 
@@ -93,13 +93,13 @@ INFO: DALI: 1134155.533672 (seconds), V_SYNC
 
 | Marker | Description
 |--------|-------------
-| V_SYNC.| The heart beat which represents Dali should start creating a new frame if anything has changed. Runs at display refresh rate, typically 60Hz |
-| UPDATE_START | Dali update task has started |
-| UPDATE_START | Dali update task has finished |
-| RENDER_START | Dali render task has started |
-| RENDER_END | Dali render task has finished |
-| PROCESS_EVENT_START | Dali main thread processing events (e.g. in response to a touch event or a timer) |
-| PROCESS_EVENT_START | Dali main thread processing events finished |
+| V_SYNC.| The heart beat which represents DALi should start creating a new frame if anything has changed. Runs at display refresh rate, typically 60Hz |
+| UPDATE_START | DALi update task has started |
+| UPDATE_START | DALi update task has finished |
+| RENDER_START | DALi render task has started |
+| RENDER_END | DALi render task has finished |
+| PROCESS_EVENT_START | DALi main thread processing events (e.g. in response to a touch event or a timer) |
+| PROCESS_EVENT_START | DALi main thread processing events finished |
 | SWAP_START | glSwapBuffers started (todo) |
 | SWAP_END | glSwapBuffers end  (todo) |
 | PAUSE  | Application paused |
@@ -120,7 +120,7 @@ logger.AddMarker(PerformanceLogger::END_EVENT);
 
 ## Statistics logging
 
-Statistics logging uses Dali log output which on Tizen is dlog, but this can also be used on desktop by redirecting stderr to a file.
+Statistics logging uses DALi log output which on Tizen is dlog, but this can also be used on desktop by redirecting stderr to a file.
 
 Setting DALI_LOG_PERFORMANCE_STATS environment variable will enable time stamps.
 
@@ -144,7 +144,7 @@ $ dali-demo
  TableViewInit, min 76.55 ms, max 76.55 ms, total (0.1 secs), avg 76.55 ms, std dev 0.00 ms
 ~~~
 
-If nothing is animating Dali will enter a paused state to save power. At this
+If nothing is animating DALi will enter a paused state to save power. At this
 point nothing will be logged.
 
 ### Custom statistics for application developers
@@ -162,7 +162,7 @@ logger.AddMarker(PerformanceLogger::END_EVENT);
 
 ## Application profiling
 
- The main application thread in Dali is used to process and respond to events such as touch, key, mouse, gestures and timers.
+ The main application thread in DALi is used to process and respond to events such as touch, key, mouse, gestures and timers.
 
 Example:
 ~~~
@@ -193,10 +193,10 @@ DALI_PERFORMANCE_TIMESTAMP_OUTPUT=2 dali-demo
 ~~~
 
 Ftrace is a kernel tracer designed to help developers find out what is going on inside the kernel.
-It can be used for analysing how long Dali takes to perform different tasks and
-what Dali is doing in relation to other system processes / interrupts.
+It can be used for analysing how long DALi takes to perform different tasks and
+what DALi is doing in relation to other system processes / interrupts.
   
-On Tizen if the kernel has been built with ftrace enabled, then Dali can log out to ftrace.
+On Tizen if the kernel has been built with ftrace enabled, then DALi can log out to ftrace.
 This gives exact time stamps of the main events in Dali.
 Current markers that are logged:
 
@@ -226,7 +226,7 @@ $ cat trace
 If the message did not get added to the trace, then check the write permissions on trace_marker file. E.g.
 $ chmod ugoa+w trace_marker
 ~~~
-To view Dali markers in trace file
+To view DALi markers in trace file
 
 ~~~
 $ export DALI_LOG_PERFORMANCE=2
diff --git a/docs/content/shared-javascript-and-cpp-documentation/programming-languages.md b/docs/content/shared-javascript-and-cpp-documentation/programming-languages.md
new file mode 100644 (file)
index 0000000..85393d6
--- /dev/null
@@ -0,0 +1,84 @@
+<!--
+/**-->
+
+# Programming Languages {#programming-languages}
+
+DALi applications can be written in several different programming languages.
+
+## C++ {#c-plus-plus}
+
+~~~{.cpp}
+Dali::Actor actor = Dali::Actor::New();
+actor.SetParentOrigin( Dali::ParentOrigin::CENTER );
+actor.SetAnchorPoint( Dali::AnchorPoint::CENTER );
+Dali::Stage::GetCurrent().Add( actor );
+...
+bool OnPressed( Dali::Actor, const TouchEvent& event )
+{
+  Dali::Animation anim = Dali::Animation::New( 1.5f );
+  anim.AnimateTo( Property( actor, Actor::Property::POSITION ), Vector3( 200,-100,0), AlphaFunctions::Bounce );
+  anim.play();
+  return true; // consume the touch event
+}
+...
+actor.TouchedSignal().Connect( &OnPressed );
+~~~
+
+*/
+
+## JavaScript {#java-script-support}
+
+~~~{.js}
+var actor = new dali.Actor();
+actor.parentOrigin = dali.CENTER;
+actor.anchorPoint = dali.CENTER;
+dali.stage.add( actor );
+...
+function onPressed( actor, touchEvent )
+{
+  var animOptions = { alpha: "bounce", delay: 0, duration: 15 };
+  var anim = new dali.Animation();
+  anim.animateTo( actor, "position", [ 200,-100,0], animOptions );
+  anim.play();
+  return true; // consume the touch event
+}
+...
+actor.connect( "touched", onPressed );
+
+~~~
+
+## JSON {#json-support}
+
+~~~{.json}
+{
+ "animations":
+  {
+    "move":
+    {
+      "duration": 1.5,
+      "properties":
+      [
+        {
+          "actor":"image",
+          "property":"position",
+          "value":[200,-100,0],
+          "alpha-function": "BOUNCE"
+        }
+      ]
+    }
+  },
+  "stage":
+  [
+    {
+      "name":"image",
+      "type":"Actor",
+      "anchor-point": "CENTER",
+      "parent-origin": "CENTER",
+      "signals" :
+      [
+        { "name" : "touched", "action": "play", "animation": "move" }
+      ]
+    }
+  ]
+}
+~~~
\ No newline at end of file
diff --git a/docs/content/shared-javascript-and-cpp-documentation/resource-image-scaling.md b/docs/content/shared-javascript-and-cpp-documentation/resource-image-scaling.md
new file mode 100644 (file)
index 0000000..cc21bc0
--- /dev/null
@@ -0,0 +1,361 @@
+<!--
+/**-->
+
+[TOC]
+
+# Resource Image Scaling {#resourceimagescaling}
+
+## Introduction
+
+While common uses of images in DALi applications involve fixed sized images
+under the developer's control, e.g. for button backgrounds, in other cases such as galleries and wallpapers an application must display a variety of images and adapt to different screen sizes and densities.
+For these situations, DALi provides a facility to scale a `ResourceImage` while it is being loaded.
+
+Look at the following example.
+Let's say we are writing a home-screen application for a smartphone.
+Here we have a large, square image that we want to set as the wallpaper on a tall and narrow phone screen.
+We want to fill the screen without distorting the image or having black borders, and wasting as few pixels from the source image as possible.
+
+![ ](../assets/img/image-scaling/example-scale-to-fill-problem.jpg)
+![ ](example-scale-to-fill-problem.jpg)
+
+DALi provides the concept of a `FittingMode` to specify how a source image is mapped into a target rectangle, and the one we need here is `FittingMode::SCALE_TO_FILL` as it will cover all of the pixels of the target.
+A second concept of a `SamplingMode` controls how source image pixels are combined during the scaling and allows the developer to trade speed for quality.
+Since our image is to be loaded once and reused, we should use `SamplingMode::BOX_THEN_LINEAR` which is the highest quality option.
+We can pass the stage dimensions to the `ResourceImage` creator function as the desired rectangle and ask it to map the image to the screen as follows:
+
+~~~{.cpp}
+// C++
+ResourceImage image = ResourceImage::New(
+  "gallery-large-12.jpg",
+  Dali::ImageDimensions( stage.GetSize().x, stage.GetSize().y ),
+  Dali::FittingMode::SCALE_TO_FILL,
+  Dali::SamplingMode::BOX_THEN_LINEAR );
+~~~
+~~~{.js}
+// JavaScript
+// First get stage dimensions into stageX and stageY ...
+var image = new dali.ResourceImage( {
+  url: "gallery-large-12.jpg",
+  width: stageX,
+  height: stageY,
+  fitting-mode: "SCALE_TO_FILL",
+  sampling-mode: "BOX_THEN_LINEAR"
+});
+~~~
+
+In this case, `SCALE_TO_FILL` will perform this sequence of operations:
+
+| SCALE_TO_FILL Example |
+| ------------ |
+| ![ ](../assets/img/image-scaling/example-scale-to-fill-sequence.jpg) ![ ](example-scale-to-fill-sequence.jpg) |
+| <sub> **1.** *The source image.* **2.** *The source scaled-down to match the screen size.* **3.** *The borders of the image are trimmed to match the shape of the screen.* **4.** *The image fits exactly on the phone screen with no scaling required while rendering.* </sub> |
+
+
+## API Details {#resourceimagescalingapidetails}
+
+The new function of `ResourceImage` has the following scaling-related parameters:
+* **path**: Identifier for the image (allows raw image width and height to be retrieved).
+* **requested dimensions**: These are either `(0,0)`, a width, a height, or a (width, height) pair and either directly, or after reading the image raw dimensions and doing some math, define a target rectangle to fit the image to.
+* **fitting mode**: one of four strategies for mapping images onto the target rectangle.
+* **sampling mode** Different quality options for the scaling.
+
+### Target dimensions for fitting {#resourceimagescalingtargetdimensions}
+
+An application has several options for specifying the target rectangle for the image to be fitted to.
+The application may request dimensions through `ResourceImage::New()`:
+
+  1. `(0, 0)`, which is equivalent to not specifying any dimensions
+  2. `(x != 0, 0)` or `(0, y != 0)`, i.e. just one dimension specified
+  3. `(x != 0, y != 0)`, i.e. both dimensions specified
+
+In **case 1.** no scaling will be attempted.
+The image will be loaded at its raw dimensions.
+In **case 2.** the unspecified dimension will be derived from the specified one and the aspect ratio of the raw dimensions.
+This specified dimension and calculated dimension pair pass on as the target dimension for fitting.
+See more on this case [below](#resourceimagescalingzerodimensions).
+In **case 3.** the requested dimensions pass straight through to become the target for fitting.
+
+The result of this process is an `(x, y)` tuple defining a box to fit the image to in the next step.
+
+#### Examples {#resourceimagescalingtargetdimensionsexamples}
+If we have a `(320, 240)` image called "flower.jpg", we use these three options in code as below.
+
+**Case 1**:
+~~~{.cpp}
+// C++
+ResourceImage image1 = ResourceImage::New( "flower.png" );
+ResourceImage image2 = ResourceImage::New( "flower.png", ImageDimensions( 0, 0 ) );
+~~~
+~~~{.js}
+// JavaScript
+var image1 = new dali.ResourceImage( { url:"flower.png" } );
+var image2 = new dali.ResourceImage( { url:"flower.png", width:0, height:0 } );
+~~~
+In these two equivalent loads, the target dimensions will be `(320, 240)` so the image will be loaded at its raw dimensions without modification.
+
+**Case 2**:
+~~~{.cpp}
+// C++
+ResourceImage image1 = ResourceImage::New( "flower.png", ImageDimensions( 160, 0 ) );
+ResourceImage image2 = ResourceImage::New( "flower.png", ImageDimensions( 0, 120 ) );
+~~~
+~~~{.js}
+// JavaScript
+var image1 = new dali.ResourceImage( { url:"flower.png", width:160, height:0 } );
+var image2 = new dali.ResourceImage( { url:"flower.png", width:0, height:120 } );
+~~~
+In these loads, the target dimensions will be `(160, 120)` as the zero dimension is derived from the aspect ratio of the raw image.
+
+**Case 3**:
+~~~{.cpp}
+// C++
+ResourceImage image = ResourceImage::New( "flower.png", ImageDimensions( 111, 233 ) );
+~~~
+~~~{.js}
+// JavaScript
+var image = new dali.ResourceImage( { url:"flower.png", width:111, height:233 } );
+~~~
+In this load, the target dimensions will be `(111, 233)`.
+
+### Image Pixel Dimensions {#resourceimagescalingsamplingmodesdimensionflow}
+
+DALi derives the pixel width and height of loaded resource images from a sequence of calculations with four inputs:
+
+  1. The dimensions requested via `ResourceImage` new function, either of which may be passed as zeros
+  2. The dimensions of the raw image before loading
+  3. The fitting mode requested
+  4. The sampling mode requested
+
+The dimensions requested do not correspond 1:1 with the exact pixel width and height of the image once loaded: they are just one of the four inputs to the process which determines those dimensions.
+
+| Flow of image dimensions from API to loaded image |
+| ------------ |
+| ![ ](../assets/img/image-scaling/concept-rectangles.jpg) ![ ](concept-rectangles.jpg) |
+| <sub> *Image dimensions requested through the API are either absent (**a.**), a height (**b.**), a width (**c.**) or a full (width, height) pair (**d.**). In case **d.** this is the target for fitting (**i.**). In cases **a.**, **b.**, and **c.**, the raw image dimensions (**e.**) are also needed to define the target (examples: **f.**, **g.**, **h.**). This target, the **FittingMode**, and the raw size (**e.**), are used to derive the fitted size (**j.**). This is the size that a perfect scaling would achieve. This fitted size, the **Sampling Mode**, and the raw size (**e.**) are used to derive the final pixel width and height (**k.** **l.** **m.**, depending on **Sampling Mode**).* </sub> |
+
+The diagram above shows the key `(x,y)` image dimensions used by DALi in its load-time scaling pipeline visualized as rectangles.
+They are:
+
+  1. **Requested**: The dimensions passed by the app.
+  2. **Raw**: The dimensions stored in the resource.
+  3. **Target**: The box to fit the image into derived from 1. and 2.
+  4. **Fitted**: The ideal scaled-down size of the image.
+  5. **Scaled Pixels** The final pixel width and height resulting from the (possibly approximate) scaling.
+
+This should help to understand how the parameters given to DALi influence the final image loaded. The (x, y) passed define a *target* to the fit the image to rather than a new size for the image directly.
+The fitting mode defines a strategy for fitting the raw image to the target.
+The sampling mode has two options which cause the fitted dimensions to be exceeded, while the others cause it to be matched exactly.
+
+The pipeline from the values passed from the application to the *natural size* of the image is different. If no dimension is passed, the raw image size is read from the image resource. If only one dimension is passed, the explicitly set dimension will be used for the **natural size** and the unspecified dimension will match the actual loaded pixel dimension. When both are specified that becomes the 'natural size' even if it differs from the actual pixel dimensions loaded. This [requires some care in rendering to avoid distortion](#resourceimagescalingsamplingmodesrendernaturalsize).
+
+### Fitting an image's dimensions to the target box {#resourceimagescalingfittingmodes}
+
+DALi provides a number of strategies for mapping the pixels of an image onto the target box derived above.
+It provides a `FittingMode` enumeration to the developer to select a mapping or fitting approach.
+These are `SCALE_TO_FILL`, `SHRINK_TO_FIT`, `FIT_WIDTH`, and `FIT_HEIGHT` and their effect is best appreciated visually:
+
+| FittingMode Options |
+| ------------------- |
+| ![ ](../assets/img/image-scaling/fitting-mode-options.jpg) ![ ](fitting-mode-options.jpg) |
+| <sub> **Fitting modes**: *The top row shows the effect of each mode when a tall target rectangle is applied to a square image. The middle row applies a wide target to a square raw image. The bottom row uses a target with the same aspect ratio as the raw image. These examples show that `SCALE_TO_FILL` is the only option for which the dimensions of the fitted image result exactly match the target. The others are larger or smaller, with a different aspect ratio. `SHRINK_TO_FIT` is always equal to one of `FIT_WIDTH` or `FIT_HEIGHT`: in each case it is the minimum of them. As a special case, where the aspect ratio of raw image and target match, all fitting modes generate an exact match final image and are equivalent to each other.* </sub> |
+
+The operation of each of these modes is as follows:
+
+| `FittingMode` | **Operation** |
+| ------------- | --------- |
+| `SCALE_TO_FILL` | Centers the image on the target box and uniformly scales it so that it matches the target in one dimension and extends outside the target in the other. Chooses the dimension to match that results in the fewest pixels outside the target. Trims away the parts of the image outside the target box so as to match it exactly. |
+| `SHRINK_TO_FIT` | Centers the image on the target box and uniformly scales it so that it matches the target in one dimension and fits inside it in the other. |
+| `FIT_WIDTH` | Centers the image on the target box and uniformly scales it so that it matches the target width without regard for the target height. |
+| `FIT_HEIGHT` | Centers the image on the target box and uniformly scales it so that it matches the target in height and ignores the target width. |
+
+These modes differ only when the target box has a different aspect ratio to the raw image. Using this, if the application knows a priori what the image dimensions are, it can scale down the image by requesting dimensions that have the same aspect ratio as the raw dimensions:
+~~~{.cpp}
+// C++
+// Image on 'disk' is 320x240.
+ResourceImage image = ResourceImage::New( "flower.png", ImageDimensions( 32, 24 ) );
+// Image will be loaded at (32, 24), regardless of fitting mode.
+~~~
+~~~{.js}
+// JavaScript
+// Image on 'disk' is 320x240.
+var image = new dali.ResourceImage( { url:"flower.png", width:32, height:24});
+// Image will be loaded at (32, 24), regardless of fitting mode.
+~~~
+
+
+### Quality Versus Speed and Memory Options {#resourceimagescalingsamplingmodes}
+
+The process of scaling an image can be expensive in CPU cycles and add latency to the loading of each resource.
+To allow the developer to trade-off speed against quality for different use cases, DALi provides the `SamplingMode` enum, which can be passed to `ResourceImage::New()`.
+Two of these modes produce bitmaps which differ from the dimensions calculated by the fitting algorithm and so have a memory trade-off as well. The full set of modes is explained below.
+
+| `SamplingMode` | **Operation** |
+| ------------- | --------- |
+| `NEAREST` | Use simple point sampling when scaling. For each pixel in output image, just one pixel is chosen from the input image. This is the fastest, crudest option but suffers the worst from aliasing artifacts so should only be used for fast previews, or where the source image is known to have very low-frequency features. |
+| `LINEAR` | Uses a weighted bilinear filter with a `(2,2)` footprint when scaling. For each output pixel, four input pixels are averaged from the input image. This is a good quality option, equivalent to the GPU's filtering and works well at least down to a `0.5` scaling. |
+| `BOX` | Uses an iterated `(2,2)` box filter to repeatedly halve the image in both dimensions, averaging adjacent pixels until the the result is approximately right for the fitting target rectangle. For each output pixel some number of pixels from the sequence `[4,16,64,256,1024,...]` are averaged from the input image, where the number averaged depends on the degree of scaling requested. This provides a very high quality result and is free from aliasing artifacts because of the iterated averaging. *The resulting bitmap will not exactly match the dimensions calculated by the fitting mode but it will be within a factor of two of it and have the same aspect ratio as it.*   |
+| `BOX_THEN_NEAREST` | Applies the `BOX` mode to get within a factor of two of the fitted dimensions, and then finishes off with `NEAREST` to reach the exact dimensions. |
+| `BOX_THEN_LINEAR` | Applies the `BOX` mode to get within a factor of two of the fitted dimensions, and then finishes off with `LINEAR` to reach the exact dimensions. This is the slowest option and of equivalent quality to `BOX`. It is superior to `BOX` in that is uses an average of 62% of the memory and exactly matches the dimensions calculated by fitting. **This is the best mode for most use cases**.  |
+| `NO_FILTER` | Disables scaling altogether. In conjunction with `SCALE_TO_FILL` mode this can be useful as the edge trimming of that fitting mode is still applied. An example would be a gallery application, where a database of prescaled thumbnails of approximately the correct size need to be displayed in a regular grid of equal-sized cells, while being loaded at maximum speed. |
+
+Here are all the modes applied to scaling-down a `(640,720)` line art and text JPEG image to a `(218, 227)` thumbnail:
+
+|  |  | |
+| ---- | ---- | --- |
+| ![ ](../assets/img/image-scaling/sampling_modes_no_filter.png) ![ ](sampling_modes_no_filter.png) | ![ ](../assets/img/image-scaling/sampling_modes_nearest.png) ![ ](sampling_modes_nearest.png) | ![ ](../assets/img/image-scaling/sampling_modes_linear.png) ![ ](sampling_modes_linear.png) |
+| **NO_FILTER** | **NEAREST** | **LINEAR** |
+| ![ ](../assets/img/image-scaling/sampling_modes_box.png) ![ ](sampling_modes_box.png) | ![ ](../assets/img/image-scaling/sampling_modes_box_then_nearest.png) ![ ](sampling_modes_box_then_nearest.png) | ![ ](../assets/img/image-scaling/sampling_modes_box_then_linear.png) ![ ](sampling_modes_box_then_linear.png) |
+| **BOX** | **BOX_THEN_NEAREST** | **BOX_THEN_LINEAR** |
+
+These are screenshots, showing how the images are rendered in a DALi demo.
+There is an additional level of GPU bilinear filtering happening at render time.
+The best way to get a feel for the best sampling mode for different image types is to play with the [examples](#resourceimagescalingsamplingmodesexamples).
+
+In the following code example the same image is loaded to be a thumbnail but with differing quality, speed, and memory implications.
+~~~{.cpp}
+// C++
+ResourceImage image1 = ResourceImage::New( "flower.png",
+    ImageDimensions( 240, 240 ), FittingMode::SCALE_TO_FILL, SamplingMode::NEAREST );
+
+ResourceImage image2 = ResourceImage::New( "flower.png",
+    ImageDimensions( 240, 240 ), FittingMode::SCALE_TO_FILL, SamplingMode::NO_FILTER );
+
+ResourceImage image3 = ResourceImage::New( "flower.png",
+    ImageDimensions( 240, 240 ), FittingMode::SCALE_TO_FILL, SamplingMode::BOX );
+
+ResourceImage image4 = ResourceImage::New( "flower.png",
+    ImageDimensions( 240, 240 ), FittingMode::SCALE_TO_FILL, SamplingMode::BOX_THEN_LINEAR );
+~~~
+~~~{.js}
+// JavaScript
+var image1 = new dali.ResourceImage( {
+  url:"flower.png", width:240, height:240,
+  fitting-mode:"SCALE_TO_FILL", sampling-mode:"NEAREST"
+} );
+
+var image2 = new dali.ResourceImage( {
+  url:"flower.png", width:240, height:240,
+  fitting-mode:"SCALE_TO_FILL", sampling-mode:"NO_FILTER"
+} );
+
+var image3 = new dali.ResourceImage( {
+  url:"flower.png", width:240, height:240,
+  fitting-mode:"SCALE_TO_FILL", sampling-mode:"BOX"
+} );
+
+var image4 = new dali.ResourceImage( {
+  url:"flower.png", width:240, height:240,
+  fitting-mode:"SCALE_TO_FILL", sampling-mode:"BOX_THEN_LINEAR"
+} );
+~~~
+
+If we imagine flower.jpg is a 560*512 photo with high frequency details, the results of this are:
+* `image1` loads fast, uses minimal space, has poor quality.
+* `image2` loads even faster, uses 4.6 * minimal space, has good quality.
+* `image3` loads moderately slow, uses 1.3 * minimal space, has good quality.
+* `image4` loads slowest, uses minimal space, has good quality.
+
+Note that `BOX`, `BOX_THEN_NEAREST` and `BOX_THEN_LINEAR` can work particularly well for JPEG images as they can use fast downscaling typically built-in to the JPEG codec on supported platforms on the fly while decoding. In this case the caveats about using them having a speed trade-off given above do not apply.
+
+## Passing a Zero Dimension {#resourceimagescalingzerodimensions}
+Passing in a single zero dimension is effectively a shortcut for specifying `FIT_WIDTH` or `FIT_HEIGHT` `FittingMode`s. When a non-zero width and zero height are specified, the fitting done will be identical to the result using `FittingMode` `FIT_WIDTH`. When passing a zero width and non-zero height, the effect of applying the chosen `FittingMode` to the calculated target dimensions is always identical to applying the `FIT_HEIGHT` mode.
+
+* `ResourceImage::New( ImageDimensions( x, 0 ), <ANY_FITTING_MODE> )` =
+  `ResourceImage::New( ImageDimensions( x, <ANYTHING> ), FittingMode::FIT_WIDTH )`
+* `ResourceImage::New( ImageDimensions( 0, y ), <ANY_FITTING_MODE> )` =
+  `ResourceImage::New( ImageDimensions( <ANYTHING>, y), FittingMode::FIT_HEIGHT )`
+
+This falls out of the the fact that the fitting modes modes are strategies for the case when the aspect ratio of the raw image differs from the aspect ratio of the target dimensions, but the zero dimension behavior always ensures that the target dimensions have the same aspect ratio as the raw image's so the fitting modes are all equivalent.
+
+Therefore, if `(x!=0, y=0)`, fittingMode = `FIT_WIDTH`,
+and if `(x=0, y=!0)`, fittingMode = `FIT_HEIGHT`, irrespective of fitting mode passed by the application (if any).
+This shortcut is provided as a convenience to the developer and allows FIT_WIDTH or FIT_HEIGHT to be specified compactly:
+~~~{.cpp}
+// C++
+// FIT_WIDTH:
+ResourceImage image = ResourceImage::New("flower.png", ImageDimensions(x, 0));
+// FIT_HEIGHT:
+ResourceImage image = ResourceImage::New("flower.png", ImageDimensions(0, y));
+~~~
+~~~{.js}
+// JavaScript
+// FIT_WIDTH:
+var image = new dali.ResourceImage( {
+  url: "flower.png",
+  width: x,
+  height: 0
+});
+// FIT_HEIGHT:
+var image = new dali.ResourceImage( {
+  url: "flower.png",
+  width: 0,
+  height: y
+});
+~~~
+
+## Upscaling
+
+DALi refuses to upscale images at load time in order to conserve memory.
+If the application requests a size for an image that is larger than its raw dimensions, DALi will instead return an image with the same aspect ratio but limited to the largest dimensions that do not exceed the raw ones.
+Upscaling can still be effected at render time by setting the size of an actor to the desired size.
+
+## Compressed Textures and Scaling
+
+Compressed textures cannot be scaled at load time as their formats are designed to be uploaded directly to GPU memory. To achieve scaling of compressed textures, set the desired size on the attached `ImageActor` for scaling at render time instead.
+
+## Compensation for Natural Size != Pixel Width / Height {#resourceimagescalingsamplingmodesrendernaturalsize}
+
+Because the *natural size* of an image is
+[taken from the requested dimensions](#resourceimagescalingsamplingmodesdimensionflow)
+passed to `ResourceImage::New()` rather than passing through the same calculations that result in the eventual pixel width and height loaded,
+the *natural size* and pixel dimensions of an image will differ when loaded with scaling.
+It is inherent in the definition of fitting modes other than `SCALE_TO_FILL` not to match the requested dimensions, so in general, images loaded with them must have this mismatch between *natural size* and actual pixel width.
+
+It is not possible in general to draw a scaled resource image using its natural size as the `ImageActor`'s size without it appearing stretched in one dimension.
+This is the case for example by default with size negotiation in effect or when an image is simply passed to an actor at creation time.
+
+There are circumstance, however, in which the the natural size of a resource image loaded will exactly match its post-load pixel dimensions:
+
+1. No scaling is requested.
+1. The application chooses a combination of requested dimensions, fitting mode, and sampling mode which the scaling sub-system can match exactly. This is the case:
+   *  For all downscaling using `SCALE_TO_FILL` fitting mode and not using `BOX` or `NO_FILTER` sampling modes.
+   * The app uses `SHRINK_TO_FIT`, `FIT_WIDTH`, or `FIT_HEIGHT` and the requested dimensions passed-in are both smaller than the raw ones and have the same aspect ratio as them, and it is not using `BOX` or `NO_FILTER` sampling modes.
+
+In these cases the image may be used freely in layouts controlled by size negotiation.
+Additionally, if the requested size has the same aspect ratio as the eventual pixel array loaded, and the fitting mode is `SCALE_TO_FILL` or `BOX` and `NO_FILTER` sampling modes are avoided, even if they don't match in dimensions exactly, the eventual image will be drawn without aspect ratio distortion although it will be scaled at render time.
+
+The fitting and scaling modes [demo](#resourceimagescalingsamplingmodesexamples) allows this behavior to be be explored dynamically when the fitting mode is changed from `SCALE_TO_FILL`.
+
+The application can of course only pass dimensions which are just right if it happens to know the raw dimensions or if it accesses the the image resource and reads the raw dimensions from its header.
+
+The application can get a scaled resource image rendered correctly to screen with one of three strategies:
+
+  1. Use one of the special cases above.
+  2. Read the image header from disk, recreate the dimension deriving, fitting, and sampling logic described in this document, and use that to generate a pair of requested dimensions which match the eventual image dimensions.
+  3. Use the requested dimensions it really wants to but then read the image header from disk, recreate the dimension deriving, fitting, and sampling logic described in this document, and set the size of an `ImageActor` to that size explicitly rather than relying on the *natural size* of the image.
+
+## Examples {#resourceimagescalingsamplingmodesexamples}
+Load time image scaling is spread throughout the DALi examples.
+Search for `"ImageDimensions"` in the dali-demo project to see it used.
+There is also a specific demo to show all of the fitting and scaling modes.
+which lives in the demo project at `examples/image-scaling-and-filtering`.
+
+![ ](../assets/img/image-scaling/demo-fitting-sampling.jpg) ![ ](./demo-fitting-sampling.jpg)
+
+Touch the arrows in the top corners to changes image.
+Drag the green button in the corner of the image to change the requested size and trigger an immediate image reload.
+Use the buttons at the bottom of the screen to select any of the fitting and sampling modes from the popups which appear.
+This demo does not take any of the special measures [described above](#resourceimagescalingsamplingmodesrendernaturalsize) to correct for the natural size != pixel dimensions discrepancy so all fitting modes other than `SCALE_TO_FILL` show distortion.
+
+A second specific demo shows the effect of a filter mode on a single image loaded into various requested rectangles side by side.
+It can be found under `examples/image-scaling-irregular-grid`.
+
+![ ](../assets/img/image-scaling/demo-sampling-modes.jpg) ![ ](./demo-sampling-modes.jpg)
+
+Touch the button at top-left to change image.
+The button at top-right changes sampling mode.
+You will see strong differences between sampling modes where the image contains high frequency details such as hair and in the large black and white image, but much less in some others such as the Statue of Liberty which is mostly covered by a smooth gradient.
+
+@class _Guide_Resource_Image_Scaling
+*/
index 92c1850..9387b4c 100644 (file)
@@ -1,17 +1,18 @@
-/**
- *
+<!--
+/**-->
+
 # Resource Tracking {#resourcetracking}
 
 ## Enable Logging
 
-Setting DALI_ENABLE_LOG environment variable to RESOURCE_LOG will enable resource usage logging in Dali applications.
+Setting DALI_ENABLE_LOG environment variable to RESOURCE_LOG will enable resource usage logging in DALi applications.
 On target resource logging utilizes dlog, but this can also be used on desktop by redirecting stderr to a file.
 The generated information includes any image files that are loaded with their dimensions,
 GPU memory consumption, CPU RAM used and details of texture atlases created.
 
 ## Viewing Resource Logs
 
-dalireslog.sh is installed as part of the dali-adaptor package and can be found in the adaptors/tizen/scripts folder.
+dalireslog.sh is installed as part of the DALi Adaptor package and can be found in the adaptors/tizen/scripts folder.
 The script shows a summary of memory used by resources.
 USAGE:
 ./dalireslog.sh [FILE]
diff --git a/docs/content/shared-javascript-and-cpp-documentation/resources.md b/docs/content/shared-javascript-and-cpp-documentation/resources.md
new file mode 100644 (file)
index 0000000..50ca99b
--- /dev/null
@@ -0,0 +1,62 @@
+<!--
+/**-->
+# Resources {#resoources}
+
+## Resource Image {#resource-image}
+
+A resource image is an image that is loaded using a file path or a URL.
+
+To create a resource image:
+~~~{.cpp}
+Dali::ResourceImage image = Dali::ResourceImage::New( "/my-path/my-image.png" );
+~~~
+Which can then be used with actors (e.g. ImageActor).
+
+Resources are loaded in separate threads.
+The application can connect to the Dali::ResourceImage::LoadingFinishedSignal() to get notified when the image has loaded.
+
+By default, resource images start loading immediately and the data is released only when the ResourceImage handle is destroyed.
+To optimise an application's memory footprint, the application can ask resources to be only loaded when actually required and
+their data to be released automatically when they are no longer being used (not being used by Actors).
+~~~{.cpp}
+Dali::ResourceImage image = Dali::ResourceImage::New( "/my-path/my-image.png", Dali::ResourceImage::ON_DEMAND, Dali::Image::UNUSED );
+~~~
+If Dali::Image::UNUSED is used, then when the ResourceImage is used again, the resource data is reloaded automatically.
+
+If the application requires the image dimensions immediately, then they can be retrieved synchronously:
+~~~{.cpp}
+Dali::ImageDimensions dimensions = Dali::ResourceImage::GetImageSize( "/my-path/my-image.png" );
+~~~
+This is a disk read which can be slow and will block the event thread, so should only be used if absolutely necessary.
+
+## 9-Patch Image {#resource-9-patch}
+
+DALi has support for 9-patch images.
+These are stretchable, repeatable images which are reduced to their smallest size.
+Essentially, an image is sliced up into 9 squares and the four corners do not change size at all.
+The other 5 segments are stretched (or repeated) to allow the whole image to scale appropriately.
+
+DALi has inbuilt support for *.9.png, *.9.jpg etc. images as well.
+More information about these images can be found here: http://developer.android.com/tools/help/draw9patch.html
+
+The following is an example of a *.9.png image:
+![ ](resource/9-patch.png)
+
+Zoomed in, the red section shows the part that will be repeated.
+The four corners areas remain static.
+The one pixel border will also be stripped out.
+![ ](resource/9-patch-zoomed.png)
+
+And if the image is given a 200 by 200 size, it will look like the following:
+![ ](resource/9-patch-full.png)
+
+## Buffer Image {#resource-buffer}
+
+A BufferImage represents an image resource in the form of a pixel buffer data that can be provided by the application developer.
+The application can then write to this buffer as required and the image is updated on the screen.
+
+~~~{.cpp}
+Dali::BufferImage image = Dali::BufferImage::New( 200, 200 ); // Creates a 200 by 200 pixel buffer with a color-depth of 32-bits (with alpha)
+~~~
+
+*/
diff --git a/docs/content/shared-javascript-and-cpp-documentation/scene-graph.md b/docs/content/shared-javascript-and-cpp-documentation/scene-graph.md
deleted file mode 100644 (file)
index 3092fa2..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-# Scene Graph
-## What is a scene graph?
-From wikipedia...
-  
-A scene graph is a collection of nodes in a graph or tree structure.
-A node may have many children but often only a single parent,
-with the effect of a parent applied to all its child nodes;
-an operation performed on a group automatically propagates
-its effect to all of its members. In many programs, associating
-a geometrical transformation matrix (see also transformation and matrix)
-at each group level and concatenating such matrices together is an
-efficient and natural way to process such operations. A common feature,
-for instance, is the ability to group related shapes/objects into a
-compound object that can then be moved, transformed, selected,
-etc. as easily as a single object.
-
- ### How does this relate to the Dali public API?
-
- Actors are effectively nodes that receive input (touch events) and act as a
- container for draw-able elements (which are also nodes) and other actors.
\ No newline at end of file
index 488cb8b..2edd73b 100644 (file)
@@ -1,5 +1,6 @@
-/**
- *
+<!--
+/**-->
+
  # Hello World - JSON layout{#script-hello}
 
  The following JSON code is the minimum required to put the sentence "Hello World" on the screen.
 ~~~
  ## Hello World - Javascript
 
- The Dali script application is needed to run the Javascript which provides a Javascript runtime and an interface to Dali.
+ The DALi script application is needed to run the Javascript which provides a Javascript runtime and an interface to Dali.
 
 ~~~
  scripting.example hello-world.js
 ~~~
 
- The TextLabel control to display Hello World can be constructed using Javascript dot notation accessing Dali Actor Properties.
+ The TextLabel control to display Hello World can be constructed using Javascript dot notation accessing DALi Actor Properties.
 
 ~~~{.js}
 // JavaScript
@@ -64,4 +65,5 @@
 ~~~
 
 @class _Guide_Script_Hello_World
- */
\ No newline at end of file
+
+*/
\ No newline at end of file
index 002eac7..881bdd3 100644 (file)
@@ -1,12 +1,13 @@
-/**
- *
+<!--
+/**-->
+
 [TOC]
 
 # DALi JSON Specification  {#script-json-specification}
 
 ## Overview {#overview}
 
-This document describes the Dali JSON specification.
+This document describes the DALi JSON specification.
 The format is not yet formally versioned within the JSON.
 
 # General format {#format}
@@ -26,10 +27,10 @@ The JSON format supports
 
 
 Concrete Actors and Controls can be created from types registered in the
-Dali Type Registry.
+DALi Type Registry.
 
 Template, style and scene sections all configure Actors and Controls via
-the Dali property system.
+the DALi property system.
 
 The JSON format deviates from the formal JSON specification and allows C style comments.
 
@@ -70,7 +71,7 @@ The JSON format deviates from the formal JSON specification and allows C style c
       "stage":                               // Stage section
       [                                      //
        {                                     // Actors|Controls to create on JSON file load
-       "type": "basic-text",                 // A Dali Control or a template name
+       "type": "basic-text",                 // A DALi Control or a template name
        "styles":["base-theme","light-theme"] // Style list to apply to this instance
        }                                     //
       ]                                      //
@@ -120,7 +121,7 @@ The constants section supports sub-string and full property replacement.
     },                                  //
     ...                                 //
     {                                   //
-      "type":"ImageActor"               // An Dali type or a template name
+      "type":"ImageActor"               // An DALi type or a template name
       "image":                          //
       {                                 //
         "filename":"{IMAGES}b.jpg"      // Image filename substring replacement
@@ -170,7 +171,7 @@ an optional actor sub hierarchy.
    {                                    //
    "basic-text":                        //  The template name
    {                                    //
-     "type":"ImageActor",               //  Concrete Dali Type/Class to create
+     "type":"ImageActor",               //  Concrete DALi Type/Class to create
      "styles":["base-style"],           //  Style list to apply
      "name":"image",                    //  }
      "image":                           //  } property name : value
@@ -193,7 +194,7 @@ an optional actor sub hierarchy.
 ~~~
 
 A template has a special 'type' property which must contain a concrete
-Dali Actor or Control type name.
+DALi Actor or Control type name.
 
 A template has a special 'styles' property which contains a list of
 styles to apply when creating using the template.
@@ -256,7 +257,7 @@ Builder.AnimateTo("light-theme", myActor, TimePeriod(0, 10));
 When applied to an actor tree the actors are referenced by name. Names
 are not unique in Dali.
 
-When a style is applied in code Dali will perform a depth first search
+When a style is applied in code DALi will perform a depth first search
 stopping with the first matching name.
 
 Typically an application developer will apply the style to the template
@@ -493,7 +494,7 @@ builder.addActors( dali.stage.getRootLayer() );
      {
      "type": "TextView",
                                          \\  The Type to create; this can be a
-     ...                                 \\ concrete Dali type (actor/control)
+     ...                                 \\ concrete DALi type (actor/control)
                                          \\ or a template name.
      "styles": ["base-style"]
                                          \\  A list of styles to apply to the
index 311ad9f..d8eab23 100644 (file)
@@ -1,8 +1,9 @@
-/**
- *
+<!--
+/**-->
+
 # Scripting Overview  {#scriptoverview}
 
-Dali has:
+DALi has:
 - JSON to support:
  - layouting
  - theme / styling
@@ -17,7 +18,7 @@ Dali has:
 
 JSON support is built in to DALi.
 
-JavaScript support is via a plugin held in dali-toolkit, which builds automatically if Google's V8 engine is installed. 
+JavaScript support is via a plugin held in DALi Toolkit, which builds automatically if Google's V8 engine is installed. 
 The V8 version required by DALi can be built and installed using dali-core/scripts/dali_env script.
 
 Files can be loaded inside any DALi application, or from command line using the launcher ( part of dali-demo).
diff --git a/docs/content/shared-javascript-and-cpp-documentation/signals-actions.md b/docs/content/shared-javascript-and-cpp-documentation/signals-actions.md
new file mode 100644 (file)
index 0000000..89a4130
--- /dev/null
@@ -0,0 +1,21 @@
+<!--
+/**-->
+# Signals & Actions {#signals-actions}
+
+## Signals {#signals}
+
+Classes in DALi provide signals which are emitted whenever a certain action or event occurs.
+The application can connect to these signals using if it wishes to be informed of this occurrence.
+Standard C Style functions can be used to connect to these signals if no local data needs to be accessed, otherwise a class method can also be connected.
+
+Applications can manually disconnect from signals when required but DALi also provides safe signal disconnection.
+This means that when the connecting object is deleted, the signal is automatically disconnected.
+
+## Actions {#actions}
+
+Classes in DALi can perform a certain number of actions.
+For example, an animation provides the ability to "play" or "stop" using an action.
+DALi provides a framework which allows users to set up actions for their classes.
+This is particularly helpful when trying to invoke an action using scripting.
+
+*/
diff --git a/docs/content/shared-javascript-and-cpp-documentation/stage-hand.md b/docs/content/shared-javascript-and-cpp-documentation/stage-hand.md
new file mode 100644 (file)
index 0000000..d1283e0
--- /dev/null
@@ -0,0 +1,168 @@
+<!--
+/**-->
+
+# Stagehand Visual Debugger for DALi {#stagehand}
+
+![ ](../assets/img/stage-hand/blocks.png)
+![ ](blocks.png)
+
+## Introduction
+
+Stagehand  is an open source tool that allows a developer to:
+
+- Connect to a DALi application running on:
+ - Tizen
+ - Ubuntu
+- View a wireframe of the current scene on top of a screen shot
+- Modify properties in the scene
+- Monitor performance of the application
+
+  
+Full source code is available from http://github.com/gamoeba/stagehand.git
+
+Stagehand is released under the Apache 2 licence.
+
+## Installing StageHand on Ubuntu
+
+http://www.gamoeba.com/stagehand/
+
+Install both files on the website. Start with the QT dependencies first.
+
+
+## How it works
+
+Stagehand connects to DALi via the network using a TCP/IP connection.
+  
+![ ](../assets/img/stage-hand/inner-workings.png)
+![ ](inner-workings.png)
+
+## Network setup
+
+To enable network control on DALi, an environment variable must be set:
+
+~~~
+$ export DALI_NETWORK_CONTROL=1 to enable
+~~~
+Or run the application with the variable set.
+~~~
+$ DALI_NETWORK_CONTROL=1 /usr/apps/com.samsung.dali-demo/bin/dali-demo
+~~~
+
+Check what network port the application is using. It will be from port 3031 onwards.
+  
+If running DALi on desktop, just type netstat -tlnp. On Tizen log into the device and run netstat. E.g.
+~~~
+$ su
+
+$ netstat -tlpn
+~~~
+
+![ ](../assets/img/stage-hand/netstat.png)
+![ ](netstat.png)
+
+
+## Connecting with Stagehand
+
+Click the settings icons below
+  
+![ ](../assets/img/stage-hand/stagehand-settings.png)
+![ ](stagehand-settings.png)
+
+
+### Connecting to DALi running on Tizen
+
+Here we are connecting to a device running SDB
+  
+![ ](../assets/img/stage-hand/stagehand-tizen-connection.png)
+![ ](stagehand-tizen-connection.png)
+
+### Connect to DALi running on Desktop ( Ubuntu )
+  
+![ ](../assets/img/stage-hand/stagehand-ubuntu-connection.png)
+![ ](stagehand-ubuntu-connection.png)
+
+## Using Stagehand
+
+Click Refresh to load the current scene from the device.
+  
+![ ](../assets/img/stage-hand/stagehand-refesh.png)
+![ ](stagehand-refesh.png)
+
+Click screen shot to get overlay current screen
+  
+![ ](../assets/img/stage-hand/stagehand-screenshot.png)
+![ ](stagehand-screenshot.png)
+
+To cycle through the actor hierachy, keep clicking the same spot. Alternatively, select using the actor tree.
+
+  
+![ ](../assets/img/stage-hand/stagehand-mainscreen.png)
+![ ](stagehand-mainscreen.png)
+
+
+Click the save icon to save the scene
+  
+![ ](../assets/img/stage-hand/stagehand-save.png)
+![ ](stagehand-save.png)
+
+Zooming in and out
+  
+![ ](../assets/img/stage-hand/stagehand-zoom.png)
+![ ](stagehand-zoom.png)
+
+Modifying the scene
+  
+![ ](../assets/img/stage-hand/stagehand-modify.png)
+![ ](stagehand-modify.png)
+
+## Performance monitoring
+
+To enable performance option. Edit
+  
+~/.stagehand/stagehand.ini
+  
+Set perfmode=on
+
+Restart application. Click performance
+  
+![ ](../assets/img/stage-hand/stagehand-performance.png)
+![ ](stagehand-performance.png)
+
+## Trouble shooting
+
+You can manually check the network is enabled on the DALi application using netcat.
+
+In the example below we are connecting to a Tizen device using SDB port forwarding.
+  
+After running nc localhost 3031 we type help
+  
+![ ](../assets/img/stage-hand/stagehand-netcat.png)
+![ ](stagehand-netcat.png)
+
+
+## Tizen smack
+
+
+If you can't connect to a DALi application, but using netstat you can see a port is open.
+  
+Check the smack log for errors:
+~~~
+tail -f -n 10 /var/log/audit/audit.log | grep 'internet'
+~~~
+
+If it is being blocked, you temporarily enable it by editing:
+  
+~~~
+ /etc/smack/accesses2.d/ your-app-name
+
+then add: system::user_internet â€¦..app-name rw
+~~~
+## Tizen Emulator connection problem
+
+
+Make sure  DALi application is run using launch_app:
+~~~
+launch_app [APP_ID] __AUL_SDK__ DEBUG __DLP_DEBUG_ARG__ :10003
+~~~
+
+@class _Guide_Visual_Debugger
\ No newline at end of file
diff --git a/docs/content/shared-javascript-and-cpp-documentation/text-field.md b/docs/content/shared-javascript-and-cpp-documentation/text-field.md
new file mode 100644 (file)
index 0000000..79e20ed
--- /dev/null
@@ -0,0 +1,146 @@
+<!--
+/**-->
+
+# Text Field {#text-field}
+
+## Overview
+
+The Dali::Toolkit::TextField is a control which provides a single-line editable text field.
+
+### Basic usage
+
+Before any text has been entered, the TextField can display some placeholder text.
+An alternative placeholder can be displayed when the TextField has keyboard focus.
+For example a TextField used to enter a username could initially show "Unknown Name", and then show "Enter Name." when the cursor is shown. 
+
+~~~{.cpp}
+// C++
+
+TextField field = TextField::New();
+field.SetProperty( TextField::Property::PLACEHOLDER_TEXT, "Unnamed Name" );
+field.SetProperty( TextField::Property::PLACEHOLDER_TEXT_FOCUSED, "Enter Name." );
+
+Stage::GetCurrent().Add( field );
+~~~
+
+~~~{.js}
+// JavaScript
+
+var field = new dali.TextField();
+field.placeholderText = "Unnamed Name";
+field.placeholderTextFocused = "Enter Name.";
+
+dali.stage.add( field );
+~~~
+
+When the TextField is tapped, it will automatically gain the keyboard focus. Key events will then result in text being inserted, and the placeholder text will be removed.
+After text has been entered, it can be retrieved from the TEXT property.
+
+~~~{.cpp}
+// C++
+
+Property::Value fieldText = field.GetProperty( TextField::Property::TEXT );
+std::cout << "Received text: " << fieldText.Get< std::string >() << std::endl;
+~~~
+
+~~~{.js}
+// JavaScript
+
+console.log( field.text );
+~~~
+
+### Font Selection
+
+TextField will automatically select a suitable fonts, in the same was as TextLabel.
+The preferred font can also be selected from a JSON stylesheet:
+
+~~~{.json}
+{
+  "styles":
+  {
+    "textfield":
+    {
+      "font-family":"Arial",
+      "font-style":"Regular",
+      "point-size":8
+    }
+  }
+}
+~~~
+
+### Text Alignment
+
+TextField displays a single-line of text, which will scroll if there is not enough room for the text displayed.
+If there is enough room, then the text can be aligned horizontally to the beginning, end, or center of the available area:
+
+~~~{.cpp}
+// C++
+
+field.SetProperty( TextField::Property::HORIZONTAL_ALIGNMENT, "BEGIN" ); // "CENTER" or "END"
+~~~
+
+~~~{.js}
+// JavaScript
+
+field.HorizontalAlignment = "BEGIN"; // "CENTER" or "END"
+~~~
+
+### TextField Decorations
+
+#### Color
+
+To change the color of the text, the recommended way is to use the TEXT_COLOR property.
+An alternative color can be used for placeholder text by setting PLACEHOLDER_TEXT_COLOR.
+Note that unlike the Actor::COLOR property, these properties will not affect child Actors added to the TextField.
+
+~~~{.cpp}
+// C++
+field.SetProperty( TextField::Property::TEXT_COLOR, Color::CYAN );
+field.SetProperty( TextField::Property::PLACEHOLDER_TEXT_COLOR, Color::BLACK );
+~~~
+
+~~~{.js}
+// JavaScript
+
+field.textColor = dali.COLOR_CYAN;
+field.placeholderTextColor = dali.COLOR_BLACK;
+~~~
+
+### Text Field Properties
+
+ Name (JavaScript)                 |  Name (C++)                          |  Type        | Writable     | Animatable
+-----------------------------------|--------------------------------------|--------------|--------------|-----------
+ renderingBackend                  | RENDERING_BACKEND                    |  INTEGER     | O            | X
+ text                              | TEXT                                 |  STRING      | O            | X
+ placeholderText                   | PLACEHOLDER_TEXT                     |  STRING      | O            | X
+ placeholderTextFocused            | PLACEHOLDER_TEXT_FOCUSED             |  STRING      | O            | X
+ fontFamily                        | FONT_FAMILY                          |  STRING      | O            | X
+ fontStyle                         | FONT_STYLE                           |  STRING      | O            | X
+ pointSize                         | POINT_SIZE                           |  FLOAT       | O            | X
+ maxLength                         | MAX_LENGTH                           |  INTEGER     | O            | X
+ exceedPolicy                      | EXCEED_POLICY                        |  INTEGER     | O            | X
+ horizontalAlignment               | HORIZONTAL_ALIGNMENT                 |  STRING      | O            | X
+ verticalAlignment                 | VERTICAL_ALIGNMENT                   |  STRING      | O            | X
+ textColor                         | TEXT_COLOR                           |  VECTOR4     | O            | X
+ shadowOffset                      | SHADOW_OFFSET                        |  VECTOR2     | O            | X
+ shadowColor                       | SHADOW_COLOR                         |  VECTOR4     | O            | X
+ primaryCursorColor                | PRIMARY_CURSOR_COLOR                 |  VECTOR4     | O            | X
+ secondaryCursorColor              | SECONDARY_CURSOR_COLOR               |  VECTOR4     | O            | X
+ enableCursorBlink                 | ENABLE_CURSOR_BLINK                  |  BOOLEAN     | O            | X
+ cursorBlinkInterval               | CURSOR_BLINK_INTERVAL                |  FLOAT       | O            | X
+ cursorBlinkDuration               | CURSOR_BLINK_DURATION                |  FLOAT       | O            | X
+ grabHandleImage                   | GRAB_HANDLE_IMAGE                    |  STRING      | O            | X
+ grabHandlePressedImage            | GRAB_HANDLE_PRESSED_IMAGE            |  STRING      | O            | X
+ scrollThreshold                   | SCROLL_THRESHOLD                     |  FLOAT       | O            | X
+ scrollSpreed                      | SCROLL_SPEED                         |  FLOAT       | O            | X
+ selectionHandleImageLeft          | SELECTION_HANDLE_IMAGE_LEFT          |  STRING      | O            | X
+ selectionHandleImageRight         | SELECTION_HANDLE_IMAGE_RIGHT         |  STRING      | O            | X
+ selectionHandlePressedImageLeft   | SELECTION_HANDLE_PRESSED_IMAGE_LEFT  |  STRING      | O            | X
+ selectionHandlePressedImageRight  | SELECTION_HANDLE_PRESSED_IMAGE_RIGHT |  STRING      | O            | X
+ selectionHighlightColor           | SELECTION_HIGHLIGHT_COLOR            |  VECTOR4     | O            | X
+ decorationBoundingBox             | DECORATION_BOUNDING_BOX              |  RECTANGLE   | O            | X
+ inputMethodSettings               | INPUT_METHOD_SETTINGS                |  MAP         | O            | X
+
+@class TextField
+
+*/
index 908fedd..c08af6d 100644 (file)
@@ -1,5 +1,5 @@
-/**
- *
+<!--
+/**-->
 
 # Text Label {#text-label}
 
@@ -398,20 +398,20 @@ label1.underlineHeight = 1;
 
  Name (JavaScript)   |  Name (C++)         |  Type        | Writable     | Animatable
 ---------------------|---------------------|--------------|--------------|-----------
- renderingBackend    | RENDERING_BACKEND   |  INTEGER     | &#10004;     | &#10008;
- text                | TEXT                |  STRING      | &#10004;     | &#10008;
- fontFamily          | FONT_FAMILY         |  STRING      | &#10004;     | &#10008;
- fontStyle           | FONT_STYLE          |  STRING      | &#10004;     | &#10008;
- pointSize           | POINT_SIZE          |  FLOAT       | &#10004;     | &#10008;
- multiLine           | MULTI_LINE          |  BOOLEAN     | &#10004;     | &#10008;
- horizontalAlignment | HORIZONTAL_ALIGNMENT|  STRING      | &#10004;     | &#10008;
- verticalAlignment   | VERTICAL_ALIGNMENT  |  STRING      | &#10004;     | &#10008;
- textColor           | TEXT_COLOR          |  VECTOR4     | &#10004;     | &#10008;
- shadowOffset        | SHADOW_OFFSET       |  VECTOR2     | &#10004;     | &#10008;
- shadowColor         | SHADOW_COLOR        |  VECTOR4     | &#10004;     | &#10008;
- underlineEnabled    | UNDERLINE_ENABLED   |  BOOLEAN     | &#10004;     | &#10008;
- underlineColor      | UNDERLINE_COLOR     |  VECTOR4     | &#10004;     | &#10008;
- underlineHeight     | UNDERLINE_HEIGHT    |  FLOAT       | &#10004;     | &#10008;
+ renderingBackend    | RENDERING_BACKEND   |  INTEGER     | O            | X
+ text                | TEXT                |  STRING      | O            | X
+ fontFamily          | FONT_FAMILY         |  STRING      | O            | X
+ fontStyle           | FONT_STYLE          |  STRING      | O            | X
+ pointSize           | POINT_SIZE          |  FLOAT       | O            | X
+ multiLine           | MULTI_LINE          |  BOOLEAN     | O            | X
+ horizontalAlignment | HORIZONTAL_ALIGNMENT|  STRING      | O            | X
+ verticalAlignment   | VERTICAL_ALIGNMENT  |  STRING      | O            | X
+ textColor           | TEXT_COLOR          |  VECTOR4     | O            | X
+ shadowOffset        | SHADOW_OFFSET       |  VECTOR2     | O            | X
+ shadowColor         | SHADOW_COLOR        |  VECTOR4     | O            | X
+ underlineEnabled    | UNDERLINE_ENABLED   |  BOOLEAN     | O            | X
+ underlineColor      | UNDERLINE_COLOR     |  VECTOR4     | O            | X
+ underlineHeight     | UNDERLINE_HEIGHT    |  FLOAT       | O            | X
 
 
 
index 94c0141..36d96f8 100644 (file)
@@ -1,5 +1,6 @@
-/**
- *
+<!--
+/**-->
+
 # Texture Atlases {#textureatlases}
 
 ## Example demo application
@@ -245,5 +246,4 @@ Alternatively Texture packer has the option to split atlases ( search help for M
 
 @class _Guide_TextureAtlases
 
-*
 */
\ No newline at end of file
index a9910d5..a89212e 100644 (file)
@@ -1,18 +1,20 @@
-/**
- *
+<!--
+/**-->
 
 # Texture Compression {#texturecompression}
 
 
 Using compressing the textures will:
 
-- Speed up rendering in time the GPU == less power used due to less texture data being transferred.
+- Reduce memory bandwidth in rendering due to less texture data being transferred per frame.
+  - Reduces power consumption.
+  - Speeds up rendering.
 - Reduce texture memory usage.
-- Speed up load times. Smaller files mean quicker load times.
-  
+- Speed up load times. There is no CPU decoding step in loading: the file data can be copied directly to GPU memory.
+
 DALi supports the KTX file format.
-  
-You just load the compressed texture like you would any other image.
+
+You load the compressed texture just like you would any other image.
 
 ~~~{.cpp}
 // C++
@@ -23,27 +25,27 @@ ResourceImage image = ResourceImage::New("my_compressed_file.ktx");
 var image = new dali.ResourceImage( { url:"my_compressed_file.ktx"});
 
 ~~~
-  
+
 ### ARMS texture compression tool
 
 http://malideveloper.arm.com/develop-for-mali/tools/asset-creation/mali-gpu-texture-compression-tool/
-  
+
 Here is an example of using the ARM compression tool.
-  
+
 ![ ](../assets/img/texture-atlas/compression-options.jpg)
 ![ ](compression-options.jpg)
-  
+
 ![ ](../assets/img/texture-atlas/compression-example.jpg)
 ![ ](compression-example.jpg)
 
-  
+
 As shown above the ETC-1 compression format does not support alpha.
-  
-As a work around the tool will export the alpha as a seperate compressed image.
+
+As a work around the tool will export the alpha as a separate compressed image.
 
 In order to combine both the images you need to use a custom shader.
 Here is an example shader:
-  
+
 ~~~{.cpp}
 // C++ Code
   const char* const COMPRESSED_RGB_PLUS_SEPARATE_ALPHA_FRAGMENT_SOURCE =
@@ -73,7 +75,7 @@ Here is an example shader:
 
   imageActor.SetBlendMode(BlendingMode::ON);
 ~~~
-  
+
 ~~~{.js}
 // JavaScript code
 var fragSource = "  \
@@ -83,20 +85,20 @@ void main()                                                   \
     v4Color.a =  texture2D(sEffect, vTexCoord ).r;             \
    gl_FragColor = v4Color;                                     \
 }";
-  
+
 var shaderEffect = new dali.ShaderEffect( "", fragSource);
-  
+
 var atlasImageRGB = new dali.ResourceImage( { url:"ATLAS_RGB_FILENAME.KTX"} );
-  
+
 var atlasImageAlpha = new dali.ResourceImage( { url:"ATLAS_ALPHA_FILENAME.KTX"} );
-  
+
 shaderEffect.setEffectImage( atlasImageAlpha );
-  
+
 // to create Image Actor
 ImageActor  imageActor = ImageActor::New( mAtlasImageRGB, GetImagePosition( info) );
-  
+
 imageActor.setShaderEffect( shaderEffect );
-  
+
 imageActor.setBlendMode( dali.BLENDING_ON );
 ~~~
 
@@ -104,5 +106,3 @@ imageActor.setBlendMode( dali.BLENDING_ON );
 
 
 */
-
-
index c79ec24..f8acdfb 100644 (file)
@@ -1,4 +1,4 @@
-Deep internal documentation for Dali Toolkit.
+Deep internal documentation for DALi Toolkit.
 
 Generate the documentation here as follows:
 
@@ -7,7 +7,7 @@ Generate the documentation here as follows:
     # Start doxygen:
     ./build.sh
 
-Note, the doxfile assumes you have your Dali repositories checked-out
+Note, the doxfile assumes you have your DALi repositories checked-out
 side by side with the following structure:
 
     .
index addf616..de3867f 100644 (file)
@@ -1,6 +1,6 @@
 Name:       dali-toolkit
 Summary:    The OpenGLES Canvas Core Library Toolkit
-Version:    1.0.41
+Version:    1.0.43
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0
@@ -13,7 +13,6 @@ Requires:       dali
 # Do NOT put an adaptor here - it is an application choice which adaptor to use
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(dlog)
-BuildRequires:  boost-devel
 BuildRequires:  pkgconfig(dali)
 BuildRequires:  pkgconfig(dali-core)
 
@@ -28,7 +27,6 @@ user interface functionality.
 Summary:    Application development package for the OpenGLES Canvas toolkit
 Group:      Development/Building
 Requires:   %{name} = %{version}-%{release}
-Requires:   boost-devel
 
 %description devel
 Application development package for the OpenGLES Canvas toolkit - headers and package config
index 4a1e891..5389612 100644 (file)
@@ -19,7 +19,7 @@
  */
 
 // EXTERNAL INCLUDES
-#include <dali-toolkit/public-api/scripting/script-plugin.h>
+#include <dali-toolkit/devel-api/scripting/script-plugin.h>
 #include <dali/public-api/common/dali-common.h>
 
 namespace Dali DALI_IMPORT_API
index f41f5ac..28837ab 100644 (file)
@@ -231,23 +231,28 @@ v8::Handle<v8::Object> EventObjectGenerator::CreateHoverEvent( v8::Isolate* isol
   return handleScope.Escape( hoverObject );
 }
 
-v8::Handle<v8::Object> EventObjectGenerator::CreateMouseWheelEvent( v8::Isolate* isolate, const MouseWheelEvent& wheelEvent)
+v8::Handle<v8::Object> EventObjectGenerator::CreateWheelEvent( v8::Isolate* isolate, const WheelEvent& wheelEvent)
 {
-  //  we are creating a mouse wheel event object that looks like this
+  //  we are creating a wheel event object that looks like this
   //
+  //  event.type = "mouseWheel" or "customWheel" type of the wheel event
   //  event.direction = "vertical" or "horizontal" direction the wheel is being rolled
   //  event.shiftPressed       = boolean, shift key is held
   //  event.ctrlPressed        = boolean, ctrl key is held
   //  event.altPressed     = boolean, alt key is held
   //  event.keyModifiers = bitmask of keys pressed
   //  event.point {x,y}    = The co-ordinates of the mouse cursor relative to the top-left of the screen when the wheel is being rolled.
-  //  event.rolled          = offset of mouse wheel rolling, positive = rolling down, negative = rolling up
+  //  event.rolled          = offset of wheel rolling, positive = rolling down or clockwise, negative = rolling up or counter-clockwise
   //  event.timestamp    = The time (in ms) that the touch event occurred
 
   v8::EscapableHandleScope handleScope( isolate );
 
   v8::Local<v8::Object> wheelObject = v8::Object::New( isolate );
 
+  // Set the type
+  std::string type = wheelEvent.type ? "mouseWheel" : "customWheel";
+  wheelObject->Set( v8::String::NewFromUtf8( isolate, "type" ), v8::String::NewFromUtf8( isolate, type.c_str() ) );
+
   // Set the direction
   std::string direction = wheelEvent.direction ? "vertical" : "horizontal";
   wheelObject->Set( v8::String::NewFromUtf8( isolate, "direction" ), v8::String::NewFromUtf8( isolate, direction.c_str() ) );
index 8083255..d1d6296 100644 (file)
@@ -23,7 +23,7 @@
 #include <v8.h>
 #include <dali/public-api/events/touch-event.h>
 #include <dali/public-api/events/hover-event.h>
-#include <dali/public-api/events/mouse-wheel-event.h>
+#include <dali/public-api/events/wheel-event.h>
 #include <dali/public-api/events/key-event.h>
 #include <dali/public-api/events/pan-gesture.h>
 
@@ -44,7 +44,7 @@ namespace EventObjectGenerator
 
   v8::Handle<v8::Object> CreateTouchEvent( v8::Isolate* isolate, const TouchEvent& touchEvent);
   v8::Handle<v8::Object> CreateHoverEvent( v8::Isolate* isolate, const HoverEvent& hoverEvent);
-  v8::Handle<v8::Object> CreateMouseWheelEvent( v8::Isolate* isolate, const MouseWheelEvent& wheelEvent);
+  v8::Handle<v8::Object> CreateWheelEvent( v8::Isolate* isolate, const WheelEvent& wheelEvent);
   v8::Handle<v8::Object> CreateKeyEvent( v8::Isolate* isolate, const KeyEvent& keyEvent);
   v8::Handle<v8::Object> CreatePanGesture( v8::Isolate* isolate, const PanGesture& panGesture);
 
index b30b948..8e7df33 100644 (file)
@@ -19,7 +19,7 @@
 #include "resource-image-api.h"
 
 // EXTERNAL INCLUDES
-#include <dali/devel-api/images/image-operations.h>
+#include <dali/public-api/images/image-operations.h>
 
 // INTERNAL INCLUDES
 #include <v8-utils.h>
index 883fcbe..faeaf25 100644 (file)
@@ -74,9 +74,9 @@ v8::Local<v8::Value> DaliAnyConverter::ConvertToJavaScriptObject(v8::Isolate* is
   {
     returnValue = EventObjectGenerator::CreateHoverEvent( isolate, value.Get<HoverEvent>() );
   }
-  else if(  typeInfo == typeid( Dali::MouseWheelEvent ) )
+  else if(  typeInfo == typeid( Dali::WheelEvent ) )
   {
-    returnValue = EventObjectGenerator::CreateMouseWheelEvent( isolate, value.Get<MouseWheelEvent>() );
+    returnValue = EventObjectGenerator::CreateWheelEvent( isolate, value.Get<WheelEvent>() );
   }
   else if(  typeInfo == typeid( Dali::KeyEvent ) )
   {
index d8359e2..e5cfb67 100644 (file)
@@ -27,7 +27,7 @@
 #include <dali/public-api/images/image.h>
 #include <dali/public-api/events/touch-event.h>
 #include <dali/public-api/events/hover-event.h>
-#include <dali/public-api/events/mouse-wheel-event.h>
+#include <dali/public-api/events/wheel-event.h>
 #include <dali/public-api/events/key-event.h>
 #include <dali/public-api/events/pan-gesture.h>
 
@@ -55,7 +55,7 @@ namespace // un-named namespace
 {
 const char* const SIGNAL_TOUCHED = "touched";
 const char* const SIGNAL_HOVERED = "hovered";
-const char* const SIGNAL_MOUSE_WHEEL_EVENT = "mouse-wheel-event";
+const char* const SIGNAL_WHEEL_EVENT = "wheel-event";
 const char* const SIGNAL_ON_STAGE = "on-stage";
 const char* const SIGNAL_OFF_STAGE = "off-stage";
 const char* const ANIMATION_SIGNAL_FINISHED = "finished";
@@ -205,7 +205,7 @@ public:
     returnValue.Get(ret);
     return ret;
   }
-  bool OnMouseWheel( Actor actor, const MouseWheelEvent& event)
+  bool OnWheel( Actor actor, const WheelEvent& event)
   {
     std::vector< Dali::Any > arguments;
     Dali::Any returnValue(false);
@@ -312,7 +312,7 @@ public:
 
   Actor PreFocusChangeSignal(Actor currentFocusedActor,
                              Actor proposedActorToFocus,
-                             Toolkit::Control::KeyboardFocusNavigationDirection direction  )
+                             Toolkit::Control::KeyboardFocus::Direction direction  )
   {
     std::vector< Dali::Any > arguments;
     Dali::Any returnValue = Actor();  // we want an actor as a return value
@@ -390,9 +390,9 @@ void ActorConnection( v8::Isolate* isolate,
   {
     actor.HoveredSignal().Connect( callback, &ActorCallback::OnHover );
   }
-  else if ( strcmp( signalName.c_str(), SIGNAL_MOUSE_WHEEL_EVENT ) == 0 )
+  else if ( strcmp( signalName.c_str(), SIGNAL_WHEEL_EVENT ) == 0 )
   {
-    actor.MouseWheelEventSignal().Connect( callback, &ActorCallback::OnMouseWheel );
+    actor.WheelEventSignal().Connect( callback, &ActorCallback::OnWheel );
   }
   else if ( strcmp( signalName.c_str(), SIGNAL_ON_STAGE ) == 0 )
   {
index 00ee9a7..7a682f4 100644 (file)
@@ -21,7 +21,7 @@
 
 // EXTERNAL INCLUDES
 #include <v8.h>
-#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali-toolkit/devel-api/builder/builder.h>
 
 
 namespace Dali
index 33445d6..90ab615 100644 (file)
@@ -20,7 +20,7 @@
 
 // EXTERNAL INCLUDES
 #include <v8.h>
-#include <dali-toolkit/public-api/builder/builder.h>
+#include <dali-toolkit/devel-api/builder/builder.h>
 
 // INTERNAL INCLUDES
 #include <shared/base-wrapped-object.h>
index d39276c..b43e703 100644 (file)
@@ -34,29 +34,29 @@ namespace // un named namespace
 {
 
 
-Toolkit::Control::KeyboardFocusNavigationDirection  GetDirection( std::string name,  v8::Isolate* isolate )
+Toolkit::Control::KeyboardFocus::Direction  GetDirection( std::string name,  v8::Isolate* isolate )
 {
   if( name == "left")
   {
-    return Dali::Toolkit::Control::Left;
+    return Dali::Toolkit::Control::KeyboardFocus::LEFT;
   }
   if( name == "right")
   {
-    return  Dali::Toolkit::Control::Right;
+    return  Dali::Toolkit::Control::KeyboardFocus::RIGHT;
   }
   if( name == "up")
   {
-    return  Dali::Toolkit::Control::Up;
+    return  Dali::Toolkit::Control::KeyboardFocus::UP;
   }
   if( name == "down")
   {
-    return  Dali::Toolkit::Control::Down;
+    return  Dali::Toolkit::Control::KeyboardFocus::DOWN;
   }
 
   DALI_SCRIPT_EXCEPTION( isolate,  "direction not found ( wanted left,right,up,down)" );
 
 
-  return Dali::Toolkit::Control::Up;
+  return Dali::Toolkit::Control::KeyboardFocus::UP;
 
 }
 }; //un-named namespace
@@ -124,7 +124,7 @@ void KeyboardFocusManagerApi::MoveFocus( const v8::FunctionCallbackInfo< v8::Val
     return;
   }
 
-  Toolkit::Control::KeyboardFocusNavigationDirection dir = GetDirection( direction, isolate );
+  Toolkit::Control::KeyboardFocus::Direction dir = GetDirection( direction, isolate );
 
   Toolkit::KeyboardFocusManager::Get().MoveFocus( dir );
 }
index 0ab6ea9..5bab6a1 100644 (file)
@@ -109,26 +109,26 @@ v8::Local<v8::ObjectTemplate> KeyboardFocusManagerWrapper::GetKeyboardFocusManag
 }
 
 
-std::string KeyboardFocusManagerWrapper::GetDirectionName(  Toolkit::Control::KeyboardFocusNavigationDirection dir )
+std::string KeyboardFocusManagerWrapper::GetDirectionName(  Toolkit::Control::KeyboardFocus::Direction dir )
 {
   switch( dir )
   {
-    case Dali::Toolkit::Control::Left:
+    case Dali::Toolkit::Control::KeyboardFocus::LEFT:
     {
       return "left";
       break;
     }
-    case Dali::Toolkit::Control::Right:
+    case Dali::Toolkit::Control::KeyboardFocus::RIGHT:
     {
       return "right";
       break;
     }
-    case Dali::Toolkit::Control::Up:
+    case Dali::Toolkit::Control::KeyboardFocus::UP:
     {
       return "up";
       break;
     }
-    case Dali::Toolkit::Control::Down:
+    case Dali::Toolkit::Control::KeyboardFocus::DOWN:
     {
       return "down";
       break;
index 3889021..ae1dff3 100644 (file)
@@ -66,7 +66,7 @@ public:
 
   virtual SignalManager* GetSignalManager() { return &mSignalManager;}
 
-  static std::string GetDirectionName(  Toolkit::Control::KeyboardFocusNavigationDirection dir );
+  static std::string GetDirectionName(  Toolkit::Control::KeyboardFocus::Direction dir );
 
 private: