Merge pull request #1582 from slevenbits/nib2cib-images

nib2cib image fixes
This commit is contained in:
aparajita
2012-06-29 11:33:13 -07:00
14 changed files with 412 additions and 162 deletions
-140
View File
@@ -1,140 +0,0 @@
var OS = require("os");
var FILE = require("file");
var ByteString = require("binary").ByteString;
var javaImageSize = function (aFilePath)
{
var imageStream = javax.imageio.ImageIO.createImageInputStream(new Packages.java.io.File(aFilePath).getCanonicalFile()),
readers = javax.imageio.ImageIO.getImageReaders(imageStream),
reader = null;
if(readers.hasNext())
reader = readers.next();
else
{
imageStream.close();
//can't read image format... what do you want to do about it,
//throw an exception, return ?
}
reader.setInput(imageStream, true, true);
// Now we know the size (yay!)
var size = {width:reader.getWidth(0), height:reader.getHeight(0)};
reader.dispose();
imageStream.close();
return size;
}
var server = null;
var serverImageSize = function (aFilePath)
{
if (!server)
{
var cmd = "NARWHAL_ENGINE_HOME='' NARWHAL_ENGINE=rhino narwhal "+OS.enquote(module.path);
server = OS.popen(cmd, { charset : "UTF-8" });
}
var request = aFilePath.toByteString("UTF-8");
sendLengthPrefixMessage(server.stdin.raw, request);
var response = receiveLengthPrefixMessage(server.stdout.raw);
return JSON.parse(response.decodeToString("UTF-8"));
}
if (system.engine == "rhino")
exports.sizeOfImageAtPath = javaImageSize;
else
exports.sizeOfImageAtPath = serverImageSize;
// TODO: move these methods somewhere else?
var bytesToNumberLE = function(bytes) {
var acc = 0;
for (var i = 0; i < bytes.length; i++)
acc += bytes.get(i) << (8*i);
return acc;
}
var bytesToNumberBE = function(bytes) {
var acc = 0;
for (var i = 0; i < bytes.length; i++)
acc = (acc << 8) + bytes.get(i);
return acc;
}
var numberToBytesLE = function(number, length) {
var bytes = [];
for (var i = 0; i < length; i++)
bytes[i] = (number >> (8*i)) & 0xFF;
return new ByteString(bytes);
}
var numberToBytesBE = function(number, length) {
var bytes = [];
for (var i = 0; i < length; i++)
bytes[length-i-1] = (number >> (8*i)) & 0xFF;
return new ByteString(bytes);
}
var lengthPrefixServer = function(stream, callback, prefixLength) {
var bytes;
do {
bytes = receiveLengthPrefixMessage(stream, prefixLength);
callback(bytes);
} while (bytes);
}
var receiveLengthPrefixMessage = function(stream, prefixLength) {
var prefixBytes = stream.read(prefixLength || 4);
var length = bytesToNumberBE(prefixBytes);
var bytes = stream.read(length);
return bytes;
}
var sendLengthPrefixMessage = function(stream, bytes, prefixLength) {
var lengthBytes = numberToBytesBE(bytes.length, prefixLength || 4);
stream.write(lengthBytes).write(bytes).flush();
}
if (module == require.main)
{
var bytes;
while (bytes = receiveLengthPrefixMessage(require("system").stdin.raw))
{
var fileName = bytes.decodeToString("UTF-8");
var size = javaImageSize(fileName);
sendLengthPrefixMessage(require("system").stdout.raw, JSON.stringify(size).toByteString("UTF-8"));
}
}
/*
//ASYNCHRONOUS, so not useful to us
function jscImageSize(aFilePath)
{
var MIME_TYPES = {
".png" : "image/png",
".jpg" : "image/jpeg",
".jpeg" : "image/jpeg",
".gif" : "image/gif",
".tif" : "image/tiff",
".tiff" : "image/tiff"
},
FILE = require("file");
var image = new Image();
image.src = "data:" + MIME_TYPES[FILE.extension(aFilePath)] + ";base64," + require("base64").encode(FILE.read(aFilePath, { mode : 'b'}));
return CGSizeMake(image.width, image.height);
}
*/
+12
View File
@@ -0,0 +1,12 @@
var OS = require("os");
exports.imagesize = function(path)
{
var p = OS.popen(["imagesize", "-n", path]);
if (p.wait() === 0)
return JSON.parse(p.stdout.read());
else
return null;
};
+3 -3
View File
@@ -1,7 +1,7 @@
require("../common.jake");
// nib2cib uses fontinfo and capp uses nib2cib
subtasks(["fontinfo", "nib2cib", "capp", "dump_theme", "NativeHost", "XcodeCapp"], ["build"/*, "clean", "clobber"*/]);
// nib2cib uses fontinfo and imagesize and capp uses nib2cib
subtasks(["fontinfo", "imagesize", "nib2cib", "capp", "dump_theme", "NativeHost", "XcodeCapp"], ["build"/*, "clean", "clobber"*/]);
subtasks(["fontinfo"], ["clean", "clobber"]);
subtasks(["fontinfo", "imagesize"], ["clean", "clobber"]);
+1 -1
View File
@@ -8,7 +8,7 @@ task ("build", function()
{
if (executableExists("xcodebuild"))
{
var args = "-alltargets -configuration " + $CONFIGURATION;
var args = "-alltargets -configuration Release";
if (xcodebuildHasTenPointFiveSDK())
args = "-sdk macosx10.5 " + args;
@@ -14,7 +14,6 @@
/* Begin PBXFileReference section */
08FB7796FE84155DC02AAC07 /* fontinfo.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = fontinfo.m; sourceTree = "<group>"; };
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
32A70AAB03705E1F00C91783 /* fontinfo_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = fontinfo_Prefix.pch; sourceTree = "<group>"; };
E11C89CC1277CECE0012609B /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
E18587D81279B93100FB6A47 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
E1C392BB133D513B0092D7CA /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; };
@@ -47,7 +46,6 @@
08FB7795FE84155DC02AAC07 /* Source */ = {
isa = PBXGroup;
children = (
32A70AAB03705E1F00C91783 /* fontinfo_Prefix.pch */,
08FB7796FE84155DC02AAC07 /* fontinfo.m */,
);
name = Source;
@@ -142,8 +140,8 @@
CONFIGURATION_TEMP_DIR = "$(CAPP_BUILD)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = fontinfo_Prefix.pch;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
OBJROOT = "$(CAPP_BUILD)";
@@ -171,6 +169,8 @@
DEPLOYMENT_POSTPROCESSING = NO;
DSTROOT = "/tmp/$(PROJECT_NAME).dst";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INSTALL_PATH = "";
-8
View File
@@ -1,8 +0,0 @@
//
// Prefix header for all source files of the 'font_info' target in the 'font_info' project.
//
#ifdef __OBJC__
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#endif
+1
View File
@@ -0,0 +1 @@
build/
+40
View File
@@ -0,0 +1,40 @@
require ("../../common.jake");
var OS = require("os"),
task = require("jake").task;
task ("build", function()
{
if (executableExists("xcodebuild"))
{
var args = "-alltargets -configuration Release";
if (xcodebuildHasTenPointFiveSDK())
args = "-sdk macosx10.5 " + args;
else
args = "-sdk macosx " + args;
if (OS.system("xcodebuild " + args))
OS.exit(1);
}
else
{
print("Building imagesize requires Xcode.");
}
});
task ("clean", function()
{
if (executableExists("xcodebuild") && OS.system("xcodebuild clean"))
OS.exit(1);
});
task ("clobber", function()
{
if (executableExists("xcodebuild") && OS.system("xcodebuild clean"))
OS.exit(1);
});
task ("default", ["build"]);
+30
View File
@@ -0,0 +1,30 @@
NAME
imagesize -- retrieve size information for an image
SYNOPSIS
imagesize [-n] path
DESCRIPTION
imagesize is a tiny utility that returns the size of an image.
The path may be either an absolute path or a path relative to the current directory.
If the -n option is passed, the output will not be terminated with a linefeed.
EXIT STATUS
imagesize exits with a return status of zero if there are no errors.
imagesize exits with a return status of 1 if any arguments are invalid, or a status of 2 if the image
cannot be found or the file at the given path is not a valid image.
OUTPUT
imagesize outputs a stringified JSON object with the following structure:
{
width:<int>,
height:<int>
}
If -n is not passed, the JSON is terminated with a linefeed. The fields of the object are as follows:
AUTHORS
Aparajita Fishman, Victory-Heart Productions
http://www.aparajita.com
+71
View File
@@ -0,0 +1,71 @@
/*
imagesize
Copyright 2012 Aparajita Fishman
*/
#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
enum {
kErrInvalidArguments = 1,
kErrInvalidPath
};
int getImageSize(const char* utf8Path, BOOL appendLineFeed)
{
NSString* path = [NSString stringWithUTF8String:utf8Path];
NSImage* image = [[NSImage alloc] initWithContentsOfFile:path];
if (!image)
return kErrInvalidPath;
NSSize size = [image size];
NSMutableString* result = [NSMutableString stringWithFormat:@"{\"width\":%g, \"height\":%g}", size.width, size.height];
if (appendLineFeed)
[result appendString:@"\n"];
printf("%s", [result UTF8String]);
return 0;
}
int main(int argc, const char* argv[])
{
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int exitCode = 0;
// usage: imagesize [-n] path
if (argc >= 2)
{
BOOL appendLineFeed = YES;
int nextArgument = 1;
if (argv[1][0] == '-')
{
if (argv[1][1] == 'n')
{
appendLineFeed = NO;
++nextArgument;
}
else
exitCode = kErrInvalidArguments;
}
if (exitCode == 0)
exitCode = getImageSize(argv[nextArgument], appendLineFeed);
}
else
{
exitCode = kErrInvalidArguments;
}
[pool drain];
return exitCode;
}
@@ -0,0 +1,223 @@
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 45;
objects = {
/* Begin PBXBuildFile section */
E14061B7159D449000D99541 /* AppKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E14061B6159D449000D99541 /* AppKit.framework */; };
E1D3CFAA12AFFB7F00CBB79E /* imagesize.m in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* imagesize.m */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
08FB7796FE84155DC02AAC07 /* imagesize.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = imagesize.m; sourceTree = "<group>"; };
08FB779EFE84155DC02AAC07 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
E14061B6159D449000D99541 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; };
E18587D81279B93100FB6A47 /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
E1E20D0B12B09283005A6A64 /* imagesize */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = imagesize; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
E1D3CF6912AFEE3800CBB79E /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
E14061B7159D449000D99541 /* AppKit.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
08FB7794FE84155DC02AAC07 /* font_info */ = {
isa = PBXGroup;
children = (
08FB7795FE84155DC02AAC07 /* Source */,
E18587DD1279B93600FB6A47 /* Documentation */,
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */,
1AB674ADFE9D54B511CA2CBB /* Products */,
);
name = font_info;
sourceTree = "<group>";
};
08FB7795FE84155DC02AAC07 /* Source */ = {
isa = PBXGroup;
children = (
08FB7796FE84155DC02AAC07 /* imagesize.m */,
);
name = Source;
sourceTree = "<group>";
};
08FB779DFE84155DC02AAC07 /* External Frameworks and Libraries */ = {
isa = PBXGroup;
children = (
08FB779EFE84155DC02AAC07 /* Foundation.framework */,
E14061B6159D449000D99541 /* AppKit.framework */,
);
name = "External Frameworks and Libraries";
sourceTree = "<group>";
};
1AB674ADFE9D54B511CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
E1E20D0B12B09283005A6A64 /* imagesize */,
);
name = Products;
sourceTree = "<group>";
};
E18587DD1279B93600FB6A47 /* Documentation */ = {
isa = PBXGroup;
children = (
E18587D81279B93100FB6A47 /* README */,
);
name = Documentation;
sourceTree = "<group>";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
E1D3CF6A12AFEE3800CBB79E /* imagesize */ = {
isa = PBXNativeTarget;
buildConfigurationList = E1D3CF6F12AFEE3B00CBB79E /* Build configuration list for PBXNativeTarget "imagesize" */;
buildPhases = (
E1D3CF6812AFEE3800CBB79E /* Sources */,
E1D3CF6912AFEE3800CBB79E /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = imagesize;
productName = font_info;
productReference = E1E20D0B12B09283005A6A64 /* imagesize */;
productType = "com.apple.product-type.tool";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
08FB7793FE84155DC02AAC07 /* Project object */ = {
isa = PBXProject;
buildConfigurationList = 1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "imagesize" */;
compatibilityVersion = "Xcode 3.1";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
);
mainGroup = 08FB7794FE84155DC02AAC07 /* font_info */;
projectDirPath = "";
projectRoot = "";
targets = (
E1D3CF6A12AFEE3800CBB79E /* imagesize */,
);
};
/* End PBXProject section */
/* Begin PBXSourcesBuildPhase section */
E1D3CF6812AFEE3800CBB79E /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
E1D3CFAA12AFFB7F00CBB79E /* imagesize.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
1DEB927908733DD40010E9CD /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)";
CONFIGURATION_TEMP_DIR = "$(CAPP_BUILD)";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
OBJROOT = "$(CAPP_BUILD)";
ONLY_ACTIVE_ARCH = YES;
OTHER_LDFLAGS = (
"-framework",
Foundation,
"-framework",
AppKit,
);
PREBINDING = NO;
PRODUCT_NAME = imagesize;
SDKROOT = macosx10.5;
SYMROOT = "$(CAPP_BUILD)/Debug/CommonJS/cappuccino/bin";
};
name = Debug;
};
1DEB927A08733DD40010E9CD /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(NATIVE_ARCH_ACTUAL)";
CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)";
CONFIGURATION_TEMP_DIR = "$(CAPP_BUILD)";
DEPLOYMENT_LOCATION = NO;
DEPLOYMENT_POSTPROCESSING = NO;
DSTROOT = "/tmp/$(PROJECT_NAME).dst";
GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_PRECOMPILE_PREFIX_HEADER = NO;
GCC_PREFIX_HEADER = "";
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
INSTALL_PATH = "";
OBJROOT = "$(CAPP_BUILD)";
ONLY_ACTIVE_ARCH = NO;
PREBINDING = NO;
PRODUCT_NAME = imagesize;
SDKROOT = macosx10.5;
SYMROOT = "$(CAPP_BUILD)/Release/CommonJS/cappuccino/bin";
};
name = Release;
};
E1D3CF6D12AFEE3900CBB79E /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
PRODUCT_NAME = imagesize;
};
name = Debug;
};
E1D3CF6E12AFEE3900CBB79E /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
MACOSX_DEPLOYMENT_TARGET = 10.5;
PRODUCT_NAME = imagesize;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1DEB927808733DD40010E9CD /* Build configuration list for PBXProject "imagesize" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1DEB927908733DD40010E9CD /* Debug */,
1DEB927A08733DD40010E9CD /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
E1D3CF6F12AFEE3B00CBB79E /* Build configuration list for PBXNativeTarget "imagesize" */ = {
isa = XCConfigurationList;
buildConfigurations = (
E1D3CF6D12AFEE3900CBB79E /* Debug */,
E1D3CF6E12AFEE3900CBB79E /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 08FB7793FE84155DC02AAC07 /* Project object */;
}
@@ -0,0 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?>
<Workspace
version = "1.0">
<FileRef
location = "self:imagesize.xcodeproj">
</FileRef>
</Workspace>
+15 -2
View File
@@ -112,6 +112,7 @@ var NSButtonIsBorderedMask = 0x00800000,
}
_themeClass = [[self class] defaultThemeClass];
alternateImage = nil;
}
NIB_CONNECTION_EQUIVALENCY_TABLE[[cell UID]] = self;
@@ -122,8 +123,7 @@ var NSButtonIsBorderedMask = 0x00800000,
[self setBordered:[cell isBordered]];
_bezelStyle = [cell bezelStyle];
// clean up:
// Map Cocoa bezel styles to Cappuccino bezel styles and adjust frame
switch (_bezelStyle)
{
// implemented:
@@ -132,13 +132,16 @@ var NSButtonIsBorderedMask = 0x00800000,
positionOffsetOriginX = 4;
positionOffsetSizeWidth = -12;
break;
case CPTexturedRoundedBezelStyle:
positionOffsetOriginY = 2;
positionOffsetOriginX = -2;
positionOffsetSizeWidth = 0;
break;
case CPHUDBezelStyle:
break;
// approximations:
case CPRoundRectBezelStyle:
positionOffsetOriginY = -3;
@@ -146,11 +149,13 @@ var NSButtonIsBorderedMask = 0x00800000,
positionOffsetSizeWidth = 0;
_bezelStyle = CPRoundedBezelStyle;
break;
case CPSmallSquareBezelStyle:
positionOffsetOriginX = -2;
positionOffsetSizeWidth = 0;
_bezelStyle = CPTexturedRoundedBezelStyle;
break;
case CPThickSquareBezelStyle:
case CPThickerSquareBezelStyle:
case CPRegularSquareBezelStyle:
@@ -159,24 +164,28 @@ var NSButtonIsBorderedMask = 0x00800000,
positionOffsetSizeWidth = -4;
_bezelStyle = CPTexturedRoundedBezelStyle;
break;
case CPTexturedSquareBezelStyle:
positionOffsetOriginY = 4;
positionOffsetOriginX = -1;
positionOffsetSizeWidth = -2;
_bezelStyle = CPTexturedRoundedBezelStyle;
break;
case CPShadowlessSquareBezelStyle:
positionOffsetOriginY = 5;
positionOffsetOriginX = -2;
positionOffsetSizeWidth = 0;
_bezelStyle = CPTexturedRoundedBezelStyle;
break;
case CPRecessedBezelStyle:
positionOffsetOriginY = -3;
positionOffsetOriginX = -2;
positionOffsetSizeWidth = 0;
_bezelStyle = CPHUDBezelStyle;
break;
// unsupported
case CPRoundedDisclosureBezelStyle:
case CPHelpButtonBezelStyle:
@@ -185,6 +194,7 @@ var NSButtonIsBorderedMask = 0x00800000,
CPLog.warn("NSButton [%s]: unsupported bezel style: %d", _title == null ? "<no title>" : '"' + _title + '"', _bezelStyle);
_bezelStyle = CPHUDBezelStyle;
break;
// error:
default:
CPLog.warn("NSButton [%s]: unknown bezel style: %d", _title == null ? "<no title>" : '"' + _title + '"', _bezelStyle);
@@ -211,6 +221,7 @@ var NSButtonIsBorderedMask = 0x00800000,
_allowsMixedState = [cell allowsMixedState];
[self setImage:[cell normalImage]];
[self setAlternateImage:alternateImage];
[self setImagePosition:[cell imagePosition]];
[self setEnabled:[cell isEnabled]];
@@ -298,6 +309,7 @@ var NSButtonIsBorderedMask = 0x00800000,
_imagePosition = CPNoImage;
_highlightsBy = CPNoCellMask;
if (buttonFlags & NSHighlightsByPushInCellMask)
_highlightsBy |= CPPushInCellMask;
if (buttonFlags & NSHighlightsByContentsCellMask)
@@ -308,6 +320,7 @@ var NSButtonIsBorderedMask = 0x00800000,
_highlightsBy |= CPChangeBackgroundCellMask;
_showsStateBy = CPNoCellMask;
if (buttonFlags & NSShowsStateByContentsCellMask)
_showsStateBy |= CPContentsCellMask;
if (buttonFlags & NSShowsStateByChangeGrayCellMask)
+5 -4
View File
@@ -25,7 +25,8 @@
@import <AppKit/_CPCibCustomResource.j>
var FILE = require("file");
var FILE = require("file"),
imageSize = require("cappuccino/imagesize").imagesize;
@implementation _CPCibCustomResource (NSCoding)
@@ -58,11 +59,13 @@ var FILE = require("file");
if (!resourcePath)
CPLog.warn("Resource \"" + _resourceName + "\" not found in the resources path: " + [aCoder resourcesPath]);
else
size = imageSize(FILE.canonical(resourcePath));
size = imageSize(FILE.canonical(resourcePath)) || CGSizeMakeZero();
// Account for the fact that an extension may have been inferred.
if (resourcePath && FILE.extension(resourcePath) !== FILE.extension(_resourceName))
_resourceName += FILE.extension(resourcePath);
CPLog.debug("Image path: %s\nImage size: %dx%d", FILE.canonical(resourcePath), size.width, size.height);
}
_properties = [CPDictionary dictionaryWithObject:size forKey:@"size"];
@@ -73,8 +76,6 @@ var FILE = require("file");
@end
var ImageUtility = require("cappuccino/image-utility"),
imageSize = ImageUtility.sizeOfImageAtPath;
@implementation NSCustomResource : _CPCibCustomResource
{