Commit 1d1bf9cec3aa86c043ebb4ddbc61ee0916ec9e32

Authored by David Steele
1 parent ca2757f0

Added example of actor depth order change

Fixed up SVG example to ensure actor sibling order is set after
adding to the stage.

Change-Id: Ib532eba27be23afd636e34cc9776ae4fd2c5ca48
com.samsung.dali-demo.xml
... ... @@ -224,4 +224,7 @@
224 224 <ui-application appid="rendering-skybox.example" exec="/usr/apps/com.samsung.dali-demo/bin/rendering-skybox.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
225 225 <label>Skybox</label>
226 226 </ui-application>
  227 + <ui-application appid="text-overlap.example" exec="/usr/apps/com.samsung.dali-demo/bin/text-overlap.example" nodisplay="true" multiple="false" type="c++app" taskmanage="true">
  228 + <label>Text Overlap</label>
  229 + </ui-application>
227 230 </manifest>
... ...
examples-reel/dali-examples-reel.cpp
... ... @@ -79,6 +79,7 @@ int DALI_EXPORT_API main(int argc, char **argv)
79 79 demo.AddExample(Example("text-label.example", DALI_DEMO_STR_TITLE_TEXT_LABEL));
80 80 demo.AddExample(Example("text-label-multi-language.example", DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE));
81 81 demo.AddExample(Example("text-label-emojis.example", DALI_DEMO_STR_TITLE_EMOJI_TEXT));
  82 + demo.AddExample(Example("text-overlap.example", DALI_DEMO_STR_TITLE_TEXT_OVERLAP));
82 83 demo.AddExample(Example("text-scrolling.example", DALI_DEMO_STR_TITLE_TEXT_SCROLLING));
83 84 demo.AddExample(Example("textured-mesh.example", DALI_DEMO_STR_TITLE_TEXTURED_MESH));
84 85 demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR));
... ...
examples/image-view-svg/image-view-svg-example.cpp
... ... @@ -87,7 +87,6 @@ public:
87 87 changeButton.SetParentOrigin( ParentOrigin::TOP_RIGHT );
88 88 stage.Add( changeButton );
89 89 changeButton.ClickedSignal().Connect( this, &ImageSvgController::OnChangeButtonClicked );
90   - changeButton.SetProperty( DevelActor::Property::SIBLING_ORDER, 1 );
91 90  
92 91 // Push button, for resetting the actor size and position
93 92 Toolkit::PushButton resetButton = Toolkit::PushButton::New();
... ... @@ -96,7 +95,6 @@ public:
96 95 resetButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
97 96 stage.Add( resetButton );
98 97 resetButton.ClickedSignal().Connect( this, &ImageSvgController::OnResetButtonClicked );
99   - resetButton.SetProperty( DevelActor::Property::SIBLING_ORDER, 1 );
100 98  
101 99 // Create and put imageViews to stage
102 100 for( unsigned int i=0; i<4u; i++)
... ... @@ -124,6 +122,9 @@ public:
124 122 mPinchGestureDetector = PinchGestureDetector::New();
125 123 mPinchGestureDetector.Attach( mStageBackground);
126 124 mPinchGestureDetector.DetectedSignal().Connect(this, &ImageSvgController::OnPinch);
  125 +
  126 + DevelActor::RaiseToTop(changeButton);
  127 + DevelActor::RaiseToTop(resetButton);
127 128 }
128 129  
129 130 // Callback of push button, for changing image set
... ...
examples/text-overlap/text-overlap-example.cpp 0 → 100644
  1 +
  2 +#include <dali-toolkit/dali-toolkit.h>
  3 +#include <dali/devel-api/actors/actor-devel.h>
  4 +#include "text-overlap-example.h"
  5 +
  6 +#include <iostream>
  7 +
  8 +using namespace Dali;
  9 +using namespace Dali::Toolkit;
  10 +
  11 +static const int NUMBER_OF_LABELS(2);
  12 +
  13 +
  14 +
  15 +namespace Demo
  16 +{
  17 +
  18 +TextOverlapController::TextOverlapController( Application& app )
  19 +: mApplication( app ),
  20 + mTopmostLabel( 1 )
  21 +{
  22 + app.InitSignal().Connect( this, &TextOverlapController::Create );
  23 + app.TerminateSignal().Connect( this, &TextOverlapController::Destroy );
  24 +}
  25 +
  26 +void TextOverlapController::Create( Application& app )
  27 +{
  28 + Stage stage = Stage::GetCurrent();
  29 + stage.KeyEventSignal().Connect( this, &TextOverlapController::OnKeyEvent );
  30 +
  31 + Vector2 stageSize = stage.GetSize();
  32 +
  33 + mLabels[0] = TextLabel::New("Text Label 1");
  34 + mLabels[1] = TextLabel::New("Text Label 2");
  35 +
  36 + mLabels[0].SetName("Label1");
  37 + mLabels[1].SetName("Label2");
  38 +
  39 + mLabels[0].SetProperty( DevelActor::Property::SIBLING_ORDER, 1 );
  40 + mLabels[1].SetProperty( DevelActor::Property::SIBLING_ORDER, 2 );
  41 +
  42 + mLabels[0].SetProperty( Control::Property::BACKGROUND, Color::RED );
  43 + mLabels[1].SetProperty( Control::Property::BACKGROUND, Color::YELLOW );
  44 +
  45 + for(int i=0; i<NUMBER_OF_LABELS; ++i )
  46 + {
  47 + mLabels[i].SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
  48 + mLabels[i].SetAnchorPoint( AnchorPoint::TOP_LEFT );
  49 + mLabels[i].SetParentOrigin( ParentOrigin::TOP_LEFT );
  50 + mLabels[i].SetPosition( 0, (i*2+1) * stageSize.height * 0.25f );
  51 + }
  52 +
  53 + stage.Add( mLabels[0] );
  54 + stage.Add( mLabels[1] );
  55 +
  56 + mSwapButton = PushButton::New();
  57 + mSwapButton.SetProperty( Button::Property::LABEL, "Swap depth order");
  58 + mSwapButton.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
  59 + mSwapButton.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
  60 + mSwapButton.ClickedSignal().Connect( this, &TextOverlapController::OnClicked );
  61 + mSwapButton.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
  62 + mSwapButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
  63 + stage.Add( mSwapButton );
  64 +
  65 +
  66 + Layer rootLayer = stage.GetRootLayer();
  67 + rootLayer.SetName("RootLayer");
  68 +
  69 + mPanDetector = PanGestureDetector::New();
  70 + mPanDetector.Attach( rootLayer );
  71 + mPanDetector.AddAngle( Radian(-0.5f * Math::PI ));
  72 + mPanDetector.AddAngle( Radian( 0.5f * Math::PI ));
  73 + mPanDetector.DetectedSignal().Connect( this, &TextOverlapController::OnPan );
  74 +}
  75 +
  76 +void TextOverlapController::OnPan( Actor actor, const PanGesture& gesture )
  77 +{
  78 + if( ! mGrabbedActor || gesture.state == PanGesture::Started )
  79 + {
  80 + for( int i=0; i<NUMBER_OF_LABELS; ++i )
  81 + {
  82 + Vector3 position = mLabels[i].GetCurrentPosition();
  83 + Vector3 size = mLabels[i].GetCurrentSize();
  84 + if( gesture.position.y > position.y - size.y * 0.5f &&
  85 + gesture.position.y <= position.y + size.y * 0.5f )
  86 + {
  87 + mGrabbedActor = mLabels[i];
  88 + break;
  89 + }
  90 + }
  91 + }
  92 + else if( mGrabbedActor && gesture.state == PanGesture::Continuing )
  93 + {
  94 + Vector2 stageSize = Stage::GetCurrent().GetSize();
  95 + Vector3 size = mGrabbedActor.GetCurrentSize();
  96 + float y = Clamp( gesture.position.y, size.y * 0.5f, stageSize.y - size.y*0.5f );
  97 + mGrabbedActor.SetPosition( 0, y );
  98 + }
  99 + else
  100 + {
  101 + mGrabbedActor.Reset();
  102 + }
  103 +}
  104 +
  105 +void TextOverlapController::Destroy( Application& app )
  106 +{
  107 + mPanDetector.DetachAll();
  108 + UnparentAndReset(mLabels[0]);
  109 + UnparentAndReset(mLabels[1]);
  110 + mGrabbedActor.Reset();
  111 +}
  112 +
  113 +bool TextOverlapController::OnClicked( Button button )
  114 +{
  115 + mTopmostLabel = 1-mTopmostLabel; // toggles between 0 and 1
  116 + DevelActor::RaiseToTop(mLabels[mTopmostLabel]);
  117 + return false;
  118 +}
  119 +
  120 +
  121 +void TextOverlapController::OnKeyEvent( const KeyEvent& keyEvent )
  122 +{
  123 + if( keyEvent.state == KeyEvent::Down &&
  124 + ( IsKey( keyEvent, DALI_KEY_BACK ) ||
  125 + IsKey( keyEvent, DALI_KEY_ESCAPE ) ) )
  126 + {
  127 + mApplication.Quit();
  128 + }
  129 + else
  130 + {
  131 + Dali::Layer l = Dali::Stage::GetCurrent().GetRootLayer();
  132 + int so = l.GetProperty<int>(Dali::DevelActor::Property::SIBLING_ORDER);
  133 + l.SetProperty(Dali::DevelActor::Property::SIBLING_ORDER, so+1);
  134 + }
  135 +}
  136 +
  137 +
  138 +} // namespace Demo
  139 +
  140 +
  141 +int main( int argc, char** argv )
  142 +{
  143 + {
  144 + Application app = Application::New( &argc, &argv );
  145 + Demo::TextOverlapController controller( app );
  146 + app.MainLoop();
  147 + }
  148 + exit( 0 );
  149 +}
... ...
examples/text-overlap/text-overlap-example.h 0 → 100644
  1 +#pragma once
  2 +
  3 +namespace Demo
  4 +{
  5 +
  6 +class TextOverlapController : public Dali::ConnectionTracker
  7 +{
  8 +public:
  9 + TextOverlapController( Dali::Application& app );
  10 +
  11 +private:
  12 + void Create( Dali::Application& app );
  13 + void Create2();
  14 + void Destroy( Dali::Application& app );
  15 + void OnPan( Dali::Actor actor, const Dali::PanGesture& gesture );
  16 + void OnKeyEvent( const Dali::KeyEvent& keyEvent );
  17 + bool OnClicked( Dali::Toolkit::Button button );
  18 +
  19 +private:
  20 + Dali::Application& mApplication;
  21 + Dali::Toolkit::TextLabel mLabels[2];
  22 + Dali::PanGestureDetector mPanDetector;
  23 + Dali::Actor mGrabbedActor;
  24 + Dali::Toolkit::Button mSwapButton;
  25 + int mTopmostLabel;
  26 +};
  27 +
  28 +}
... ...
resources/po/en_GB.po
... ... @@ -145,6 +145,9 @@ msgstr &quot;Text Field&quot;
145 145 msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL"
146 146 msgstr "Text Label"
147 147  
  148 +msgid "DALI_DEMO_STR_TITLE_TEXT_OVERLAP"
  149 +msgstr "Text Overlap"
  150 +
148 151 msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE"
149 152 msgstr "Text Scripts"
150 153  
... ...
resources/po/en_US.po
... ... @@ -145,6 +145,9 @@ msgstr &quot;Text Field&quot;
145 145 msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL"
146 146 msgstr "Text Label"
147 147  
  148 +msgid "DALI_DEMO_STR_TITLE_TEXT_OVERLAP"
  149 +msgstr "Text Overlap"
  150 +
148 151 msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE"
149 152 msgstr "Text Scripts"
150 153  
... ...
shared/dali-demo-strings.h
... ... @@ -89,6 +89,7 @@ extern &quot;C&quot;
89 89 #define DALI_DEMO_STR_TITLE_TEXT_EDITOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_EDITOR")
90 90 #define DALI_DEMO_STR_TITLE_TEXT_FIELD dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_FIELD")
91 91 #define DALI_DEMO_STR_TITLE_TEXT_LABEL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_LABEL")
  92 +#define DALI_DEMO_STR_TITLE_TEXT_OVERLAP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_OVERLAP")
92 93 #define DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE")
93 94 #define DALI_DEMO_STR_TITLE_TEXT_SCROLLING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_SCROLLING")
94 95 #define DALI_DEMO_STR_TITLE_TILT_SENSOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TILT_SENSOR")
... ... @@ -154,6 +155,7 @@ extern &quot;C&quot;
154 155 #define DALI_DEMO_STR_TITLE_TEXT_EDITOR "Text Editor"
155 156 #define DALI_DEMO_STR_TITLE_TEXT_FIELD "Text Field"
156 157 #define DALI_DEMO_STR_TITLE_TEXT_LABEL "Text Label"
  158 +#define DALI_DEMO_STR_TITLE_TEXT_OVERLAP "Text Overlap"
157 159 #define DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE "Text Scripts"
158 160 #define DALI_DEMO_STR_TITLE_TEXT_SCROLLING "Text Scrolling"
159 161 #define DALI_DEMO_STR_TITLE_TILT_SENSOR "Tilt Sensor"
... ...