UNIXworkcode

1 /* 2 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. 3 * 4 * Copyright 2025 Olaf Wintermann. All rights reserved. 5 * 6 * Redistribution and use in source and binary forms, with or without 7 * modification, are permitted provided that the following conditions are met: 8 * 9 * 1. Redistributions of source code must retain the above copyright 10 * notice, this list of conditions and the following disclaimer. 11 * 12 * 2. Redistributions in binary form must reproduce the above copyright 13 * notice, this list of conditions and the following disclaimer in the 14 * documentation and/or other materials provided with the distribution. 15 * 16 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 17 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE 20 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 21 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 22 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 23 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 24 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 25 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 26 * POSSIBILITY OF SUCH DAMAGE. 27 */ 28 29 #import "image.h" 30 31 static NSDictionary *standardIconNames; 32 33 #define UI_ICON_ENTRY(x) @#x : x 34 35 void ui_icon_init(void) { 36 standardIconNames = @{ 37 UI_ICON_ENTRY(NSImageNameAddTemplate), 38 UI_ICON_ENTRY(NSImageNameBluetoothTemplate), 39 UI_ICON_ENTRY(NSImageNameBonjour), 40 UI_ICON_ENTRY(NSImageNameBookmarksTemplate), 41 UI_ICON_ENTRY(NSImageNameCaution), 42 UI_ICON_ENTRY(NSImageNameComputer), 43 UI_ICON_ENTRY(NSImageNameEnterFullScreenTemplate), 44 UI_ICON_ENTRY(NSImageNameExitFullScreenTemplate), 45 UI_ICON_ENTRY(NSImageNameFolder), 46 UI_ICON_ENTRY(NSImageNameFolderBurnable), 47 UI_ICON_ENTRY(NSImageNameFolderSmart), 48 UI_ICON_ENTRY(NSImageNameFollowLinkFreestandingTemplate), 49 UI_ICON_ENTRY(NSImageNameHomeTemplate), 50 UI_ICON_ENTRY(NSImageNameIChatTheaterTemplate), 51 UI_ICON_ENTRY(NSImageNameLockLockedTemplate), 52 UI_ICON_ENTRY(NSImageNameLockUnlockedTemplate), 53 UI_ICON_ENTRY(NSImageNameNetwork), 54 UI_ICON_ENTRY(NSImageNamePathTemplate), 55 UI_ICON_ENTRY(NSImageNameQuickLookTemplate), 56 UI_ICON_ENTRY(NSImageNameRefreshFreestandingTemplate), 57 UI_ICON_ENTRY(NSImageNameRefreshTemplate), 58 UI_ICON_ENTRY(NSImageNameRemoveTemplate), 59 UI_ICON_ENTRY(NSImageNameRevealFreestandingTemplate), 60 UI_ICON_ENTRY(NSImageNameShareTemplate), 61 UI_ICON_ENTRY(NSImageNameSlideshowTemplate), 62 UI_ICON_ENTRY(NSImageNameStatusAvailable), 63 UI_ICON_ENTRY(NSImageNameStatusNone), 64 UI_ICON_ENTRY(NSImageNameStatusPartiallyAvailable), 65 UI_ICON_ENTRY(NSImageNameStatusUnavailable), 66 UI_ICON_ENTRY(NSImageNameStopProgressFreestandingTemplate), 67 UI_ICON_ENTRY(NSImageNameStopProgressTemplate), 68 UI_ICON_ENTRY(NSImageNameTrashEmpty), 69 UI_ICON_ENTRY(NSImageNameTrashFull), 70 UI_ICON_ENTRY(NSImageNameActionTemplate), 71 UI_ICON_ENTRY(NSImageNameSmartBadgeTemplate), 72 UI_ICON_ENTRY(NSImageNameIconViewTemplate), 73 UI_ICON_ENTRY(NSImageNameListViewTemplate), 74 UI_ICON_ENTRY(NSImageNameColumnViewTemplate), 75 UI_ICON_ENTRY(NSImageNameFlowViewTemplate), 76 UI_ICON_ENTRY(NSImageNameInvalidDataFreestandingTemplate), 77 UI_ICON_ENTRY(NSImageNameGoForwardTemplate), 78 UI_ICON_ENTRY(NSImageNameGoBackTemplate), 79 UI_ICON_ENTRY(NSImageNameGoRightTemplate), 80 UI_ICON_ENTRY(NSImageNameGoLeftTemplate), 81 UI_ICON_ENTRY(NSImageNameRightFacingTriangleTemplate), 82 UI_ICON_ENTRY(NSImageNameLeftFacingTriangleTemplate), 83 UI_ICON_ENTRY(NSImageNameMobileMe), 84 UI_ICON_ENTRY(NSImageNameMultipleDocuments), 85 UI_ICON_ENTRY(NSImageNameUserAccounts), 86 UI_ICON_ENTRY(NSImageNamePreferencesGeneral), 87 UI_ICON_ENTRY(NSImageNameAdvanced), 88 UI_ICON_ENTRY(NSImageNameInfo), 89 UI_ICON_ENTRY(NSImageNameFontPanel), 90 UI_ICON_ENTRY(NSImageNameColorPanel), 91 UI_ICON_ENTRY(NSImageNameUser), 92 UI_ICON_ENTRY(NSImageNameUserGroup), 93 UI_ICON_ENTRY(NSImageNameEveryone), 94 UI_ICON_ENTRY(NSImageNameUserGuest), 95 UI_ICON_ENTRY(NSImageNameMenuOnStateTemplate), 96 UI_ICON_ENTRY(NSImageNameMenuMixedStateTemplate), 97 UI_ICON_ENTRY(NSImageNameApplicationIcon) 98 }; 99 } 100 101 NSImage* ui_cocoa_named_icon(const char *name) { 102 NSString *imageName = [[NSString alloc] initWithUTF8String:name]; 103 NSString *imgName = [standardIconNames objectForKey:imageName]; 104 if(imgName) { 105 imageName = imgName; 106 } 107 return [NSImage imageNamed:imageName]; 108 } 109 110 111 void ui_image_ref(UIIMAGE img) { 112 // TODO 113 } 114 115 void ui_image_unref(UIIMAGE img) { 116 // TODO 117 } 118