[dali_1.2.59] Merge branch 'devel/master' 92/153792/1
authorFrancisco Santos <f1.santos@samsung.com>
Fri, 29 Sep 2017 12:20:32 +0000 (13:20 +0100)
committerFrancisco Santos <f1.santos@samsung.com>
Fri, 29 Sep 2017 12:20:32 +0000 (13:20 +0100)
Change-Id: I39f7ed52685d4b64cf7722314b105bc34deeb9fb

examples-reel/dali-examples-reel.cpp
examples/image-view-url/image-view-url-example.cpp [new file with mode: 0644]
packaging/com.samsung.dali-demo.spec
resources/po/en_US.po
shared/dali-demo-strings.h

index 170d695..ad5575c 100644 (file)
@@ -54,6 +54,7 @@ int DALI_EXPORT_API main(int argc, char **argv)
   demo.AddExample(Example("image-view-alpha-blending.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_ALPHA_BLENDING));
   demo.AddExample(Example("image-view-pixel-area.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_PIXEL_AREA));
   demo.AddExample(Example("image-view-svg.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_SVG));
+  demo.AddExample(Example("image-view-url.example", DALI_DEMO_STR_TITLE_IMAGE_VIEW_URL));
   demo.AddExample(Example("line-mesh.example", DALI_DEMO_STR_TITLE_LINE_MESH));
   demo.AddExample(Example("logging.example", DALI_DEMO_STR_TITLE_LOGGING));
   demo.AddExample(Example("magnifier.example", DALI_DEMO_STR_TITLE_MAGNIFIER));
diff --git a/examples/image-view-url/image-view-url-example.cpp b/examples/image-view-url/image-view-url-example.cpp
new file mode 100644 (file)
index 0000000..2bd3518
--- /dev/null
@@ -0,0 +1,218 @@
+/*
+ * Copyright (c) 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.
+ *
+ */
+
+#include <dali-toolkit/dali-toolkit.h>
+#include <dali-toolkit/devel-api/controls/buttons/button-devel.h>
+#include <dali-toolkit/devel-api/visuals/visual-properties-devel.h>
+#include <dali-toolkit/devel-api/image-loader/texture-manager.h>
+
+#include "shared/view.h"
+
+using namespace Dali;
+
+namespace
+{
+const char* BIG_TEST_IMAGE( DEMO_IMAGE_DIR "book-landscape-cover.jpg" );
+
+const char * const APPLICATION_TITLE( "Image View URL" );
+const char * const TOOLBAR_IMAGE( DEMO_IMAGE_DIR "top-bar.png" );
+const char * const BUTTON_ICON( DEMO_IMAGE_DIR "icon-change.png" );
+const char * const BUTTON_ICON_SELECTED( DEMO_IMAGE_DIR "icon-change-selected.png" );
+
+const char* FILTER_FRAGMENT_SOURCE =
+{
+ "precision highp float;\n"
+ "varying mediump vec2 vTexCoord;\n"
+ "uniform sampler2D sTexture;\n"
+ "uniform mediump float uDelta;\n"
+ "void main()\n"
+ "{\n"
+ "  vec4 color = vec4(0.0);\n"
+ "  vec2 texCoord = vTexCoord * 2. - 1.;\n"
+ "  mat2 rotation = mat2(cos(uDelta), -sin(uDelta), sin(uDelta), cos(uDelta));"
+ "  texCoord = (rotation * texCoord) * .5 + .5;\n"
+ "  color += texture2D( sTexture, texCoord );\n"
+ "  gl_FragColor = color;\n"
+ "}\n"
+};
+
+const char* DELTA_UNIFORM_NAME = "uDelta";
+
+const Vector2 TARGET_SIZE(800.f, 800.f);
+}
+
+class ImageViewUrlApp : public ConnectionTracker
+{
+public:
+  ImageViewUrlApp( Application& application )
+  : mApplication( application )
+  {
+    // Connect to the Application's Init signal
+    mApplication.InitSignal().Connect( this, &ImageViewUrlApp::Create );
+  }
+
+  ~ImageViewUrlApp() = default;
+
+private:
+  // The Init signal is received once (only) during the Application lifetime
+  void Create( Application& application )
+  {
+    // Get a handle to the stage
+    Stage stage = Stage::GetCurrent();
+    stage.KeyEventSignal().Connect(this, &ImageViewUrlApp::OnKeyEvent);
+
+    Toolkit::ToolBar toolBar;
+    Toolkit::Control background;
+    // Creates a default view with a default tool bar.
+    mContent = DemoHelper::CreateView( application,
+                                            background,
+                                            toolBar,
+                                            "",
+                                            TOOLBAR_IMAGE,
+                                            APPLICATION_TITLE );
+
+    // Add a button to switch the scene. (right of toolbar)
+    Toolkit::PushButton switchButton = Toolkit::PushButton::New();
+    switchButton.SetProperty( Toolkit::DevelButton::Property::UNSELECTED_BACKGROUND_VISUAL, BUTTON_ICON );
+    switchButton.SetProperty( Toolkit::DevelButton::Property::SELECTED_BACKGROUND_VISUAL, BUTTON_ICON_SELECTED );
+    switchButton.ClickedSignal().Connect( this, &ImageViewUrlApp::OnButtonClicked );
+    toolBar.AddControl( switchButton,
+                        DemoHelper::DEFAULT_VIEW_STYLE.mToolBarButtonPercentage,
+                        Toolkit::Alignment::HorizontalRight,
+                        DemoHelper::DEFAULT_MODE_SWITCH_PADDING  );
+
+    CreateRenderTask(  );
+    CreateScene( );
+  }
+
+  void CreateRenderTask()
+  {
+    auto rootActor = Stage::GetCurrent().GetRootLayer();
+
+    auto cameraActor = CameraActor::New(TARGET_SIZE);
+    cameraActor.SetParentOrigin(ParentOrigin::CENTER);
+    cameraActor.SetInvertYAxis(true);
+    rootActor.Add(cameraActor);
+
+    {
+      // create actor to render input with applied shader
+      mActorForInput = Toolkit::ImageView::New(BIG_TEST_IMAGE);
+      mActorForInput.SetParentOrigin(ParentOrigin::CENTER);
+      mActorForInput.SetSize(TARGET_SIZE);
+      Property::Map customShader;
+      customShader[Toolkit::Visual::Shader::Property::FRAGMENT_SHADER] = FILTER_FRAGMENT_SOURCE;
+      Property::Map visualMap;
+      visualMap.Insert(Toolkit::DevelVisual::Property::SHADER, customShader);
+      mActorForInput.SetProperty(Toolkit::ImageView::Property::IMAGE, visualMap);
+
+      mDeltaPropertyIndex = mActorForInput.RegisterProperty(DELTA_UNIFORM_NAME, 0.f);
+
+      rootActor.Add(mActorForInput);
+
+      RenderTaskList taskList = Stage::GetCurrent().GetRenderTaskList();
+
+      // perform a horizontal blur targeting the internal buffer
+      auto renderTask = taskList.CreateTask();
+      renderTask.SetRefreshRate(RenderTask::REFRESH_ALWAYS);
+      renderTask.SetSourceActor(mActorForInput);
+      renderTask.SetExclusive(true);
+      renderTask.SetInputEnabled(false);
+      renderTask.SetClearColor(Vector4(1.,0.,0.,1.));
+      renderTask.SetClearEnabled(true);
+      renderTask.SetCameraActor(cameraActor);
+
+      mOutputTexture = Texture::New(TextureType::TEXTURE_2D,
+                                    Pixel::RGB888,
+                                    unsigned(TARGET_SIZE.width),
+                                    unsigned(TARGET_SIZE.height));
+      auto framebuffer = FrameBuffer::New(TARGET_SIZE.width, TARGET_SIZE.height, Pixel::RGB888);
+      framebuffer.AttachColorTexture(mOutputTexture);
+
+      renderTask.SetFrameBuffer(framebuffer);
+    }
+    {
+      // animate the shader uniform
+      mAnimation = Animation::New(10.f);
+
+      mActorForInput.SetProperty( mDeltaPropertyIndex, 0.f );
+      mAnimation.AnimateTo( Property( mActorForInput, mDeltaPropertyIndex ), Math::PI * 2.f );
+      mAnimation.SetLooping(true);
+      mAnimation.Play();
+    }
+  }
+
+  void CreateScene( )
+  {
+    auto url = Dali::Toolkit::TextureManager::AddTexture(mOutputTexture);
+    mImageView = Toolkit::ImageView::New(url);
+
+    mImageView.SetParentOrigin(ParentOrigin::CENTER);
+    mImageView.SetAnchorPoint(AnchorPoint::CENTER);
+    mContent.Add(mImageView);
+  }
+
+  bool OnButtonClicked(Toolkit::Button button)
+  {
+    if(mAnimation.GetState() == Animation::State::PLAYING)
+    {
+      mAnimation.Pause();
+    }
+    else
+    {
+      mAnimation.Play();
+    }
+    return true;
+  }
+
+  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;
+  Layer mContent;
+  Toolkit::ImageView mImageView;
+  Animation mAnimation;
+  Actor mActorForInput;
+  Property::Index mDeltaPropertyIndex;
+  Texture mOutputTexture;
+};
+
+void RunTest( Application& application )
+{
+  ImageViewUrlApp 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;
+}
index f270e4b..b9e60cc 100755 (executable)
@@ -2,7 +2,7 @@
 
 Name:       com.samsung.dali-demo
 Summary:    The OpenGLES Canvas Core Demo
-Version:    1.2.58
+Version:    1.2.59
 Release:    1
 Group:      System/Libraries
 License:    Apache-2.0
index fd64d2a..27b618f 100755 (executable)
@@ -64,6 +64,9 @@ msgstr "Image View Pixel Area"
 msgid "DALI_DEMO_STR_TITLE_IMAGE_VIEW_SVG"
 msgstr "Image View SVG"
 
+msgid "DALI_DEMO_STR_TITLE_IMAGE_VIEW_URL"
+msgstr "Image View URL"
+
 msgid "DALI_DEMO_STR_TITLE_ITEM_VIEW"
 msgstr "Item View"
 
index e95d469..64c617d 100644 (file)
@@ -56,6 +56,7 @@ extern "C"
 #define DALI_DEMO_STR_TITLE_IMAGE_VIEW_ALPHA_BLENDING   dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_IMAGE_VIEW_ALPHA_BLENDING")
 #define DALI_DEMO_STR_TITLE_IMAGE_VIEW_PIXEL_AREA       dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_IMAGE_VIEW_PIXEL_AREA")
 #define DALI_DEMO_STR_TITLE_IMAGE_VIEW_SVG              dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_IMAGE_VIEW_SVG")
+#define DALI_DEMO_STR_TITLE_IMAGE_VIEW_URL              dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_IMAGE_VIEW_URL")
 #define DALI_DEMO_STR_TITLE_ITEM_VIEW                   dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_ITEM_VIEW")
 #define DALI_DEMO_STR_TITLE_LIGHTS_AND_SHADOWS          dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_LIGHTS_AND_SHADOWS")
 #define DALI_DEMO_STR_TITLE_LINE_MESH                   dgettext(DALI_DEMO_DOMAIN_LOCAL, "DALI_DEMO_STR_TITLE_LINE_MESH")
@@ -126,6 +127,7 @@ extern "C"
 #define DALI_DEMO_STR_TITLE_IMAGE_VIEW_ALPHA_BLENDING   "Image View Alpha Blending"
 #define DALI_DEMO_STR_TITLE_IMAGE_VIEW_PIXEL_AREA       "Image View Pixel Area"
 #define DALI_DEMO_STR_TITLE_IMAGE_VIEW_SVG              "Image View SVG"
+#define DALI_DEMO_STR_TITLE_IMAGE_VIEW_URL              "Image View URL"
 #define DALI_DEMO_STR_TITLE_ITEM_VIEW                   "Item View"
 #define DALI_DEMO_STR_TITLE_LIGHTS_AND_SHADOWS          "Lights and shadows"
 #define DALI_DEMO_STR_TITLE_LINE_MESH                   "Mesh Line"