X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Finternal%2Ffilters%2Fimage-filter.cpp;h=c155afb67c22ce724f3cf1368cc09db5fe3778bf;hb=5a936aac073676657d48db5c42e5d2ad3f5cac9f;hp=80e69c267d52c88092678f83e10b013c56d03090;hpb=57869973578f6a0b0f836d396c7232ddb8302c6b;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/internal/filters/image-filter.cpp b/dali-toolkit/internal/filters/image-filter.cpp index 80e69c2..c155afb 100644 --- a/dali-toolkit/internal/filters/image-filter.cpp +++ b/dali-toolkit/internal/filters/image-filter.cpp @@ -22,24 +22,20 @@ namespace Dali { - namespace Toolkit { - 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 ) +: mBackgroundColor(Vector4(1.0f, 1.0f, 1.0f, 0.0f)), + mTargetSize(Vector2::ZERO), + mPixelFormat(Pixel::RGBA8888), + mRefreshOnDemand(false) { } @@ -47,32 +43,32 @@ ImageFilter::~ImageFilter() { } -void ImageFilter::SetRefreshOnDemand( bool onDemand ) +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 ) +void ImageFilter::SetSize(const Vector2& size) { mTargetSize = size; } -void ImageFilter::SetPixelFormat( Pixel::Format pixelFormat ) +void ImageFilter::SetPixelFormat(Pixel::Format pixelFormat) { mPixelFormat = pixelFormat; } -void ImageFilter::SetKernel( const FilterKernel& kernel ) +void ImageFilter::SetKernel(const FilterKernel& kernel) { mKernel = kernel; } @@ -87,38 +83,54 @@ size_t ImageFilter::GetKernelSize() const return mKernel.size(); } -void ImageFilter::CreateKernel( const float* weights, size_t count ) +void ImageFilter::CreateKernel(const float* weights, size_t count) { - if( (mTargetSize.width * mTargetSize.height ) > 0.0f ) + if((mTargetSize.width * mTargetSize.height) > 0.0f) { - Vector2 pixelsToUV( 1.0f / mTargetSize.width, 1.0f / mTargetSize.height ); + Vector2 pixelsToUV(1.0f / mTargetSize.width, 1.0f / mTargetSize.height); mKernel.clear(); - mKernel.push_back( Vector3( 0.0f, 0.0f, weights[0] ) ); - for( size_t i = 0; i < count >> 1; ++i ) + mKernel.push_back(Vector3(0.0f, 0.0f, weights[0])); + for(size_t i = 0; i < count >> 1; ++i) { float offset = 1.5f + (i << 1); - mKernel.push_back( Vector3( pixelsToUV.x * offset, pixelsToUV.y * offset, weights[(i << 1) + 1] ) ); - mKernel.push_back( Vector3( -pixelsToUV.x * offset, -pixelsToUV.y * offset, weights[(i << 1) + 2] ) ); + mKernel.push_back(Vector3(pixelsToUV.x * offset, pixelsToUV.y * offset, weights[(i << 1) + 1])); + mKernel.push_back(Vector3(-pixelsToUV.x * offset, -pixelsToUV.y * offset, weights[(i << 1) + 2])); } } } -void ImageFilter::SetRootActor( Actor rootActor ) +void ImageFilter::SetRootActor(Actor rootActor) { mRootActor = rootActor; } -void ImageFilter::SetBackgroundColor( const Vector4& color ) +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