Merge remote-tracking branch 'origin/tizen' into new_text 09/37109/2
authorPaul Wisbey <p.wisbey@samsung.com>
Thu, 19 Mar 2015 09:55:27 +0000 (09:55 +0000)
committerPaul Wisbey <p.wisbey@samsung.com>
Thu, 19 Mar 2015 09:58:34 +0000 (09:58 +0000)
Conflicts:
automated-tests/src/dali-toolkit/utc-Dali-Builder.cpp
dali-toolkit/internal/controls/text-input/text-input-decorator-impl.cpp
dali-toolkit/internal/controls/text-input/text-input-impl.cpp
dali-toolkit/internal/controls/text-view/text-view-impl.cpp

Change-Id: Ibbbecdb2962e4f0cfce3ff0e7c91efcd8bfb2170

1  2 
automated-tests/src/dali-toolkit/CMakeLists.txt
build/tizen/configure.ac
dali-toolkit/dali-toolkit.h
dali-toolkit/internal/text/clipping/text-clipper.cpp
dali-toolkit/public-api/file.list

Simple merge
Simple merge
index 416fdba,0000000..b2478e4
mode 100644,000000..100644
--- /dev/null
@@@ -1,157 -1,0 +1,156 @@@
-   mOffscreenRootActor.SetInheritRotation( false );
 +/*
 + * Copyright (c) 2015 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/text/clipping/text-clipper.h>
 +
 +// EXTERNAL INCLUDES
 +#include <algorithm>
 +#include <dali/public-api/common/stage.h>
 +#include <dali/public-api/render-tasks/render-task-list.h>
 +#include <dali/integration-api/debug.h>
 +
 +namespace
 +{
 +
 +// Currently on desktop machines 2k x 2k is the maximum frame buffer size, on target is 4k x 4k.
 +const float MAX_OFFSCREEN_RENDERING_SIZE = 2048.f;
 +
 +} // namespace
 +
 +
 +namespace Dali
 +{
 +
 +namespace Toolkit
 +{
 +
 +namespace Text
 +{
 +
 +ClipperPtr Clipper::New( const Vector2& size )
 +{
 +  ClipperPtr clipper( new Clipper() );
 +
 +  // Second-phase init
 +  clipper->Initialize( size );
 +
 +  return clipper;
 +}
 +
 +Actor Clipper::GetRootActor() const
 +{
 +  return mOffscreenRootActor;
 +}
 +
 +ImageActor Clipper::GetImageActor() const
 +{
 +  return mImageActor;
 +}
 +
 +void Clipper::Refresh( const Vector2& size )
 +{
 +  const Size offscreenSize( std::min( MAX_OFFSCREEN_RENDERING_SIZE, size.width ),
 +                            std::min( MAX_OFFSCREEN_RENDERING_SIZE, size.height ) );
 +
 +  const bool sizeChanged = offscreenSize != mCurrentOffscreenSize;
 +
 +  if( sizeChanged )
 +  {
 +    // Reconfigure camera for current size.
 +    mOffscreenCameraActor.SetOrthographicProjection( offscreenSize );
 +
 +    // Recreate frame buffer for offscreen rendering when the size changes.
 +    FrameBufferImage frameBufferImage = FrameBufferImage::New( offscreenSize.width,
 +                                                               offscreenSize.height,
 +                                                               Pixel::RGBA8888 );
 +    mImageActor.SetSize( offscreenSize );
 +    mImageActor.SetImage( frameBufferImage );
 +    mRenderTask.SetTargetFrameBuffer( frameBufferImage );
 +
 +    // Stores current size to avoid create new Dali resources if text changes.
 +    mCurrentOffscreenSize = offscreenSize;
 +  }
 +
 +  mRenderTask.SetRefreshRate( RenderTask::REFRESH_ONCE );
 +}
 +
 +void Clipper::Initialize( const Vector2& size )
 +{
 +  const Size offscreenSize( std::min( MAX_OFFSCREEN_RENDERING_SIZE, size.width ),
 +                            std::min( MAX_OFFSCREEN_RENDERING_SIZE, size.height ) );
 +
 +  // Create a root actor and an image actor for offscreen rendering.
 +  mOffscreenRootActor = Layer::New();
 +  mOffscreenRootActor.SetColorMode( USE_OWN_COLOR );
 +  mOffscreenRootActor.SetPositionInheritanceMode( DONT_INHERIT_POSITION );
 +  mOffscreenRootActor.SetInheritScale( false );
 +  mOffscreenRootActor.SetDepthTestDisabled( true );
 +  mOffscreenRootActor.SetSize( offscreenSize );
 +
 +  mImageActor = ImageActor::New();
 +  mImageActor.SetParentOrigin( ParentOrigin::CENTER );
 +  mImageActor.SetBlendFunc( BlendingFactor::ONE, BlendingFactor::ONE_MINUS_SRC_ALPHA,
 +                            BlendingFactor::ONE, BlendingFactor::ONE );
 +  mImageActor.SetScale( Vector3( 1.0f, -1.0f, 1.0f ) );
 +  mImageActor.SetSize( offscreenSize );
 +
 +  // Creates a new camera actor.
 +  mOffscreenCameraActor = CameraActor::New();
 +  mOffscreenCameraActor.SetParentOrigin( ParentOrigin::CENTER );
 +  mOffscreenCameraActor.SetOrthographicProjection( offscreenSize );
 +  mOffscreenRootActor.Add( mOffscreenCameraActor ); // camera to shoot the offscreen text
 +
 +  // Creates a new render task.
 +  mRenderTask = Stage::GetCurrent().GetRenderTaskList().CreateTask();
 +  mRenderTask.SetSourceActor( mOffscreenRootActor );
 +  mRenderTask.SetClearColor( Color::TRANSPARENT );
 +  mRenderTask.SetClearEnabled( true );
 +  mRenderTask.SetExclusive( true );
 +  mRenderTask.SetCameraActor( mOffscreenCameraActor );
 +
 +  // Creates a frame buffer for offscreen rendering
 +  FrameBufferImage frameBufferImage = FrameBufferImage::New( offscreenSize.width,
 +                                                             offscreenSize.height,
 +                                                             Pixel::RGBA8888 );
 +  mImageActor.SetImage( frameBufferImage );
 +  mRenderTask.SetTargetFrameBuffer( frameBufferImage );
 +
 +  // Stores current size to avoid create new Dali resources if text changes.
 +  mCurrentOffscreenSize = offscreenSize;
 +}
 +
 +Clipper::Clipper()
 +{
 +}
 +
 +Clipper::~Clipper()
 +{
 +  if( Stage::IsInstalled() )
 +  {
 +    UnparentAndReset( mOffscreenRootActor );
 +    UnparentAndReset( mImageActor );
 +
 +    Stage::GetCurrent().GetRenderTaskList().RemoveTask( mRenderTask );
 +  }
 +}
 +
 +} // namespace Text
 +
 +} // namespace Toolkit
 +
 +} // namespace Dali
Simple merge