2008-02-25 Marcus Mueller * v1.1.11 (IN PROGRESS) * AppController.m: added -lastCapturedImage, if no previous image has been taken, tries to initialize an image from the pasteboard 2007-07-09 Marcus Mueller * QuartzCView.m: defer renderer chain initialisation when no context is in place 2007-07-08 Marcus Mueller * QuartzCView.m: new private method -ensureChainExists, called in various places to make sure that a RendererChain is really present 2007-06-14 Marcus Mueller * English.lproj/MainMenu.nib: added second segmented control for options * AppController.[hm]: added captureOptionsControl in order to quickly en/disable image scaling and execution of AppleScripts. 2007-05-23 Marcus Mueller * English.lproj/InfoPlist.strings: removed * MulleSight.xcodeproj/project.pbxproj: added new script build phase that automatically updates version information derived from 'Version' file * Version: removed comment as it was no longer appropriate 2007-04-27 Marcus Mueller * AppController.[hm]: added NSSegmentedControl for quickly switching between Image (last captured) and Camera as video sources * QuartzCView.[hm]: added bufferedImage to decrease load on CPU in case an auxiliary picture is being set. * Watchdog.m: fixed long standing gcc warning * {English,French,German}.lproj/MainMenu.nib: added segmented control, changed button sizes. TODO: provide images instead of texts! * QuartzComposer/{Acrylic Comic.qtz, Gamma Correction 0.35.qtz, Gamma Correction 1.6.qtz, Gamma Correction 3.0.qtz, Gloom.qtz}: added new effects * QuartzComposer/Gamma Correction.qtz: renamed * {English,French,German}.lproj/Localizable.strings: updated for new builtin effects * create-mullesight-binary-package.sh: don't package AppleScript's separately, generate md5 checksum and RSS feed snippet for use in Sparkle, automatically generate proper version release images from "Version" file. 2007-04-17 Marcus Mueller * v1.1.10 * README: updated * MSTableView.[hm]: new subclass of NSTableView, overriding a private method in order not to highlight the selected rows. Unfortunately there is no public API for this purpose. * MSButtonCell.m: override method highlightColorWithFrame:inView: in order to prevent highlighting. * RendererChain.[hm]: RendererChainObject got a new method -input, used by RendererChain's own -input method now. * QuartzCView.[hm]: Offers API to set an "auxiliary input image". If this is set, this image is used as primary input for the renderer chain instead of the live video. * AppController.[hm]: During capture, instances of the last captured image are being kept (original and modified version). The original can now be set as video input source. Also, an arbitrary image can now be added. Added captureButton outlet, which copy: uses now to performClick: - much neater. Added new (own) InfoPanel, also very neat! ;-) * {English,German,French}.lproj/Localizable.strings: updated, properly set encoding to UTF-16 for all files. * {English,German,French}.lproj/MultipleEffectsSelection.nib: added explanatory text. * {English,German,French}.lproj/MainMenu.nib: added captureButton outlet. * English.lproj/InfoPanel.nib: added. Doesn't need to be localized! * QuartzComposer/_Pre.qtz: removed gamma correction from effect. This just doesn't make much sense unless we have a UI to manipulate its settings. * QuartzComposer/Gamma Correction.qtz: added gamma correction as a separate effect. * QuartzComposer/_InfoPanel.qtz: new InfoPanel effect 2007-04-11 Marcus Mueller * v1.1.9 * README: updated * AppController.[hm]: don't display Quartz Composer effects starting with "_". This prevents all effects deemed to be internal to MulleSight from being displayed elsewhere. Allow selection of multiple qtz effects. AppleScripts with a suffix of "scpt" are also being searched for now. Remember last chosen video resolution. Added new default "KeepOriginalImage", when true, 2 images are placed on the pasteboard, first the original, then the modified image. Usually you will only see the last, but with a tool like PTHPasteboard it's possible to access the original image. Fixed AppleScript menu related crashbug. * RendererChain.[hm]: Models a chain of QCRenderers, where each renderer's output is fed as the input to the next renderer. * QuartzCView.m: Uses the new RendererChain for rendering images. Currently "_Pre.qtz" is used as the default first renderer in the chain for flipping images, if the currently chosen renderer doesn't support this feature out-of-the-box. We might also add some correction features to this special renderer later on. Changed API to accept qtz effect paths instead of a single path. Renamed some methods to reflect usage of RendererChain instead of single renderer. Also allow access to the original, unmodified variant of the current image. * SelectiveView.[hm]: properly terminate app if windowWillClose:. Multiple windows can now be open at the same time, making this change necessary. * Watchdog.[hm]: changed for new QuartzCView API. * MSButtonCell.[hm]: NSButtonCell subclass which doesn't prevent drag & drop when inserted into NSTableView * {English,French,German}.lproj/MultipleEffectsSelection.nib: added * QuartzComposer/None.qtz: renamed as "_Pre.qtz" * QuartzComposer/Bluescreen7b.qtz: removed, this one was dumb. * Save in tmp and convert to jpg.applescript: removed * mulleShot.scpt: added, contributed by Daniel A. Shockley 2007-03-30 Marcus Mueller * v1.1.8 * COPYING, COPYRIGHT, README: updated * QuartzCView.[hm]: find relevant qtzEffect input/output keys via introspection instead of using hardcoded values. * AppController.m: localize AppleScript/QuartzComposer files if possible * English.lproj/{Localizable.strings, Credits.rtf}: added * French.lproj, German.lproj: added 2007-03-29 Marcus Mueller * v1.1.7 * QuartzCView.m: fixed image scaling/resizing bug * v1.1.6 * Watchdog.[hm]: new kqueue based watchdog, watches if the qtz effect in use by QuartzCView has changed on disk and reloads it if required. * QuartzCView.[hm]: added -reloadRenderer, uses Watchdog internally. * AppController.m: removed debug log * v1.1.5 * QuartzCView.[hm]: added API to explicitly set the path to the qtz effect in use. * AppController.[hm]: enable selection of qtz effects. * NSApplication+Extensions.[hm]: removed $Id$ keyword * MulleSight.xcodeproj: deployment build creates universal binary 2007-03-28 Marcus Mueller * v1.1.4 * QuartzComposer/*.qtz: added new effects called None and Pencil, renamed Video.qtz to Glass.qtz, adjusted all existing effects to use correct input and output values * OpenGLView.[hm]: implemented shouldFlipImage API and functionality * AppController.[hm]: images can be flipped now * NSApplication+Extensions.[hm]: new AppleScript convenience for flipping images * English.lproj/MainMenu.nib: fixed NIB and added flipping as new Menu item * QuartzCView.m: uses "input", "output" and "shouldFlip" keys on qtz effects as of now. Code cleanup. * MulleSight.script*: added "should flip" 2006-02-15 Michael Maier * v1.1.3 * OpenGLView.[hm]: Added new NSView subclass which implements its rendering via OpenGL. * QuartzCView.[hm]: Added new subclass of OpenGLView. This class uses the Quartz Composer environment to apply serveral effects to the image. The image is composited in the focused view. * SelectiveView.h: changed superclass to be QuartzCView. 2006-02-09 Marcus Mueller * v1.1.2 * CIView.[hm], OpenGLView.[hm]: added missing copyright statement, include guards, major code cleanup * SelectiveView.m, LiveView.h: code cleanup * README: updated "Bugs" section with a recently discovered bug 2006-02-08 Michael Maier * v1.1.1 * OpenGLView.[hm]: Added new NSView subclass which implements its rendering via OpenGL. * CIView.[hm]: Added new subclass of OpenGLView. This class applies several effects (and transformations) to the image rendered by OpenGLView. We use it as the main effects processor. * SelectiveView.h: changed superclass to be CIView. 2006-01-30 Marcus Mueller * v1.1.0 * *.h: changed include guards to include name of project. * Camera.[hm], LiveVideo.[hm], LiveVideoView.[hm]: copied from Apple's QTQuartzPlayer example. Made minor adjustments to the code, removed stuff which isn't necessary for MulleSight. Please note that there are still bugs which prevent anything from being rendered properly! * AppController.[hm]: renamed cameraView into videoView (more appropriate wording). * English.lproj/MainMenu.nib: changed superclass of SelectiveView to LiveVideoView. 2005-08-15 Marcus Mueller * v1.0.10 * README: updated * AppController.[hm]: removed all setInIChat related stuff, instead provided generic AppleScript support. AppleScripts are scanned now in the appwrapper and in all of the {/User,/Local,/Network,/System}/Library/Application Support/MulleSight directories. * *.applescript: renamed. These are copied into the appwrapper now and referenced by filename, so it had to be a bit more declarative. * MulleSight.{scriptSuite,scriptTerminolgy}: removed the setInIChat property * MulleSight.xcodeproj: added Xcode 2.1 project * MulleSight.xcode: removed 2004-12-29 Marcus Mueller * v1.0.9 * AppController.[hm]: Added -adjustResolution: method to toggle between different resolutions. Found description of error code -9405, inserted in comment. Removed weird usage of private callback, shifted that to proper initializer in MyQuickDrawView. * MyQuickDrawView.[hm]: Added -adjustVideoSettings: method, provided proper code to bring settings panel to front. This means that we can now alter all camera settings via Quicktime! Added some private API to start/stop the sequence grabber idle timer and increased robustness of idle timer in case of temporary error (which seems to occur directly after the settings panel was removed). Major code cleanup, resulting in rename of instance variables. Also, restructered a lot of the code in order to finally understand what's going on. * SelectiveView.m: properly override -setFrameSize: and recalculate selectionMask when necessary (via new private API). * README: updated 2004-12-22 Michael Maier * v1.0.8 * AppController.[hm], SelectiveView.[hm], NSApplication+Extensions.[hm]: AppleScriptConvenience methods * MulleSight.{scriptSuite,scriptTerminolgy}: exposed multiple properties to AppleScript, added script command. * MulleSightAsWebcam.applescript: New script demonstrating how MulleSight can be used as a Webcam 2004-12-17 Marcus Mueller * v1.0.7 * AppController.m: copy image to iChat (optional), make flags persistent * SelectiveView.m: make flags persistent, insert disclaimer. * README: updated 2004-12-04 Marcus Mueller * v1.0.6 * SelectiveView.[hm]: stopped isFlipped madness by overriding -isFlipped appropriately - now {0, 0} is at bottom left, making all calculations much easier to understand. Added resizing which comes with a host of new private methods. Entering the selectionRect will now trigger a white border to be displayed, accompanied by a new resizing grip in the lower right corner. Cursor rects are a bit more complicated now, because the lower right corner should display an arrow instead of an open/closed hand. * ResizeGrip.tiff: image resembling the resizing grip 2004-12-03 Marcus Mueller * v1.0.5 * *.applescript: simplified AppleScripts, thanks to Michael Maier for teaching me. * MulleSight.sdef: trimmed the sdef to the current state, more or less for educative purposes only. * MainMenu.nib: removed all superfluous items from main menu, "Copy" maps to capture now. Added "Capture" submenu and the ability to toggle scaling of the captured image to 64x64. Note: the size should be probably be configurable in the future. * AppController.[hm]: added ability to toggle, whether captured image should be scaled (currently fixed at 64x64, default: on). Added "Copy" as a synonym for capture. * SelectiveView.[hm]: added flags to distinguish the drag mode (currently only "moveSession" is implemented and used). Usage of selectionRect is toggable now (default: on). Added proper cursor rects which simplifies quite a bit of the code. 2004-11-30 Marcus Mueller * v1.0.4 * SelectiveView.m: implemented preliminary dragging code to move the selectionRect. This should be extended to also offer resizing. * v1.0.3 * SelectiveView.[hm]: new subclass of MyQuickDrawView which displays a selectionRect (the one which is captured as image). The idea is to modify the selectionRect later on via mouse dragging - but ensure that it's quadratic. * AppController.m: remove selectionRect from -image, however scaling is still not configurable. This should be fixed in a later release. 2004-11-29 Marcus Mueller * v1.0.2 * AppController.[hm]: advertise notification name for camera failures, so MyQuickDrawView can use this to post errors. AppController takes the responsibility to display these kind of error messages and quits properly. * MyQuickDrawView.m: post errors instead of displaying panels. * create-mullesight-binary-package.sh: copy *.applescript files to the dmg. * v1.0.1 * NSView+Extensions.[hm], README, AUTHORS, COPYING, COPYRIGHT, Version, ChangeLog, MulleSight.icns: added * *.[hm]: added standard disclaimer (revised BSD license) * MulleSightPlusTunes.applescript: another convenience script