void CreateIconImages (void) { CGDataProviderRef prov; CGImageRef image; CFURLRef url; image = NULL; memset(macIconImage, 0, sizeof(macIconImage)); #ifdef MAC_PANTHER_SUPPORT if (systemVersion < 0x1040) memset(macIconRef, 0, sizeof(macIconRef)); #endif url = CFBundleCopyResourceURL(CFBundleGetMainBundle(), CFSTR("icons"), CFSTR("png"), NULL); if (url) { prov = CGDataProviderCreateWithURL(url); if (prov) { image = CGImageCreateWithPNGDataProvider(prov, NULL, true, kCGRenderingIntentDefault); CGDataProviderRelease(prov); } CFRelease(url); } if (image) { int x, y, v = 0, n = 0; macPadIconIndex = n; for (y = 0; y < 8; y++) { for (x = 0; x < 12; x++) SetIconImage(image, CGRectMake(x * kIconSize, v, kIconSize, kIconSize), n++); v += kIconSize; } macLegendIconIndex = n; for (x = 0; x < 2; x++) SetIconImage(image, CGRectMake(x * kIconSize, v, kIconSize, kIconSize), n++); v += kIconSize; macMusicBoxIconIndex = n; for (x = 0; x < 3; x++) SetIconImage(image, CGRectMake(x * kIconSize, v, kIconSize, kIconSize), n++); v += kIconSize; macFunctionIconIndex = n; for (x = 0; x < 17; x++) SetIconImage(image, CGRectMake(x * kIconSize, v, kIconSize, kIconSize), n++); CGImageRelease(image); #ifdef MAC_PANTHER_SUPPORT if (systemVersion < 0x1040) { CGColorSpaceRef color; CGContextRef ctx; CGRect rct; static UInt32 data[2][kIconSize * kIconSize]; rct = CGRectMake(0, 0, kIconSize, kIconSize); color = CGColorSpaceCreateDeviceRGB(); if (color) { for (int i = 0; i < 2; i++) { ctx = CGBitmapContextCreate(data[i], kIconSize, kIconSize, 8, kIconSize * 4, color, kCGImageAlphaNoneSkipFirst); if (ctx) { PlotIconRefInContext(ctx, &rct, kAlignNone, kTransformNone, NULL, kPlotIconRefNormalFlags, macIconRef[macLegendIconIndex + i]); CGContextRelease(ctx); prov = CGDataProviderCreateWithData(NULL, data[i], kIconSize * kIconSize * 4, NULL); if (prov) { macIconImage[macLegendIconIndex + i] = CGImageCreate(kIconSize, kIconSize, 8, 32, kIconSize * 4, color, kCGImageAlphaNoneSkipFirst, prov, NULL, 1, kCGRenderingIntentDefault); CGDataProviderRelease(prov); } } } CGColorSpaceRelease(color); } } #endif } }
void CButtonExUI::SetAttribute(LPCTSTR pstrName, LPCTSTR pstrValue) { if( _tcscmp(pstrName, _T("iconimage")) == 0 ) SetIconImage(pstrValue); else CButtonUI::SetAttribute(pstrName, pstrValue); }