Refactor the FetchAppIcon() method.
Once we've found the icon bail out with return. This is functionally equivalent but is cleaner, decreases the indent level, and doesn't require an extra variable.
This commit is contained in:
+23
-23
@@ -860,37 +860,37 @@ TBarApp::FetchAppIcon(const char* signature, BBitmap* icon)
|
|||||||
app_info appInfo;
|
app_info appInfo;
|
||||||
icon_size size = icon->Bounds().IntegerHeight() >= 32
|
icon_size size = icon->Bounds().IntegerHeight() >= 32
|
||||||
? B_LARGE_ICON : B_MINI_ICON;
|
? B_LARGE_ICON : B_MINI_ICON;
|
||||||
bool foundIcon = false;
|
|
||||||
|
|
||||||
if (be_roster->GetAppInfo(signature, &appInfo) == B_OK) {
|
if (be_roster->GetAppInfo(signature, &appInfo) == B_OK) {
|
||||||
|
// fetch the app icon
|
||||||
BFile file(&appInfo.ref, B_READ_ONLY);
|
BFile file(&appInfo.ref, B_READ_ONLY);
|
||||||
BAppFileInfo appMime(&file);
|
BAppFileInfo appMime(&file);
|
||||||
if (appMime.GetIcon(icon, size) == B_OK)
|
if (appMime.GetIcon(icon, size) == B_OK)
|
||||||
foundIcon = true;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!foundIcon) {
|
// couldn't find the app icon
|
||||||
// get the generic 3 boxes icon
|
// fetch the generic 3 boxes icon
|
||||||
BMimeType defaultAppMime;
|
BMimeType defaultAppMime;
|
||||||
defaultAppMime.SetTo(B_APP_MIME_TYPE);
|
defaultAppMime.SetTo(B_APP_MIME_TYPE);
|
||||||
if (defaultAppMime.GetIcon(icon, size) != B_OK) {
|
if (defaultAppMime.GetIcon(icon, size) == B_OK)
|
||||||
// couldn't find generic 3 boxes icon
|
return;
|
||||||
// fill with transparent
|
|
||||||
uint8* iconBits = (uint8*)icon->Bits();
|
// couldn't find generic 3 boxes icon
|
||||||
if (icon->ColorSpace() == B_RGBA32) {
|
// fill with transparent
|
||||||
int32 i = 0;
|
uint8* iconBits = (uint8*)icon->Bits();
|
||||||
while (i < icon->BitsLength()) {
|
if (icon->ColorSpace() == B_RGBA32) {
|
||||||
iconBits[i++] = B_TRANSPARENT_32_BIT.red;
|
int32 i = 0;
|
||||||
iconBits[i++] = B_TRANSPARENT_32_BIT.green;
|
while (i < icon->BitsLength()) {
|
||||||
iconBits[i++] = B_TRANSPARENT_32_BIT.blue;
|
iconBits[i++] = B_TRANSPARENT_32_BIT.red;
|
||||||
iconBits[i++] = B_TRANSPARENT_32_BIT.alpha;
|
iconBits[i++] = B_TRANSPARENT_32_BIT.green;
|
||||||
}
|
iconBits[i++] = B_TRANSPARENT_32_BIT.blue;
|
||||||
} else {
|
iconBits[i++] = B_TRANSPARENT_32_BIT.alpha;
|
||||||
// Assume B_CMAP8
|
|
||||||
for (int32 i = 0; i < icon->BitsLength(); i++)
|
|
||||||
iconBits[i] = B_TRANSPARENT_MAGIC_CMAP8;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
} else {
|
||||||
|
// Assume B_CMAP8
|
||||||
|
for (int32 i = 0; i < icon->BitsLength(); i++)
|
||||||
|
iconBits[i] = B_TRANSPARENT_MAGIC_CMAP8;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user