[Tizen] Revert "Remove TypeRegistration from deprecated Image classes"
[platform/core/uifw/dali-core.git] / dali / internal / event / images / native-image-impl.cpp
index 46211cb..d7e3f9e 100644 (file)
 #include <dali/public-api/common/dali-common.h>
 #include <dali/public-api/object/type-registry.h>
 #include <dali/integration-api/debug.h>
-#include <dali/internal/event/resources/resource-ticket.h>
-#include <dali/internal/event/common/thread-local-storage.h>
-#include <dali/internal/event/resources/resource-client.h>
 #include <dali/internal/event/common/stage-impl.h>
+#include <dali/devel-api/images/native-image-interface-extension.h>
 
 using namespace Dali::Integration;
 
@@ -40,26 +38,26 @@ namespace
 TypeRegistration mType( typeid(Dali::NativeImage), typeid(Dali::Image), NULL );
 }
 
-NativeImage::NativeImage()
+NativeImage::NativeImage( NativeImageInterface& resourceData )
 : Image()
 {
+  NativeImageInterface::Extension* extension = resourceData.GetExtension();
+  if( extension != NULL )
+  {
+    mCustomFragmentPreFix = extension->GetCustomFragmentPreFix();
+    mCustomSamplerTypename = extension->GetCustomSamplerTypename();
+  }
 }
 
 NativeImagePtr NativeImage::New( NativeImageInterface& resourceData )
 {
-  NativeImagePtr image = new NativeImage;
+  NativeImagePtr image = new NativeImage( resourceData );
   image->Initialize();
 
-  ResourceClient &resourceClient = ThreadLocalStorage::Get().GetResourceClient();
-
   image->mWidth  = resourceData.GetWidth();
   image->mHeight = resourceData.GetHeight();
 
-  const ResourceTicketPtr& ticket = resourceClient.AddNativeImage( resourceData );
-  DALI_ASSERT_DEBUG( dynamic_cast<ImageTicket*>( ticket.Get() ) && "Resource ticket not ImageTicket subclass for image resource.\n" );
-  image->mTicket = static_cast<ImageTicket*>(ticket.Get());
-  image->mTicket->AddObserver( *image );
-
+  image->mTexture = Texture::New( resourceData );
   return image;
 }
 
@@ -67,6 +65,26 @@ NativeImage::~NativeImage()
 {
 }
 
+const char* NativeImage::GetCustomFragmentPreFix()
+{
+  if( mCustomFragmentPreFix.empty() )
+  {
+    return NULL;
+  }
+
+  return mCustomFragmentPreFix.c_str();
+}
+
+const char* NativeImage::GetCustomSamplerTypename()
+{
+  if( mCustomSamplerTypename.empty() )
+  {
+    return NULL;
+  }
+
+  return mCustomSamplerTypename.c_str();
+}
+
 } // namespace Internal
 
 } // namespace Dali