home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Snippets / FindIcon / Find_generic_icon_id.c < prev    next >
Encoding:
C/C++ Source or Header  |  1994-03-26  |  2.3 KB  |  101 lines  |  [TEXT/KAHL]

  1. #include <Finder.h>
  2. #include "Find_generic_icon_id.h"
  3.  
  4. /*    ------------------------------------------------------------------
  5.     Find_generic_icon_id        Given a type, return
  6.                                 the resource ID of appropriate generic
  7.                                 icons, and a Boolean telling whether
  8.     the icons live in the Finder, as opposed to the System.
  9.     ------------------------------------------------------------------
  10. */
  11.  
  12. short    Find_generic_icon_id(
  13. /* --> */    OSType the_type,
  14. /* <-- */    Boolean    *in_Finder )
  15. {
  16.     short    id;
  17.     register    OSType *icon_types;
  18.     register    short *icon_ids;
  19.     Ptr            icon_ids_start;
  20.     OSType        *begin_sys_icons;
  21.     
  22.     asm {
  23.         BRA        @start
  24.     @icon_type_storage
  25.         dc.L    'ifil'
  26.         dc.L    'sfil'
  27.         dc.L    'ffil'
  28.         dc.L    'tfil'
  29.         dc.L    'kfil'
  30.         dc.L    'FFIL'
  31.         dc.L    'DFIL'
  32.     @Finder_icons_end
  33.         dc.L    kContainerFolderAliasType
  34.         dc.L    kContainerTrashAliasType
  35.         dc.L    kSystemFolderAliasType
  36.         dc.L    'INIT'
  37.         dc.L    'APPL'
  38.         dc.L    'dfil'
  39.         dc.L    'pref'
  40.         dc.L    kAppleMenuFolderAliasType
  41.         dc.L    kControlPanelFolderAliasType
  42.         dc.L    kExtensionFolderAliasType
  43.         dc.L    kPreferencesFolderAliasType
  44.         dc.L    kStartupFolderAliasType
  45.         dc.L    kApplicationAliasType
  46.         dc.L    kExportedFolderAliasType
  47.         dc.L    kDropFolderAliasType
  48.         dc.L    kSharedFolderAliasType
  49.         dc.L    kMountedFolderAliasType
  50.     @icon_id_storage
  51.         dc.W    12500
  52.         dc.W    14000
  53.         dc.W    14500
  54.         dc.W    14501
  55.         dc.W    14750
  56.         dc.W    15500
  57.         dc.W    15750
  58.  
  59.         dc.W    genericFolderIconResource
  60.         dc.W    trashIconResource
  61.         dc.W    systemFolderIconResource
  62.         dc.W    genericExtensionIconResource
  63.         dc.W    genericApplicationIconResource
  64.         dc.W    genericDeskAccessoryIconResource
  65.         dc.W    genericPreferencesIconResource
  66.         dc.W    appleMenuFolderIconResource
  67.         dc.W    controlPanelFolderIconResource
  68.         dc.W    extensionsFolderIconResource
  69.         dc.W    preferencesFolderIconResource
  70.         dc.W    startupFolderIconResource
  71.         dc.W    genericApplicationIconResource
  72.         dc.W    ownedFolderIconResource
  73.         dc.W    dropFolderIconResource
  74.         dc.W    sharedFolderIconResource
  75.         dc.W    mountedFolderIconResource
  76.     @start
  77.         LEA        @icon_type_storage, icon_types
  78.         LEA        @icon_id_storage, icon_ids
  79.         LEA        @Finder_icons_end, A0
  80.         move.L    A0, begin_sys_icons
  81.     }
  82.     
  83.     icon_ids_start = (Ptr) icon_ids;
  84.     id = genericDocumentIconResource;    // default
  85.     
  86.     while (((Ptr) icon_types) < icon_ids_start)
  87.     {
  88.         if (the_type == *icon_types)
  89.         {
  90.             id = *icon_ids;
  91.             break;
  92.         }
  93.         icon_types++;
  94.         icon_ids++;
  95.     }
  96.  
  97.     *in_Finder = (icon_types < begin_sys_icons);
  98.  
  99.     return id;
  100. }
  101.