[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[sc-dev] SF.net SVN: supercollider:[8143] trunk/Source/app/SCCocoaView.M
Revision: 8143
http://supercollider.svn.sourceforge.net/supercollider/?rev=8143&view=rev
Author: thelych
Date: 2008-12-15 13:58:40 +0000 (Mon, 15 Dec 2008)
Log Message:
-----------
SCQuartzComposerView now supports SCImage
Modified Paths:
--------------
trunk/Source/app/SCCocoaView.M
Modified: trunk/Source/app/SCCocoaView.M
===================================================================
--- trunk/Source/app/SCCocoaView.M 2008-12-15 13:53:15 UTC (rev 8142)
+++ trunk/Source/app/SCCocoaView.M 2008-12-15 13:58:40 UTC (rev 8143)
@@ -42,9 +42,15 @@
#include "QuickTime/Movies.h"
#import "HTMLRenderer.h"
#import "MyDocument.h"
+#import "SCImage.h"
extern pthread_mutex_t gLangMutex;
extern bool compiledOK;
+
+// SCImage support
+extern PyrSymbol *s_scimage; // class symbol
+extern PyrObject* newPyrSCImage(VMGlobals* g); // class creation func
+
void SyntaxColorize(NSTextView* textView);
@implementation SCCocoaTextViewResponder
@@ -1178,6 +1184,20 @@
err = errNone;
returnErr = &err;
return structure;
+ } else if(isKindOfSlot(scobject, s_scimage->u.classobj)) { // it's an SCImage : )
+ SCImage *scimage = (SCImage *)scobject->uo->slots[0].uptr;
+ if(scimage) {
+ if([scimage isAccelerated])
+ return [scimage ciimage];
+ else
+ return [scimage nsimage];
+ }
+ else {
+ post("SCQuartzComposerView: invalid SCImage as input port !");
+ err = errWrongType;
+ returnErr = &err;
+ return NULL;
+ }
} else {
err = errWrongType; // it's something else...
returnErr = &err;
@@ -1357,9 +1377,28 @@
}
}
- // else if([type isEqualToString:QCPortTypeImage]) { // not supported
- //
- // }
+ else if([type isEqualToString:QCPortTypeImage]) { // SCImage
+ NSImage *nsimage = (NSImage*)nsObject;
+ if(!nsimage)
+ post("SCQuartzComposerView: bad return value as QCPortTypeImage");
+
+ SCImage *scimage = [[SCImage alloc]initWithNSImage:nsimage];
+ if(scimage) {
+ VMGlobals *g = gMainVMGlobals;
+ PyrObject *object = newPyrSCImage(g); // should be garbage collected
+ if(object) {
+ PyrSlot *slots = object->slots;
+ SetObject(slot, object);
+ SetPtr(slots + 0, scimage);
+ SetFloat(slots + 1, (float)[scimage width]);
+ SetFloat(slots + 2, (float)[scimage height]);
+ return errNone;
+ }
+ }
+ else {
+ post("SCQuartzComposerView: failed NSImage to SCImage conversion !");
+ }
+ }
return errWrongType; // it's something else
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/