shared/IconView: Add a variant of SetIcon which directly accepts a BBitmap.

This commit is contained in:
Augustin Cavalier
2022-08-31 16:16:43 -04:00
parent ee88fb6f03
commit 1f0c87711b
2 changed files with 29 additions and 2 deletions
+1
View File
@@ -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();
+28 -2
View File
@@ -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)
{