CONFIGURE_FILE( ${LOCAL_STYLE_DIR}/style-example-theme-three.json.in ${LOCAL_STYLE_DIR}/style-example-theme-three.json )
CONFIGURE_FILE( ${LOCAL_STYLE_DIR}/tooltip-example-theme.json.in ${LOCAL_STYLE_DIR}/tooltip-example-theme.json )
CONFIGURE_FILE( ${LOCAL_STYLE_DIR}/basic-light-theme.json.in ${LOCAL_STYLE_DIR}/basic-light-theme.json )
+CONFIGURE_FILE( ${LOCAL_STYLE_DIR}/text-editor-example-theme.json.in ${LOCAL_STYLE_DIR}/text-editor-example-theme.json )
MESSAGE("Configured ${LOCAL_STYLE_DIR}/style-example-theme<>.json files")
FILE(GLOB LOCAL_STYLES_LIST "${LOCAL_STYLE_DIR}/*.json")
<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">
<label>Skybox</label>
</ui-application>
+ <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">
+ <label>Text Overlap</label>
+ </ui-application>
</manifest>
demo.AddExample(Example("animated-images.example", DALI_DEMO_STR_TITLE_ANIMATED_IMAGES));
demo.AddExample(Example("animated-shapes.example", DALI_DEMO_STR_TITLE_ANIMATED_SHAPES));
+ demo.AddExample(Example("alpha-blending-cpu.example", DALI_DEMO_STR_TITLE_ALPHA_BLENDING_CPU));
demo.AddExample(Example("builder.example", DALI_DEMO_STR_TITLE_SCRIPT_BASED_UI));
demo.AddExample(Example("buttons.example", DALI_DEMO_STR_TITLE_BUTTONS));
demo.AddExample(Example("clipping.example", DALI_DEMO_STR_TITLE_CLIPPING));
demo.AddExample(Example("text-label.example", DALI_DEMO_STR_TITLE_TEXT_LABEL));
demo.AddExample(Example("text-label-multi-language.example", DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE));
demo.AddExample(Example("text-label-emojis.example", DALI_DEMO_STR_TITLE_EMOJI_TEXT));
+ demo.AddExample(Example("text-overlap.example", DALI_DEMO_STR_TITLE_TEXT_OVERLAP));
demo.AddExample(Example("text-scrolling.example", DALI_DEMO_STR_TITLE_TEXT_SCROLLING));
demo.AddExample(Example("textured-mesh.example", DALI_DEMO_STR_TITLE_TEXTURED_MESH));
demo.AddExample(Example("tilt.example", DALI_DEMO_STR_TITLE_TILT_SENSOR));
--- /dev/null
+/*
+ * 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/dali-toolkit.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
+#include <dali-toolkit/devel-api/visuals/image-visual-properties-devel.h>
+#include <cstring>
+
+using namespace Dali;
+
+namespace
+{
+const char* const IMAGE_PATH_1 ( DEMO_IMAGE_DIR "people-small-7b.jpg" ); // 100x100
+const char* const IMAGE_PATH_2 ( DEMO_IMAGE_DIR "people-medium-7.jpg" );
+const char* const IMAGE_PATH_3 ( DEMO_IMAGE_DIR "people-medium-7-rgb565.png" ); // is compressed
+const char* const IMAGE_PATH_4 ( DEMO_IMAGE_DIR "people-medium-7-masked.png" ); // has alpha channel
+const char* const MASK_IMAGE_PATH_1 ( DEMO_IMAGE_DIR "mask.png" );
+const char* const MASK_IMAGE_PATH_2 ( DEMO_IMAGE_DIR "mask-large.png" ); // 300x300
+}
+
+class ImageViewAlphaBlendApp : public ConnectionTracker
+{
+public:
+ ImageViewAlphaBlendApp( Application& application )
+ : mApplication( application ),
+ mImageCombinationIndex( 0 )
+ {
+ // Connect to the Application's Init signal
+ mApplication.InitSignal().Connect( this, &ImageViewAlphaBlendApp::Create );
+ }
+
+ ~ImageViewAlphaBlendApp()
+ {
+ // Nothing to do here;
+ }
+
+private:
+ // The Init signal is received once (only) during the Application lifetime
+ void Create( Application& application )
+ {
+ // This creates an image view with one of 3 images, and one of 2 masks.
+ // Clicking the screen will cycle through each combination of mask and image.
+
+ // Get a handle to the stage
+ Stage stage = Stage::GetCurrent();
+ stage.KeyEventSignal().Connect(this, &ImageViewAlphaBlendApp::OnKeyEvent);
+ stage.SetBackgroundColor( Color::WHITE );
+
+ mImageView = Toolkit::ImageView::New();
+
+ mImageView.SetSize(200, 200);
+ mImageView.SetParentOrigin( ParentOrigin::CENTER );
+ stage.Add(mImageView);
+
+ mImageLabel = Toolkit::TextLabel::New();
+ mImageLabel.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
+ mImageLabel.SetAnchorPoint( ParentOrigin::BOTTOM_CENTER );
+ mImageLabel.SetPosition( Vector3( 0.0f, -50.0f, 0.0f ) );
+ mImageLabel.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Color::GREEN );
+ stage.Add(mImageLabel);
+
+ mMaskLabel = Toolkit::TextLabel::New();
+ mMaskLabel.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
+ mMaskLabel.SetAnchorPoint( ParentOrigin::BOTTOM_CENTER );
+ mMaskLabel.SetPosition( Vector3( 0.0f, 0.0f, 0.0f ) );
+ mMaskLabel.SetProperty( Toolkit::TextLabel::Property::TEXT_COLOR, Color::GREEN );
+ stage.Add(mMaskLabel);
+
+ LoadImages();
+
+ stage.TouchSignal().Connect( this, &ImageViewAlphaBlendApp::OnTouched );
+ }
+
+ void OnTouched( const TouchData& touchData )
+ {
+ static bool touched = false;
+ if( touchData.GetState( 0 ) == PointState::DOWN )
+ {
+ touched = true;
+ }
+
+ if( touchData.GetState( 0 ) == PointState::UP && touched)
+ {
+ mImageCombinationIndex++;
+ touched = false;
+ LoadImages();
+ }
+ }
+
+ void LoadImages()
+ {
+ const char* images[4] = { IMAGE_PATH_1, IMAGE_PATH_2, IMAGE_PATH_3, IMAGE_PATH_4 };
+ const char* masks[2] = { MASK_IMAGE_PATH_1, MASK_IMAGE_PATH_2 };
+
+ const char* mask = masks[mImageCombinationIndex%2 ]; // Cycle through masks
+ const char* image = images[(mImageCombinationIndex/2)%4]; // then images
+ Property::Map map;
+ map.Add( Toolkit::Visual::Property::TYPE, Toolkit::Visual::Type::IMAGE );
+ map.Add( Toolkit::ImageVisual::Property::URL, image );
+ map.Add( Toolkit::DevelImageVisual::Property::ALPHA_MASK_URL, mask );
+ mImageView.SetProperty( Toolkit::ImageView::Property::IMAGE, map );
+
+ mImageLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, strrchr(image, '/') );
+ mMaskLabel.SetProperty( Toolkit::TextLabel::Property::TEXT, strrchr(mask, '/') );
+ }
+
+ void OnKeyEvent(const KeyEvent& event)
+ {
+ if(event.state == KeyEvent::Down)
+ {
+ if( IsKey( event, Dali::DALI_KEY_ESCAPE) || IsKey( event, Dali::DALI_KEY_BACK) )
+ {
+ mApplication.Quit();
+ }
+ }
+ }
+
+
+private:
+ Application& mApplication;
+ Toolkit::ImageView mImageView;
+ Toolkit::TextLabel mImageLabel;
+ Toolkit::TextLabel mMaskLabel;
+
+ int mImageCombinationIndex;
+};
+
+void RunTest( Application& application )
+{
+ ImageViewAlphaBlendApp test( application );
+
+ application.MainLoop();
+}
+
+// Entry point for Linux & Tizen applications
+//
+int DALI_EXPORT_API main( int argc, char **argv )
+{
+ Application application = Application::New( &argc, &argv );
+
+ RunTest( application );
+
+ return 0;
+}
changeButton.SetParentOrigin( ParentOrigin::TOP_RIGHT );
stage.Add( changeButton );
changeButton.ClickedSignal().Connect( this, &ImageSvgController::OnChangeButtonClicked );
- changeButton.SetProperty( DevelActor::Property::SIBLING_ORDER, 1 );
// Push button, for resetting the actor size and position
Toolkit::PushButton resetButton = Toolkit::PushButton::New();
resetButton.SetParentOrigin( ParentOrigin::TOP_LEFT );
stage.Add( resetButton );
resetButton.ClickedSignal().Connect( this, &ImageSvgController::OnResetButtonClicked );
- resetButton.SetProperty( DevelActor::Property::SIBLING_ORDER, 1 );
// Create and put imageViews to stage
for( unsigned int i=0; i<4u; i++)
mPinchGestureDetector = PinchGestureDetector::New();
mPinchGestureDetector.Attach( mStageBackground);
mPinchGestureDetector.DetectedSignal().Connect(this, &ImageSvgController::OnPinch);
+
+ DevelActor::RaiseToTop(changeButton);
+ DevelActor::RaiseToTop(resetButton);
}
// Callback of push button, for changing image set
namespace
{
+const char * const THEME_PATH( DEMO_STYLE_DIR "text-editor-example-theme.json" ); ///< The theme used for this example
const Vector4 BACKGROUND_COLOR( 0.04f, 0.345f, 0.392f, 1.0f ); ///< The background color.
const char* TOOLBAR_IMAGE = DEMO_IMAGE_DIR "top-bar.png"; ///< The tool-bar image.
const float TOOLBAR_BUTTON_PERCENTAGE = 0.1f; ///< The button's space width as a percentage of the toolbar's width.
mEditor.InputStyleChangedSignal().Connect( this, &TextEditorExample::OnTextInputStyleChanged );
contents.Add( mEditor );
+ StyleManager styleManager = StyleManager::Get();
+ styleManager.ApplyTheme( THEME_PATH );
}
void CreateButtonContainer()
--- /dev/null
+
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali/devel-api/actors/actor-devel.h>
+#include "text-overlap-example.h"
+
+#include <iostream>
+
+using namespace Dali;
+using namespace Dali::Toolkit;
+
+static const int NUMBER_OF_LABELS(2);
+
+
+
+namespace Demo
+{
+
+TextOverlapController::TextOverlapController( Application& app )
+: mApplication( app ),
+ mTopmostLabel( 1 )
+{
+ app.InitSignal().Connect( this, &TextOverlapController::Create );
+ app.TerminateSignal().Connect( this, &TextOverlapController::Destroy );
+}
+
+void TextOverlapController::Create( Application& app )
+{
+ Stage stage = Stage::GetCurrent();
+ stage.KeyEventSignal().Connect( this, &TextOverlapController::OnKeyEvent );
+
+ Vector2 stageSize = stage.GetSize();
+
+ mLabels[0] = TextLabel::New("Text Label 1");
+ mLabels[1] = TextLabel::New("Text Label 2");
+
+ mLabels[0].SetName("Label1");
+ mLabels[1].SetName("Label2");
+
+ mLabels[0].SetProperty( DevelActor::Property::SIBLING_ORDER, 1 );
+ mLabels[1].SetProperty( DevelActor::Property::SIBLING_ORDER, 2 );
+
+ mLabels[0].SetProperty( Control::Property::BACKGROUND, Color::RED );
+ mLabels[1].SetProperty( Control::Property::BACKGROUND, Color::YELLOW );
+
+ for(int i=0; i<NUMBER_OF_LABELS; ++i )
+ {
+ mLabels[i].SetProperty( TextLabel::Property::HORIZONTAL_ALIGNMENT, "CENTER" );
+ mLabels[i].SetAnchorPoint( AnchorPoint::TOP_LEFT );
+ mLabels[i].SetParentOrigin( ParentOrigin::TOP_LEFT );
+ mLabels[i].SetPosition( 0, (i*2+1) * stageSize.height * 0.25f );
+ }
+
+ stage.Add( mLabels[0] );
+ stage.Add( mLabels[1] );
+
+ mSwapButton = PushButton::New();
+ mSwapButton.SetProperty( Button::Property::LABEL, "Swap depth order");
+ mSwapButton.SetParentOrigin( ParentOrigin::BOTTOM_CENTER );
+ mSwapButton.SetAnchorPoint( AnchorPoint::BOTTOM_CENTER );
+ mSwapButton.ClickedSignal().Connect( this, &TextOverlapController::OnClicked );
+ mSwapButton.SetResizePolicy( ResizePolicy::FILL_TO_PARENT, Dimension::WIDTH );
+ mSwapButton.SetResizePolicy( ResizePolicy::USE_NATURAL_SIZE, Dimension::HEIGHT );
+ stage.Add( mSwapButton );
+
+
+ Layer rootLayer = stage.GetRootLayer();
+ rootLayer.SetName("RootLayer");
+
+ mPanDetector = PanGestureDetector::New();
+ mPanDetector.Attach( rootLayer );
+ mPanDetector.AddAngle( Radian(-0.5f * Math::PI ));
+ mPanDetector.AddAngle( Radian( 0.5f * Math::PI ));
+ mPanDetector.DetectedSignal().Connect( this, &TextOverlapController::OnPan );
+}
+
+void TextOverlapController::OnPan( Actor actor, const PanGesture& gesture )
+{
+ if( ! mGrabbedActor || gesture.state == PanGesture::Started )
+ {
+ for( int i=0; i<NUMBER_OF_LABELS; ++i )
+ {
+ Vector3 position = mLabels[i].GetCurrentPosition();
+ Vector3 size = mLabels[i].GetCurrentSize();
+ if( gesture.position.y > position.y - size.y * 0.5f &&
+ gesture.position.y <= position.y + size.y * 0.5f )
+ {
+ mGrabbedActor = mLabels[i];
+ break;
+ }
+ }
+ }
+ else if( mGrabbedActor && gesture.state == PanGesture::Continuing )
+ {
+ Vector2 stageSize = Stage::GetCurrent().GetSize();
+ Vector3 size = mGrabbedActor.GetCurrentSize();
+ float y = Clamp( gesture.position.y, size.y * 0.5f, stageSize.y - size.y*0.5f );
+ mGrabbedActor.SetPosition( 0, y );
+ }
+ else
+ {
+ mGrabbedActor.Reset();
+ }
+}
+
+void TextOverlapController::Destroy( Application& app )
+{
+ mPanDetector.DetachAll();
+ UnparentAndReset(mLabels[0]);
+ UnparentAndReset(mLabels[1]);
+ mGrabbedActor.Reset();
+}
+
+bool TextOverlapController::OnClicked( Button button )
+{
+ mTopmostLabel = 1-mTopmostLabel; // toggles between 0 and 1
+ DevelActor::RaiseToTop(mLabels[mTopmostLabel]);
+ return false;
+}
+
+
+void TextOverlapController::OnKeyEvent( const KeyEvent& keyEvent )
+{
+ if( keyEvent.state == KeyEvent::Down &&
+ ( IsKey( keyEvent, DALI_KEY_BACK ) ||
+ IsKey( keyEvent, DALI_KEY_ESCAPE ) ) )
+ {
+ mApplication.Quit();
+ }
+ else
+ {
+ Dali::Layer l = Dali::Stage::GetCurrent().GetRootLayer();
+ int so = l.GetProperty<int>(Dali::DevelActor::Property::SIBLING_ORDER);
+ l.SetProperty(Dali::DevelActor::Property::SIBLING_ORDER, so+1);
+ }
+}
+
+
+} // namespace Demo
+
+
+int main( int argc, char** argv )
+{
+ {
+ Application app = Application::New( &argc, &argv );
+ Demo::TextOverlapController controller( app );
+ app.MainLoop();
+ }
+ exit( 0 );
+}
--- /dev/null
+#pragma once
+
+namespace Demo
+{
+
+class TextOverlapController : public Dali::ConnectionTracker
+{
+public:
+ TextOverlapController( Dali::Application& app );
+
+private:
+ void Create( Dali::Application& app );
+ void Create2();
+ void Destroy( Dali::Application& app );
+ void OnPan( Dali::Actor actor, const Dali::PanGesture& gesture );
+ void OnKeyEvent( const Dali::KeyEvent& keyEvent );
+ bool OnClicked( Dali::Toolkit::Button button );
+
+private:
+ Dali::Application& mApplication;
+ Dali::Toolkit::TextLabel mLabels[2];
+ Dali::PanGestureDetector mPanDetector;
+ Dali::Actor mGrabbedActor;
+ Dali::Toolkit::Button mSwapButton;
+ int mTopmostLabel;
+};
+
+}
Name: com.samsung.dali-demo
Summary: The OpenGLES Canvas Core Demo
-Version: 1.2.42
+Version: 1.2.43
Release: 1
Group: System/Libraries
License: Apache-2.0
msgid "DALI_DEMO_STR_TITLE_ANIMATED_SHAPES"
msgstr "Animated Shapes"
+msgid "DALI_DEMO_STR_TITLE_ALPHA_BLENDING_CPU"
+msgstr "CPU Alpha Blending"
+
msgid "DALI_DEMO_STR_TITLE_BASIC_LIGHT"
msgstr "Basic Light"
msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL"
msgstr "Text Label"
+msgid "DALI_DEMO_STR_TITLE_TEXT_OVERLAP"
+msgstr "Text Overlap"
+
msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE"
msgstr "Text Scripts"
msgid "DALI_DEMO_STR_TITLE_ANIMATED_SHAPES"
msgstr "Animated Shapes"
+msgid "DALI_DEMO_STR_TITLE_ALPHA_BLENDING_CPU"
+msgstr "CPU Alpha Blending"
+
msgid "DALI_DEMO_STR_TITLE_BASIC_LIGHT"
msgstr "Basic Light"
msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL"
msgstr "Text Label"
+msgid "DALI_DEMO_STR_TITLE_TEXT_OVERLAP"
+msgstr "Text Overlap"
+
msgid "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE"
msgstr "Text Scripts"
style-example-theme-one.json
tooltip-example-theme.json
basic-light-theme.json
+text-editor-example-theme.json
--- /dev/null
+/*
+ * Copyright (c) 2000-2017 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.
+ *
+ */
+
+{
+ "styles":
+ {
+ "ScrollBar":
+ {
+ "indicatorShowDuration":1.0,
+ "indicatorHideDuration":1.0,
+ "background": {
+ "rendererType": "image",
+ "url": "{APPLICATION_RESOURCE_PATH}/images/button-disabled.9.png"
+ }
+ },
+ "ScrollBarIndicator":
+ {
+ "resourceUrl":"{APPLICATION_RESOURCE_PATH}/images/button-white-up.9.png"
+ }
+ }
+}
--- /dev/null
+/*
+ * Copyright (c) 2000-2017 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.
+ *
+ */
+
+{
+ "styles":
+ {
+ "ScrollBar":
+ {
+ "indicatorShowDuration":1.0,
+ "indicatorHideDuration":1.0,
+ "background": {
+ "rendererType": "image",
+ "url": "{APPLICATION_RESOURCE_PATH}/images/button-disabled.9.png"
+ }
+ },
+ "ScrollBarIndicator":
+ {
+ "resourceUrl":"{APPLICATION_RESOURCE_PATH}/images/button-white-up.9.png"
+ }
+ }
+}
#define DALI_DEMO_STR_TITLE_ANIMATED_IMAGES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_IMAGES")
#define DALI_DEMO_STR_TITLE_ANIMATED_SHAPES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ANIMATED_SHAPES")
+#define DALI_DEMO_STR_TITLE_ALPHA_BLENDING_CPU dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ALPHA_BLENDING_CPU")
#define DALI_DEMO_STR_TITLE_BASIC_LIGHT dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BASIC_LIGHT")
#define DALI_DEMO_STR_TITLE_BLOCKS dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BLOCKS")
#define DALI_DEMO_STR_TITLE_BUBBLES dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_BUBBLES")
#define DALI_DEMO_STR_TITLE_TEXT_EDITOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_EDITOR")
#define DALI_DEMO_STR_TITLE_TEXT_FIELD dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_FIELD")
#define DALI_DEMO_STR_TITLE_TEXT_LABEL dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_LABEL")
+#define DALI_DEMO_STR_TITLE_TEXT_OVERLAP dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_OVERLAP")
#define DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE")
#define DALI_DEMO_STR_TITLE_TEXT_SCROLLING dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TEXT_SCROLLING")
#define DALI_DEMO_STR_TITLE_TILT_SENSOR dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_TILT_SENSOR")
#define DALI_DEMO_STR_TITLE_ANIMATED_IMAGES "Animated Images"
#define DALI_DEMO_STR_TITLE_ANIMATED_SHAPES "Animated Shapes"
+#define DALI_DEMO_STR_TITLE_ALPHA_BLENDING_CPU "CPU Alpha Blending"
#define DALI_DEMO_STR_TITLE_BASIC_LIGHT "Basic Light"
#define DALI_DEMO_STR_TITLE_BLOCKS "Blocks"
#define DALI_DEMO_STR_TITLE_BUBBLES "Bubbles"
#define DALI_DEMO_STR_TITLE_TEXT_EDITOR "Text Editor"
#define DALI_DEMO_STR_TITLE_TEXT_FIELD "Text Field"
#define DALI_DEMO_STR_TITLE_TEXT_LABEL "Text Label"
+#define DALI_DEMO_STR_TITLE_TEXT_OVERLAP "Text Overlap"
#define DALI_DEMO_STR_TITLE_TEXT_LABEL_MULTI_LANGUAGE "Text Scripts"
#define DALI_DEMO_STR_TITLE_TEXT_SCROLLING "Text Scrolling"
#define DALI_DEMO_STR_TITLE_TILT_SENSOR "Tilt Sensor"
"(Xhosa)",
"Molo Lizwe"
},
+ {
+ "Amharic",
+ "(አማርኛ)",
+ "ያስገቡት PIN ትክክለኛ አይደለም። እባክዎ እንደገና ይሞክሩ።"
+ }
};
- const unsigned int NUMBER_OF_LANGUAGES = 35u;
+ const unsigned int NUMBER_OF_LANGUAGES = 36u;
} // MultiLanguageStrings