/*
- * Copyright (c) 2016 Samsung Electronics Co., Ltd.
+ * Copyright (c) 2020 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.
#include <dali/public-api/object/type-registry.h>
#include <dali/integration-api/bitmap.h>
#include <dali/internal/event/common/thread-local-storage.h>
-#include <dali/internal/event/resources/resource-client.h>
#include <dali/internal/update/manager/update-manager.h>
-#include <dali/internal/event/images/image-factory.h>
#include <dali/integration-api/platform-abstraction.h>
#include <dali/integration-api/resource-types.h>
-#include <dali/integration-api/resource-cache.h>
namespace
bitMask=0;
break;
}
+
+ case Dali::Pixel::RGB16F:
+ case Dali::Pixel::RGB32F:
+ case Dali::Pixel::DEPTH_UNSIGNED_INT:
+ case Dali::Pixel::DEPTH_FLOAT:
+ case Dali::Pixel::DEPTH_STENCIL:
+ {
+ DALI_LOG_ERROR("Pixel format not compatible.\n");
+ byteOffset=0;
+ bitMask=0;
+ break;
+ }
}
}
namespace Internal
{
-namespace
-{
-TypeRegistration mType( typeid( Dali::NinePatchImage ), typeid( Dali::Image ), NULL );
-} // unnamed namespace
-
NinePatchImagePtr NinePatchImage::New( const std::string& filename )
{
Internal::NinePatchImagePtr internal( new NinePatchImage( filename ) );
{
mUrl = filename;
ThreadLocalStorage& tls = ThreadLocalStorage::Get();
- mResourceClient = &tls.GetResourceClient();
Integration::PlatformAbstraction& platformAbstraction = tls.GetPlatformAbstraction();
Integration::BitmapResourceType resourceType;
// Note, bitmap is only destroyed when the image is destroyed.
- Integration::ResourcePointer resource = platformAbstraction.LoadResourceSynchronously( resourceType, filename );
+ Integration::ResourcePointer resource = platformAbstraction.LoadImageSynchronously( resourceType, filename );
if( resource )
{
mBitmap = static_cast<Integration::Bitmap*>( resource.Get());
+
mWidth = mBitmap->GetImageWidth();
mHeight = mBitmap->GetImageHeight();
+ mTexture = Texture::New( Dali::TextureType::TEXTURE_2D, mBitmap->GetPixelFormat(), mWidth, mHeight );
+
+ uint32_t bufferSize = mBitmap->GetBufferSize();
+ uint8_t* buffer = new uint8_t[bufferSize];
+ memcpy( buffer, mBitmap->GetBuffer(), bufferSize );
+ PixelDataPtr pixelData = PixelData::New( buffer, bufferSize, mWidth, mHeight, mBitmap->GetPixelFormat(), Dali::PixelData::DELETE_ARRAY );
+ mTexture->Upload( pixelData );
}
else
{
if( srcProfile )
{
PixelBuffer* destPixels = cropped->GetBuffer();
- unsigned int destStride = cropped->GetBufferStride();
- unsigned int pixelWidth = GetBytesPerPixel(pixelFormat);
+ uint32_t destStride = cropped->GetBufferStride();
+ uint32_t pixelWidth = GetBytesPerPixel(pixelFormat);
PixelBuffer* srcPixels = mBitmap->GetBuffer();
- unsigned int srcStride = srcProfile->GetBufferStride();
+ uint32_t srcStride = srcProfile->GetBufferStride();
- for( unsigned int row=1; row < mHeight-1; ++row )
+ for( uint32_t row=1; row < mHeight-1; ++row )
{
PixelBuffer* src = srcPixels + row*srcStride + pixelWidth;
PixelBuffer* dest = destPixels + (row-1)*destStride;
return mUrl;
}
-void NinePatchImage::Connect()
-{
- if( !mTicket )
- {
- if( mBitmap )
- {
- const ImageTicketPtr& t = mResourceClient->AddBitmapImage(mBitmap.Get());
- mTicket = t.Get();
- mTicket->AddObserver(*this);
- }
- }
-
- ++mConnectionCount;
-}
-
-void NinePatchImage::Disconnect()
-{
- if( mConnectionCount > 0 )
- {
- --mConnectionCount;
- }
-}
-
-
void NinePatchImage::ParseBorders()
{
if( !mBitmap )
testValue = 0; // Black == stretch
}
- unsigned int pixelWidth = GetBytesPerPixel( pixelFormat );
+ uint32_t pixelWidth = GetBytesPerPixel( pixelFormat );
const PixelBuffer* srcPixels = mBitmap->GetBuffer();
- unsigned int srcStride = srcProfile->GetBufferStride();
+ uint32_t srcStride = srcProfile->GetBufferStride();
//TOP
const PixelBuffer* top = srcPixels + pixelWidth;
- unsigned int index = 0;
- unsigned int width = mBitmap->GetImageWidth();
- unsigned int height = mBitmap->GetImageHeight();
+ uint32_t index = 0;
+ uint32_t width = mBitmap->GetImageWidth();
+ uint32_t height = mBitmap->GetImageHeight();
for(; index < width - 2; )
{
}
}
-Uint16Pair NinePatchImage::ParseRange( unsigned int& index, unsigned int width, const PixelBuffer* & pixel, unsigned int pixelStride, int testByte, int testBits, int testValue )
+Uint16Pair NinePatchImage::ParseRange( uint32_t& index, uint32_t width, const PixelBuffer* & pixel, uint32_t pixelStride, int testByte, int testBits, int testValue )
{
- unsigned int start = 0xFFFF;
+ uint32_t start = 0xFFFF;
for( ; index < width; ++index, pixel += pixelStride )
{
if( ( pixel[ testByte ] & testBits ) == testValue )
}
}
- unsigned int end = width;
+ uint32_t end = width;
for( ; index < width; ++index, pixel += pixelStride )
{
if( ( pixel[ testByte ] & testBits ) != testValue )