Merge "Add MIN_LINE_SIZE property" into devel/master
authorjoogab yun <joogab.yun@samsung.com>
Mon, 18 May 2020 01:30:00 +0000 (01:30 +0000)
committerGerrit Code Review <gerrit@review>
Mon, 18 May 2020 01:30:00 +0000 (01:30 +0000)
16 files changed:
.gitignore
automated-tests/src/dali-toolkit-internal/CMakeLists.txt
automated-tests/src/dali-toolkit-internal/utc-Dali-Text-Controller.cpp
automated-tests/src/dali-toolkit-styling/CMakeLists.txt
automated-tests/src/dali-toolkit-third-party/CMakeLists.txt
automated-tests/src/dali-toolkit/CMakeLists.txt
automated-tests/src/dali-toolkit/utc-Dali-Visual.cpp
build/tizen/CMakeLists.txt
build/tizen/dali2-toolkit.pc.in [moved from build/tizen/dali-toolkit.pc.in with 81% similarity]
dali-toolkit/devel-api/controls/text-controls/text-field-devel.h
dali-toolkit/internal/controls/text-controls/text-field-impl.h
dali-toolkit/internal/text/text-controller.cpp
dali-toolkit/internal/visuals/gradient/gradient-visual.cpp
dali-toolkit/internal/visuals/visual-factory-cache.h
dali-toolkit/public-api/dali-toolkit-version.cpp
packaging/dali-toolkit.spec

index c4cfd6d..1f19351 100644 (file)
@@ -10,7 +10,7 @@ cmake_install.cmake
 dali.node
 dali.doxy
 install_manifest.txt
-libdali-toolkit.so*
+libdali2-toolkit.so*
 *~
 *.o
 *.o.d
index 98172fb..e0b5869 100755 (executable)
@@ -76,9 +76,9 @@ LIST(APPEND TC_SOURCES
 
 
 PKG_CHECK_MODULES(${CAPI_LIB} REQUIRED
-    dali-core
-    dali-adaptor
-    dali-toolkit
+    dali2-core
+    dali2-adaptor
+    dali2-toolkit
 )
 
 ADD_COMPILE_OPTIONS( -O0 -ggdb --coverage -Wall -Werror -DDEBUG_ENABLED )
index 0e8a597..5db928d 100755 (executable)
@@ -1192,3 +1192,43 @@ int UtcDaliTextControllerRemoveTextChangeEventData(void)
 
   END_TEST;
 }
+
+int UtcDaliTextControllerCheckInputFontPointSizeUpdated(void)
+{
+  tet_infoline(" UtcDaliTextControllerCheckInputFontPointSizeUpdated");
+  ToolkitTestApplication application;
+
+  // Creates a text controller.
+  ControllerPtr controller = Controller::New();
+
+  ConfigureTextField(controller);
+
+  // Set the text
+  const std::string text("Hello World!");
+  controller->SetText( text );
+  controller->SetInputFontPointSize( 1.0f );
+  controller->KeyboardFocusGainEvent();
+
+  application.SendNotification();
+  application.Render();
+
+  // Perform a relayout
+  const Size size( Dali::Stage::GetCurrent().GetSize() );
+  controller->Relayout(size);
+
+  // simulate a key event.
+  controller->KeyEvent( GenerateKey( "a", "a", 38, 0, 0, Dali::KeyEvent::Down ) );
+
+  // change the input font point size
+  controller->SetInputFontPointSize( 20.f );
+
+  application.SendNotification();
+  application.Render();
+
+  // Perform a relayout
+  controller->Relayout(size);
+
+  tet_result(TET_PASS);
+
+  END_TEST;
+}
index 32b7233..4148b92 100644 (file)
@@ -54,8 +54,8 @@ LIST(APPEND TC_SOURCES
 
 
 PKG_CHECK_MODULES(${CAPI_LIB} REQUIRED
-  dali-core
-  dali-toolkit
+  dali2-core
+  dali2-toolkit
 )
 
 ADD_COMPILE_OPTIONS( -O0 -ggdb --coverage -Wall -Werror )
index 3a9f9b2..3719b4d 100644 (file)
@@ -29,9 +29,9 @@ LIST(APPEND TC_SOURCES
 
 
 PKG_CHECK_MODULES(${CAPI_LIB} REQUIRED
-    dali-core
-    dali-adaptor
-    dali-toolkit
+    dali2-core
+    dali2-adaptor
+    dali2-toolkit
 )
 
 # Locate GTest
index de0513d..7e1f18b 100755 (executable)
@@ -116,9 +116,9 @@ LIST(APPEND TC_SOURCES
 )
 
 PKG_CHECK_MODULES(${CAPI_LIB} REQUIRED
-  dali-core
-  dali-adaptor
-  dali-toolkit
+  dali2-core
+  dali2-adaptor
+  dali2-toolkit
 )
 
 ADD_COMPILE_OPTIONS( -O0 -ggdb --coverage -Wall -Werror -DDEBUG_ENABLED)
index 0a86423..aa1e8f6 100644 (file)
@@ -3689,6 +3689,51 @@ int UtcDaliVisualRoundedCorner(void)
     DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
   }
 
+  // gradient visual
+  {
+    VisualFactory factory = VisualFactory::Get();
+    Property::Map properties;
+    float cornerRadius = 30.0f;
+
+    properties[Visual::Property::TYPE] = Visual::GRADIENT;
+    properties[ColorVisual::Property::MIX_COLOR] = Color::BLUE;
+    properties[DevelVisual::Property::CORNER_RADIUS] = cornerRadius;
+    properties[GradientVisual::Property::START_POSITION] = Vector2( 0.5f, 0.5f );
+    properties[GradientVisual::Property::END_POSITION] = Vector2( -0.5f, -0.5f );
+    properties[GradientVisual::Property::UNITS] = GradientVisual::Units::USER_SPACE;
+
+    Property::Array stopOffsets;
+    stopOffsets.PushBack( 0.0f );
+    stopOffsets.PushBack( 0.6f );
+    stopOffsets.PushBack( 1.0f );
+    properties[GradientVisual::Property::STOP_OFFSET] = stopOffsets;
+
+    Property::Array stopColors;
+    stopColors.PushBack( Color::RED );
+    stopColors.PushBack( Color::YELLOW );
+    stopColors.PushBack( Color::GREEN );
+    properties[GradientVisual::Property::STOP_COLOR] = stopColors;
+
+    Visual::Base visual = factory.CreateVisual( properties );
+
+    // trigger creation through setting on stage
+    DummyControl dummy = DummyControl::New( true );
+    Impl::DummyControl& dummyImpl = static_cast< Impl::DummyControl& >( dummy.GetImplementation() );
+    dummyImpl.RegisterVisual( DummyControl::Property::TEST_VISUAL, visual );
+
+    dummy.SetSize( 200.f, 200.f );
+    dummy.SetParentOrigin( ParentOrigin::CENTER );
+    Stage::GetCurrent().Add( dummy );
+
+    application.SendNotification();
+    application.Render();
+
+    application.SendNotification();
+    application.Render();
+
+    DALI_TEST_EQUALS( application.GetGlAbstraction().CheckUniformValue< float >( "cornerRadius", cornerRadius ), true, TEST_LOCATION );
+  }
+
   END_TEST;
 }
 
index 25edb06..d02db0b 100644 (file)
@@ -1,7 +1,7 @@
 CMAKE_MINIMUM_REQUIRED(VERSION 2.6)
 CMAKE_POLICY(SET CMP0012 NEW) # Prevent dereferencing of OFF/ON as variables
 
-SET(name "dali-toolkit")
+SET(name "dali2-toolkit")
 
 PROJECT(${name})
 SET(PKG_NAME ${name})
@@ -14,7 +14,7 @@ if(CMAKE_CXX_COMPILER_ID STREQUAL "GNU")
 endif()
 
 # API VERSION (Not DALi release version)
-SET(${name}_VERSION_MAJOR 0)
+SET(${name}_VERSION_MAJOR 2)
 SET(${name}_VERSION_MINOR 0)
 SET(${name}_VERSION_PATCH 0)
 SET(${name}_VERSION ${${name}_VERSION_MAJOR}.${${name}_VERSION_MINOR}.${${name}_VERSION_PATCH} )
@@ -36,8 +36,8 @@ OPTION(USE_DEFAULT_RESOURCE_DIR  "Whether to use the default resource folders. O
 IF( ENABLE_PKG_CONFIGURE )
   FIND_PACKAGE( PkgConfig REQUIRED )
 
-  PKG_CHECK_MODULES(DALICORE REQUIRED dali-core)
-  PKG_CHECK_MODULES(DALIADAPTOR REQUIRED dali-adaptor)
+  PKG_CHECK_MODULES(DALICORE REQUIRED dali2-core)
+  PKG_CHECK_MODULES(DALIADAPTOR REQUIRED dali2-adaptor)
 ENDIF()
 
 IF( INSTALL_DOXYGEN_DOC )
@@ -46,8 +46,8 @@ ENDIF()
 
 IF( WIN32 ) # WIN32 includes x64 as well according to the cmake doc.
   FIND_PACKAGE( dali-windows-dependencies REQUIRED)
-  FIND_PACKAGE( dali-core REQUIRED)
-  FIND_PACKAGE( dali-adaptor REQUIRED)
+  FIND_PACKAGE( dali2-core REQUIRED)
+  FIND_PACKAGE( dali2-adaptor REQUIRED)
 ENDIF()
 
 SET( VCPKG_INCLUDE_DIR "${_VCPKG_INSTALLED_DIR}/${VCPKG_TARGET_TRIPLET}/include")
@@ -198,7 +198,7 @@ IF( ENABLE_PKG_CONFIGURE )
   # Requires the following variables to be setup:
   # @PREFIX@ @EXEC_PREFIX@ @DALI_VERSION@ @LIB_DIR@ @DEV_INCLUDE_PATH@
   SET( DEV_INCLUDE_PATH ${INCLUDE_DIR} )
-  SET( CORE_PKG_CFG_FILE dali-toolkit.pc )
+  SET( CORE_PKG_CFG_FILE dali2-toolkit.pc )
   CONFIGURE_FILE( ${CORE_PKG_CFG_FILE}.in ${CORE_PKG_CFG_FILE} @ONLY )
 ENDIF()
 
@@ -263,7 +263,7 @@ ENDIF()
 IF( WIN32 )
   SET( DALICORE_LDFLAGS
         "${DALICORE_LDFLAGS}"
-        dali-core::dali-core )
+        dali2-core::dali2-core )
 
   FIND_PACKAGE( pthreads REQUIRED )
   FIND_PACKAGE( curl REQUIRED )
@@ -285,7 +285,7 @@ IF( WIN32 )
 
   SET( DALIADAPTOR_LDFLAGS
        "${DALIADAPTOR_LDFLAGS}"
-       dali-adaptor::dali-adaptor )
+       dali2-adaptor::dali2-adaptor )
 ENDIF()
 
 
similarity index 81%
rename from build/tizen/dali-toolkit.pc.in
rename to build/tizen/dali2-toolkit.pc.in
index 6e1ed27..70387e5 100644 (file)
@@ -7,6 +7,6 @@ includedir=@DEV_INCLUDE_PATH@
 Name: Dali 3D Engine Toolkit
 Description: Cross platform 3D Engine Toolkit
 Version: ${apiversion}
-Requires: dali-core
-Libs: -L${libdir} -ldali-toolkit
+Requires: dali2-core
+Libs: -L${libdir} -ldali2-toolkit
 Cflags: -I${includedir}
index 0d10779..042841f 100755 (executable)
@@ -157,14 +157,6 @@ DALI_TOOLKIT_API void SelectWholeText( TextField textField );
  */
 DALI_TOOLKIT_API void SelectNone( TextField textField );
 
-/**
- * @brief Get the selected text of TextField.
- *
- * @param[in] textField The instance of TextField.
- * @return Selected text in the TextField.
- */
-DALI_TOOLKIT_API std::string SelectedText( TextField textField );
-
 } // namespace DevelText
 
 } // namespace Toolkit
index 3fd32a0..2991931 100755 (executable)
@@ -112,12 +112,6 @@ public:
    */
   void SelectNone();
 
-    /**
-   * @brief Called to get selected text.
-   * @return Selected text in the TextField.
-   */
-  std::string SelectedText();
-
 private: // From Control
 
   /**
index cfac37f..cb09223 100755 (executable)
@@ -1536,17 +1536,32 @@ void Controller::SetInputFontFamily( const std::string& fontFamily )
     {
       CharacterIndex startOfSelectedText = 0u;
       Length lengthOfSelectedText = 0u;
-      FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
-                                                                            mImpl->mModel->mLogicalModel,
-                                                                            startOfSelectedText,
-                                                                            lengthOfSelectedText );
 
-      fontDescriptionRun.familyLength = fontFamily.size();
-      fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
-      memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
-      fontDescriptionRun.familyDefined = true;
+      if( EventData::SELECTING == mImpl->mEventData->mState )
+      {
+        // Update a font description run for the selecting state.
+        FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
+                                                                              mImpl->mModel->mLogicalModel,
+                                                                              startOfSelectedText,
+                                                                              lengthOfSelectedText );
 
-      // The memory allocated for the font family name is freed when the font description is removed from the logical model.
+        fontDescriptionRun.familyLength = fontFamily.size();
+        fontDescriptionRun.familyName = new char[fontDescriptionRun.familyLength];
+        memcpy( fontDescriptionRun.familyName, fontFamily.c_str(), fontDescriptionRun.familyLength );
+        fontDescriptionRun.familyDefined = true;
+
+        // The memory allocated for the font family name is freed when the font description is removed from the logical model.
+
+        mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
+      }
+      else
+      {
+        mImpl->mTextUpdateInfo.mCharacterIndex = 0;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = mImpl->mTextUpdateInfo.mPreviousNumberOfCharacters;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl->mModel->mLogicalModel->mText.Count();
+      }
 
       // Request to relayout.
       mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending |
@@ -1560,10 +1575,6 @@ void Controller::SetInputFontFamily( const std::string& fontFamily )
       mImpl->mRecalculateNaturalSize = true;
       mImpl->RequestRelayout();
 
-      mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
-
       // As the font changes, recalculate the handle positions is needed.
       mImpl->mEventData->mUpdateLeftSelectionPosition = true;
       mImpl->mEventData->mUpdateRightSelectionPosition = true;
@@ -1595,13 +1606,28 @@ void Controller::SetInputFontWeight( FontWeight weight )
     {
       CharacterIndex startOfSelectedText = 0u;
       Length lengthOfSelectedText = 0u;
-      FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
-                                                                            mImpl->mModel->mLogicalModel,
-                                                                            startOfSelectedText,
-                                                                            lengthOfSelectedText );
 
-      fontDescriptionRun.weight = weight;
-      fontDescriptionRun.weightDefined = true;
+      if( EventData::SELECTING == mImpl->mEventData->mState )
+      {
+        // Update a font description run for the selecting state.
+        FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
+                                                                              mImpl->mModel->mLogicalModel,
+                                                                              startOfSelectedText,
+                                                                              lengthOfSelectedText );
+
+        fontDescriptionRun.weight = weight;
+        fontDescriptionRun.weightDefined = true;
+
+        mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
+      }
+      else
+      {
+        mImpl->mTextUpdateInfo.mCharacterIndex = 0;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = mImpl->mTextUpdateInfo.mPreviousNumberOfCharacters;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl->mModel->mLogicalModel->mText.Count();
+      }
 
       // Request to relayout.
       mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending |
@@ -1615,10 +1641,6 @@ void Controller::SetInputFontWeight( FontWeight weight )
       mImpl->mRecalculateNaturalSize = true;
       mImpl->RequestRelayout();
 
-      mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
-
       // As the font might change, recalculate the handle positions is needed.
       mImpl->mEventData->mUpdateLeftSelectionPosition = true;
       mImpl->mEventData->mUpdateRightSelectionPosition = true;
@@ -1661,13 +1683,28 @@ void Controller::SetInputFontWidth( FontWidth width )
     {
       CharacterIndex startOfSelectedText = 0u;
       Length lengthOfSelectedText = 0u;
-      FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
-                                                                            mImpl->mModel->mLogicalModel,
-                                                                            startOfSelectedText,
-                                                                            lengthOfSelectedText );
 
-      fontDescriptionRun.width = width;
-      fontDescriptionRun.widthDefined = true;
+      if( EventData::SELECTING == mImpl->mEventData->mState )
+      {
+        // Update a font description run for the selecting state.
+        FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
+                                                                              mImpl->mModel->mLogicalModel,
+                                                                              startOfSelectedText,
+                                                                              lengthOfSelectedText );
+
+        fontDescriptionRun.width = width;
+        fontDescriptionRun.widthDefined = true;
+
+        mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
+      }
+      else
+      {
+        mImpl->mTextUpdateInfo.mCharacterIndex = 0;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = mImpl->mTextUpdateInfo.mPreviousNumberOfCharacters;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl->mModel->mLogicalModel->mText.Count();
+      }
 
       // Request to relayout.
       mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending |
@@ -1681,10 +1718,6 @@ void Controller::SetInputFontWidth( FontWidth width )
       mImpl->mRecalculateNaturalSize = true;
       mImpl->RequestRelayout();
 
-      mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
-
       // As the font might change, recalculate the handle positions is needed.
       mImpl->mEventData->mUpdateLeftSelectionPosition = true;
       mImpl->mEventData->mUpdateRightSelectionPosition = true;
@@ -1727,13 +1760,28 @@ void Controller::SetInputFontSlant( FontSlant slant )
     {
       CharacterIndex startOfSelectedText = 0u;
       Length lengthOfSelectedText = 0u;
-      FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
-                                                                            mImpl->mModel->mLogicalModel,
-                                                                            startOfSelectedText,
-                                                                            lengthOfSelectedText );
 
-      fontDescriptionRun.slant = slant;
-      fontDescriptionRun.slantDefined = true;
+      if( EventData::SELECTING == mImpl->mEventData->mState )
+      {
+        // Update a font description run for the selecting state.
+        FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
+                                                                              mImpl->mModel->mLogicalModel,
+                                                                              startOfSelectedText,
+                                                                              lengthOfSelectedText );
+
+        fontDescriptionRun.slant = slant;
+        fontDescriptionRun.slantDefined = true;
+
+        mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
+      }
+      else
+      {
+        mImpl->mTextUpdateInfo.mCharacterIndex = 0;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = mImpl->mTextUpdateInfo.mPreviousNumberOfCharacters;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl->mModel->mLogicalModel->mText.Count();
+      }
 
       // Request to relayout.
       mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending |
@@ -1747,10 +1795,6 @@ void Controller::SetInputFontSlant( FontSlant slant )
       mImpl->mRecalculateNaturalSize = true;
       mImpl->RequestRelayout();
 
-      mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
-
       // As the font might change, recalculate the handle positions is needed.
       mImpl->mEventData->mUpdateLeftSelectionPosition = true;
       mImpl->mEventData->mUpdateRightSelectionPosition = true;
@@ -1793,13 +1837,28 @@ void Controller::SetInputFontPointSize( float size )
     {
       CharacterIndex startOfSelectedText = 0u;
       Length lengthOfSelectedText = 0u;
-      FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
-                                                                            mImpl->mModel->mLogicalModel,
-                                                                            startOfSelectedText,
-                                                                            lengthOfSelectedText );
 
-      fontDescriptionRun.size = static_cast<PointSize26Dot6>( size * 64.f );
-      fontDescriptionRun.sizeDefined = true;
+      if( EventData::SELECTING == mImpl->mEventData->mState )
+      {
+        // Update a font description run for the selecting state.
+        FontDescriptionRun& fontDescriptionRun = UpdateSelectionFontStyleRun( mImpl->mEventData,
+                                                                              mImpl->mModel->mLogicalModel,
+                                                                              startOfSelectedText,
+                                                                              lengthOfSelectedText );
+
+        fontDescriptionRun.size = static_cast<PointSize26Dot6>( size * 64.f );
+        fontDescriptionRun.sizeDefined = true;
+
+        mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
+      }
+      else
+      {
+        mImpl->mTextUpdateInfo.mCharacterIndex = 0;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = mImpl->mTextUpdateInfo.mPreviousNumberOfCharacters;
+        mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = mImpl->mModel->mLogicalModel->mText.Count();
+      }
 
       // Request to relayout.
       mImpl->mOperationsPending = static_cast<OperationsMask>( mImpl->mOperationsPending |
@@ -1813,10 +1872,6 @@ void Controller::SetInputFontPointSize( float size )
       mImpl->mRecalculateNaturalSize = true;
       mImpl->RequestRelayout();
 
-      mImpl->mTextUpdateInfo.mCharacterIndex = startOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToRemove = lengthOfSelectedText;
-      mImpl->mTextUpdateInfo.mNumberOfCharactersToAdd = lengthOfSelectedText;
-
       // As the font might change, recalculate the handle positions is needed.
       mImpl->mEventData->mUpdateLeftSelectionPosition = true;
       mImpl->mEventData->mUpdateRightSelectionPosition = true;
index 53ea041..e1959e7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 2018 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
@@ -67,28 +67,26 @@ const char * const UNIFORM_ALIGNMENT_MATRIX_NAME( "uAlignmentMatrix" );
 const unsigned int DEFAULT_OFFSET_MINIMUM = 0.0f;
 const unsigned int DEFAULT_OFFSET_MAXIMUM = 1.0f;
 
-VisualFactoryCache::ShaderType GetShaderType( GradientVisual::Type type, Toolkit::GradientVisual::Units::Type units )
+VisualFactoryCache::ShaderType SHADER_TYPE_TABLE[][4] =
 {
-  if( type == GradientVisual::LINEAR )
   {
-   if( units == Toolkit::GradientVisual::Units::USER_SPACE )
-   {
-     return VisualFactoryCache::GRADIENT_SHADER_LINEAR_USER_SPACE;
-   }
-   return VisualFactoryCache::GRADIENT_SHADER_LINEAR_BOUNDING_BOX;
-  }
-  else if( units == Toolkit::GradientVisual::Units::USER_SPACE )
+    VisualFactoryCache::GRADIENT_SHADER_LINEAR_USER_SPACE,
+    VisualFactoryCache::GRADIENT_SHADER_LINEAR_BOUNDING_BOX,
+    VisualFactoryCache::GRADIENT_SHADER_LINEAR_USER_SPACE_ROUNDED_CORNER,
+    VisualFactoryCache::GRADIENT_SHADER_LINEAR_BOUNDING_BOX_ROUNDED_CORNER
+  },
   {
-    return VisualFactoryCache::GRADIENT_SHADER_RADIAL_USER_SPACE;
+    VisualFactoryCache::GRADIENT_SHADER_RADIAL_USER_SPACE,
+    VisualFactoryCache::GRADIENT_SHADER_RADIAL_BOUNDING_BOX,
+    VisualFactoryCache::GRADIENT_SHADER_RADIAL_USER_SPACE_ROUNDED_CORNER,
+    VisualFactoryCache::GRADIENT_SHADER_RADIAL_BOUNDING_BOX_ROUNDED_CORNER
   }
-
-  return VisualFactoryCache::GRADIENT_SHADER_RADIAL_BOUNDING_BOX;
-}
+};
 
 const char* VERTEX_SHADER[] =
 {
 // vertex shader for gradient units as OBJECT_BOUNDING_BOX
- DALI_COMPOSE_SHADER(
+DALI_COMPOSE_SHADER(
   attribute mediump vec2 aPosition;\n
   uniform highp   mat4 uMvpMatrix;\n
   uniform mediump vec3 uSize;\n
@@ -150,6 +148,79 @@ DALI_COMPOSE_SHADER(
     \n
     vTexCoord = (uAlignmentMatrix*vertexPosition.xyw).xy;\n
   }\n
+),
+
+// vertex shader for gradient units as OBJECT_BOUNDING_BOX with corner radius
+DALI_COMPOSE_SHADER(
+  attribute mediump vec2 aPosition;\n
+  uniform highp   mat4 uMvpMatrix;\n
+  uniform mediump vec3 uSize;\n
+  uniform mediump mat3 uAlignmentMatrix;\n
+  varying mediump vec2 vTexCoord;\n
+  varying mediump vec2 vPosition;\n
+  varying mediump vec2 vRectSize;\n
+  \n
+  //Visual size and offset
+  uniform mediump vec2 offset;\n
+  uniform mediump vec2 size;\n
+  uniform mediump vec4 offsetSizeMode;\n
+  uniform mediump vec2 origin;\n
+  uniform mediump vec2 anchorPoint;\n
+  uniform mediump float cornerRadius;\n
+
+  vec4 ComputeVertexPosition()\n
+  {\n
+    vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );\n
+    vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);\n
+    vRectSize = visualSize * 0.5 - cornerRadius;\n
+    vPosition = aPosition * visualSize;\n
+    return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );\n
+  }\n
+
+  void main()\n
+  {\n
+    mediump vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\n
+    vTexCoord = (uAlignmentMatrix*vertexPosition.xyw).xy;\n
+    \n
+    gl_Position = uMvpMatrix * ComputeVertexPosition();\n
+  }\n
+),
+
+// vertex shader for gradient units as USER_SPACE with corner radius
+DALI_COMPOSE_SHADER(
+  attribute mediump vec2 aPosition;\n
+  uniform highp   mat4 uMvpMatrix;\n
+  uniform mediump vec3 uSize;\n
+  uniform mediump mat3 uAlignmentMatrix;\n
+  varying mediump vec2 vTexCoord;\n
+  varying mediump vec2 vPosition;\n
+  varying mediump vec2 vRectSize;\n
+  \n
+  //Visual size and offset
+  uniform mediump vec2 offset;\n
+  uniform mediump vec2 size;\n
+  uniform mediump vec4 offsetSizeMode;\n
+  uniform mediump vec2 origin;\n
+  uniform mediump vec2 anchorPoint;\n
+  uniform mediump float cornerRadius;\n
+
+  vec4 ComputeVertexPosition()\n
+  {\n
+    vec2 visualSize = mix(uSize.xy*size, size, offsetSizeMode.zw );\n
+    vec2 visualOffset = mix( offset, offset/uSize.xy, offsetSizeMode.xy);\n
+    vRectSize = visualSize * 0.5 - cornerRadius;\n
+    vPosition = aPosition * visualSize;\n
+    return vec4( (aPosition + anchorPoint)*visualSize + (visualOffset + origin)*uSize.xy, 0.0, 1.0 );\n
+  }\n
+
+  void main()\n
+  {\n
+    mediump vec4 vertexPosition = vec4(aPosition, 0.0, 1.0);\n
+    vertexPosition.xyz *= uSize;\n
+    gl_Position = uMvpMatrix * ComputeVertexPosition();\n
+    \n
+    vTexCoord = (uAlignmentMatrix*vertexPosition.xyw).xy;\n
+  }\n
 )
 };
 
@@ -179,6 +250,42 @@ DALI_COMPOSE_SHADER(
   {\n
     gl_FragColor = texture2D( sTexture, vec2( length(vTexCoord), 0.5 ) ) * vec4(mixColor, 1.0) * uColor;\n
   }\n
+),
+
+// fragment shader for linear gradient with corner radius
+DALI_COMPOSE_SHADER(
+  uniform sampler2D sTexture;\n // sampler1D?
+  uniform lowp vec4 uColor;\n
+  uniform lowp vec3 mixColor;\n
+  uniform mediump float cornerRadius;\n
+  varying mediump vec2 vTexCoord;\n
+  varying mediump vec2 vPosition;\n
+  varying mediump vec2 vRectSize;\n
+  \n
+  void main()\n
+  {\n
+    mediump float dist = length( max( abs( vPosition ), vRectSize ) - vRectSize ) - cornerRadius;\n
+    gl_FragColor = texture2D( sTexture, vec2( vTexCoord.y, 0.5 ) ) * vec4(mixColor, 1.0) * uColor;\n
+    gl_FragColor *= 1.0 - smoothstep( -1.0, 1.0, dist );\n
+  }\n
+),
+
+// fragment shader for radial gradient with corner radius
+DALI_COMPOSE_SHADER(
+  uniform sampler2D sTexture;\n // sampler1D?
+  uniform lowp vec4 uColor;\n
+  uniform lowp vec3 mixColor;\n
+  uniform mediump float cornerRadius;\n
+  varying mediump vec2 vTexCoord;\n
+  varying mediump vec2 vPosition;\n
+  varying mediump vec2 vRectSize;\n
+  \n
+  void main()\n
+  {\n
+    mediump float dist = length( max( abs( vPosition ), vRectSize ) - vRectSize ) - cornerRadius;\n
+    gl_FragColor = texture2D( sTexture, vec2( length(vTexCoord), 0.5 ) ) * vec4(mixColor, 1.0) * uColor;\n
+    gl_FragColor *= 1.0 - smoothstep( -1.0, 1.0, dist );\n
+  }\n
 )
 };
 
@@ -321,11 +428,12 @@ void GradientVisual::InitializeRenderer()
   Geometry geometry = mFactoryCache.GetGeometry( VisualFactoryCache::QUAD_GEOMETRY );
 
   Toolkit::GradientVisual::Units::Type gradientUnits = mGradient->GetGradientUnits();
-  VisualFactoryCache::ShaderType shaderType = GetShaderType( mGradientType, gradientUnits );
+  int roundedCorner = IsRoundedCornerRequired() ? 1 : 0;
+  VisualFactoryCache::ShaderType shaderType = SHADER_TYPE_TABLE[mGradientType][gradientUnits + roundedCorner * 2];
   Shader shader = mFactoryCache.GetShader( shaderType );
   if( !shader )
   {
-    shader = Shader::New( VERTEX_SHADER[gradientUnits], FRAGMENT_SHADER[ mGradientType ] );
+    shader = Shader::New( VERTEX_SHADER[gradientUnits + roundedCorner * 2], FRAGMENT_SHADER[ mGradientType + roundedCorner * 2 ] );
     mFactoryCache.SaveShader( shaderType, shader );
   }
 
index e3629d3..f22fb86 100644 (file)
@@ -66,6 +66,10 @@ public:
     GRADIENT_SHADER_LINEAR_BOUNDING_BOX,
     GRADIENT_SHADER_RADIAL_USER_SPACE,
     GRADIENT_SHADER_RADIAL_BOUNDING_BOX,
+    GRADIENT_SHADER_LINEAR_USER_SPACE_ROUNDED_CORNER,
+    GRADIENT_SHADER_LINEAR_BOUNDING_BOX_ROUNDED_CORNER,
+    GRADIENT_SHADER_RADIAL_USER_SPACE_ROUNDED_CORNER,
+    GRADIENT_SHADER_RADIAL_BOUNDING_BOX_ROUNDED_CORNER,
     IMAGE_SHADER,
     IMAGE_SHADER_ATLAS_DEFAULT_WRAP,
     IMAGE_SHADER_ATLAS_CUSTOM_WRAP,
index 3b8b861..b05ea6e 100644 (file)
@@ -31,7 +31,7 @@ namespace Toolkit
 
 const unsigned int TOOLKIT_MAJOR_VERSION = 1;
 const unsigned int TOOLKIT_MINOR_VERSION = 9;
-const unsigned int TOOLKIT_MICRO_VERSION = 10;
+const unsigned int TOOLKIT_MICRO_VERSION = 12;
 const char * const TOOLKIT_BUILD_DATE    = __DATE__ " " __TIME__;
 
 #ifdef DEBUG_ENABLED
index 4cc9626..0c0dcc3 100644 (file)
@@ -1,6 +1,6 @@
-Name:       dali-toolkit
+Name:       dali2-toolkit
 Summary:    Dali 3D engine Toolkit
-Version:    1.9.10
+Version:    1.9.12
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0 and BSD-3-Clause and MIT
@@ -12,13 +12,10 @@ Requires(postun): /sbin/ldconfig
 BuildRequires:  cmake
 BuildRequires:  pkgconfig
 BuildRequires:  pkgconfig(dlog)
-BuildRequires:  pkgconfig(dali-core)
-BuildRequires:  pkgconfig(dali-adaptor)
+BuildRequires:  pkgconfig(dali2-core)
+BuildRequires:  pkgconfig(dali2-adaptor)
 BuildRequires:  gettext
 BuildRequires:  pkgconfig(libtzplatform-config)
-Provides: libdali-toolkit-cxx11.so
-Provides: libdali-toolkit-cxx11.so.0
-Provides: libdali-toolkit-cxx11.so.0.0.0
 
 #############################
 # profile setup
@@ -98,7 +95,7 @@ Application development package for Dali 3D engine toolkit - headers and package
 
 # PO
 {
-cd %{_builddir}/dali-toolkit-%{version}/dali-toolkit/po
+cd %{_builddir}/dali2-toolkit-%{version}/dali-toolkit/po
 for language in *.po
 do
   language=${language%.po}
@@ -120,7 +117,7 @@ LDFLAGS+=" --coverage "
 %endif
 
 libtoolize --force
-cd %{_builddir}/dali-toolkit-%{version}/build/tizen
+cd %{_builddir}/dali2-toolkit-%{version}/build/tizen
 
 DALI_DATA_RW_DIR="%{dali_data_rw_dir}" ; export DALI_DATA_RW_DIR
 DALI_DATA_RO_DIR="%{dali_data_ro_dir}" ; export DALI_DATA_RO_DIR
@@ -151,7 +148,7 @@ pushd %{_builddir}/%{name}-%{version}/build/tizen
 
 # PO
 {
-cd %{_builddir}/dali-toolkit-%{version}/dali-toolkit/po
+cd %{_builddir}/dali2-toolkit-%{version}/dali-toolkit/po
 for language in *.mo
 do
   language=${language%.mo}
@@ -161,13 +158,6 @@ done
 } &> /dev/null
 popd
 
-# Create links to ensure linking with cxx11 library is preserved
-pushd  %{buildroot}%{_libdir}
-ln -sf libdali-toolkit.so libdali-toolkit-cxx11.so
-ln -sf libdali-toolkit.so libdali-toolkit-cxx11.so.0
-ln -sf libdali-toolkit.so libdali-toolkit-cxx11.so.0.0.0
-popd
-
 # Remove default style and style images which are for Linux build
 rm -rf %{buildroot}%{dali_toolkit_style_files}/*
 
@@ -355,14 +345,13 @@ esac
 %manifest dali-toolkit.manifest
 %endif
 %defattr(-,root,root,-)
-%{_libdir}/libdali-toolkit-cxx11.so*
-%{_libdir}/libdali-toolkit.so*
+%{_libdir}/libdali2-toolkit.so*
 %license LICENSE
 
 %files devel
 %defattr(-,root,root,-)
 %{dev_include_path}/dali-toolkit/*
-%{_libdir}/pkgconfig/dali-toolkit.pc
+%{_libdir}/pkgconfig/dali2-toolkit.pc
 
 %files resources_360x360
 %manifest dali-toolkit-resources.manifest