29 - (void)imageDidLoad:(
CPImage)anImage;
30 - (void)imageDidError:(
CPImage)anImage;
31 - (void)imageDidAbort:(
CPImage)anImage;
74 var filename = arguments[0],
78 if (typeof(arguments[1]) ===
"number")
80 if (arguments[1] !== nil && arguments[1] !== undefined)
81 size = CGSizeMake(arguments[1], arguments[2]);
83 bundle = arguments[3];
85 else if (typeof(arguments[1]) ===
"object")
88 bundle = arguments[2];
131 id <CPImageDelegate> _delegate;
132 unsigned _loadStatus;
133 unsigned _implementedDelegateMethods;
152 - (id)initByReferencingFile:(
CPString)aFilename size:(CGSize)aSize
155 if (aFilename === undefined || aFilename === nil)
162 _size = CGSizeMakeCopy(aSize);
163 _filename = aFilename;
176 - (id)initWithContentsOfFile:(
CPString)aFilename size:(CGSize)aSize
209 var base64 = [someData
base64],
210 type = [base64 hasPrefix:@"/9j/4AAQSkZJRgABAQEASABIAAD/"] ?
@"jpg" :
@"png",
211 dataURL =
"data:image/" + type +
";base64," + base64;
233 if ([_filename hasPrefix:
@"data:image"])
237 var canvas = document.createElement(
"canvas"),
238 ctx = canvas.getContext(
"2d");
240 canvas.width = _image.width,
241 canvas.height = _image.height;
243 ctx.drawImage(_image, 0, 0);
245 dataURL = canvas.toDataURL(
"image/png");
250 var base64 = dataURL.replace(/^data:image\/png;base64,/,
"");
259 - (void)setSize:(CGSize)aSize
261 _size = CGSizeMakeCopy(aSize);
284 if (!imageOrSize.isa)
286 imageOrSize =
CPAppKitImage(
"CPImage/" + aName +
".png", imageOrSize);
288 [imageOrSize setName:aName];
330 if (_delegate === aDelegate)
333 _delegate = aDelegate;
334 _implementedDelegateMethods = 0;
336 if ([_delegate respondsToSelector:
@selector(imageDidLoad:)])
339 if ([_delegate respondsToSelector:
@selector(imageDidError:)])
342 if ([_delegate respondsToSelector:
@selector(imageDidAbort:)])
357 - (unsigned)loadStatus
376 _image =
new Image();
378 var isSynchronous = YES;
381 _image.onload =
function ()
384 window.setTimeout(
function() { [
self _imageDidLoad]; }, 0);
387 [
self _imageDidLoad];
390 [
self _derefFromImage];
393 _image.onerror =
function ()
396 window.setTimeout(
function() { [
self _imageDidError]; }, 0);
399 [
self _imageDidError];
402 [
self _derefFromImage];
405 _image.onabort =
function ()
408 window.setTimeout(
function() { [
self _imageDidAbort]; }, 0);
411 [
self _imageDidAbort];
414 [
self _derefFromImage];
417 _image.src = _filename;
421 window.setTimeout(
function() { isSynchronous = NO; }, 0);
425 - (BOOL)isSingleImage
430 - (BOOL)isThreePartImage
435 - (BOOL)isNinePartImage
445 if (filename.indexOf(
"data:") === 0)
447 var index = filename.indexOf(
",");
450 filename = [
CPString stringWithFormat:@"%s,%s...%s", filename.substr(0, index), filename.substr(index + 1, 10), filename.substr(filename.length - 10)];
452 filename =
"data:<unknown type>";
459 - (void)_derefFromImage
461 _image.onload = null;
462 _image.onerror = null;
463 _image.onabort = null;
467 - (void)_imageDidLoad
472 if (!_size || (_size.width == -1 && _size.height == -1))
473 _size = CGSizeMake(_image.width, _image.height);
480 [_delegate imageDidLoad:self];
484 - (void)_imageDidError
489 [_delegate imageDidError:self];
493 - (void)_imageDidAbort
498 [_delegate imageDidAbort:self];
521 [aCoder encodeObject:_filename forKey:@"CPFilename"];
522 [aCoder encodeSize:_size forKey:@"CPSize"];
529 CPArray _imageSlices;
533 - (id)initWithImageSlices:(CPArray)imageSlices isVertical:(BOOL)isVertical
539 _imageSlices = imageSlices;
540 _isVertical = isVertical;
551 - (CPArray)imageSlices
561 - (BOOL)isSingleImage
566 - (BOOL)isThreePartImage
571 - (BOOL)isNinePartImage
589 _imageSlices = [aCoder decodeObjectForKey:CPThreePartImageImageSlicesKey];
590 _isVertical = [aCoder decodeBoolForKey:CPThreePartImageIsVerticalKey];
598 [aCoder encodeObject:_imageSlices forKey:CPThreePartImageImageSlicesKey];
599 [aCoder encodeBool:_isVertical forKey:CPThreePartImageIsVerticalKey];
607 CPArray _imageSlices;
610 - (id)initWithImageSlices:(CPArray)imageSlices
615 _imageSlices = imageSlices;
625 - (CPArray)imageSlices
630 - (BOOL)isSingleImage
635 - (BOOL)isThreePartImage
640 - (BOOL)isNinePartImage
656 _imageSlices = [aCoder decodeObjectForKey:CPNinePartImageImageSlicesKey];
663 [aCoder encodeObject:_imageSlices forKey:CPNinePartImageImageSlicesKey];