[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/