From 35afdf5cc9cdd2877206f0178d61d1d95d07aa5e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Stephan=20A=C3=9Fmus?= Date: Sat, 14 Apr 2007 22:36:56 +0000 Subject: [PATCH] * added vector icons for application and supported types * added "icon heap" icon * implemented loading vector icon for "icon heap" git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@20684 a95241bf-73f2-0310-859d-f6bbb57e9c96 --- .../filetypes/FileTypes.icons.rdef | 31 ++++++++ src/preferences/filetypes/FileTypes.rdef | 76 ++++++++++++++----- src/preferences/filetypes/IconView.cpp | 33 ++++++-- 3 files changed, 116 insertions(+), 24 deletions(-) diff --git a/src/preferences/filetypes/FileTypes.icons.rdef b/src/preferences/filetypes/FileTypes.icons.rdef index 1d15fd5de5..6933f5486d 100644 --- a/src/preferences/filetypes/FileTypes.icons.rdef +++ b/src/preferences/filetypes/FileTypes.icons.rdef @@ -2,6 +2,35 @@ * FileTypes.icons.rdef */ +#ifdef HAIKU_TARGET_PLATFORM_HAIKU + +resource(0, "BEOS:application/x-be-resource") #'VICN' array { + $"6E63696607050102000603399E0F3D9C0ABF82B23B84A94B88504870C900A5B1" + $"FFBCEAF1FFFFB3B8FF020106023E49240000000000003CAAAA4940004A3000FF" + $"C0D5FF7C896EFF040192020006023A4BAE3411A9B629883C6629495368484715" + $"00FFF9BAFFFFC104020006023A6A0E3670BCB6D8C13AD0F64A21BC4A0DF300BA" + $"DCFFFF2A20F10200060239AAD5343BA5B6E7993C629D4ABB354803A500E99797" + $"FFCE3232070606AE0BB40BBF4D33C3AFB75DC173BDEFC607C13EC804CA28BD82" + $"C118B920C51BBB40BF07B8083AB6BC0605AE02B57D3EB9B9C3EFB7BB44BBB751" + $"BD75C936CA8EC1B1402F0A093B593D5BBFCDC93E455BC516C5F160465B435D45" + $"44510A045A425E3F5A3D57400A063236323D3A41403E403739330A063A433A4A" + $"404D464A464341400A064237423E48424E3F4E394835090A03020203000A0001" + $"011001178400040A020101000A0001001001178400040A010100000A00030405" + $"061001178400040A040104000A050105000A06010600" +}; + +resource(1, "BEOS:application/octet-stream") #'VICN' array { + $"6E6369660402000603399E0F3D9C0ABF82B23B84A94B88504870C900A5B1FFBC" + $"EAF1FFFFB3B8FF0501020106023E49240000000000003CAAAA4940004A3000FF" + $"C0D5FF7C896EFF040192040606AE0BB40BBF4D33C3AFB75DC173BDEFC607C13E" + $"C804CA28BD82C118B920C51BBB40BF07B8083AB6BC0605AE02B57D3EB9B9C3EF" + $"B7BB44BBB751BD75C936CA8EC1B1402F0A093B593D5BBFCDC93E455BC516C5F1" + $"60465B435D4544510A045A425E3F5A3D5740050A03020203000A010101100117" + $"8400040A020101000A0101001001178400040A00010000" +}; + +#else // HAIKU_TARGET_PLATFORM_HAIKU + resource(0, "BEOS:L:application/x-be-resource") #'ICON' array { $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02020008FFFFFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B17110802FFFFFFFFFFFFFFFFFF" @@ -109,3 +138,5 @@ resource(1, "BEOS:M:application/octet-stream") #'MICN' array { $"FFFFFFFFAE00000000AEAEFFFFFFFFFF" $"FFFFFFFFFFAE00AEFFAEFFFFFFFFFFFF" }; + +#endif // HAIKU_TARGET_PLATFORM_HAIKU diff --git a/src/preferences/filetypes/FileTypes.rdef b/src/preferences/filetypes/FileTypes.rdef index 849248ceb2..1eea1505ed 100644 --- a/src/preferences/filetypes/FileTypes.rdef +++ b/src/preferences/filetypes/FileTypes.rdef @@ -27,25 +27,46 @@ resource app_version { }; -resource mini_icon array { - $"FFFFFFFFFFFFFFFF020200FFFFFFFFFF" - $"FFFFFFFFFFFFFF04151E1500FFFFFFFF" - $"FFFFFFFFFFFFFF021D1E1C00FFFFFFFF" - $"FFFFFFFF00FFFF00151B1600FFFFFFFF" - $"FFFFFF003F0000FA0000000000FFFFFF" - $"FFFF003FFD0000F9F9FAFAFAFA00FFFF" - $"FF003FFEFDFD00F9F9F9F97D7D00FFFF" - $"003F62FE89007B00F9F900007D00FFFF" - $"FF003FB0FD002F00F90060600000FFFF" - $"FF003FFE002F000000606060606000FF" - $"FF000000002F00003F3F606060D500FF" - $"002B00002F00FA00ACAC3F3FD5D500FF" - $"002B7B2CEB000000ACACACACD5D5000E" - $"FF002B2F00000E00ACACACACD5D5000E" - $"FF002B2F000E0E0F0000ACACD5000E0E" - $"FFFF00000E0F0F0F0F0F0000000E0EFF" +#ifdef HAIKU_TARGET_PLATFORM_HAIKU + +resource vector_icon { + $"6E6369660C0500040169020006023CADF43D104EBF02CA3EA2224BF02046648D" + $"00FFDB97FFFCAF29020006023A6496BA3F153EBCDD3EEA91492CB5C09D5100FF" + $"F7EAFEFDD17B020006023AB3673751B2BC59783FD2D74C71F846F85900C85805" + $"FFF06306020106033AC71C0000000000003AB6DB4A6A0045300000F2F2F2FFBC" + $"A184AB7D7A7A02000602388A280000000000004000004AF00000000000C85804" + $"FFDC952F020006023B37D13A0397BB629E3CB4584A3EDF4A1E9400C6D7F5FF6B" + $"94DD020006023C71E33A0C78BA15E43C7D214B02AA49855700E3EDFFFF9EC2FF" + $"0200060239AB92381275BA365C3BEB2A4B2A844A9A5F00003CB0FF2C62D00200" + $"06033AC7B03884E3B903663B534D48B61F4958AE00FCFFDC7FF8F0BCFFF4DC8A" + $"020006023A7061B88A6E3B1AAE3CFAD946AC4F48C79100000000FFA9A06E130A" + $"053E303E4452445232452C0A043E303E444C444C360A063E304C3652324630C3" + $"BBB893452C0A044C44524452324C36020448224B22452242284225422B482E45" + $"2E4B2E4E284E2B4E250605E2024A60505A5660506054604C584A0A0346305232" + $"4A2E0A063A443A564A5E56535642463C0A043A443A564A5E4A4B0A043A444A4B" + $"5642463C0A044A4B4A5E565356420604AE342D223822382C4632524247080233" + $"33273B080231BCA9B6AFBEB40802BC10BCA92B40080237BDE8B821C0BF0802BC" + $"1DBF66B8A0C1D708023BBFF3304808023B44BA12C42E100A010105000A00010B" + $"1815FF01178400040A00010B18001501178500040A0A010B000A0B070E0D0C10" + $"0F12111815FF01178100040A0001001001178400040A020101000A030102000A" + $"040103000A060106000A0001041001178400040A050104000A00010710011784" + $"00040A070108000A09010A000A08010900" }; +resource(200, "icon heap") #'VICN' array { + $"6E63696605050104019202000603399E0F3D9C0ABF82B23B84A94B885046E193" + $"00A5B1FFBCEAF1FFFFB3B8FF020106023C71C43DE4E9BCEEA63BAE5F49867748" + $"01ECFFC0D5FF7C896EFF020106023C34913DBF47BD1EE83BAC5E49EA70498C6D" + $"FFC0D5FF7C896EFF040A07485E4A5E4C5F6043573D455D475D0606AE0BB40BBC" + $"1D33C07FB72CBE903C47C13EC408CA28BA52C118B656C51BB876BF07B53E3A23" + $"0605AE02B40BBF4D33C3AFB73CC1A43D50C13EC79ECA28BD823AB6BC0605AE02" + $"B40BC27D33C6DFB75DC4A3BDEFC937C13ECB34CA28C0B23AB9EC070A01010000" + $"0A0001031001178400040A040103000A0001021001178400040A030102000A00" + $"01011001178400040A02010100" +}; + +#else // HAIKU_TARGET_PLATFORM_HAIKU + resource large_icon array { $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF02020000FFFFFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF041B17110802FFFFFFFFFFFFFFFFFF" @@ -81,6 +102,25 @@ resource large_icon array { $"FFFFFFFF0000000E0F0F0F0F0F0F0F0F0F0F0F00000E0E0EFFFFFFFFFFFFFFFF" }; +resource mini_icon array { + $"FFFFFFFFFFFFFFFF020200FFFFFFFFFF" + $"FFFFFFFFFFFFFF04151E1500FFFFFFFF" + $"FFFFFFFFFFFFFF021D1E1C00FFFFFFFF" + $"FFFFFFFF00FFFF00151B1600FFFFFFFF" + $"FFFFFF003F0000FA0000000000FFFFFF" + $"FFFF003FFD0000F9F9FAFAFAFA00FFFF" + $"FF003FFEFDFD00F9F9F9F97D7D00FFFF" + $"003F62FE89007B00F9F900007D00FFFF" + $"FF003FB0FD002F00F90060600000FFFF" + $"FF003FFE002F000000606060606000FF" + $"FF000000002F00003F3F606060D500FF" + $"002B00002F00FA00ACAC3F3FD5D500FF" + $"002B7B2CEB000000ACACACACD5D5000E" + $"FF002B2F00000E00ACACACACD5D5000E" + $"FF002B2F000E0E0F0000ACACD5000E0E" + $"FFFF00000E0F0F0F0F0F0000000E0EFF" +}; + resource(200, "icon heap") #'ICON' array { $"FFFFFFFFFFFFFFFFFFFFFFFF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFFFFFFFF0060600000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" @@ -115,3 +155,5 @@ resource(200, "icon heap") #'ICON' array { $"FFFFFFFFFFFFFFFFFFFFFFFFAEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" $"FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF" }; + +#endif // HAIKU_TARGET_PLATFORM_HAIKU diff --git a/src/preferences/filetypes/IconView.cpp b/src/preferences/filetypes/IconView.cpp index b66b3c73c6..36c0d2dd56 100644 --- a/src/preferences/filetypes/IconView.cpp +++ b/src/preferences/filetypes/IconView.cpp @@ -1053,13 +1053,32 @@ IconView::ShowIconHeap(bool show) if (show) { BResources* resources = be_app->AppResources(); - const void* data = NULL; - // TODO: get vector heap icon! - if (resources != NULL) - data = resources->LoadResource('ICON', "icon heap", NULL); - if (data != NULL) { - fHeapIcon = Icon::AllocateBitmap(B_LARGE_ICON, B_CMAP8); - memcpy(fHeapIcon->Bits(), data, fHeapIcon->BitsLength()); + if (resources != NULL) { + const void* data = NULL; +#ifdef HAIKU_TARGET_PLATFORM_HAIKU + size_t size; + data = resources->LoadResource('VICN', "icon heap", &size); + if (data != NULL) { + // got vector icon data + fHeapIcon = Icon::AllocateBitmap(B_LARGE_ICON, B_RGBA32); + if (BIconUtils::GetVectorIcon((const uint8*)data, + size, fHeapIcon) != B_OK) { + // bad data + delete fHeapIcon; + fHeapIcon = NULL; + data = NULL; + } + } +#endif // HAIKU_TARGET_PLATFORM_HAIKU + if (data == NULL) { + // no vector icon or failed to get bitmap + // try bitmap icon + data = resources->LoadResource('ICON', "icon heap", NULL); + if (data != NULL) { + fHeapIcon = Icon::AllocateBitmap(B_LARGE_ICON, B_CMAP8); + memcpy(fHeapIcon->Bits(), data, fHeapIcon->BitsLength()); + } + } } } else { delete fHeapIcon;