X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=dali-toolkit%2Fpublic-api%2Fcontrols%2Fdefault-controls%2Fsolid-color-actor.cpp;h=2f849bbcbbc08471040750de62df458c960e3ca4;hb=daa53bafd34781116b8cb3a2a8c54475a932ba21;hp=5bf85610ab8d49cc6b7450ad78c3254909cea4e3;hpb=31df2b9472ccbe0ae460a958535be8ef790c96f2;p=platform%2Fcore%2Fuifw%2Fdali-toolkit.git diff --git a/dali-toolkit/public-api/controls/default-controls/solid-color-actor.cpp b/dali-toolkit/public-api/controls/default-controls/solid-color-actor.cpp index 5bf8561..2f849bb 100644 --- a/dali-toolkit/public-api/controls/default-controls/solid-color-actor.cpp +++ b/dali-toolkit/public-api/controls/default-controls/solid-color-actor.cpp @@ -42,7 +42,16 @@ ImageActor CreateSolidColorActor( const Vector4& color, bool border, const Vecto } const unsigned int bitmapWidth = borderSize * 2 + 2; - BufferImage imageData = BufferImage::New( bitmapWidth, bitmapWidth, Pixel::RGBA8888 ); + bool needAlphaChannel = (color.a < 1.0f) || ( border && borderColor.a < 1.0f ); + BufferImage imageData; + if( needAlphaChannel ) + { + imageData = BufferImage::New( bitmapWidth, bitmapWidth, Pixel::RGBA8888 ); + } + else + { + imageData = BufferImage::New( bitmapWidth, bitmapWidth, Pixel::RGB888 ); + } // Create the image PixelBuffer* pixbuf = imageData.GetBuffer(); @@ -65,24 +74,48 @@ ImageActor CreateSolidColorActor( const Vector4& color, bool border, const Vecto const unsigned int bottomLeft = bitmapWidth * (borderSize + 1) + borderSize; const unsigned int bottomRight = bottomLeft + 1; - for( size_t i = 0; i < bitmapSize; ++i ) + if( needAlphaChannel ) { - if( i == topLeft || - i == topRight || - i == bottomLeft || - i == bottomRight ) + for( size_t i = 0; i < bitmapSize; ++i ) { - pixbuf[i*4+0] = 0xFF * color.r; - pixbuf[i*4+1] = 0xFF * color.g; - pixbuf[i*4+2] = 0xFF * color.b; - pixbuf[i*4+3] = 0xFF * color.a; + if( i == topLeft || + i == topRight || + i == bottomLeft || + i == bottomRight ) + { + pixbuf[i*4+0] = 0xFF * color.r; + pixbuf[i*4+1] = 0xFF * color.g; + pixbuf[i*4+2] = 0xFF * color.b; + pixbuf[i*4+3] = 0xFF * color.a; + } + else + { + pixbuf[i*4+0] = 0xFF * outerColor.r; + pixbuf[i*4+1] = 0xFF * outerColor.g; + pixbuf[i*4+2] = 0xFF * outerColor.b; + pixbuf[i*4+3] = 0xFF * outerColor.a; + } } - else + } + else + { + for( size_t i = 0; i < bitmapSize; ++i ) { - pixbuf[i*4+0] = 0xFF * outerColor.r; - pixbuf[i*4+1] = 0xFF * outerColor.g; - pixbuf[i*4+2] = 0xFF * outerColor.b; - pixbuf[i*4+3] = 0xFF * outerColor.a; + if( i == topLeft || + i == topRight || + i == bottomLeft || + i == bottomRight ) + { + pixbuf[i*3+0] = 0xFF * color.r; + pixbuf[i*3+1] = 0xFF * color.g; + pixbuf[i*3+2] = 0xFF * color.b; + } + else + { + pixbuf[i*3+0] = 0xFF * outerColor.r; + pixbuf[i*3+1] = 0xFF * outerColor.g; + pixbuf[i*3+2] = 0xFF * outerColor.b; + } } }