Add null check for mTextureSet.
[platform/core/uifw/dali-toolkit.git] / dali-toolkit / internal / filters / image-filter.cpp
index 7ecca05..1d786d6 100644 (file)
@@ -1,18 +1,19 @@
-//
-// Copyright (c) 2014 Samsung Electronics Co., Ltd.
-//
-// Licensed under the Flora License, Version 1.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://floralicense.org/license/
-//
-// 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.
-//
+/*
+ * 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 "image-filter.h"
@@ -30,15 +31,14 @@ namespace Internal
 
 namespace
 {
-
+const float ARBITRARY_FIELD_OF_VIEW = Math::PI / 4.0f;
 } // namespace
 
 ImageFilter::ImageFilter()
 : mBackgroundColor( Vector4( 1.0f, 1.0f, 1.0f, 0.0f ) ),
   mTargetSize( Vector2::ZERO ),
   mPixelFormat( Pixel::RGBA8888 ),
-  mRefreshOnDemand( false ),
-  mDebugRender( false )
+  mRefreshOnDemand( false )
 {
 }
 
@@ -51,14 +51,14 @@ void ImageFilter::SetRefreshOnDemand( bool onDemand )
   mRefreshOnDemand = onDemand;
 }
 
-void ImageFilter::SetInputImage( Image image )
+void ImageFilter::SetInputTexture( Texture texture )
 {
-  mInputImage = image;
+  mInputTexture = texture;
 }
 
-void ImageFilter::SetOutputImage( FrameBufferImage image )
+void ImageFilter::SetOutputFrameBuffer( FrameBuffer frameBuffer )
 {
-  mOutputImage = image;
+  mOutputFrameBuffer = frameBuffer;
 }
 
 void ImageFilter::SetSize( const Vector2& size )
@@ -115,11 +115,28 @@ void ImageFilter::SetBackgroundColor( const Vector4& color )
   mBackgroundColor = color;
 }
 
-void ImageFilter::RenderDebug( bool flag )
+void ImageFilter::SetupCamera()
 {
-  mDebugRender = flag;
+  if( !mCameraActor )
+  {
+    // create a camera for the render task, corresponding to its render target size
+    mCameraActor = CameraActor::New(mTargetSize);
+    mCameraActor.SetProperty( Actor::Property::PARENT_ORIGIN, ParentOrigin::CENTER );
+    mCameraActor.SetInvertYAxis( true );
+    mRootActor.Add( mCameraActor );
+  }
+  else
+  {
+    // place the camera for the render task, corresponding to its render target size
+    mCameraActor.SetFieldOfView(ARBITRARY_FIELD_OF_VIEW);
+    mCameraActor.SetNearClippingPlane(1.0f);
+    mCameraActor.SetAspectRatio(mTargetSize.width / mTargetSize.height);
+    mCameraActor.SetType(Dali::Camera::FREE_LOOK); // camera orientation based solely on actor
+    mCameraActor.SetProperty( Actor::Property::POSITION, Vector3( 0.0f, 0.0f, ( (mTargetSize.height * 0.5f) / tanf(ARBITRARY_FIELD_OF_VIEW * 0.5f) ) ) );
+  }
 }
 
+
 } // namespace Internal
 
 } // namespace Toolkit