shared/IconView: Add a variant of SetIcon which directly accepts a BBitmap.
This commit is contained in:
@@ -30,6 +30,7 @@ public:
|
||||
icon_size iconSize = B_LARGE_ICON);
|
||||
status_t SetIcon(const uint8_t* hvifData, size_t size,
|
||||
icon_size iconSize = B_LARGE_ICON);
|
||||
status_t SetIcon(const BBitmap* icon);
|
||||
|
||||
private:
|
||||
void _SetSize();
|
||||
|
||||
@@ -45,7 +45,7 @@ status_t
|
||||
IconView::SetIcon(const BPath& path, icon_size iconSize)
|
||||
{
|
||||
fDrawIcon = false;
|
||||
|
||||
|
||||
if (iconSize != fIconSize) {
|
||||
BBitmap* bitmap = new BBitmap(BRect(iconSize), B_RGBA32);
|
||||
if (bitmap == NULL)
|
||||
@@ -83,7 +83,7 @@ status_t
|
||||
IconView::SetIcon(const uint8_t* data, size_t size, icon_size iconSize)
|
||||
{
|
||||
fDrawIcon = false;
|
||||
|
||||
|
||||
if (iconSize != fIconSize) {
|
||||
BBitmap* bitmap = new BBitmap(BRect(iconSize), B_RGBA32);
|
||||
if (bitmap == NULL)
|
||||
@@ -113,6 +113,32 @@ IconView::SetIcon(const uint8_t* data, size_t size, icon_size iconSize)
|
||||
}
|
||||
|
||||
|
||||
status_t
|
||||
IconView::SetIcon(const BBitmap* icon)
|
||||
{
|
||||
if (icon == NULL) {
|
||||
fDrawIcon = false;
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
delete fIconBitmap;
|
||||
fIconBitmap = new BBitmap(icon);
|
||||
if (fIconBitmap == NULL)
|
||||
return B_NO_MEMORY;
|
||||
|
||||
status_t status = fIconBitmap->InitCheck();
|
||||
if (status != B_OK)
|
||||
return status;
|
||||
|
||||
fIconSize = (icon_size)(fIconBitmap->Bounds().IntegerWidth() + 1);
|
||||
_SetSize();
|
||||
|
||||
fDrawIcon = true;
|
||||
Invalidate();
|
||||
return B_OK;
|
||||
}
|
||||
|
||||
|
||||
void
|
||||
IconView::DrawIcon(bool draw)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user