52 return [[
CPImage alloc] initWithContentsOfFile:[aBundle pathForResource:aFilename] size:aSize];
54 return [[
CPImage alloc] initWithContentsOfFile:[aBundle pathForResource:aFilename]];
108 - (id)initByReferencingFile:(
CPString)aFilename size:(CGSize)aSize
115 _filename = aFilename;
128 - (id)initWithContentsOfFile:(
CPString)aFilename size:(CGSize)aSize
161 var base64 = [someData
base64],
162 type = [base64 hasPrefix:@"/9j/4AAQSkZJRgABAQEASABIAAD/"] ?
@"jpg" :
@"png",
163 dataURL =
"data:image/" + type +
";base64," + base64;
185 if ([_filename hasPrefix:
@"data:image"])
189 var canvas = document.createElement(
"canvas"),
190 ctx = canvas.getContext(
"2d");
192 canvas.width = _image.width,
193 canvas.height = _image.height;
195 ctx.drawImage(_image, 0, 0);
197 dataURL = canvas.toDataURL(
"image/png");
202 var base64 = dataURL.replace(/^data:image\/png;base64,/,
"");
211 - (void)setSize:(CGSize)aSize
213 _size = CGSizeMakeCopy(aSize);
236 if (!imageOrSize.isa)
238 imageOrSize =
CPAppKitImage(
"CPImage/" + aName +
".png", imageOrSize);
240 [imageOrSize setName:aName];
272 - (void)setDelegate:(
id)aDelegate
274 _delegate = aDelegate;
288 - (unsigned)loadStatus
307 _image =
new Image();
309 var isSynchronous = YES;
312 _image.onload =
function ()
315 window.setTimeout(
function() { [
self _imageDidLoad]; }, 0);
318 [
self _imageDidLoad];
321 [
self _derefFromImage];
324 _image.onerror =
function ()
327 window.setTimeout(
function() { [
self _imageDidError]; }, 0);
330 [
self _imageDidError];
333 [
self _derefFromImage];
336 _image.onabort =
function ()
339 window.setTimeout(
function() { [
self _imageDidAbort]; }, 0);
342 [
self _imageDidAbort];
345 [
self _derefFromImage];
348 _image.src = _filename;
352 window.setTimeout(
function() { isSynchronous = NO; }, 0);
356 - (BOOL)isThreePartImage
361 - (BOOL)isNinePartImage
371 if (filename.indexOf(
"data:") === 0)
373 var index = filename.indexOf(
",");
376 filename = [
CPString stringWithFormat:@"%s,%s...%s", filename.substr(0, index), filename.substr(index + 1, 10), filename.substr(filename.length - 10)];
378 filename =
"data:<unknown type>";
385 - (void)_derefFromImage
387 _image.onload = null;
388 _image.onerror = null;
389 _image.onabort = null;
393 - (void)_imageDidLoad
398 if (!_size || (_size.width == -1 && _size.height == -1))
399 _size = CGSizeMake(_image.width, _image.height);
405 if ([_delegate respondsToSelector:
@selector(imageDidLoad:)])
406 [_delegate imageDidLoad:self];
410 - (void)_imageDidError
414 if ([_delegate respondsToSelector:
@selector(imageDidError:)])
415 [_delegate imageDidError:self];
419 - (void)_imageDidAbort
423 if ([_delegate respondsToSelector:
@selector(imageDidAbort:)])
424 [_delegate imageDidAbort:self];
447 [aCoder encodeObject:_filename forKey:@"CPFilename"];
448 [aCoder encodeSize:_size forKey:@"CPSize"];
459 - (id)initWithImageSlices:(
CPArray)imageSlices isVertical:(BOOL)isVertical
465 _imageSlices = imageSlices;
466 _isVertical = isVertical;
487 - (BOOL)isThreePartImage
492 - (BOOL)isNinePartImage
510 _imageSlices = [aCoder decodeObjectForKey:CPThreePartImageImageSlicesKey];
511 _isVertical = [aCoder decodeBoolForKey:CPThreePartImageIsVerticalKey];
519 [aCoder encodeObject:_imageSlices forKey:CPThreePartImageImageSlicesKey];
520 [aCoder encodeBool:_isVertical forKey:CPThreePartImageIsVerticalKey];
531 - (id)initWithImageSlices:(
CPArray)imageSlices
536 _imageSlices = imageSlices;
551 - (BOOL)isThreePartImage
556 - (BOOL)isNinePartImage
572 _imageSlices = [aCoder decodeObjectForKey:CPNinePartImageImageSlicesKey];
579 [aCoder encodeObject:_imageSlices forKey:CPNinePartImageImageSlicesKey];