-//
-// 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 <dali-toolkit/internal/controls/image-view/masked-image-view-impl.h>
// EXTERNAL INCLUDES
#include <sstream>
-
-// INTERNAL INCLUDES
-#include <dali-toolkit/internal/controls/image-view/masked-image-view-impl.h>
+#include <dali/public-api/animation/constraint.h>
+#include <dali/public-api/animation/constraints.h>
+#include <dali/public-api/common/stage.h>
+#include <dali/public-api/render-tasks/render-task-list.h>
+#include <dali/public-api/shader-effects/shader-effect.h>
namespace Dali
{
" gl_FragColor = texture2D(sTexture, vTexCoord) * vec4(1,1,1,mask.a); \n"
"}";
-Vector2 EqualToConstraintVector2( const Vector2& current, const PropertyInput& property )
-{
- return property.GetVector2();
-}
-
Vector2 GetSizeForAspectRatio( const Vector2& targetSize, float aspectRatio )
{
Vector2 sizeToKeepAspectRatio( targetSize );
}
}
-void MaskedImageView::OnPan(Actor source, PanGesture gesture)
+void MaskedImageView::OnPan(Actor source, const PanGesture& gesture)
{
// Used to flag whether edit mode is setting properties
mSelfPropertySetting = true;
mSelfPropertySetting = false;
}
-void MaskedImageView::OnPinch(Actor actor, PinchGesture pinch)
+void MaskedImageView::OnPinch(Actor actor, const PinchGesture& pinch)
{
// Used to flag whether edit mode is setting properties
mSelfPropertySetting = true;
}
MaskedImageView::MaskedImageView()
-: ControlImpl(true),
+: Control( ControlBehaviour( REQUIRES_TOUCH_EVENTS | REQUIRES_STYLE_CHANGE_SIGNALS ) ),
mEditMode( Dali::Toolkit::MaskedImageView::EDIT_DISABLED ),
mSelfPropertySetting( false ),
mSourceRotation( Dali::Toolkit::MaskedImageView::ROTATE_0 ),
self.Add( mSourceImageActor );
mSourceImageActor.SetParentOrigin( ParentOrigin::CENTER );
mSourceImageActor.SetPositionInheritanceMode( DONT_INHERIT_POSITION );
- mSourceImageActor.SetInheritRotation( false );
+ mSourceImageActor.SetInheritOrientation( false );
mSourceImageActor.SetInheritScale( false );
mSourceImageActor.SetColorMode( USE_OWN_COLOR );
mSourceImageActor.SetSize( Vector3::ONE );
// Create actor to display result of off-screen rendering
mDestinationImageActor = ImageActor::New( mDestinationImage );
self.Add( mDestinationImageActor );
- mDestinationImageActor.ApplyConstraint( Constraint::New<Vector3>( Actor::SIZE, ParentSource( Actor::SIZE ), EqualToConstraint() ) );
mDestinationImageActor.SetPositionInheritanceMode( Dali::USE_PARENT_POSITION );
// Start the masking operation
mRenderTask.SetInputEnabled( false );
mRenderTask.SetExclusive( true );
mRenderTask.SetClearEnabled( true );
- mRenderTask.ApplyConstraint( Constraint::New<Vector4>( RenderTask::CLEAR_COLOR,
- Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::BACKGROUND_COLOR ] ),
- EqualToConstraint() ) );
+
+ Constraint clearColorConstraint = Constraint::New<Vector4>( mRenderTask, RenderTask::Property::CLEAR_COLOR, EqualToConstraint() );
+ clearColorConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::BACKGROUND_COLOR ] ) );
+ clearColorConstraint.Apply();
mRenderTask.FinishedSignal().Connect( this, &MaskedImageView::OnRenderTaskFinished );
// Edit mode initialization
ShaderEffect::GeometryHints( ShaderEffect::HINT_BLENDING ) );
shader.SetUniform( "uTargetSize", mTargetSize );
+
shader.SetUniform( "uSourceSize", mTargetSize );
- shader.ApplyConstraint( Constraint::New<Vector2>( shader.GetPropertyIndex( "uSourceSize" ),
- Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_SIZE ] ),
- EqualToConstraintVector2 ) );
+ Constraint sourceSizeConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uSourceSize" ), EqualToConstraint() );
+ sourceSizeConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_SIZE ] ) );
+ sourceSizeConstraint.Apply();
+
shader.SetUniform( "uSourceOffset", Vector2::ZERO );
- shader.ApplyConstraint( Constraint::New<Vector2>( shader.GetPropertyIndex( "uSourceOffset" ),
- Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ] ),
- EqualToConstraintVector2 ) );
+ Constraint sourceOffsetConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uSourceOffset" ), EqualToConstraint() );
+ sourceOffsetConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::SOURCE_OFFSET ] ) );
+ sourceOffsetConstraint.Apply();
+
shader.SetUniform( "uMaskSize", mTargetSize );
- shader.ApplyConstraint( Constraint::New<Vector2>( shader.GetPropertyIndex( "uMaskSize" ),
- Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_SIZE ] ),
- EqualToConstraintVector2 ) );
+ Constraint maskSizeConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uMaskSize" ), EqualToConstraint() );
+ maskSizeConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_SIZE ] ) );
+ maskSizeConstraint.Apply();
+
shader.SetUniform( "uMaskOffset", mTargetSize );
- shader.ApplyConstraint( Constraint::New<Vector2>( shader.GetPropertyIndex( "uMaskOffset" ),
- Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_OFFSET ] ),
- EqualToConstraintVector2 ) );
+ Constraint maskOffsetConstraint = Constraint::New<Vector2>( shader, shader.GetPropertyIndex( "uMaskOffset" ), EqualToConstraint() );
+ maskOffsetConstraint.AddSource( Source( self, mCustomProperties[ Dali::Toolkit::MaskedImageView::MASK_OFFSET ] ) );
+ maskOffsetConstraint.Apply();
shader.SetEffectImage( mMaskImage );
mSourceImageActor.SetShaderEffect( shader );
}
}
+void MaskedImageView::OnControlSizeSet( const Vector3& targetSize )
+{
+ mDestinationImageActor.SetSize(targetSize);
+}
+
void MaskedImageView::OnRenderTaskFinished( Dali::RenderTask& renderTask )
{
Toolkit::MaskedImageView handle( GetOwner() );