[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-dev] SF.net SVN: supercollider:[8142] trunk
Revision: 8142
http://supercollider.svn.sourceforge.net/supercollider/?rev=8142&view=rev
Author: thelych
Date: 2008-12-15 13:53:15 +0000 (Mon, 15 Dec 2008)
Log Message:
-----------
SCImage update : auto garbage collection, added caching for SCImageKernel objects, interface updated
Modified Paths:
--------------
trunk/Source/app/SCImage.M
trunk/build/Help/GUI/SCImage/SCImage.html
trunk/build/Help/GUI/SCImage/SCImageFilter.html
trunk/build/Help/GUI/SCImage/SCImageKernel.html
trunk/build/SCClassLibrary/Common/GUI/osx/SCImage.sc
Modified: trunk/Source/app/SCImage.M
===================================================================
--- trunk/Source/app/SCImage.M 2008-12-15 13:37:11 UTC (rev 8141)
+++ trunk/Source/app/SCImage.M 2008-12-15 13:53:15 UTC (rev 8142)
@@ -37,12 +37,54 @@
extern pthread_mutex_t gLangMutex; // in case
PyrSymbol *s_scimage;
PyrSymbol *s_scfilter;
-//static PyrSymbol *s_vector;
-static NSMutableArray *gSCImages;
+PyrSymbol *s_scimagekernel;
static BOOL gCIFilterPlugInsLoaded = NO; //
CGRect OutsetRect(CGRect r, const float dx, const float dy);
+/*
+ * SCImage Finalizer callback function
+ */
+int FinalizeSCImageObject(struct VMGlobals* g, struct PyrObject* object)
+{
+ if( !IsNil(object->slots+0) ) {
+ SCImage * scimage = (SCImage*)object->slots[0].uptr;
+ #if SCIMAGE_DEBUG
+ post("finalize scimage (%p), dataptr (%p)\n", object, scimage);
+ #endif
+ [scimage release];
+ }
+ return errNone;
+}
+
+/*
+ * SCImageKernel Finalizer callback function
+ */
+int FinalizeSCImageKernelObject(struct VMGlobals* g, struct PyrObject* object)
+{
+ if( !IsNil(object->slots+4) ) {
+ CIKernel * kernel = (CIKernel*)object->slots[4].uptr;
+ #if SCIMAGE_DEBUG
+ post("finalize scimagekernel (%p), dataptr (%p)\n", object, kernel);
+ #endif
+ [kernel release];
+ }
+ return errNone;
+}
+
+/* This function should be the one to use to create a new PyrObject of class s_scimage
+ * it will setup directly the Finalizer object
+ * so the PyrObject will free directly the SCImage instance
+ * Not calling this function in any other situation may result in a memory leak.
+ */
+PyrObject* newPyrSCImage(VMGlobals* g)
+{
+ PyrObject* object = instantiateObject(g->gc, s_scimage->u.classobj, 0, false, true);
+ if(object)
+ InstallFinalizer(g, object, 9, FinalizeSCImageObject);
+ return object;
+}
+
inline NSString* nsStringFromSlot(PyrSlot *slot)
{
int len, err;
@@ -52,7 +94,7 @@
len = slotStrLen(slot); // check if Symbol or String
if(len == -1) // returns -1 if failure
return nil;
-
+
nsString = [[NSString alloc]initWithBytes:IsSym(slot) ? (void*)slot->us->name : (void*)slot->uos->s length:len encoding:NSASCIIStringEncoding];
return [nsString autorelease];
@@ -158,7 +200,6 @@
}
if(image) {
- // nsPrevCtx = [NSGraphicsContext currentContext];
[NSGraphicsContext saveGraphicsState];
@@ -192,9 +233,6 @@
goto failure;
}
- // if(nsPrevCtx)
- // [NSGraphicsContext setCurrentContext:nsPrevCtx]; // restore previous ctx
-
[NSGraphicsContext restoreGraphicsState];
}
@@ -355,7 +393,7 @@
NSImage seems to have an incorrect size depending on the dpi of the image
find the largest representation in the nsimage and the set the size according to it
*/
- int pixelsHigh=0, pixelsWide=0; // should be NSInteger in 10.5 - but stick with an <int> for now
+ int pixelsHigh=0, pixelsWide=0; // should be NSInteger in 10.5 - but stick with an <int> for 10.4
NSImageRep *irep;
NSEnumerator *e = [[nsimage representations]objectEnumerator];
while( irep = [e nextObject] ) {
@@ -886,7 +924,6 @@
[fmat setValue: [self ciimage] forKey: @"inputImage"];
[fmat setValue: transform forKey: @"inputTransform"];
timage = [fmat valueForKey:@"outputImage"];
-
if(op != NSCompositeSourceOver && op != NSCompositeCopy)
{
[timage drawInRect:dstRect fromRect:srcRect operation:op fraction:delta];
@@ -1050,8 +1087,6 @@
SCImage *newSCImage = [[SCImage alloc]initWithCIImage:result extent:[_ciimage extent] format:_ciFormat];
#endif
- [gSCImages addObject:newSCImage];
-
return [newSCImage autorelease];
}
@@ -1110,13 +1145,11 @@
NSLog(@"prSCImage_New Failed Creating valid SCImage !");
return errFailed;
}
-
- [gSCImages addObject: image];
- [image release];
SetPtr(receiver->uo->slots + 0, image);
SetFloat(receiver->uo->slots + 1, width);
SetFloat(receiver->uo->slots + 2, height);
+ InstallFinalizer(g, receiver->uo, 9, FinalizeSCImageObject);
return errNone;
}
@@ -1151,12 +1184,10 @@
return errFailed;
}
- [gSCImages addObject: image];
- [image release];
-
SetPtr(receiver->uo->slots + 0, image);
SetFloat(receiver->uo->slots + 1, (float)[image width]); // using size.width / size.height can return non integral number (ex: 499.996 instead of 499)
SetFloat(receiver->uo->slots + 2, (float)[image height]); // better to stick with bitmap properties to have true pixel size
+ InstallFinalizer(g, receiver->uo, 9, FinalizeSCImageObject);
return errNone;
}
@@ -1233,16 +1264,6 @@
return errNone;
}
-int prSCImage_count(struct VMGlobals *g, int numArgsPushed);
-int prSCImage_count(struct VMGlobals *g, int numArgsPushed)
-{
- if (!g->canCallOS) return errCantCallOS;
- PyrSlot *receiver = g->sp; // instance of SCImage
-
- SetInt(receiver, [gSCImages count]);
- return errNone;
-}
-
int prSCImage_Free(struct VMGlobals *g, int numArgsPushed);
int prSCImage_Free(struct VMGlobals *g, int numArgsPushed)
{
@@ -1256,8 +1277,7 @@
#if SCIMAGE_DEBUG
NSLog(@"Releasing SCImage (%p)", image);
#endif
-
- [gSCImages removeObject: image];
+ [image release];
SetNil(receiver->uo->slots + 0); // ensure slot->utag is also marked as NIL
SetNil(receiver->uo->slots + 1); // not only the pointer
@@ -1266,19 +1286,6 @@
return errNone;
}
-int prSCImage_FreeAll(struct VMGlobals *g, int numArgsPushed);
-int prSCImage_FreeAll(struct VMGlobals *g, int numArgsPushed)
-{
-
- #if SCIMAGE_DEBUG
- NSLog(@"---- FREE SCIMAGE POOL ----");
- #endif
-
- [gSCImages removeAllObjects];
-
- return errNone;
-}
-
int prSCImage_sync(struct VMGlobals *g, int numArgsPushed);
int prSCImage_sync(struct VMGlobals *g, int numArgsPushed)
{
@@ -1969,7 +1976,7 @@
@class SCGraphView;
// Currently it grabs a portion from the scgraphview
-// user should here pass the ASBOLUTE view bounds or a specific rect
+// user should here pass the ABSOLUTE view bounds or a specific rect
int prSCImage_imageFromSCWindowRect(struct VMGlobals *g, int numArgsPushed);
int prSCImage_imageFromSCWindowRect(struct VMGlobals *g, int numArgsPushed)
{
@@ -2012,35 +2019,37 @@
if(!nsimage) {
post("Error: Failed creating valid NSImage !\n");
+ SetNil(receiver);
goto Bail;
}
+
[nsimage addRepresentation:nsbitmap];
scimage = [[SCImage alloc]initWithNSImage:nsimage];
if(!scimage) {
post("Error: Failed creating valid SCImage !\n");
- goto Bail;
+ SetNil(receiver);
+ return errNone;
}
// Instantiate and set the SCObject
- object = instantiateObject(g->gc, s_scimage->u.classobj, 0, false, true);
+ object = newPyrSCImage(g);
if(!object) {
post("Error: Failed creating valid SCImage class !");
+ [scimage release];
+ SetNil(receiver);
goto Bail;
}
+
SetPtr(object->slots + 0, scimage);
SetFloat(object->slots + 1, (float)[nsbitmap pixelsWide]);
SetFloat(object->slots + 2, (float)[nsbitmap pixelsHigh]);
SetObject(receiver, object);
-
- // add now image
- [gSCImages addObject:scimage];
}
Bail:
if(nsimage) [nsimage release];
if(nsbitmap) [nsbitmap release];
- if(scimage) [scimage release];
return errNone;
}
@@ -2441,7 +2450,7 @@
}
else
{
- receiverObj = instantiateObject(g->gc, s_scimage->u.classobj, 0, false, true);
+ receiverObj = newPyrSCImage(g);
if(!receiverObj)
{
post("Failed creating valid SCImage class !");
@@ -2463,8 +2472,6 @@
post("Error: Failed creating valid CIImage cache !!!");
return errFailed;
}
- [gSCImages addObject:newSCImage];
- [newSCImage release];
value = receiverObj->slots;
SetPtr(value + 0, newSCImage);
@@ -2472,7 +2479,7 @@
SetFloat(value + 2, destExtent.size.height);
if(receiverObj == receiver->uo)
- [gSCImages removeObject:scimage];
+ [scimage release];
else
SetObject(receiver, receiverObj);
return errNone;
@@ -2534,7 +2541,7 @@
#endif
scimage = [scimage imageFilteredWith:ciFilter]; // filtered copy
- PyrObject* object = instantiateObject(g->gc, s_scimage->u.classobj, 0, false, true);
+ PyrObject* object = newPyrSCImage(g);
PyrSlot *slots = object->slots;
SetPtr(slots + 0, scimage);
SetFloat(slots + 1, (float)[scimage width]);
@@ -2545,25 +2552,83 @@
return errNone;
}
-// This function is intended to apply a specific CIKernel to the image
-// Still experimental
+
+/*
+ * Currently only cache the CIKernel object + install a finalizer on it
+ */
+int cachePyrKernel(VMGlobals *g, PyrObject* kernelObject)
+{
+ NSString* kernelCmd = nsStringFromSlot(kernelObject->slots+0);
+ if(!kernelCmd) {
+ post("Error: Kernel string command does not seem valid !\n");
+ return errFailed;
+ }
+
+ id kernel = [CIKernel kernelsWithString:kernelCmd];
+ if(!kernel) {
+ post("Error: Failed creating valid Kernel from shader string !!\n");
+ return errFailed;
+ }
+
+ // Create the Kernel
+ kernel = [(NSArray*)kernel objectAtIndex:0];
+ if(!kernel) {
+ post("Error: Failed retrieving valid CIKernel !");
+ return errFailed;
+ }
+ [kernel retain];
+
+ if( !IsNil(kernelObject->slots+4) ) {
+ id current = (id)kernelObject->slots[4].uptr;
+ if(current)
+ [current release];
+ }
+
+ SetPtr(kernelObject->slots+4, kernel);
+
+ if( IsNil(kernelObject->slots+5) ) {
+ #if SCIMAGE_DEBUG
+ post("install finalizer scimagekernel (%p)\n", kernelObject);
+ #endif
+ InstallFinalizer(g, kernelObject, 5, FinalizeSCImageKernelObject);
+ }
+ #if SCIMAGE_DEBUG
+ post("caching scimagekernel (%p)\n", kernelObject);
+ #endif
+ return errNone;
+}
+
+int prSCImageKernel_Compile(struct VMGlobals *g, int numArgsPushed);
+int prSCImageKernel_Compile(struct VMGlobals *g, int numArgsPushed)
+{
+ PyrSlot* receiver = g->sp;
+ return cachePyrKernel(g, receiver->uo);
+}
+
+/*
+ * This function is intended to apply a specific CIKernel to the image
+ * Still experimental
+ */
int prSCImageFilter_ApplyKernel(struct VMGlobals *g, int numArgsPushed);
int prSCImageFilter_ApplyKernel(struct VMGlobals *g, int numArgsPushed)
{
- PyrSlot *receiver = g->sp - 4;
- PyrSlot *kernelStringSlot = g->sp - 3;
- PyrSlot *argumentSlot = g->sp - 2;
+ PyrSlot *receiver = g->sp - 3;
+ PyrSlot *kernelSlot = g->sp - 2;
PyrSlot *cropRegionSlot = g->sp - 1;
PyrSlot *inPlace = g->sp;
+ PyrSlot *argumentSlot;
SCImage *newSCImage=nil;
SCImage *scimage;
+ PyrObject *kernelObject=nil;
+ CIKernel *kernel=nil;
+
int err;
CGRect destExtent;
CGRect cropRegion;
CGRect maxRect;
- CISampler * sampler = nil;
+
err = errNone;
scimage = (SCImage *)receiver->uo->slots[0].ui;
if(!scimage){
@@ -2572,30 +2637,22 @@
}
[scimage setAccelerated:YES];
+ CIFilter* ciFilter = [[CIFilter new]autorelease];
- CIFilter* ciFilter = [[CIFilter alloc]init];
- NSString* kernelCmd = nsStringFromSlot(kernelStringSlot);
- if(!kernelCmd) {
- post("Error: Kernel string command does not seem valid !\n");
- return errNone;
+ ///// Setting and caching the Kernel Object
+ kernelObject = kernelSlot->uo;
+ if(IsNil(kernelObject->slots+4)) {
+ err = cachePyrKernel(g, kernelObject);
+ if(err) return err;
}
+ argumentSlot = kernelObject->slots+1;
+ kernel = (CIKernel*)(kernelObject->slots[4].uptr);
+ if(!kernel)
+ return errFailed;
- id kernel = [CIKernel kernelsWithString:kernelCmd];
- if(!kernel) {
- post("Error: Failed creating valid Kernel from shader string !!\n");
- goto Bail;
- }
-
// Get the extent of the image
CGRect extent = [[scimage ciimage]extent];
- // Create the Kernel
- kernel = [(NSArray*)kernel objectAtIndex:0];
- if(!kernel) {
- post("Error: Failed retrieving valid CIKernel !");
- goto Bail;
- }
-
#if SCIMAGE_FILTER_DEBUG
NSLog(@"SCImageFilter: CIKernel created Successfully !");
#endif
@@ -2617,7 +2674,7 @@
NSMutableArray* arguments = [NSMutableArray arrayWithCapacity:16];
if(!arguments) {
post("Error: memory error ? allocation failed for NSMutableArray. applying Kernel aborted !");
- goto Bail;
+ return errFailed;
}
#if SCIMAGE_FILTER_DEBUG
@@ -2633,25 +2690,17 @@
[arguments addObject:object];
}
else
- goto Bail; // Kernels require no bad arguments
+ return errFailed; // Kernels require no bad arguments
}
}
// Create the Option Dictionary that contains additional info about final rendering
// kCIApplyOptionDefinition : DOD of image
// kCIApplyOptionExtent : size of the resulting image
- NSMutableDictionary * dictionary = [[ [NSMutableDictionary alloc] initWithCapacity:8]autorelease];
- [dictionary setValue:
- [[scimage ciimage] definition] // better to pass directly the filterShape
- /*
- [NSArray arrayWithObjects:
- [NSNumber numberWithFloat:extent.origin.x], // x
- [NSNumber numberWithFloat:extent.origin.y], // y
- [NSNumber numberWithFloat:extent.size.width], // w
- [NSNumber numberWithFloat:extent.size.height], // h
- nil
- ]
- */
+ NSMutableDictionary * dictionary = [[[NSDictionary dictionary] mutableCopy] autorelease];
+
+ [dictionary
+ setValue:[[scimage ciimage] definition] // better to pass directly the filterShape
forKey:kCIApplyOptionDefinition
];
@@ -2667,6 +2716,7 @@
[NSNumber numberWithFloat:maxRect.origin.y], // y
[NSNumber numberWithFloat:maxRect.size.width], // w
[NSNumber numberWithFloat:maxRect.size.height] // h
+ ,nil
]
forKey:kCIApplyOptionExtent
];
@@ -2708,19 +2758,19 @@
#if SCIMAGE_MAC_OS_10_5
[[scimage accumulator] setImage:ciimage];
#else
- [ciimage retain];
[scimage->_ciimage release];
- scimage->_ciimage = ciimage;
+ scimage->_ciimage = [ciimage retain];
#endif
[scimage setShouldSyncBitmap:YES]; // invalidates bitmap
return errNone;
}else{
+ NSLog(@"CIKernel different size returned");
receiverObj = receiver->uo;
}
}
else
{
- receiverObj = instantiateObject(g->gc, s_scimage->u.classobj, 0, false, true);
+ receiverObj = newPyrSCImage(g);
}
#if SCIMAGE_FILTER_DEBUG
@@ -2728,30 +2778,26 @@
#endif
newSCImage = [[SCImage alloc]initWithCIImage:ciimage extent:destExtent format:[scimage format]];
- [gSCImages addObject:newSCImage];
- [newSCImage release];
PyrSlot *slots = receiverObj->slots;
+ [(id)(slots[0].uptr) release];
+
SetPtr(slots + 0, newSCImage);
SetFloat(slots + 1, destExtent.size.width);
SetFloat(slots + 2, destExtent.size.height);
- if(receiverObj == receiver->uo)
- [gSCImages removeObject:scimage];
- else
+ if(receiverObj != receiver->uo) {
SetObject(receiver, receiverObj);
+ }
}
@catch ( NSException *e )
{
- if([[e name]isEqualToString: @"CIKernelMissingArgument"]) {
- post("Error: %s\n", [[NSString stringWithFormat:@"%@ %@", @"SCImageKernel", e]UTF8String]);
- goto Bail;
- }
+ //if([[e name]isEqualToString: @"CIKernelMissingArgument"])
+ post("Error: %s\n", [[NSString stringWithFormat:@"%@ %@", @"SCImageKernel", e]UTF8String]);
+ return errFailed;
}
- // Bail out point if error
- Bail:
- [ciFilter release];
- return err;
+
+ return errNone;
}
int prSCImageFilter_GetAttributeMinMax(struct VMGlobals *g, int numArgsPushed)
@@ -2778,7 +2824,7 @@
const char* cStr = [key cStringUsingEncoding:NSASCIIStringEncoding];
attribute = [attrDict objectForKey: [NSString stringWithFormat:@"input%c%s", toupper(*cStr), cStr+1]];
if( !attribute ) {
- post("SCImageFilter : no attributes named %s found !", [key UTF8String]);
+ post("SCImageFilter : no attributes named %s found !\n", [key UTF8String]);
goto BailErr;
}
@@ -2837,10 +2883,6 @@
NSEnumerator* e = [inputKeys objectEnumerator];
NSString *key;
-
- //PyrObject* resultArray, attrArray;
- //resultArray = (PyrObject*)instantiateObject(g->gc, class_array, [inputKeys count], false, true);
-
int maxsize, i=0;
maxsize = [inputKeys count] * 2;
if([inputKeys containsObject:@"inputImage"]) {
@@ -2900,12 +2942,7 @@
while( type = [e nextObject] )
{
if(i >= maxsize) break; // in case
-
- //pyrPathString = newPyrString(g->gc,[type UTF8String],0,true);
- //SetObject(&slot, pyrPathString);
returnObject->symbols[i] = getsym([type UTF8String]);
- //returnObject->slots[i].ucopy = slot.ucopy;
- //g->gc->GCWrite(returnObject, pyrPathString);
++i;
}
@@ -2922,21 +2959,13 @@
s_scimage = getsym("SCImage");
s_scfilter = getsym("SCImageFilter");
-// s_vector = getsym("Vector");
+ s_scimagekernel = getsym("SCImageKernel");
#if SCIMAGE_DEBUG
NSLog(@"---- SCIMAGE: Init Primitives ----");
NSLog(@"---- SCIMAGE: Using Mac OS 10.%c Version ----", (SCIMAGE_MAC_OS_10_5 == 1) ? '5' : '4');
#endif
- if(gSCImages) {
- #if SCIMAGE_DEBUG
- NSLog(@"---- SCIMAGE: Free Pool ----");
- #endif
- [gSCImages release];
- }
-
- gSCImages = [[NSMutableArray arrayWithCapacity: 8] retain];
if(!gCIFilterPlugInsLoaded) {
#if SCIMAGE_DEBUG
NSLog(@"---- SCIMAGE: Loading CIFilter PlugIns ----");
@@ -2953,9 +2982,7 @@
//definePrimitive(base, index++, "_SCImage_NewFromFile", prSCImage_NewFromFile, 2, 0); // use only URL
definePrimitive(base, index++, "_SCImage_NewFromURL", prSCImage_NewFromURL, 2, 0);
definePrimitive(base, index++, "_SCImage_WriteToFile", prSCImage_WriteToFile, 3, 0);
- definePrimitive(base, index++, "_SCImage_count", prSCImage_count, 1, 0);
definePrimitive(base, index++, "_SCImage_Free", prSCImage_Free, 1, 0);
- definePrimitive(base, index++, "_SCImage_FreeAll", prSCImage_FreeAll, 1, 0);
definePrimitive(base, index++, "_SCImage_setSize", prSCImage_setSize, 3, 0);
definePrimitive(base, index++, "_SCImage_setScalesWhenResized", prSCImage_setScalesWhenResized, 2, 0);
definePrimitive(base, index++, "_SCImage_scalesWhenResized", prSCImage_scalesWhenResized, 1, 0);
@@ -2985,8 +3012,8 @@
definePrimitive(base, index++, "_SCImageFilter_Apply", prSCImageFilter_Apply, 4, 0);
definePrimitive(base, index++, "_SCImageFilter_ApplyMultiple", prSCImageFilter_ApplyMultiple, 5, 0);
definePrimitive(base, index++, "_SCImageFilter_GetAttributeMinMax", prSCImageFilter_GetAttributeMinMax, 3, 0);
- definePrimitive(base, index++, "_SCImageFilter_ApplyKernel", prSCImageFilter_ApplyKernel, 5, 0);
-
+ definePrimitive(base, index++, "_SCImageFilter_ApplyKernel", prSCImageFilter_ApplyKernel, 4, 0);
+ definePrimitive(base, index++, "_SCImageKernel_Compile", prSCImageKernel_Compile, 1, 0);
}
/*
Modified: trunk/build/Help/GUI/SCImage/SCImage.html
===================================================================
--- trunk/build/Help/GUI/SCImage/SCImage.html 2008-12-15 13:37:11 UTC (rev 8141)
+++ trunk/build/Help/GUI/SCImage/SCImage.html 2008-12-15 13:53:15 UTC (rev 8142)
@@ -5,54 +5,48 @@
<meta http-equiv="Content-Style-Type" content="text/css">
<title></title>
<meta name="Generator" content="Cocoa HTML Writer">
-<meta name="CocoaVersion" content="824.41">
+<meta name="CocoaVersion" content="949.33">
<style type="text/css">
p.p1 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica}
p.p2 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; min-height: 14.0px}
p.p3 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica}
-p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0000ef}
+p.p4 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #0026ed}
p.p5 {margin: 0.0px 0.0px 0.0px 0.0px; font: 18.0px Helvetica; min-height: 22.0px}
p.p6 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica}
p.p7 {margin: 0.0px 0.0px 0.0px 0.0px; font: 14.0px Helvetica; min-height: 17.0px}
p.p8 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica}
p.p9 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; min-height: 14.0px}
-p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p11 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #bf0000}
-p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000}
-p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #000000; min-height: 14.0px}
-p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000; min-height: 14.0px}
-p.p15 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #bf0000}
-p.p16 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #606060}
-p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #000000}
-p.p18 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #000000; min-height: 14.0px}
-p.p19 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #606060}
-p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
-p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 12.0px Helvetica; color: #000000}
-p.p22 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
-p.p23 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
-p.p24 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #007300}
-p.p25 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #0000bf}
-p.p26 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
-p.p27 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #4d4d4d}
-span.s1 {color: #000f7e}
+p.p10 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #b51800}
+p.p11 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco}
+p.p12 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; min-height: 14.0px}
+p.p13 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #b51800}
+p.p14 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #606060}
+p.p15 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco}
+p.p16 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; min-height: 14.0px}
+p.p17 {margin: 0.0px 0.0px 0.0px 57.0px; text-indent: -57.0px; font: 10.0px Monaco; color: #606060}
+p.p18 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica}
+p.p19 {margin: 0.0px 0.0px 0.0px 0.0px; font: 13.0px Helvetica; min-height: 16.0px}
+p.p20 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #2a6d15}
+p.p21 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #002dbd}
+p.p22 {margin: 0.0px 0.0px 0.0px 0.0px; font: 10.0px Monaco; color: #4d4d4d}
+span.s1 {color: #00227c}
span.s2 {color: #000000}
span.s3 {text-decoration: underline}
-span.s4 {color: #000636}
-span.s5 {color: #001299}
+span.s4 {color: #000e36}
+span.s5 {color: #002897}
span.s6 {font: 12.0px Helvetica; color: #000000}
-span.s7 {color: #0000bf}
+span.s7 {color: #002dbd}
span.s8 {font: 10.0px Monaco}
-span.s9 {font: 12.0px Helvetica; color: #000636}
+span.s9 {font: 12.0px Helvetica; color: #000e36}
span.s10 {font: 12.0px Helvetica}
span.s11 {color: #606060}
-span.s12 {color: #001bd8}
-span.s13 {color: #007300}
+span.s12 {color: #003ad6}
+span.s13 {color: #2a6d15}
span.s14 {font: 14.0px Helvetica}
-span.s15 {color: #bf0000}
-span.s16 {color: #b51b25}
-span.s17 {color: #000100}
-span.s18 {color: #0e1707}
-span.s19 {color: #0000f4}
+span.s15 {color: #b51800}
+span.s16 {color: #ac251b}
+span.s17 {color: #101608}
+span.s18 {color: #0039f2}
span.Apple-tab-span {white-space:pre}
</style>
</head>
@@ -73,154 +67,136 @@
<p class="p8"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>multiple<span class="Apple-converted-space"> </span></b>- <span class="s4">May</span> be a<span class="Apple-converted-space"> </span></p>
<p class="p9"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p8"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="SC://Number"><span class="s5">Number</span></a> to create an <b>empty</b> image of size multiple as width and height</p>
-<p class="p10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p11"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(400);<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// Create a 400x400 pixels SCimage.</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p11"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(400,200);<span class="Apple-tab-span"> </span></span>// Create a 400x200 pixels SCimage.</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p9"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p10"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(400);<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// Create a 400x400 pixels SCimage.</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p10"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(400,200);<span class="Apple-tab-span"> </span></span>// Create a 400x200 pixels SCimage.</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p8"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="SC://Point"><span class="s4">Point</span></a> to create an <b>empty</b> image of size multiple.x as width and multiple.y as height</p>
-<p class="p10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p11"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(400@200);<span class="Apple-tab-span"> </span></span>// Create a 400x200 pixels SCimage.</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p9"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p10"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(400@200);<span class="Apple-tab-span"> </span></span>// Create a 400x200 pixels SCimage.</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="s8"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><a href="SC://String"><span class="s9">String</span></a></span> to create an image from a <b>local file </b>or from an <span class="s4"><b>URL</b></span> (http://, ftp://, file:///)</p>
-<p class="p14"><br></p>
-<p class="p15"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>//<span class="Apple-tab-span"> </span>Path string</p>
-<p class="p16"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>[i.width, i.height].postln;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>//<span class="Apple-tab-span"> </span>URL string - http:// or ftp:// - blocks until image is downloaded</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"http://www.google.com/intl/en_ALL/images/logo.gif"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;<span class="Apple-converted-space"> </span></p>
-<p class="p13"><br></p>
+<p class="p2"><br></p>
+<p class="p13"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>//<span class="Apple-tab-span"> </span>Path string</p>
+<p class="p14"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>[i.width, i.height].postln;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>//<span class="Apple-tab-span"> </span>URL string - http:// or ftp:// - blocks until image is downloaded</p>
+<p class="p14"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"http://www.google.com/intl/en_ALL/images/logo.gif"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;<span class="Apple-converted-space"> </span></p>
+<p class="p12"><br></p>
<p class="p8"><b><span class="Apple-tab-span"> </span>*color(multiple, color)</b></p>
<p class="p8"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>Creates a new SCImage instance filled with the specified color. <b>multiple</b> stands here for multiple arguments. the last argument should be a valid <a href="SC://Color"><span class="s4">Color</span></a><span class="Apple-converted-space"> </span></p>
-<p class="p10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p17"><span class="s10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>i = <span class="s7">SCImage</span>.color(400, 200, <span class="s7">Color</span>.blue(0.9,0.1));</p>
-<p class="p17"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p18"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p9"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p15"><span class="s10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>i = <span class="s7">SCImage</span>.color(400, 200, <span class="s7">Color</span>.blue(0.9,0.1));</p>
+<p class="p15"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
+<p class="p16"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p8"><span class="s8"><span class="Apple-tab-span"> </span></span><b>*open(path)</b></p>
<p class="p8"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>Creates a new SCImage instance from the local file at <b>path</b>.</p>
-<p class="p18"><br></p>
-<p class="p17"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p19"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.open(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p17"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url.postln;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p18"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p16"><br></p>
+<p class="p15"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p17"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.open(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
+<p class="p15"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url.postln;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p16"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p8"><b><span class="Apple-tab-span"> </span>*openURL(path)</b></p>
<p class="p8"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>Creates a new SCImage instance from a valid image at the specified<b> </b>URL <b>path</b></p>
-<p class="p10"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b></p>
-<p class="p19"><span class="s6"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.openURL(</span>"file:///Library/Desktop%20Pictures/Ripples%20Blue.jpg"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = i.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p13"><br></p>
+<p class="p9"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b></p>
+<p class="p17"><span class="s6"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.openURL(</span>"file:///Library/Desktop%20Pictures/Ripples%20Blue.jpg"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = i.plot(freeOnClose:<span class="s7">true</span>);</p>
+<p class="p12"><br></p>
<p class="p8"><span class="Apple-tab-span"> </span><b>*fromImage(image)</b></p>
<p class="p8"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>Creates a new SCImage instance from another SCImage.</p>
-<p class="p10"><br></p>
-<p class="p17"><span class="s10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>i = <span class="s7">SCImage</span>.new(<span class="s7">Document</span>.current.dir +/+ <span class="s11">"vduck2.jpg"</span>);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j = <span class="s7">SCImage</span>.fromImage(i);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.dump;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>[i, j].do(<span class="s7">_</span>.plot);</p>
-<p class="p17"><span class="s10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>[i, j].do(<span class="s7">_</span>.free);</p>
-<p class="p18"><span class="Apple-tab-span"> </span></p>
+<p class="p9"><br></p>
+<p class="p15"><span class="s10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>i = <span class="s7">SCImage</span>.new(<span class="s7">Document</span>.current.dir +/+ <span class="s11">"vduck2.jpg"</span>);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j = <span class="s7">SCImage</span>.fromImage(i);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.dump;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>[i, j].do(<span class="s7">_</span>.plot);</p>
+<p class="p15"><span class="s10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>[i, j].do(<span class="s7">_</span>.free);</p>
+<p class="p16"><span class="Apple-tab-span"> </span></p>
<p class="p8"><span class="s8"><span class="Apple-tab-span"> </span></span><b>*fromWindow(window, rect)</b></p>
<p class="p8"><b><span class="Apple-tab-span"> </span></b><span class="s8"><span class="Apple-tab-span"> </span></span>Creates a new SCImage from a portion of a <a href="SC://SCWindow"><span class="s12">SCWindow</span></a> . this can be used to capture either a window</p>
<p class="p8"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>or a specific SCView.</p>
<p class="p8"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>window</b> - the SCWindow object.</p>
<p class="p8"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>rect</b> - optional. the constrained rect to capture inside the SCWindow. By default, it is the window size.</p>
<p class="p9"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p11"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// WINDOW Example:</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// First create a window and draw inside of it</p>
-<p class="p17"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = <span class="s7">SCWindow</span>.new;</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.front; </span>// comment this to copy offscreen window</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.view.background_(<span class="s7">Color</span>.white);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.drawHook = {</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.translate(100, 100);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>10.do{</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// set the Color</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.color = <span class="s7">Color</span>.blue(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.addWedge((100.rand)@(100.rand), rrand(10, 100), 2pi.rand, 2pi.rand);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.perform([<span class="s13">\stroke</span>, <span class="s13">\fill</span>].choose);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>};</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// then grab the window<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">SCImage</span>.fromWindow(w);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.close;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// VIEW Capture Example:</p>
-<p class="p11"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// First create a window and add some views inside of it</p>
-<p class="p17"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = <span class="s7">SCWindow</span>.new.front;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>b = [10, 80].asSpec;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>c = <span class="s7">SCNumberBox</span>(w, <span class="s7">Rect</span>(20, 20, 60, 40));</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>a = <span class="s7">SCSlider</span>(w, <span class="s7">Rect</span>(20, 80, 100, 40))</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>.focusColor_(<span class="s7">Color</span>.red(alpha:0.2))</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>.action_({</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>c.value_(b.map(a.value).round(0.01))</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// round the float so it will fit in the SCNumberBox</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>});</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// then grab the window<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">SCImage</span>.fromWindow(w, a.bounds);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.close;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p18"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p13"><br></p>
+<p class="p10"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// WINDOW Example:</p>
+<p class="p10"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// First create a window and draw inside of it</p>
+<p class="p15"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = <span class="s7">SCWindow</span>.new;</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.front; </span>// comment this to copy offscreen window</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.view.background_(<span class="s7">Color</span>.white);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.drawHook = {</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.translate(100, 100);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>10.do{</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// set the Color</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.color = <span class="s7">Color</span>.blue(rrand(0.0, 1), rrand(0.0, 0.5));</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.addWedge((100.rand)@(100.rand), rrand(10, 100), 2pi.rand, 2pi.rand);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.perform([<span class="s13">\stroke</span>, <span class="s13">\fill</span>].choose);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>}</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>};</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// then grab the window<span class="Apple-converted-space"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">SCImage</span>.fromWindow(w);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.close;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// VIEW Capture Example:</p>
+<p class="p10"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// First create a window and add some views inside of it</p>
+<p class="p15"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = <span class="s7">SCWindow</span>.new.front;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>b = [10, 80].asSpec;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>c = <span class="s7">SCNumberBox</span>(w, <span class="s7">Rect</span>(20, 20, 60, 40));</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>a = <span class="s7">SCSlider</span>(w, <span class="s7">Rect</span>(20, 80, 100, 40))</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>.focusColor_(<span class="s7">Color</span>.red(alpha:0.2))</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>.action_({</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>c.value_(b.map(a.value).round(0.01))</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// round the float so it will fit in the SCNumberBox</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>});</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// then grab the window<span class="Apple-converted-space"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">SCImage</span>.fromWindow(w, a.bounds);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.close;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot(freeOnClose:<span class="s7">true</span>);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p16"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p12"><br></p>
<p class="p6"><b>Class variables and attributes</b></p>
-<p class="p20"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p3"><span class="s8"><span class="Apple-tab-span"> </span></span><b>*all</b></p>
-<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>returns all the instances currently allocated. You should never try to modify this array yourself, this could lead to serious memory leaks.</p>
-<p class="p20"><br></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.all;</p>
-<p class="p20"><br></p>
-<p class="p3"><span class="Apple-tab-span"> </span><b>*count</b></p>
-<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>returns the number of SCImage currently allocated by the primitive. basically similar to :</p>
-<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s4">SCImage</span>.all.size</p>
-<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="s10"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span>.count;</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.count;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.freeAll;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.count;</p>
-<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p3"><span class="Apple-tab-span"> </span><b>*freeAll</b></p>
-<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>deallocate all the SCImage instances. Be careful when using this call to have no SCImage currently in some running code !</p>
<p class="p2"><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>*formats</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>returns all the valid image formats as an <a href="SC://Array"><span class="s4">Array</span></a></p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="s10"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span>.formats;</p>
-<p class="p20"><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="s10"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span>.formats;</p>
+<p class="p12"><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>*compositingOperations</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>returns all the valid compositing operations you can use when drawing an <span class="s4">SCImage</span> as an <a href="SC://Array"><span class="s4">Array</span></a></p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="s10"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span>.compositingOperations;</p>
-<p class="p20"><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="s10"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span>.compositingOperations;</p>
+<p class="p12"><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>*interpolations</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>returns an <a href="SC://Array"><span class="s4">Array</span></a> of the different levels of interpolation you can specify when drawing an <span class="s4">SCImage</span>.</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="s10"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span>.interpolations;</p>
-<p class="p20"><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="s10"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span>.interpolations;</p>
+<p class="p12"><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>*closeAllPlotWindows</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>close all the <span class="s4">SCImage</span> plot windows currently opened.</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
@@ -248,12 +224,13 @@
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>returns the bounds of the receiver.</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>free</b></p>
-<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>deallocate the receiver.</p>
+<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>deallocate the receiver. this method is useful if you want to manage and reclaim yourself resources.</p>
+<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>otherwise you do not need to call this method since each object is automatically garbage collected. <span class="Apple-converted-space"> </span></p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p16"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.all;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.all;</p>
+<p class="p14"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.all;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">SCImage</span>.all;</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>scalesWhenResized</b></p>
@@ -262,30 +239,30 @@
<p class="p3"><span class="Apple-tab-span"> </span><b>scalesWhenResized_</b></p>
<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>set the flag to tell if the receiver should update its bitmap representation to scale when a resize operation if performed</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p21"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s8">(</span></p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.bounds.postln; </span>// getting the dimensions</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w =i.plot;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// changing the size of an image</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.scalesWhenResized_(<span class="s7">true</span>);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.setSize(400, 400 / (i.width / i.height));</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>a =i.plot;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>a.close; w.close; i.free;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p20"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s8">(</span></p>
+<p class="p14"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.bounds.postln; </span>// getting the dimensions</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w =i.plot;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// changing the size of an image</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.scalesWhenResized_(<span class="s7">true</span>);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.setSize(400, 400 / (i.width / i.height));</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>a =i.plot;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>a.close; w.close; i.free;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>url</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>returns the url of the receiver, if any where supplied at creation, otherwise returns <span class="s4">nil</span>.</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p16"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"http://www.google.com/intl/en_ALL/images/logo.gif"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p20"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p14"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"http://www.google.com/intl/en_ALL/images/logo.gif"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>url_(anURL)</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>sets the url of the receiver. <span class="s4">May</span> be used for different purpose but try to supply a valid one since it is used for archiving the image as an object.</p>
<p class="p2"><span class="Apple-tab-span"> </span></p>
@@ -302,45 +279,45 @@
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p3"><b><span class="Apple-tab-span"> </span>interpolation_(interpolation)</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>set the level of interpolation to use when rendering the image - it has not effect when the <span class="s4">SCImage</span> is accelerated. see <b>*interpolations</b> for a valid range of values.</p>
-<p class="p20"><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">SCImage</span>.new(<span class="s7">Document</span>.current.dir +/+ <span class="s11">"vduck2.jpg"</span>);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = i.plot;</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation;<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// get the image currrent interpolation mode</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = </span><span class="s13">'none'</span><span class="s2">;<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// experiment with interpolation modes</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = <span class="s13">'low'</span>;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = 1;<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s15">// same as 'low'</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = <span class="s13">'high'</span>; w.refresh;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = <span class="s13">'default'</span>;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.accelerated_(<span class="s7">true</span>);</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = </span><span class="s13">'none'</span><span class="s2">; </span>// does not work on coreimage accelerated image</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p13"><br></p>
+<p class="p12"><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">SCImage</span>.new(<span class="s7">Document</span>.current.dir +/+ <span class="s11">"vduck2.jpg"</span>);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w = i.plot;</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation;<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// get the image currrent interpolation mode</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = </span><span class="s13">'none'</span><span class="s2">;<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// experiment with interpolation modes</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = <span class="s13">'low'</span>;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = 1;<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s15">// same as 'low'</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = <span class="s13">'high'</span>; w.refresh;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = <span class="s13">'default'</span>;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.accelerated_(<span class="s7">true</span>);</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.interpolation = </span><span class="s13">'none'</span><span class="s2">; </span>// does not work on coreimage accelerated image</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>w.refresh;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><br></p>
<p class="p6"><b>saving and archiving</b></p>
<p class="p2"><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>write( path, format )</b></p>
@@ -349,26 +326,26 @@
<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>format</b> - (optional) format to use. see SCImage.formats for supported formats. If nil, it will<span class="Apple-converted-space"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>get the format depending on the path extension.</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p16"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.write(</span>"~/Desktop/my_image.png"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span></span>//<span class="Apple-tab-span"> </span>storeOn / asCompileString</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.asCompileString;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.writeArchive(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">nil</span>;</p>
-<p class="p13"><br></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Document</span>.open(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">Object</span>.readArchive(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p20"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p14"><span class="s6"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.dump<span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p14"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.write(</span>"~/Desktop/my_image.png"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span></span>//<span class="Apple-tab-span"> </span>storeOn / asCompileString</p>
+<p class="p14"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.url;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.asCompileString;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.writeArchive(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">nil</span>;</p>
+<p class="p12"><br></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Document</span>.open(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i = <span class="s7">Object</span>.readArchive(<span class="s11">"~/Desktop/my_image.scd"</span>.standardizePath);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.plot;</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
<p class="p6"><b>rendering</b></p>
<p class="p2"><br></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>plot ( name, bounds, freeOnClose, background )</b></p>
@@ -378,14 +355,14 @@
<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>freeOnClose</b> - flag to tell if the SCWindow should free the SCImage when closed. false by default.</p>
<p class="p3"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><b>background</b> - additional background to apply to the SCWindow. may be useful for artifacts due to alpha / compositing...</p>
<p class="p2"><br></p>
-<p class="p16"><span class="s6"><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span>w = i.plot;</p>
-<p class="p12"><span class="Apple-tab-span"> </span>w.close;</p>
-<p class="p12"><span class="Apple-tab-span"> </span>i.free;</p>
-<p class="p13"><span class="Apple-tab-span"> </span></p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span></span>// other option - image will be automatically freed when closed</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">).plot(</span>"Hello"<span class="s2">, freeOnClose:</span><span class="s7">true</span><span class="s2">);</span></p>
-<p class="p14"><span class="Apple-tab-span"> </span></p>
+<p class="p14"><span class="s6"><span class="Apple-tab-span"> </span></span><span class="s2">i = </span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">);</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span>w = i.plot;</p>
+<p class="p11"><span class="Apple-tab-span"> </span>w.close;</p>
+<p class="p11"><span class="Apple-tab-span"> </span>i.free;</p>
+<p class="p12"><span class="Apple-tab-span"> </span></p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span></span>// other option - image will be automatically freed when closed</p>
+<p class="p14"><span class="s2"><span class="Apple-tab-span"> </span></span><span class="s7">SCImage</span><span class="s2">.new(</span>"/Library/Desktop Pictures/Ripples Blue.jpg"<span class="s2">).plot(</span>"Hello"<span class="s2">, freeOnClose:</span><span class="s7">true</span><span class="s2">);</span></p>
+<p class="p2"><span class="Apple-tab-span"> </span></p>
<p class="p3"><span class="Apple-tab-span"> </span><b>lockFocus</b></p>
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>sets the receiver as the current graphic context. <span class="s4">So</span> you can use <a href="SC://Pen"><span class="s4">Pen</span></a> to draw inside of it.</p>
<p class="p2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
@@ -393,184 +370,184 @@
<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b>restore the graphic context state. the receiver is not anymore the current graphic context.</p>
<p class="p2"><b><span class="Apple-tab-span"> </span></b></p>
<p class="p2"><b><span class="Apple-tab-span"> </span></b></p>
-<p class="p21"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><span class="s8">(</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j = <span class="s7">SCImage</span>.new(400,300);</p>
-<p class="p13"><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.lockFocus;</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.translate(100, 100);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>1000.do{</p>
-<p class="p15"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// set the Color</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.color = <span class="s7">Color</span>.green(rrand(0.0, 1), rrand(0.0, 0.5));</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.addAnnularWedge(</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(100.rand)@(100.rand),<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>rrand(10, 50),<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>rrand(51, 100),<span class="Apple-converted-space"> <span class="Apple-tab-span"> </span></span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>2pi.rand,<span class="Apple-converted-space"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>2pi.rand</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.perform([<span class="s13">\stroke</span>, <span class="s13">\fill</span>].choose);</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>};</p>
-<p class="p13"><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.unlockFocus;</p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>)</p>
-<p class="p13"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.plot;</p>
-<p class="p16"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.write(</span>"~/Desktop/my_drawing.png"<span class="s2">); </span><span class="s15">// write the image</span></p>
-<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.free;</p>
-<p class="p20"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p3"><b><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></b><span class="s8">(</span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j = <span class="s7">SCImage</span>.new(400,300);</p>
+<p class="p12"><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>j.lockFocus;</p>
+<p class="p12"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.translate(100, 100);</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>1000.do{</p>
+<p class="p13"><span class="s2"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span></span>// set the Color</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.color = <span class="s7">Color</span>.green(rrand(0.0, 1), rrand(0.0, 0.5));</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="s7">Pen</span>.addAnnularWedge(</p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>(100.rand)@(100.rand),<span class="Apple-converted-space"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>rrand(10, 50),<span class="Apple-converted-space"> </span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>rrand(51, 100),<span class="Apple-converted-space"> <span class="Apple-tab-span"> </span></span></p>
+<p class="p11"><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span><span class="Apple-tab-span"> </span>2pi.rand,<span class="Apple-converted-space"> </span></p>
@@ Diff output truncated at 100000 characters. @@
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
_______________________________________________
sc-dev mailing list
info (subscription, etc.): http://www.beast.bham.ac.uk/research/sc_mailing_lists.shtml
archive: https://listarc.bham.ac.uk/marchives/sc-dev/
search: https://listarc.bham.ac.uk/lists/sc-dev/search/