Hi, On 30.11.2008, at 07:17, björn wrote:
> 2. The "LucidaSans-Demi" does not exist on my system. Again, if the > font is missing you get an unhelpful message: Bummer. The attached version uses Lucida Grande, which is a system font. Its font metrics are a bit different, hence I had to change some rects, but it looks very similar to Lucida Grande now (modulo the digit glyphs, but we don't use those). It also adds some more helpful error messages. > When I saw this line > > BACKGROUND = '/System/Library/CoreServices/CoreTypes.bundle/' + \ > 'Contents/Resources/GenericDocumentIcon.icns' # might require > leopard? > > I started up Tiger -- that icon does exist on Tiger as well...so no > problems there. But on Tiger it's probably not a 512x512 icon. > Finally, I really think we need to do something about the smaller > sized icons: they are completely illegible. I have attached the icon > for ".h" files to illustrate this point. This is the simplest icon > but even it is impossible to make out what it is supposed to be (even > at 32x32). I'm not sure exactly what to do about this, but one > suggestion is to make the file extension text cover the entire > document at 32x32 and lower. The MacVim icon could perhaps be toned > down or, in the case of 16x16, completely removed? I'm doing some experiments with re-rendering the text for each icon size instead of using the downsampled 512 variant, this yields readable text at 32x32 (haven't tried with 16x16 yet). But let's get the current version merged first. Nico --~--~---------~--~----~------------~-------~--~----~ You received this message from the "vim_mac" maillist. For more information, visit http://www.vim.org/maillist.php -~----------~----~----~----~------~----~------~--~---
# Creates a document icon from an app icon and an optional text. # The font is not quite right, use this script to create a document icon # for 'PDF' and compare the D with the D in Preview's pdf.icns # http://www.macresearch.org/cocoa-scientists-part-xx-python-scriptersmeet-cocoa from Foundation import * from AppKit import * import os import sys # icon types LARGE = 0 # 512, 128, 32, 16; about 96kB SMALL = 1 # 128, 32, 16; about 36kB LINK = 2 # Create link to generic icon; 4kB (== smallest block size on HFS+) # path to makeicns binary MAKEICNS = './makeicns' # List of icons to create GENERIC_ICON_NAME = 'doc-bm-generic' vimIcons = { GENERIC_ICON_NAME: [u'', LARGE], 'doc-bm-vim': [u'VIM', LARGE], 'doc-bm-txt': [u'TXT', SMALL], 'doc-bm-tex': [u'TEX', SMALL], 'doc-bm-h': [u'H', SMALL], 'doc-bm-c': [u'C', SMALL], 'doc-bm-m': [u'M', SMALL], 'doc-bm-mm': [u'MM', SMALL], 'doc-bm-cpp': [u'C\uff0b\uff0b', SMALL], # fullwidth plusses 'doc-bm-java': [u'JAVA', SMALL], 'doc-bm-f': [u'FTRAN', SMALL], 'doc-bm-html': [u'HTML', SMALL], 'doc-bm-xml': [u'XML', SMALL], 'doc-bm-js': [u'JS', SMALL], 'doc-bm-perl': [u'PERL', SMALL], 'doc-bm-py': [u'PYTHON', SMALL], 'doc-bm-php': [u'PHP', SMALL], 'doc-bm-rb': [u'RUBY', SMALL], 'doc-bm-bash': [u'SH', SMALL], 'doc-bm-patch': [u'DIFF', SMALL], 'doc-bm-applescript': [u'\uf8ffSCPT', SMALL], # apple sign 'doc-bm-as': [u'FLASH', LINK], 'doc-bm-asp': [u'ASP', LINK], 'doc-bm-bib': [u'BIB', LINK], 'doc-bm-cs': [u'C#', LINK], 'doc-bm-csfg': [u'CFDG', LINK], #D 'doc-bm-csv': [u'CSV', LINK], 'doc-bm-tsv': [u'TSV', LINK], 'doc-bm-cgi': [u'CGI', LINK], 'doc-bm-cfg': [u'CFG', LINK], 'doc-bm-css': [u'CSS', SMALL], 'doc-bm-dtd': [u'DTD', LINK], 'doc-bm-dylan': [u'DYLAN', LINK], 'doc-bm-erl': [u'ERLANG', SMALL], 'doc-bm-fscript': [u'FSCPT', SMALL], 'doc-bm-hs': [u'HS', SMALL], 'doc-bm-inc': [u'INC', LINK], 'doc-bm-ics': [u'ICS', SMALL], 'doc-bm-ini': [u'INI', LINK], 'doc-bm-io': [u'IO', LINK], 'doc-bm-bsh': [u'BSH', LINK], #D 'doc-bm-properties': [u'PROP', LINK], 'doc-bm-jsp': [u'JSP', SMALL], 'doc-bm-lisp': [u'LISP', SMALL], 'doc-bm-log': [u'LOG', SMALL], 'doc-bm-wiki': [u'WIKI', SMALL], 'doc-bm-ps': [u'PS', LINK], #'doc-bm-plist': [u'PLIST', SMALL], 'doc-bm-sch': [u'SCHEME', SMALL], 'doc-bm-sql': [u'SQL', SMALL], 'doc-bm-tcl': [u'TCL', SMALL], 'doc-bm-xsl': [u'XSL', LINK], 'doc-bm-vcf': [u'VCARD', SMALL], 'doc-bm-vb': [u'VBASIC', LINK], 'doc-bm-yaml': [u'YAML', SMALL], 'doc-bm-gtd': [u'GTD', LINK], #D } # Resources BACKGROUND = '/System/Library/CoreServices/CoreTypes.bundle/' + \ 'Contents/Resources/GenericDocumentIcon.icns' # might require leopard? APPICON = 'vim-noshadow-512.png' #APPICON = 'vim-noshadow-no-v-512.png' def createIcon(outname, text, iconname=APPICON, bgname=BACKGROUND): # Prepare input images bg = NSImage.alloc().initWithContentsOfFile_(bgname) if not bg: print 'Failed to load', bgname sys.exit(1) icon = NSImage.alloc().initWithContentsOfFile_(iconname) if not icon: print 'Failed to load', iconname sys.exit(1) # Prepare text format style = NSMutableParagraphStyle.new() style.setParagraphStyle_(NSParagraphStyle.defaultParagraphStyle()) style.setAlignment_(NSCenterTextAlignment) # http://developer.apple.com/documentation/Cocoa/Conceptual/AttributedStrings/Articles/standardAttributes.html#//apple_ref/doc/uid/TP40004903 fontname = 'LucidaGrande-Bold' attribs = { NSParagraphStyleAttributeName: style, NSParagraphStyleAttributeName: style, NSFontAttributeName: NSFont.fontWithName_size_(fontname, 72.0), NSKernAttributeName: -1.0, # tighten font a bit NSForegroundColorAttributeName: NSColor.colorWithDeviceWhite_alpha_( 0.34, 1) } if not attribs[NSFontAttributeName]: print 'Failed to load font', fontname sys.exit(1) # Draw! bg.lockFocus() w, h = 289, 289 icon.drawInRect_fromRect_operation_fraction_( (((512-w)/2 + 1, 405 - h), (w, h)), NSZeroRect, NSCompositeSourceOver, 1.0) text.drawInRect_withAttributes_( ((0, 7), (512, 119)), attribs) bg.unlockFocus() # Save # http://www.cocoadev.com/index.pl?NSImageToJPEG (this is retarded) tmp = NSBitmapImageRep.imageRepWithData_(bg.TIFFRepresentation()) png = tmp.representationUsingType_properties_(NSPNGFileType, None) png.writeToFile_atomically_(outname, True) TMPFILE = 'make_icons_tmp.png' def main(): # Make us not crash # http://www.cocoabuilder.com/archive/message/cocoa/2008/8/6/214964 NSApplicationLoad() #createIcon('test.png', #NSString.stringWithString_(u'PDF'), iconname='preview.icns') if not os.access(MAKEICNS, os.X_OK): print 'Cannot find makeicns at', MAKEICNS return for name, t in vimIcons.iteritems(): print name text, size = t icnsName = '%s.icns' % name # remove old version of icns if os.access(icnsName, os.F_OK): os.remove(icnsName) if size == LINK: os.symlink('%s.icns' % GENERIC_ICON_NAME, icnsName) continue createIcon(TMPFILE, NSString.stringWithString_(text)) if size == LARGE: os.system('%s -512 %s -128 %s -32 %s -16 %s -out %s' % (MAKEICNS, TMPFILE, TMPFILE, TMPFILE, TMPFILE, icnsName)) elif size == SMALL: os.system('%s -128 %s -32 %s -16 %s -out %s' % (MAKEICNS, TMPFILE, TMPFILE, TMPFILE, icnsName)) if __name__ == '__main__': try: main() finally: if os.access(TMPFILE, os.F_OK): os.remove(TMPFILE)
