diff --git a/xcode/CFreej.mm b/xcode/CFreej.mm index 657557f0..bcf4fde2 100644 --- a/xcode/CFreej.mm +++ b/xcode/CFreej.mm @@ -11,8 +11,8 @@ #import #import -#define DEFAULT_FREEJ_WIDTH 512 -#define DEFAULT_FREEJ_HEIGHT 384 +#define DEFAULT_FREEJ_WIDTH 352 +#define DEFAULT_FREEJ_HEIGHT 288 @implementation CFreej diff --git a/xcode/CVF0rLayer.h b/xcode/CVF0rLayer.h index dbb11f8c..7d781349 100644 --- a/xcode/CVF0rLayer.h +++ b/xcode/CVF0rLayer.h @@ -21,12 +21,10 @@ - (IBAction)stop:(id)sender; @end; -class CVF0rLayer : public GenF0rLayer, public CVLayer +class CVF0rLayer : public CVLayer, public GenF0rLayer { public: CVF0rLayer(CVLayerView *view, char *generatorName, Context *freej); ~CVF0rLayer(); void *feed(); - void start(); - void stop(); }; \ No newline at end of file diff --git a/xcode/CVF0rLayer.mm b/xcode/CVF0rLayer.mm index 683fc1c3..189236b1 100644 --- a/xcode/CVF0rLayer.mm +++ b/xcode/CVF0rLayer.mm @@ -110,10 +110,10 @@ CVLayer *toDelete; if (layer) { [lock lock]; - toDelete = layer; + toDelete = (CVLayer *)layer; layer = NULL; - toDelete->stop(); [lock unlock]; + toDelete->stop(); delete toDelete; } } @@ -173,9 +173,9 @@ CVF0rLayer::CVF0rLayer(CVLayerView *view, char *generatorName, Context *_freej) CVF0rLayer::~CVF0rLayer() { - CVLayer *layerPersonality = (CVLayer *)this; - - layerPersonality->buffer = NULL; // XXX + //if (swap_buffer) + //free(swap_buffer); + swap_buffer = NULL; } void * @@ -186,15 +186,3 @@ CVF0rLayer::feed() return swap_buffer; } -void -CVF0rLayer::start() -{ - ((GenF0rLayer *)this)->start(); -} - -void -CVF0rLayer::stop() -{ - GenF0rLayer *f0rPersonality = (GenF0rLayer *)this; - f0rPersonality->stop(); -} diff --git a/xcode/CVGrabber.mm b/xcode/CVGrabber.mm index 4090fdb3..b47b9993 100644 --- a/xcode/CVGrabber.mm +++ b/xcode/CVGrabber.mm @@ -26,9 +26,8 @@ currentFrame = nil; currentPts = 0; previousPts = 0; - Context *ctx = [freej getContext]; - width = ctx->screen->w; - height = ctx->screen->h; + width = 352; + height = 288; lock = [[NSRecursiveLock alloc] init]; } return self; @@ -72,9 +71,11 @@ NSError *o_returnedError; Context *ctx = [freej getContext]; + width = ctx->screen->w; + height = ctx->screen->h; /* Hack - using ma resolution seems to lower cpu consuption for some reason */ - int h = (ctx->screen->h < CV_GRABBER_HEIGHT_MAX)?ctx->screen->h:CV_GRABBER_HEIGHT_MAX; - int w = (ctx->screen->w < CV_GRABBER_WIDTH_MAX)?ctx->screen->w:CV_GRABBER_WIDTH_MAX; + int h = (height < CV_GRABBER_HEIGHT_MAX)?height:CV_GRABBER_HEIGHT_MAX; + int w = (width < CV_GRABBER_WIDTH_MAX)?width:CV_GRABBER_WIDTH_MAX; device = [QTCaptureDevice defaultInputDeviceWithMediaType: QTMediaTypeVideo]; if( !device ) diff --git a/xcode/CVScreen.h b/xcode/CVScreen.h index 0a371922..82660453 100644 --- a/xcode/CVScreen.h +++ b/xcode/CVScreen.h @@ -82,6 +82,13 @@ class CVScreen; - (IBAction)stopExport:(id)sender; - (IBAction)setExportFile:(id)sender; @end + +@interface CVScreenController : NSWindowController { + +} + +@end + #else class CVScreenView; #endif // __cocoa diff --git a/xcode/CVScreen.mm b/xcode/CVScreen.mm index f72b8659..8c0e7835 100644 --- a/xcode/CVScreen.mm +++ b/xcode/CVScreen.mm @@ -720,6 +720,34 @@ bail: @end +@implementation CVScreenController + +// handle keystrokes +- (void)keyDown:(NSEvent *)event +{ + // NSLog(@"Keypress (%hu, modifier flags: 0x%x) %@\n", [event keyCode], [event modifierFlags], [event charactersIgnoringModifiers]); + NSString *modifier = nil; + switch ([event modifierFlags]) { + case NSShiftKeyMask: + modifier = [NSString stringWithUTF8String:"shift_"]; + break; + case NSControlKeyMask: + modifier = [NSString stringWithUTF8String:"control_"]; + break; + case NSAlternateKeyMask: + modifier = [NSString stringWithUTF8String:"alt_"]; + break; + case NSCommandKeyMask: + modifier = [NSString stringWithUTF8String:"cmd_"]; + break; + case NSFunctionKeyMask: + modifier = [NSString stringWithUTF8String:"fn_"]; + break; + } +} + +@end + CVScreen::CVScreen(int w, int h) : ViewPort(w, h) { init(w, h); diff --git a/xcode/English.lproj/MainMenu.nib/designable.nib b/xcode/English.lproj/MainMenu.nib/designable.nib index 26f11fa6..67493573 100644 --- a/xcode/English.lproj/MainMenu.nib/designable.nib +++ b/xcode/English.lproj/MainMenu.nib/designable.nib @@ -8,12 +8,12 @@ 353.00 YES - - - - + - + + + + YES @@ -2102,7 +2102,7 @@ ARcABAAAAAEAAAACARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 257 2 - {{22, 376}, {512, 384}} + {{22, 472}, {352, 288}} 1677722624 Output NSWindow @@ -2117,7 +2117,7 @@ ARcABAAAAAEAAAACARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 1298 - {512, 384} + {352, 288} @@ -2126,7 +2126,7 @@ ARcABAAAAAEAAAACARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - {512, 384} + {352, 288} {{0, 0}, {1280, 778}} @@ -3286,11 +3286,11 @@ ARcABAAAAAEAAAACARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA - 3.000000e+00 + 4.000000e+00 1.000000e+00 2.000000e+00 0.000000e+00 - 3 + 4 1 YES NO @@ -3363,7 +3363,7 @@ ARcABAAAAAEAAAACARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA 268 - {{221, 169}, {44, 11}} + {{250, 169}, {44, 11}} YES @@ -3380,6 +3380,22 @@ ARcABAAAAAEAAAACARwAAwAAAAEAAQAAAVIAAwAAAAEAAQAAAVMAAwAAAAIAAQABAAAAAA + + + 268 + {{192, 169}, {44, 11}} + + YES + + 68288064 + 272892928 + 352x288 + + + + + + 268 @@ -153327,6 +153343,9 @@ AAgAAQABAAEAAQ {{0, 0}, {1440, 878}} {3.40282e+38, 3.40282e+38} + + CVScreenController + @@ -154435,6 +154454,54 @@ AAgAAQABAAEAAQ 2810 + + + filterPanel + + + + 2811 + + + + freej + + + + 2812 + + + + startText: + + + + 2813 + + + + textView + + + + 2814 + + + + window + + + + 2816 + + + + delegate + + + + 2817 + @@ -156284,13 +156351,14 @@ AAgAAQABAAEAAQ - + + @@ -156601,6 +156669,25 @@ AAgAAQABAAEAAQ + + 2815 + + + + + 2818 + + + YES + + + + + + 2819 + + + @@ -157024,6 +157111,9 @@ AAgAAQABAAEAAQ 2801.IBPluginDependency 2802.IBPluginDependency 2803.IBPluginDependency + 2815.IBPluginDependency + 2818.IBPluginDependency + 2819.IBPluginDependency 29.IBEditorWindowLastContentRect 29.IBPluginDependency 29.ImportedFromIB2 @@ -157167,8 +157257,8 @@ AAgAAQABAAEAAQ com.apple.InterfaceBuilder.CocoaPlugin - {{50, 250}, {512, 384}} - {{50, 250}, {512, 384}} + {{88, 495}, {352, 288}} + {{88, 495}, {352, 288}} {{169, 165}, {507, 404}} com.apple.InterfaceBuilder.CocoaPlugin @@ -157282,8 +157372,8 @@ AAgAAQABAAEAAQ com.apple.InterfaceBuilder.CocoaPlugin {{608, 612}, {241, 103}} - {{676, 270}, {215, 560}} - {{676, 270}, {215, 560}} + {{360, 270}, {215, 560}} + {{360, 270}, {215, 560}} {{488, 170}, {215, 560}} com.apple.InterfaceBuilder.CocoaPlugin @@ -157589,8 +157679,8 @@ AAgAAQABAAEAAQ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin - {{486, 280}, {370, 200}} - {{486, 280}, {370, 200}} + {{602, 520}, {370, 200}} + {{602, 520}, {370, 200}} com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin @@ -157650,6 +157740,9 @@ AAgAAQABAAEAAQ com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin {{87, 736}, {478, 20}} com.apple.InterfaceBuilder.CocoaPlugin @@ -157683,8 +157776,8 @@ AAgAAQABAAEAAQ - {{294, 93}, {645, 666}} - {{294, 93}, {645, 666}} + {{91, 117}, {645, 666}} + {{91, 117}, {645, 666}} {{437, 135}, {451, 576}} com.apple.InterfaceBuilder.CocoaPlugin @@ -157750,7 +157843,7 @@ AAgAAQABAAEAAQ - 2810 + 2819 @@ -158032,6 +158125,14 @@ AAgAAQABAAEAAQ CVPreview.h + + CVScreenController + NSWindowController + + IBProjectSource + CVScreen.h + + CVScreenView NSOpenGLView @@ -158071,10 +158172,7 @@ AAgAAQABAAEAAQ NSWindow - - IBProjectSource - CVScreen.h - + CVTextLayer diff --git a/xcode/English.lproj/MainMenu.nib/keyedobjects.nib b/xcode/English.lproj/MainMenu.nib/keyedobjects.nib index 0472542a..30d983d3 100644 Binary files a/xcode/English.lproj/MainMenu.nib/keyedobjects.nib and b/xcode/English.lproj/MainMenu.nib/keyedobjects.nib differ diff --git a/xcode/PreferencesPanel.h b/xcode/PreferencesPanel.h new file mode 100644 index 00000000..8070313f --- /dev/null +++ b/xcode/PreferencesPanel.h @@ -0,0 +1,22 @@ +// +// PreferencesPanel.h +// freej +// +// Created by xant on 8/20/09. +// Copyright 2009 dyne.org. All rights reserved. +// + +#import +#import "CFreej.h" + +@interface PreferencesPanel : NSWindow { + IBOutlet CFreej *freej; + IBOutlet CVScreenView *mainScreen; +} + +- (IBAction)setScreenSize:(id)sender; +- (IBAction)setExportQuality:(id)sender; +- (IBAction)setPluginsPath:(id)sender; +- (IBAction)setJScriptsPath:(id)sender; + +@end diff --git a/xcode/PreferencesPanel.mm b/xcode/PreferencesPanel.mm new file mode 100644 index 00000000..626f1510 --- /dev/null +++ b/xcode/PreferencesPanel.mm @@ -0,0 +1,31 @@ +// +// PreferencesPanel.m +// freej +// +// Created by xant on 8/20/09. +// Copyright 2009 dyne.org. All rights reserved. +// + +#import "PreferencesPanel.h" + +static struct { + int w; + int h; +} allowedScreenSizes[4] = +{ + { 320, 240 }, + { 352, 288 }, + { 512, 384 }, + { 640, 480 } +}; + +@implementation PreferencesPanel + +- (IBAction)setScreenSize:(id)sender +{ + int idx = [sender integerValue]-1; + + [mainScreen setSizeWidth:allowedScreenSizes[idx].w Height:allowedScreenSizes[idx].h]; +} + +@end diff --git a/xcode/freej.xcodeproj/project.pbxproj b/xcode/freej.xcodeproj/project.pbxproj index 557ab998..701cd268 100644 --- a/xcode/freej.xcodeproj/project.pbxproj +++ b/xcode/freej.xcodeproj/project.pbxproj @@ -165,6 +165,7 @@ AAD0A4E10FDEC20100968886 /* libSDL_gfx.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = AAD0A4E00FDEC20100968886 /* libSDL_gfx.dylib */; }; AAD0A4E30FDEC2A200968886 /* libsndfile.1.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = AAD0A4E20FDEC2A200968886 /* libsndfile.1.dylib */; }; AADF7A000FD7F84500167F57 /* ipernav.icns in Resources */ = {isa = PBXBuildFile; fileRef = AADF79FF0FD7F84500167F57 /* ipernav.icns */; }; + AAE2C270103FDCDC00D62E4F /* kbd_ctrl_js.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AAE2C26F103FDCDC00D62E4F /* kbd_ctrl_js.cpp */; }; AAEE68940FC8906B007FB46B /* webcam.png in Resources */ = {isa = PBXBuildFile; fileRef = AAEE68930FC8906B007FB46B /* webcam.png */; }; AAEE689F0FC893BC007FB46B /* frei0r.png in Resources */ = {isa = PBXBuildFile; fileRef = AAEE689E0FC893BC007FB46B /* frei0r.png */; }; /* End PBXBuildFile section */ @@ -495,6 +496,8 @@ AAD0A4E00FDEC20100968886 /* libSDL_gfx.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libSDL_gfx.dylib; path = /opt/local/lib/libSDL_gfx.dylib; sourceTree = ""; }; AAD0A4E20FDEC2A200968886 /* libsndfile.1.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libsndfile.1.dylib; path = /opt/local/lib/libsndfile.1.dylib; sourceTree = ""; }; AADF79FF0FD7F84500167F57 /* ipernav.icns */ = {isa = PBXFileReference; lastKnownFileType = image.icns; path = ipernav.icns; sourceTree = ""; }; + AAE2C26F103FDCDC00D62E4F /* kbd_ctrl_js.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = kbd_ctrl_js.cpp; sourceTree = ""; }; + AAE2C2B7103FE2AE00D62E4F /* factory.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = factory.h; path = include/factory.h; sourceTree = ""; }; AAEE68930FC8906B007FB46B /* webcam.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = webcam.png; sourceTree = ""; }; AAEE689E0FC893BC007FB46B /* frei0r.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = frei0r.png; sourceTree = ""; }; /* End PBXFileReference section */ @@ -766,6 +769,7 @@ AA9337EF0FD7FDEB002B760B /* include */ = { isa = PBXGroup; children = ( + AAE2C2B7103FE2AE00D62E4F /* factory.h */, AA8C41B50F90FF8800B39710 /* console_calls_ctrl.h */, AA8C41B60F90FF8800B39710 /* console_ctrl.h */, AA8C41B70F90FF8800B39710 /* console_readline_ctrl.h */, @@ -1175,6 +1179,7 @@ AA3C452E0F3EEBE0007C7E8B /* v4l_layer_js.cpp */, AA3C45320F3EEBE0007C7E8B /* video_encoder_js.cpp */, AA3C45360F3EEBE0007C7E8B /* video_layer_js.cpp */, + AAE2C26F103FDCDC00D62E4F /* kbd_ctrl_js.cpp */, ); name = javascript; sourceTree = ""; @@ -1499,6 +1504,7 @@ AA71AE030FE58838002FFD23 /* CVInternalLayer.mm in Sources */, AA63CF8E102DAED400FDA024 /* QTExporter.mm in Sources */, AAC9DB37103D2C7F00A0111E /* PreferencesPanel.mm in Sources */, + AAE2C270103FDCDC00D62E4F /* kbd_ctrl_js.cpp in Sources */, ); runOnlyForDeploymentPostprocessing = 0; };