From eaac07392a47bde37ecebe60b878f4029a0b30b4 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Axel=20D=C3=B6rfler?= Date: Fri, 19 Jan 2007 23:16:41 +0000 Subject: [PATCH] * Fixed build under R5/Dano that was broken since Stippi added vector icon support. * Separated Haiku's icon stuff a bit better, so that Tracker can still be built without having Haiku headers around. * Minor cleanup. git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@19871 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- src/kits/tracker/Bitmaps.cpp | 34 ++++++++++++--------- src/kits/tracker/ContainerWindow.cpp | 8 ++--- src/kits/tracker/FSUtils.cpp | 19 ++++++------ src/kits/tracker/Jamfile | 7 ++++- src/kits/tracker/TrackerInitialState.cpp | 6 ++-- src/kits/tracker/Utilities.cpp | 38 +++++++++++++----------- 6 files changed, 63 insertions(+), 49 deletions(-) diff --git a/src/kits/tracker/Bitmaps.cpp b/src/kits/tracker/Bitmaps.cpp index bc6522f876..6953a39b39 100644 --- a/src/kits/tracker/Bitmaps.cpp +++ b/src/kits/tracker/Bitmaps.cpp @@ -32,17 +32,20 @@ names are registered trademarks or trademarks of their respective holders. All rights reserved. */ +#include "Bitmaps.h" +#include "Utilities.h" + #include #include #include #include #include -#include #include #include -#include "Bitmaps.h" -#include "Utilities.h" +#ifdef __HAIKU__ +# include +#endif BImageResources::BImageResources(void *memAddr) @@ -138,11 +141,12 @@ BImageResources::GetIconResource(int32 id, icon_size size, BBitmap *dest) const size_t length = 0; const void *data; +#ifdef __HAIKU__ // try to load vector icon data = LoadResource(B_VECTOR_ICON_TYPE, id, &length); - - if (data && BIconUtils::GetVectorIcon((uint8*)data, length, dest) == B_OK) + if (data != NULL && BIconUtils::GetVectorIcon((uint8*)data, length, dest) == B_OK) return B_OK; +#endif // fall back to R5 icon if (size != B_LARGE_ICON && size != B_MINI_ICON) @@ -151,21 +155,20 @@ BImageResources::GetIconResource(int32 id, icon_size size, BBitmap *dest) const length = 0; data = LoadResource(size == B_LARGE_ICON ? 'ICON' : 'MICN', id, &length); - if (data == 0 || length != (size_t)(size == B_LARGE_ICON ? 1024 : 256)) { + if (data == NULL || length != (size_t)(size == B_LARGE_ICON ? 1024 : 256)) { TRESPASS(); return B_ERROR; } - status_t ret = B_OK; - +#ifdef __HAIKU__ if (dest->ColorSpace() != B_CMAP8) { - ret = BIconUtils::ConvertFromCMAP8((uint8*)data, size, size, + return BIconUtils::ConvertFromCMAP8((uint8*)data, size, size, size, dest); - } else { - dest->SetBits(data, (int32)length, 0, B_CMAP8); } +#endif - return ret; + dest->SetBits(data, (int32)length, 0, B_CMAP8); + return B_OK; } @@ -173,17 +176,20 @@ status_t BImageResources::GetIconResource(int32 id, const uint8** iconData, size_t* iconSize) const { +#ifdef __HAIKU__ // try to load vector icon data from resources size_t length = 0; const void* data = LoadResource(B_VECTOR_ICON_TYPE, id, &length); - - if (!data) + if (data == NULL) return B_ERROR; *iconData = (const uint8*)data; *iconSize = length; return B_OK; +#else + return B_ERROR; +#endif } diff --git a/src/kits/tracker/ContainerWindow.cpp b/src/kits/tracker/ContainerWindow.cpp index 668ee1dbe3..c0410d3f90 100644 --- a/src/kits/tracker/ContainerWindow.cpp +++ b/src/kits/tracker/ContainerWindow.cpp @@ -3428,7 +3428,7 @@ BContainerWindow::RestoreWindowState(AttributeStreamNode *node) if (fContainerWindowFlags & kIsHidden) Minimize(true); -#if __HAIKU__ +#ifdef __HAIKU__ // restore window decor settings int32 size = node->Contains(kAttrWindowDecor, B_RAW_TYPE); if (size > 0) { @@ -3476,7 +3476,7 @@ BContainerWindow::RestoreWindowState(const BMessage &message) if (fContainerWindowFlags & kIsHidden) Minimize(true); -#if __HAIKU__ +#ifdef __HAIKU__ // restore window decor settings BMessage decorSettings; if ((fContainerWindowFlags & kRestoreDecor) @@ -3509,7 +3509,7 @@ BContainerWindow::SaveWindowState(AttributeStreamNode *node) node->Write(workspaceAttributeName, 0, B_INT32_TYPE, sizeof(uint32), &workspaces); -#if __HAIKU__ +#ifdef __HAIKU__ BMessage decorSettings; if (GetDecoratorSettings(&decorSettings) == B_OK) { int32 size = decorSettings.FlattenedSize(); @@ -3541,7 +3541,7 @@ BContainerWindow::SaveWindowState(BMessage &message) const message.AddRect(rectAttributeName, frame); message.AddInt32(workspaceAttributeName, (int32)Workspaces()); -#if __HAIKU__ +#ifdef __HAIKU__ BMessage decorSettings; if (GetDecoratorSettings(&decorSettings) == B_OK) { message.AddMessage(kAttrWindowDecor, &decorSettings); diff --git a/src/kits/tracker/FSUtils.cpp b/src/kits/tracker/FSUtils.cpp index 8b48177cae..48cb284c2e 100644 --- a/src/kits/tracker/FSUtils.cpp +++ b/src/kits/tracker/FSUtils.cpp @@ -2145,21 +2145,20 @@ FSGetDeskDir(BDirectory *deskDir, dev_t dev) size_t size; const void* data = GetTrackerResources()-> LoadResource('ICON', kResDeskIcon, &size); - - if (data) + if (data != NULL) deskDir->WriteAttr(kAttrLargeIcon, 'ICON', 0, data, size); data = GetTrackerResources()-> LoadResource('MICN', kResDeskIcon, &size); - - if (data) + if (data != NULL) deskDir->WriteAttr(kAttrMiniIcon, 'MICN', 0, data, size); +#ifdef __HAIKU__ data = GetTrackerResources()-> LoadResource(B_VECTOR_ICON_TYPE, kResDeskIcon, &size); - - if (data) + if (data != NULL) deskDir->WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, data, size); +#endif return B_OK; } @@ -2647,22 +2646,24 @@ FSCreateTrashDirs() size_t size; const void* data = GetTrackerResources()-> LoadResource('ICON', kResTrashIcon, &size); - if (data) { + if (data != NULL) { trashDir.WriteAttr(kAttrLargeIcon, 'ICON', 0, data, size); } data = GetTrackerResources()-> LoadResource('MICN', kResTrashIcon, &size); - if (data) { + if (data != NULL) { trashDir.WriteAttr(kAttrMiniIcon, 'MICN', 0, data, size); } +#ifdef __HAIKU data = GetTrackerResources()-> LoadResource(B_VECTOR_ICON_TYPE, kResTrashIcon, &size); - if (data) { + if (data != NULL) { trashDir.WriteAttr(kAttrIcon, B_VECTOR_ICON_TYPE, 0, data, size); } +#endif } } } diff --git a/src/kits/tracker/Jamfile b/src/kits/tracker/Jamfile index 360908459b..e8882f91a5 100644 --- a/src/kits/tracker/Jamfile +++ b/src/kits/tracker/Jamfile @@ -17,6 +17,11 @@ SubDirC++Flags # -D_SILENTLY_CORRECT_FILE_NAMES=1 ; +local vector_icon_libs ; +if $(TARGET_PLATFORM) = haiku { + vector_icon_libs = libicon.a libagg.a ; +} + SharedLibrary libtracker.so : AttributeStream.cpp AutoMounter.cpp @@ -88,7 +93,7 @@ SharedLibrary libtracker.so : VolumeWindow.cpp WidgetAttributeText.cpp - : be translation libicon.a libagg.a + : be translation $(vector_icon_libs) ; diff --git a/src/kits/tracker/TrackerInitialState.cpp b/src/kits/tracker/TrackerInitialState.cpp index 04a149473b..0aa93b69d3 100644 --- a/src/kits/tracker/TrackerInitialState.cpp +++ b/src/kits/tracker/TrackerInitialState.cpp @@ -164,7 +164,7 @@ TTracker::InstallMimeIfNeeded(const char *type, int32 bitsID, # define B_BITMAP_NO_SERVER_LINK 0 #endif -#if __HAIKU__ +#ifdef __HAIKU__ BBitmap vectorIcon(BRect(0, 0, 31, 31), B_BITMAP_NO_SERVER_LINK, B_RGB32); #endif BBitmap largeIcon(BRect(0, 0, 31, 31), B_BITMAP_NO_SERVER_LINK, B_CMAP8); @@ -175,7 +175,7 @@ TTracker::InstallMimeIfNeeded(const char *type, int32 bitsID, bool installed = mime.IsInstalled(); if (!installed -#if __HAIKU__ +#ifdef __HAIKU__ || (bitsID >= 0 && ((forceMask & kForceLargeIcon) || mime.GetIcon(&vectorIcon, B_LARGE_ICON) != B_OK)) #endif @@ -194,7 +194,7 @@ TTracker::InstallMimeIfNeeded(const char *type, int32 bitsID, mime.Install(); if (bitsID >= 0) { -#if __HAIKU__ +#ifdef __HAIKU__ const uint8* iconData; size_t iconSize; if (GetTrackerResources()-> diff --git a/src/kits/tracker/Utilities.cpp b/src/kits/tracker/Utilities.cpp index 32e7e68612..e815ab8f80 100644 --- a/src/kits/tracker/Utilities.cpp +++ b/src/kits/tracker/Utilities.cpp @@ -32,18 +32,21 @@ names are registered trademarks or trademarks of their respective holders. All rights reserved. */ -#include -#include -#include -#include -#include -#include +#include "Attributes.h" +#include "MimeTypes.h" +#include "Model.h" +#include "Utilities.h" +#include "ContainerWindow.h" + +#ifdef __HAIKU__ +# include +#endif #include #include #include +#include #include -#include #include #include #include @@ -54,24 +57,23 @@ All rights reserved. #include #include +#include +#include +#include +#include +#include +#include + + #if B_BEOS_VERSION_DANO -#define _IMPEXP_BE +# define _IMPEXP_BE #endif extern _IMPEXP_BE const uint32 LARGE_ICON_TYPE; extern _IMPEXP_BE const uint32 MINI_ICON_TYPE; #if B_BEOS_VERSION_DANO -#undef _IMPEXP_BE +# undef _IMPEXP_BE #endif -#include "Attributes.h" -#include "MimeTypes.h" -#include "Model.h" -#include "Utilities.h" -#include "ContainerWindow.h" - -#include - - FILE *logFile = NULL;