From 6410eb9415aa46c565fe1929fcc08e6af7dc2308 Mon Sep 17 00:00:00 2001 From: Yanagi Asakura Date: Sun, 4 Oct 2009 22:47:10 +0900 Subject: [PATCH] alpha2 --- Elis Colors.xcodeproj/project.pbxproj | 15 + ElisAudioWriter.h | 21 + ElisAudioWriter.m | 178 + ElisBase.h | 2 +- ElisController.h | 1 + ElisController.m | 44 +- ElisCustomFilter.h | 4 +- ElisCustomFilter.m | 39 +- ElisEffect.m | 1 + ElisLayer.h | 5 + ElisLayer.m | 71 +- ElisMainView.m | 16 +- ElisMedia.h | 4 +- ElisMedia.m | 28 +- ElisMediaBrowserController.h | 3 + ElisMediaBrowserController.m | 28 +- ElisPropertyTableController.m | 30 + ElisWriterLegacy.m | 38 +- Elis_Colors-Info.plist | 6 +- English.lproj/MainMenu.xib | 4 +- English.lproj/MainMenuForSmallDisplay.xib | 6288 ----------------------------- 21 files changed, 482 insertions(+), 6344 deletions(-) create mode 100644 ElisAudioWriter.h create mode 100644 ElisAudioWriter.m delete mode 100644 English.lproj/MainMenuForSmallDisplay.xib diff --git a/Elis Colors.xcodeproj/project.pbxproj b/Elis Colors.xcodeproj/project.pbxproj index 34d742b..4391703 100644 --- a/Elis Colors.xcodeproj/project.pbxproj +++ b/Elis Colors.xcodeproj/project.pbxproj @@ -10,6 +10,8 @@ 1DDD58160DA1D0A300B32029 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = 1DDD58140DA1D0A300B32029 /* MainMenu.xib */; }; 256AC3DA0F4B6AC300CF3369 /* Elis_ColorsAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 256AC3D90F4B6AC300CF3369 /* Elis_ColorsAppDelegate.m */; }; 5C0DDDC5106B5652008425EE /* ElisUndoManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C0DDDC4106B5652008425EE /* ElisUndoManager.m */; }; + 5C1EEEA310786A4000213FC4 /* ElisAudioWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C1EEEA210786A4000213FC4 /* ElisAudioWriter.m */; }; + 5C1EEEBC10786A9D00213FC4 /* AudioToolbox.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 5C1EEEBB10786A9D00213FC4 /* AudioToolbox.framework */; }; 5C480238106D165B00DF0CBB /* movieSizeWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 5C480236106D165B00DF0CBB /* movieSizeWindow.xib */; }; 5C56077F105FB3B70094F837 /* ElisPropertyTableController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C56077E105FB3B70094F837 /* ElisPropertyTableController.m */; }; 5C72E60B106DD74000A96925 /* ElisMovieSizeWindowController.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C72E60A106DD74000A96925 /* ElisMovieSizeWindowController.m */; }; @@ -23,6 +25,7 @@ 5C8A4811106A66ED00EC2F3D /* ElisWriterLegacy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C8A4810106A66ED00EC2F3D /* ElisWriterLegacy.m */; }; 5C9F358B105F7BEA00D87A46 /* ElisEffect.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C9F358A105F7BEA00D87A46 /* ElisEffect.m */; }; 5C9F358E105F7C0F00D87A46 /* ElisKeyframe.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C9F358D105F7C0F00D87A46 /* ElisKeyframe.m */; }; + 5CA59E931078B7DF00ED81E3 /* ElisCoreImageKernel.cikernel in Sources */ = {isa = PBXBuildFile; fileRef = 5CA59E921078B7DF00ED81E3 /* ElisCoreImageKernel.cikernel */; }; 5CB6798C10637CA400FC5F9F /* lightgreen.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 5CB6798A10637CA400FC5F9F /* lightgreen.jpg */; }; 5CB6798D10637CA400FC5F9F /* orange.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 5CB6798B10637CA400FC5F9F /* orange.jpg */; }; 5CB9424D106E662F0050FB6B /* ElisCoreImageKernel.cikernel in Sources */ = {isa = PBXBuildFile; fileRef = 5CB9424A106E662F0050FB6B /* ElisCoreImageKernel.cikernel */; }; @@ -63,6 +66,9 @@ 29B97325FDCFA39411CA2CEA /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = ""; }; 5C0DDDC3106B5652008425EE /* ElisUndoManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElisUndoManager.h; sourceTree = ""; }; 5C0DDDC4106B5652008425EE /* ElisUndoManager.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ElisUndoManager.m; sourceTree = ""; }; + 5C1EEEA110786A4000213FC4 /* ElisAudioWriter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElisAudioWriter.h; sourceTree = ""; }; + 5C1EEEA210786A4000213FC4 /* ElisAudioWriter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ElisAudioWriter.m; sourceTree = ""; }; + 5C1EEEBB10786A9D00213FC4 /* AudioToolbox.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AudioToolbox.framework; path = /System/Library/Frameworks/AudioToolbox.framework; sourceTree = ""; }; 5C480237106D165B00DF0CBB /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = English.lproj/movieSizeWindow.xib; sourceTree = ""; }; 5C56077D105FB3B70094F837 /* ElisPropertyTableController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElisPropertyTableController.h; sourceTree = ""; }; 5C56077E105FB3B70094F837 /* ElisPropertyTableController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ElisPropertyTableController.m; sourceTree = ""; }; @@ -85,6 +91,7 @@ 5C9F358A105F7BEA00D87A46 /* ElisEffect.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ElisEffect.m; sourceTree = ""; }; 5C9F358C105F7C0F00D87A46 /* ElisKeyframe.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ElisKeyframe.h; sourceTree = ""; }; 5C9F358D105F7C0F00D87A46 /* ElisKeyframe.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ElisKeyframe.m; sourceTree = ""; }; + 5CA59E921078B7DF00ED81E3 /* ElisCoreImageKernel.cikernel */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ElisCoreImageKernel.cikernel; sourceTree = ""; }; 5CB6798A10637CA400FC5F9F /* lightgreen.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = lightgreen.jpg; path = image/lightgreen.jpg; sourceTree = ""; }; 5CB6798B10637CA400FC5F9F /* orange.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; name = orange.jpg; path = image/orange.jpg; sourceTree = ""; }; 5CB9424A106E662F0050FB6B /* ElisCoreImageKernel.cikernel */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.glsl; path = ElisCoreImageKernel.cikernel; sourceTree = ""; }; @@ -134,6 +141,7 @@ 5CE26932105B700D0082C63A /* QuickTime.framework in Frameworks */, 5CE26934105B70260082C63A /* OpenGL.framework in Frameworks */, 5CE26936105B70340082C63A /* GLUT.framework in Frameworks */, + 5C1EEEBC10786A9D00213FC4 /* AudioToolbox.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -181,6 +189,7 @@ 1058C7A2FEA54F0111CA2CBB /* Other Frameworks */ = { isa = PBXGroup; children = ( + 5C1EEEBB10786A9D00213FC4 /* AudioToolbox.framework */, 29B97324FDCFA39411CA2CEA /* AppKit.framework */, 13E42FB307B3F0F600E4EEF1 /* CoreData.framework */, 29B97325FDCFA39411CA2CEA /* Foundation.framework */, @@ -231,6 +240,7 @@ isa = PBXGroup; children = ( 5CE26AD8105BD8F20082C63A /* skyblue.jpg */, + 5CA59E921078B7DF00ED81E3 /* ElisCoreImageKernel.cikernel */, 5CB6798A10637CA400FC5F9F /* lightgreen.jpg */, 5CB942B3106E675B0050FB6B /* trackgray.jpg */, 5CB942B5106E677E0050FB6B /* white.jpg */, @@ -330,6 +340,8 @@ 5CF28E0C1062581900C49262 /* ElisWriter.m */, 5C8A480F106A66ED00EC2F3D /* ElisWriterLegacy.h */, 5C8A4810106A66ED00EC2F3D /* ElisWriterLegacy.m */, + 5C1EEEA110786A4000213FC4 /* ElisAudioWriter.h */, + 5C1EEEA210786A4000213FC4 /* ElisAudioWriter.m */, 5C72E74A106E0CE800A96925 /* ElisWriterDummyView.h */, 5C72E74B106E0CE800A96925 /* ElisWriterDummyView.m */, ); @@ -423,6 +435,8 @@ 5CB9424D106E662F0050FB6B /* ElisCoreImageKernel.cikernel in Sources */, 5CB9424E106E662F0050FB6B /* ElisCustomFilter.m in Sources */, 5C8588CE107109E800802903 /* ElisMovieSpeedController.m in Sources */, + 5C1EEEA310786A4000213FC4 /* ElisAudioWriter.m in Sources */, + 5CA59E931078B7DF00ED81E3 /* ElisCoreImageKernel.cikernel in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -509,6 +523,7 @@ INFOPLIST_FILE = "Elis_Colors-Info.plist"; INSTALL_PATH = "$(HOME)/Applications"; PRODUCT_NAME = "Elis Colors"; + SDKROOT = macosx10.6; VALID_ARCHS = "i386 x86_64"; }; name = "Release (Leopard)"; diff --git a/ElisAudioWriter.h b/ElisAudioWriter.h new file mode 100644 index 0000000..0450988 --- /dev/null +++ b/ElisAudioWriter.h @@ -0,0 +1,21 @@ +// +// ElisAudioWriter.h +// Elis Colors +// +// Created by 柳 on 09/10/04. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// + +// ボリュームキーフレームを適用したオーディオファイルを書き出すひと。 + +#import "ElisBase.h" +#import "ElisLayer.h" +#import + + +@interface ElisAudioWriter : NSObject { + ElisLayer* layer; + +} + +@end diff --git a/ElisAudioWriter.m b/ElisAudioWriter.m new file mode 100644 index 0000000..d0a2d4f --- /dev/null +++ b/ElisAudioWriter.m @@ -0,0 +1,178 @@ +// +// ElisAudioWriter.m +// Elis Colors +// +// Created by 柳 on 09/10/04. +// Copyright 2009 __MyCompanyName__. All rights reserved. +// + +#import "ElisAudioWriter.h" + +#define CURRENT_TIME() inFileFormat.mSampleRate + +@implementation ElisAudioWriter + +- (id)initWithLayer:(ElisLayer*)l +{ + layer = l; + return self; +} + +- (void)writeToFile:(NSString*)outPath +{ + + NSString* inPath; + + inPath = [[layer media] path]; + + //一度に変換するフレーム数 + UInt32 convertFrames = 256; // 1/60フレームがこれくらいのはず。 + + //変数の宣言 + OSStatus err = noErr; + UInt32 size; + ExtAudioFileRef inAudioFileRef = NULL; + ExtAudioFileRef outAudioFileRef = NULL; + AudioStreamBasicDescription inFileFormat, ioClientFormat, outFileFormat; + void *ioData = NULL; + + //読み込み側のオーディオファイルを開く(2008/6/26修正) + //NSURL *inUrl = [NSURL URLWithString:inPath]; + NSURL *inUrl = [NSURL fileURLWithPath:inPath]; + err = ExtAudioFileOpenURL((CFURLRef)inUrl, &inAudioFileRef); + if (err != noErr) goto catchErr; + + //読み込み側のオーディオファイルからフォーマットを取得する + size = sizeof(ioClientFormat); + err = ExtAudioFileGetProperty( + inAudioFileRef, kExtAudioFileProperty_FileDataFormat, + &size, &inFileFormat); + if (err != noErr) goto catchErr; + + //書き出し側のオーディオファイルのパスを作成する(2008/6/26修正) +// NSString *outPath = +// [[inPath stringByDeletingPathExtension] +// stringByAppendingString:@"-export.wav"]; + //NSURL *outUrl = [NSURL URLWithString:outPath]; + NSURL *outUrl = [NSURL fileURLWithPath:outPath]; + + //書き出し側のオーディオファイルのフォーマットを作成する + outFileFormat.mSampleRate = 44100; + outFileFormat.mFormatID = kAudioFormatLinearPCM; + outFileFormat.mFormatFlags = + kAudioFormatFlagIsSignedInteger | kAudioFormatFlagIsPacked; + outFileFormat.mBitsPerChannel = 16; + outFileFormat.mChannelsPerFrame = inFileFormat.mChannelsPerFrame; + outFileFormat.mFramesPerPacket = 1; + outFileFormat.mBytesPerFrame = + outFileFormat.mBitsPerChannel / 8 * outFileFormat.mChannelsPerFrame; + outFileFormat.mBytesPerPacket = + outFileFormat.mBytesPerFrame * outFileFormat.mFramesPerPacket; + + // 書き出しするファイルを削除しておく。 + [[NSFileManager defaultManager] removeFileAtPath:outPath handler:nil]; + + //書き出し側のオーディオファイルを作成する + err = ExtAudioFileCreateWithURL( + (CFURLRef)outUrl, kAudioFileWAVEType, &outFileFormat, + NULL, 0, &outAudioFileRef); + if (err != noErr) goto catchErr; + + //読み書き両方のクライアントフォーマットを設定する + ioClientFormat.mSampleRate = inFileFormat.mSampleRate; + ioClientFormat.mFormatID = kAudioFormatLinearPCM; + ioClientFormat.mFormatFlags = kAudioFormatFlagsNativeFloatPacked; + ioClientFormat.mBitsPerChannel = 32; + ioClientFormat.mChannelsPerFrame = inFileFormat.mChannelsPerFrame; + ioClientFormat.mFramesPerPacket = 1; + ioClientFormat.mBytesPerFrame = + ioClientFormat.mBitsPerChannel / 8 * ioClientFormat.mChannelsPerFrame; + ioClientFormat.mBytesPerPacket = + ioClientFormat.mBytesPerFrame * ioClientFormat.mFramesPerPacket; + + size = sizeof(ioClientFormat); + err = ExtAudioFileSetProperty( + outAudioFileRef, kExtAudioFileProperty_ClientDataFormat, + size, &ioClientFormat); + if (err != noErr) goto catchErr; + + size = sizeof(ioClientFormat); + err = ExtAudioFileSetProperty( + inAudioFileRef, kExtAudioFileProperty_ClientDataFormat, + size, &ioClientFormat); + if (err != noErr) goto catchErr; + + //オーディオデータの読み書きに使用するメモリ領域を確保する + UInt32 allocByteSize = convertFrames * ioClientFormat.mBytesPerFrame; + ioData = malloc(allocByteSize); + if (!ioData) { + err = 1002; + goto catchErr; + } + memset(ioData, 0, allocByteSize); + + //オーディオデータの読み書きに使用するAudioBufferListを作成する + AudioBufferList ioList; + ioList.mNumberBuffers = 1; + ioList.mBuffers[0].mNumberChannels = ioClientFormat.mChannelsPerFrame; + ioList.mBuffers[0].mDataByteSize = allocByteSize; + ioList.mBuffers[0].mData = ioData; + + // オフセットの分だけずらす。 + int f, startFrame, silentFrame, endFrame; + QTTime t = [layer plusOffsetTime:QTZeroTime]; + startFrame = (float)t.timeValue/t.timeScale * inFileFormat.mSampleRate; + + t = [layer mapping].time; + silentFrame = (float)t.timeValue/t.timeScale * inFileFormat.mSampleRate; + + t = [layer mapping].duration; + endFrame = (float)t.timeValue/t.timeScale * inFileFormat.mSampleRate; + + ExtAudioFileSeek(inAudioFileRef, startFrame); + + //オーディオデータをコピーする + for(f = 0; f < endFrame; f += convertFrames) { + //フレーム数とデータサイズを設定する + UInt32 frames = convertFrames; + ioList.mBuffers[0].mDataByteSize = allocByteSize; + + //読み込み側のオーディオファイルからオーディオデータを読み込む + if(f > silentFrame){ + err = ExtAudioFileRead(inAudioFileRef, &frames, &ioList); + if (err != noErr) goto catchErr; + + int i, offset; + float src; +// offset = ioList.mBuffers[0].mDataByteSize/frames; + float v = [layer getVolumeForTime:QTMakeTime(f, inFileFormat.mSampleRate)]; + for(i = 0; i < ioList.mBuffers[0].mDataByteSize; i += 4){ + src = *(float*)(ioList.mBuffers[0].mData + i); + *(float*)(ioList.mBuffers[0].mData + i) = (float)(src*v); + } + } + + //最後まで読み込んだら終了 + if (frames == 0) break; + + //書き込み側のオーディオファイルへ書き込む + err = ExtAudioFileWrite(outAudioFileRef, frames, &ioList); + if (err != noErr) goto catchErr; + } + + NSLog(@"complete"); + + +catchErr: + + if (err != noErr) NSLog(@"err = %ld", err); + + //解放する + if (ioData) free(ioData); + if (inAudioFileRef) ExtAudioFileDispose(inAudioFileRef); + if (outAudioFileRef) ExtAudioFileDispose(outAudioFileRef); + + return 0; +} + +@end diff --git a/ElisBase.h b/ElisBase.h index 8d89ed6..6f26642 100644 --- a/ElisBase.h +++ b/ElisBase.h @@ -40,7 +40,7 @@ // GCD使ったら表示がちらつくようになった。どういうことなの... -#define ELIS_VERSION @"0.1" +#define ELIS_VERSION @"0.2" //#define __SNOW_LEOPARD__ //#define __SNOW_LEOPARD_GCD__ diff --git a/ElisController.h b/ElisController.h index 053bce0..0f15f11 100644 --- a/ElisController.h +++ b/ElisController.h @@ -47,6 +47,7 @@ #import "ElisMovieSizeWindowController.h" #import "ElisPreferenceController.h" #import "ElisMovieSpeedController.h" +#import "ElisAudioWriter.h" @class ElisMainView, ElisTimeLineController, ElisPropertyTableController; diff --git a/ElisController.m b/ElisController.m index 9105c02..23df417 100644 --- a/ElisController.m +++ b/ElisController.m @@ -49,14 +49,15 @@ static float convertQTTimeToSecond(QTTime t) ProjectMovieSize = CGRectMake(0, 0, 640, 480); // カスタムフィルタを初期化。 - [ElisCustomFilter class]; +// [ElisCustomFilter class]; NSLog(@"Building effects ..."); // エフェクトメニューを構築。 [self buildEffectMenu]; - // テキストフィールドでリッチテキスト編集を許可する。 -// [_textLayerField setAllowsEditingTextAttributes:YES]; + // Quartz Composerのデフォルト再生時間を変更。 + NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; + [defaults setInteger:60*10 forKey:@"QuartzComposerDefaultMovieDuration"]; timeLineXShift = 0; usingStampMode = NO; @@ -253,6 +254,15 @@ static float convertQTTimeToSecond(QTTime t) - (void)moveSliderTo:(QTTime)time { float now = convertQTTimeToSecond(time); + [self performSelectorOnMainThread:@selector(moveSliderOnThread:) withObject:[NSNumber numberWithFloat:now] waitUntilDone:NO]; +// [timeSlider setFloatValue:now/hipTime]; +// [timeCodeField setStringValue:QTStringFromTime(QTMakeTime(now * DEFAULT_FPS, DEFAULT_FPS))]; +// [_timeLineController movePlaybackBar:now*timeLineScale]; +} + +- (void)moveSliderOnThread:(NSNumber*)nowv +{ + float now = [nowv floatValue]; [timeSlider setFloatValue:now/hipTime]; [timeCodeField setStringValue:QTStringFromTime(QTMakeTime(now * DEFAULT_FPS, DEFAULT_FPS))]; [_timeLineController movePlaybackBar:now*timeLineScale]; @@ -296,6 +306,7 @@ static float convertQTTimeToSecond(QTTime t) CALayer* selected = [_timeLineController getSelectLayer]; ElisLayer* layer = [selected valueForKey:@"ElisLayer"]; + layer.media = nil; [layers removeObject:layer]; [selected removeFromSuperlayer]; [_timeLineController removeSelectLayer]; @@ -456,6 +467,8 @@ static float convertQTTimeToSecond(QTTime t) float w, h; [_timeLineController awakeFromNib]; // これはひどい。 + NSString* version = [decoder decodeObjectForKey:@"version"]; + if([version compare:ELIS_VERSION] > 0) return; layers = [decoder decodeObjectForKey:@"layers"]; w = [decoder decodeFloatForKey:@"movieWidth"]; h = [decoder decodeFloatForKey:@"movieHeight"]; @@ -530,9 +543,17 @@ static float convertQTTimeToSecond(QTTime t) if([menuItem action] == @selector(cutLayerAtCurrentTime:)) return [_timeLineController canDeleteLayer]; + if([menuItem action] == @selector(effectMenuPushed:)) + return [self canAddEffect]; + return YES; } +- (BOOL)canAddEffect +{ + return ![[[[[_timeLineController getSelectLayer] valueForKey:@"ElisLayer"] media] type] isEqualToString:@"sound"]; +} + - (IBAction)rewriteProject:(id)sender { NSMutableData* data = [NSMutableData data]; @@ -701,8 +722,25 @@ static float convertQTTimeToSecond(QTTime t) - (IBAction)playStop:(id)sender { + [[NSGarbageCollector defaultCollector] collectExhaustively]; if(playing) [self stopPlay:nil]; else [self startPlay:nil]; } +- (NSMutableArray*)writeAudioFiles +{ + NSMutableArray* paths = [[NSMutableArray alloc] init]; + int i, size = [layers count]; + for(i = 0; i < size; i++){ + if([[[[layers objectAtIndex:i] media] type] isEqualToString:@"sound"]){ + ElisAudioWriter* w = [[ElisAudioWriter alloc] initWithLayer:[layers objectAtIndex:i]]; + NSString* outPath = [NSString stringWithFormat:@"/tmp/%d.wav", i]; + [w writeToFile:outPath]; + [paths addObject:outPath]; + } + } + + return paths; +} + @end diff --git a/ElisCustomFilter.h b/ElisCustomFilter.h index 2da1127..c2c365f 100644 --- a/ElisCustomFilter.h +++ b/ElisCustomFilter.h @@ -28,8 +28,10 @@ // // オレオレCore Imageフィルタ。 +// Charlotte Filterって名前のパッケージにまとめるかも? +// シャーロットです。画像系の低レベルな物事を引き受けてくれるスピード狂。prefixはCH -// CIOpacity : 画像の透過度を変化させるフィルタ。 +// CHOpacity : 画像の透過度を変化させるフィルタ。 // inputOpacity=0.0-1.0 default=1.0 #import diff --git a/ElisCustomFilter.m b/ElisCustomFilter.m index 41520f6..efd7d06 100644 --- a/ElisCustomFilter.m +++ b/ElisCustomFilter.m @@ -31,13 +31,15 @@ @implementation ElisCustomFilter -static CIKernel *s_opacityKernel = nil; +static CIKernel* s_opacityKernel = nil; - (id)init { if(s_opacityKernel == nil){ - NSBundle *bundle = [NSBundle bundleForClass:[self class]]; +// NSBundle *bundle = [NSBundle bundleForClass:[self class]]; + NSBundle* bundle = [NSBundle mainBundle]; NSString *code = [NSString stringWithContentsOfFile:[bundle pathForResource:@"ElisCoreImageKernel" ofType:@"cikernel"]]; + NSLog(code); NSArray *kernels = [CIKernel kernelsWithString:code]; s_opacityKernel = [[kernels objectAtIndex:0] retain]; } @@ -49,19 +51,32 @@ static CIKernel *s_opacityKernel = nil; { NSLog(@"Initializing Custom Filter ..."); - [CIFilter registerFilterName:@"CIOpacity" + [CIFilter registerFilterName:@"CHOpacity" constructor:self classAttributes:[NSDictionary dictionaryWithObjectsAndKeys:@"Change", kCIAttributeFilterDisplayName, [NSArray arrayWithObjects:kCICategoryColorAdjustment, kCICategoryVideo, kCICategoryStillImage, - kCICategoryNonSquarePixels, nil], kCIAttributeFilterCategories, - [NSDictionary dictionaryWithObjectsAndKeys: - [NSNumber numberWithDouble:0.0], kCIAttributeMin, - [NSNumber numberWithDouble:1.0], kCIAttributeMax, - [NSNumber numberWithDouble:0.0], kCIAttributeSliderMin, - [NSNumber numberWithDouble:1.0], kCIAttributeSliderMax, - [NSNumber numberWithDouble:1.0], kCIAttributeDefault, - [NSNumber numberWithDouble:1.0], kCIAttributeIdentity, - kCIAttributeTypeScalar, kCIAttributeType, nil], @"inputOpacity", nil]]; + kCICategoryNonSquarePixels, nil], kCIAttributeFilterCategories, nil]]; +// [NSDictionary dictionaryWithObjectsAndKeys: +// [NSNumber numberWithDouble:0.0], kCIAttributeMin, +// [NSNumber numberWithDouble:1.0], kCIAttributeMax, +// [NSNumber numberWithDouble:0.0], kCIAttributeSliderMin, +// [NSNumber numberWithDouble:1.0], kCIAttributeSliderMax, +// [NSNumber numberWithDouble:1.0], kCIAttributeDefault, +// [NSNumber numberWithDouble:1.0], kCIAttributeIdentity, +// kCIAttributeTypeScalar, kCIAttributeType, nil], @"inputOpacity", nil]]; +} + +- (NSDictionary*)customAttributes +{ + return [NSDictionary dictionaryWithObjectsAndKeys: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSNumber numberWithDouble:0.0], kCIAttributeMin, + [NSNumber numberWithDouble:1.0], kCIAttributeMax, + [NSNumber numberWithDouble:0.0], kCIAttributeSliderMin, + [NSNumber numberWithDouble:1.0], kCIAttributeSliderMax, + [NSNumber numberWithDouble:1.0], kCIAttributeDefault, + [NSNumber numberWithDouble:1.0], kCIAttributeIdentity, + kCIAttributeTypeScalar, kCIAttributeType, nil], @"inputOpacity", nil]; } - (CIImage*)outputImage diff --git a/ElisEffect.m b/ElisEffect.m index de1fd2f..a92af16 100644 --- a/ElisEffect.m +++ b/ElisEffect.m @@ -37,6 +37,7 @@ { [super init]; filter = [[CIFilter filterWithName:aname] retain]; + if(filter == nil) return nil; [filter setDefaults]; params = [[NSMutableDictionary alloc] init]; attrs = [filter attributes]; diff --git a/ElisLayer.h b/ElisLayer.h index 356deac..323513e 100644 --- a/ElisLayer.h +++ b/ElisLayer.h @@ -45,6 +45,7 @@ QTTime offset; // 再生時間オフセット NSMutableArray* effects; // エフェクトの配列 ElisKeyframe *pxKeyframe, *pyKeyframe; // Positionのキーフレーム + ElisKeyframe *volumeKeyframe; NSRect originSize; // 用意せざるをえない! } @@ -94,4 +95,8 @@ - (void)setSpeed:(float)s; - (CALayer*)alayer; +- (float)getVolumeForTime:(QTTime)time; +- (void)setVolume:(float)v forTime:(QTTime)time; +- (float)getVolumeForInnerTime:(QTTime)time; + @end diff --git a/ElisLayer.m b/ElisLayer.m index 7aff80a..8728b8b 100644 --- a/ElisLayer.m +++ b/ElisLayer.m @@ -54,14 +54,23 @@ static float convertQTTimeToSecond(QTTime t) originSize = NSZeroRect; - [self addEffect:@"CIOpacity"]; //デフォルトで透過度フィルタと -// [self addEffect:@"CILanczosScaleTransform"]; // 拡大縮小フィルタと - [self addEffect:@"CIAffineTransform"]; // アフィン変換フィルタはつけておく。 - - return self; } +- (void)setMedia:(ElisMedia *)m +{ + media = m; + if([[m type] isEqualToString:@"sound"]){ + volumeKeyframe = [[ElisKeyframe alloc] init]; + [volumeKeyframe setValueForTime:0.3 time:QTZeroTime]; + } + else{ + volumeKeyframe = nil; + [self addEffect:@"CIOpacity"]; //デフォルトで透過度フィルタと + [self addEffect:@"CIAffineTransform"]; // アフィン変換フィルタはつけておく。 + } +} + - (void)setAlayer:(CALayer *)layer { alayer = layer; @@ -84,7 +93,9 @@ static float convertQTTimeToSecond(QTTime t) - (void)addEffect:(NSString*)name { - [effects addObject:[[ElisEffect alloc] initWithName:name]]; + ElisEffect* e = [[ElisEffect alloc] initWithName:name]; + if(e) + [effects addObject:e]; } // mappingとtrackNumberを変化させる。 @@ -118,7 +129,7 @@ static float convertQTTimeToSecond(QTTime t) { QTTime duration; - if([[media type] isEqualToString:@"image"] || [[media type] isEqualToString:@"text"]) + if([[media type] isEqualToString:@"image"] || [[media type] isEqualToString:@"text"] || [media isQuartz]) duration = QTMakeTime(60*10, 1); else duration = [media duration]; @@ -209,14 +220,16 @@ static float convertQTTimeToSecond(QTTime t) { QTTime innerTime = QTTimeDecrement(time, mapping.time); CIImage* image; - if([[media type] isEqualToString:@"sound"]) return nil; if(usingStampMode){ image = [media getFrameForTime:timeStamp]; }else{ [media setCurrentTime:QTTimeIncrement(innerTime, offset)]; image = [media getFrameForTime:nil]; } - if(image == nil) return nil; + if(image == nil){ + [media setVolume:[volumeKeyframe getValueForTime:QTTimeIncrement(innerTime, offset)]]; + return nil; + } return [self applyEffects:image forTime:QTTimeIncrement(innerTime, offset)]; } @@ -225,9 +238,11 @@ static float convertQTTimeToSecond(QTTime t) { QTTime innerTime = QTTimeDecrement(time, mapping.time); [media setCurrentTime:QTTimeIncrement(innerTime, offset)]; -// CIImage* image = [media getFrameForQTTime:QTTimeIncrement(innerTime, offset)]; CIImage* image = [media getFrameForTime:nil]; - if(image == nil) return nil; + if(image == nil){ + [media setVolume:[volumeKeyframe getValueForTime:QTTimeIncrement(innerTime, offset)]]; + return nil; + } return [self applyEffects:image forTime:QTTimeIncrement(innerTime, offset)]; } @@ -254,6 +269,16 @@ static float convertQTTimeToSecond(QTTime t) return NSMakePoint(x, y); } +- (float)getVolumeForTime:(QTTime)time +{ + return [volumeKeyframe getValueForTime:QTTimeIncrement(QTTimeDecrement(time, mapping.time), offset)]; +} + +- (float)getVolumeForInnerTime:(QTTime)time +{ + return [volumeKeyframe getValueForTime:time]; +} + - (void)play { [media play]; @@ -295,6 +320,7 @@ static float convertQTTimeToSecond(QTTime t) NSString* paramName, *effectName; NSDictionary* dict; + if(![[media type] isEqualToString:@"sound"]){ [t_propertyNames addObject:@"Position X"]; [t_effects addObject:self]; [t_valueNames addObject:@""]; @@ -314,6 +340,11 @@ static float convertQTTimeToSecond(QTTime t) [t_valueNames addObject:paramName]; } } + }else{ + [t_propertyNames addObject:@"Volume"]; + [t_effects addObject:self]; + [t_valueNames addObject:@""]; + } } - (QTTime)convertToInnnerTime:(QTTime)globalTime @@ -344,6 +375,12 @@ static float convertQTTimeToSecond(QTTime t) [pyKeyframe setValueForTime:0.0 time:QTZeroTime]; } +- (void)removeVolumeKeyframe +{ + volumeKeyframe = [[ElisKeyframe alloc] init]; + [volumeKeyframe setValueForTime:0.3 time:QTZeroTime]; +} + - (void)removeEffect:(ElisEffect*)ef { [effects removeObject:ef]; @@ -379,6 +416,7 @@ static float convertQTTimeToSecond(QTTime t) [encoder encodeObject:effects forKey:@"effects"]; [encoder encodeObject:pxKeyframe forKey:@"pxKeyframe"]; [encoder encodeObject:pyKeyframe forKey:@"pyKeyframe"]; + [encoder encodeObject:volumeKeyframe forKey:@"volumeKeyframe"]; } - (id)initWithCoder:(NSCoder*)coder @@ -390,6 +428,7 @@ static float convertQTTimeToSecond(QTTime t) effects = [coder decodeObjectForKey:@"effects"]; pxKeyframe = [coder decodeObjectForKey:@"pxKeyframe"]; pyKeyframe = [coder decodeObjectForKey:@"pyKeyframe"]; + volumeKeyframe = [coder decodeObjectForKey:@"volumeKeyframe"]; return self; } @@ -402,6 +441,7 @@ static float convertQTTimeToSecond(QTTime t) [encoder encodeObject:effects forKey:@"effects"]; [encoder encodeObject:pxKeyframe forKey:@"pxKeyframe"]; [encoder encodeObject:pyKeyframe forKey:@"pyKeyframe"]; + [encoder encodeObject:volumeKeyframe forKey:@"volumeKeyframe"]; [encoder encodeFloat:[media speed] forKey:@"speed"]; } @@ -414,6 +454,7 @@ static float convertQTTimeToSecond(QTTime t) pxKeyframe = [coder decodeObjectForKey:@"pxKeyframe"]; pyKeyframe = [coder decodeObjectForKey:@"pyKeyframe"]; [media setSpeed:[coder decodeFloatForKey:@"speed"]]; + volumeKeyframe = [coder decodeObjectForKey:@"volumeKeyframe"]; [self setLayer:alayer]; } @@ -466,4 +507,12 @@ static float convertQTTimeToSecond(QTTime t) [self setLayer:alayer]; } +- (void)setVolume:(float)v forTime:(QTTime)time +{ + if(recording) + [volumeKeyframe setValueForTime:v time:time]; + else + [volumeKeyframe setValueForTime:v time:QTZeroTime]; +} + @end diff --git a/ElisMainView.m b/ElisMainView.m index ab967ff..0f7ddf6 100644 --- a/ElisMainView.m +++ b/ElisMainView.m @@ -29,6 +29,8 @@ #import "ElisMainView.h" +#import + #pragma mark Render Callback static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, const CVTimeStamp *inNow, @@ -52,6 +54,8 @@ static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, sortedLayerSet = malloc(sizeof(void*) * TRACK_SIZE); printBorderLine = YES; rendering = NO; + +// [[NSGarbageCollector defaultCollector] disableCollectorForPointer:layerSet]; } - (void)prepareOpenGL @@ -63,6 +67,7 @@ static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, [[self openGLContext] setValues:&swapInterval forParameter:NSOpenGLCPSwapInterval]; CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB(); +// CGColorSpaceRef colorSpace = CGColorSpaceCreateWithName(kCGColorSpaceSRGB); ciContext = [CIContext contextWithCGLContext:[[self openGLContext] CGLContextObj] pixelFormat:[[self pixelFormat] CGLPixelFormatObj] options:[NSDictionary dictionaryWithObjectsAndKeys:(id)colorSpace, kCIContextOutputColorSpace, @@ -77,6 +82,7 @@ static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, } scale = 1.0; + // [self setFrame:NSMakeRect(0, 0, 640/2, 480/2)]; NSLog(@"Elis Colors, Stand by ready."); @@ -102,7 +108,7 @@ static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, // int i, size = [layerSet count]; // for(i = 0; i < size; i++) // [[layerSet objectAtIndex:i] releaseContext]; - + return kCVReturnSuccess; } @@ -213,8 +219,9 @@ static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, for(i = 0; i < TRACK_SIZE; i++){ if(sortedLayerSet[i] == 0) continue; - + ci = [sortedLayerSet[i] getEffectedImage:stamp forTime:_qt]; +// [[NSGarbageCollector defaultCollector] disableCollectorForPointer:ci]; point = [sortedLayerSet[i] getPositionForTime:[sortedLayerSet[i] convertToInnnerTime:_qt]]; originSize = [sortedLayerSet[i] originSize]; if(ci == nil) continue; // サウンドレイヤーはスキップ @@ -229,6 +236,8 @@ static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, cp.y += dy - (imageRect.size.height - originSize.height)/2; // [ciContext drawImage:ci inRect:imageRect fromRect:CGRectMake(point.x, point.y, ProjectMovieSize.size.width, ProjectMovieSize.size.height)]; [ciContext drawImage:ci atPoint:cp fromRect:imageRect]; + ci = nil; + // [ciContext drawImage:ci inRect:CGRectMake(point.x, point.y, imageRect.size.width, imageRect.size.height) // fromRect:imageRect]; } @@ -251,6 +260,9 @@ static CVReturn MyRenderCallback(CVDisplayLinkRef displayLink, [[layerSet objectAtIndex:i] releaseContext]; [layerSet removeAllObjects]; + +// [[NSGarbageCollector defaultCollector] collectExhaustively]; + objc_collect(OBJC_RATIO_COLLECTION); [lock unlock]; } diff --git a/ElisMedia.h b/ElisMedia.h index 1af7f78..178276f 100644 --- a/ElisMedia.h +++ b/ElisMedia.h @@ -39,7 +39,8 @@ float speed; // for Movie 1.0 = 等速, 2.0 = 倍速 NSString* _path; // for 全部 BOOL playing; // for Audio 再生中かどうか - QTVisualContextRef textureContext; + QTVisualContextRef textureContext; + BOOL isQuartz; } - (QTTime)duration; @@ -53,5 +54,6 @@ - (NSRect)size; - (float)speed; - (void)setSpeed:(float)s; +- (void)setVolume:(float)v; @end diff --git a/ElisMedia.m b/ElisMedia.m index 84be399..3635aae 100644 --- a/ElisMedia.m +++ b/ElisMedia.m @@ -65,6 +65,12 @@ [movie setVolume:0.0f]; + if([[NSWorkspace sharedWorkspace] type:[[NSWorkspace sharedWorkspace] typeOfFile:path error:nil] + conformsToType:@"com.apple.quartz-composer-composition"]) + isQuartz = YES; + else + isQuartz = NO; + return self; } @@ -103,11 +109,12 @@ // [attr retain]; // [attr setValue:[NSFont fontWithName:@"HiraKakuPro-W3" size:24.0f] forKey:NSFontAttributeName]; // [attr setValue:[NSColor colorWithCalibratedRed:255 green:255 blue:255 alpha:255] forKey:NSForegroundColorAttributeName]; - im = [[NSImage alloc] initWithSize:NSMakeSize(ProjectMovieSize.size.width, ProjectMovieSize.size.height)]; + NSRect size = [t boundingRectWithSize:NSMakeSize(4000, 3000) options:NSStringDrawingUsesLineFragmentOrigin]; + im = [[NSImage alloc] initWithSize:size.size]; [im lockFocus]; // t = [[NSAttributedString alloc] initWithString:@"string"]; [[NSGraphicsContext currentContext] setShouldAntialias:YES]; - [t drawInRect:NSMakeRect(0, 0, [im size].width, [im size].height)]; + [t drawInRect:size]; [im unlockFocus]; image = [[CIImage alloc] initWithData:[im TIFFRepresentation]]; // [im release]; @@ -162,8 +169,10 @@ [movie setAttribute:[NSValue valueWithQTTime:time] forKey:QTMovieCurrentTimeAttribute]; MoviesTask([movie quickTimeMovie], 0); } - if(sound) + if(sound && !playing){ [sound setCurrentTime:time]; + MoviesTask([sound quickTimeMovie], 0); + } } - (void)play @@ -173,7 +182,7 @@ [movie setRate:speed]; playing = YES; } - if(sound && YES){ + if(sound && !playing){ [sound play]; playing = YES; } @@ -194,6 +203,7 @@ - (QTTime)duration { if(movie){ + if(isQuartz) return QTMakeTime(30, 1); QTTime d = [movie duration]; d.timeValue /= speed; float s = (float)d.timeValue/d.timeScale; @@ -335,4 +345,14 @@ speed = s; } +- (void)setVolume:(float)v +{ + [sound setVolume:v]; +} + +- (BOOL)isQuartz +{ + return isQuartz; +} + @end diff --git a/ElisMediaBrowserController.h b/ElisMediaBrowserController.h index ae0e975..33b182e 100644 --- a/ElisMediaBrowserController.h +++ b/ElisMediaBrowserController.h @@ -31,11 +31,14 @@ #import #import +#import "ElisBase.h" @interface ElisMediaBrowserController : NSObject { IBOutlet id _mediaBrowser; IBOutlet id _status; + BOOL canRead; + NSRecursiveLock* lock; NSMutableArray *_images; NSMutableArray *_importedImages; diff --git a/ElisMediaBrowserController.m b/ElisMediaBrowserController.m index b83de4b..aafea23 100644 --- a/ElisMediaBrowserController.m +++ b/ElisMediaBrowserController.m @@ -128,6 +128,8 @@ static NSArray *openFiles() [_mediaBrowser setAnimates:YES]; [_mediaBrowser setDraggingDestinationDelegate:self]; // [_mediaBrowser setBackgroundColor:[NSColor grayColor]]; + + lock = [[NSRecursiveLock alloc] init]; } /* entry point for reloading image-browser's data and setNeedsDisplay */ @@ -151,11 +153,18 @@ static NSArray *openFiles() This code is performed in an independant thread. */ +- (BOOL)canInitQT:(NSString*)path +{ + canRead = [QTMovie canInitWithFile:path]; +} + - (void) addAnImageWithPath:(NSString *) path { myImageObject *p; NSWorkspace* sharedWorkspace = [NSWorkspace sharedWorkspace]; + + // 読めるメディアかチェック if([sharedWorkspace type:[sharedWorkspace typeOfFile:path error:nil] conformsToType:@"public.image"]) { @@ -165,17 +174,24 @@ static NSArray *openFiles() [p setPath:path]; [_importedImages addObject:p]; } - else if([sharedWorkspace type:[sharedWorkspace typeOfFile:path error:nil] - conformsToType:@"public.movie"] || - [sharedWorkspace type:[sharedWorkspace typeOfFile:path error:nil] - conformsToType:@"public.audio"] || - [sharedWorkspace type:[sharedWorkspace typeOfFile:path error:nil] - conformsToType:@"com.apple.quartz-composer-composition"]) + else{ + [lock lock]; + [self performSelectorOnMainThread:@selector(canInitQT:) withObject:path waitUntilDone:YES]; + [lock unlock]; + if(canRead +// [sharedWorkspace type:[sharedWorkspace typeOfFile:path error:nil] +// conformsToType:@"public.movie"] || +// [sharedWorkspace type:[sharedWorkspace typeOfFile:path error:nil] +// conformsToType:@"public.audio"] || +// [sharedWorkspace type:[sharedWorkspace typeOfFile:path error:nil] +// conformsToType:@"com.apple.quartz-composer-composition"] + ) { p = [[myImageObject alloc] init]; [p setMoviePath:path]; [_importedImages addObject:p]; } + } } - (void) addImagesWithPath:(NSString *) path recursive:(BOOL) recursive diff --git a/ElisPropertyTableController.m b/ElisPropertyTableController.m index 4053f64..78d2074 100644 --- a/ElisPropertyTableController.m +++ b/ElisPropertyTableController.m @@ -63,6 +63,8 @@ NSString* propertyName = [propertyNames objectAtIndex:rowIndex]; QTTime localCurrentTime = [interestLayer convertToInnnerTime:globalCurrentTime]; + if([effects count] != 1){ + // スライダーのカラム if([[aTableColumn identifier] isEqualToString:@"slider"]){ if([propertyName isEqualToString:@"Position X"]){ @@ -95,6 +97,15 @@ // 項目名のカラム return propertyName; + + }else{ + if([[aTableColumn identifier] isEqualToString:@"slider"]) + return [NSNumber numberWithFloat:[[effects lastObject] getVolumeForTime:globalCurrentTime]]; + if([[aTableColumn identifier] isEqualToString:@"number"]) + return [NSNumber numberWithFloat:[[effects lastObject] getVolumeForTime:globalCurrentTime]]; + + return @"Volume"; + } } // slider cellの変更通知を受け取るところ。一括処理。 @@ -111,6 +122,7 @@ else localCurrentTime = QTZeroTime; + if([effects count] != 1){ if([name isEqualToString:@"Position X"]){ // p = [[effects objectAtIndex:i] getPositionForTime:localCurrentTime]; @@ -125,7 +137,11 @@ [[effects objectAtIndex:i] setEffectValueForTime:[valueNames objectAtIndex:i] value:[sender floatValue] time:localCurrentTime]; } + }else { + [[effects objectAtIndex:0] setVolume:[sender floatValue] forTime:localCurrentTime]; + } + [_mainController refresh]; [_timeLineController updateKeyframeLayer]; // [_propertyView reloadData]; @@ -142,6 +158,8 @@ QTTime now = [interestLayer plusOffsetTime:QTMakeTime(time*DEFAULT_FPS/timeLineScale, DEFAULT_FPS)]; // int _rowIndex = [_propertyView selectedRow]; NSPoint p; + + if([effects count] != 1){ if([[propertyNames objectAtIndex:_rowIndex] isEqualToString:@"Position X"]){ p = [[effects objectAtIndex:_rowIndex] getPositionForTime:now]; @@ -154,6 +172,10 @@ } return [[effects objectAtIndex:_rowIndex] getEffectValue:[valueNames objectAtIndex:_rowIndex] forTime:now]; + + }else{ + return [[effects objectAtIndex:0] getVolumeForInnerTime:now]; + } } - (BOOL)isSelected @@ -174,6 +196,8 @@ { int index = [_propertyView selectedRow]; + if([effects count] != 1){ + if(interestLayer){ [_undoManager pushOperation:interestLayer]; if(index == 0) @@ -187,6 +211,12 @@ } [_timeLineController updateKeyframeLayer]; } + + }else{ + [_undoManager pushOperation:interestLayer]; + [interestLayer removeVolumeKeyframe]; + [_timeLineController updateKeyframeLayer]; + } } - (void)removeEffect diff --git a/ElisWriterLegacy.m b/ElisWriterLegacy.m index 105d7f0..b030ce4 100644 --- a/ElisWriterLegacy.m +++ b/ElisWriterLegacy.m @@ -96,7 +96,7 @@ static OSErr QTMoovProcs_VideoTrackDataProc(void *theRefcon, MovieExportGetDataP // [_dummyWindow setFrame:*(NSRect*)&ProjectMovieSize display:YES]; // [NSApp beginSheet:_dummyWindow modalForWindow:_mainWindow modalDelegate:self // didEndSelector:nil contextInfo:nil]; - [_dummyWindow setHidesOnDeactivate:YES]; +// [_dummyWindow setHidesOnDeactivate:YES]; // プログレスバーを表示 [NSApp beginSheet:_barSheet modalForWindow:_mainWindow @@ -135,22 +135,34 @@ static OSErr QTMoovProcs_VideoTrackDataProc(void *theRefcon, MovieExportGetDataP theVideoDataProcUPP, self); + // オーディオのみ書き出し + NSMutableArray* audioPaths = [_mainController writeAudioFiles]; + NSMutableArray* audioMovies = [[NSMutableArray alloc] init]; + + // オーディオファイルを実体化 + for(id audioPath in audioPaths){ + QTMovie* m = [[QTMovie alloc] initWithFile:audioPath error:nil]; + NSLog(audioPath); + if(m == nil) continue; + [audioMovies addObject:m]; + } + // とりあえずいらない // setup audio - NSMutableArray* audioTracks = [[NSMutableArray alloc] init]; - [_mainController getSoundTrack:audioTracks]; - int aui, tsize = [audioTracks count]; - QTTime qtr; - for(aui = 0; aui < tsize; aui += 3){ +// NSMutableArray* audioTracks = [[NSMutableArray alloc] init]; +// [_mainController getSoundTrack:audioTracks]; +// int aui, tsize = [audioTracks count]; +// QTTime qtr; + for(QTMovie* audioMovie in audioMovies){ // we are setting up the audio for pass through // インスタンス変数を使ってる! - qtr = [[audioTracks objectAtIndex:aui+2] QTTimeValue]; + QTTrack* t = [[audioMovie tracksOfMediaType:QTMediaTypeSound] objectAtIndex:0]; err = MovieExportNewGetDataAndPropertiesProcs(myExporter, SoundMediaType, &audioScale, - [[audioTracks objectAtIndex:aui] quickTimeMovie], - [[audioTracks objectAtIndex:aui+1] quickTimeTrack], // we only use the first audio here + [audioMovie quickTimeMovie], + [t quickTimeTrack], // we only use the first audio here 0, - qtr.timeValue, + [audioMovie duration].timeValue, &theAudioPropProcUPP, &theAudioDataProcUPP, &audioRefCon); @@ -180,6 +192,9 @@ static OSErr QTMoovProcs_VideoTrackDataProc(void *theRefcon, MovieExportGetDataP } CloseComponent(myExporter); + [NSApp endSheet:_barSheet]; + [_barSheet close]; +// [_mainView setHidden:NO]; return; } @@ -255,6 +270,9 @@ static OSErr QTMoovProcs_VideoTrackDataProc(void *theRefcon, MovieExportGetDataP // dispose the original data reference DisposeHandle(myDataRef); + for(NSString* audioPath in audioPaths) + [[NSFileManager defaultManager] removeFileAtPath:audioPath handler:nil]; + [_barSheet close]; [NSApp endSheet:_barSheet]; diff --git a/Elis_Colors-Info.plist b/Elis_Colors-Info.plist index a7bec17..3e5c73c 100644 --- a/Elis_Colors-Info.plist +++ b/Elis_Colors-Info.plist @@ -19,16 +19,16 @@ CFBundleSignature ???? CFBundleShortVersionString - 0.1 + 0.2 LSMinimumSystemVersion ${MACOSX_DEPLOYMENT_TARGET} CFBundleVersion - alpha1 + alpha2 NSMainNibFile MainMenu NSPrincipalClass NSApplication NSHumanReadableCopyright - © 2009, Yanagi Asakura + Copyright © 2009, Yanagi Asakura diff --git a/English.lproj/MainMenu.xib b/English.lproj/MainMenu.xib index eee265c..dbcf5d8 100644 --- a/English.lproj/MainMenu.xib +++ b/English.lproj/MainMenu.xib @@ -1836,7 +1836,7 @@ 2322 - {491, 36} + {491, 14} @@ -5536,7 +5536,7 @@ - 707 + 711 diff --git a/English.lproj/MainMenuForSmallDisplay.xib b/English.lproj/MainMenuForSmallDisplay.xib deleted file mode 100644 index 05866e6..0000000 --- a/English.lproj/MainMenuForSmallDisplay.xib +++ /dev/null @@ -1,6288 +0,0 @@ - - - - 1060 - 10B504 - 732 - 1038.2 - 437.00 - - YES - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.imagekit.ibplugin - - - YES - 732 - 1.1 - - - - YES - - - - - YES - com.apple.imagekit.ibplugin - com.apple.InterfaceBuilder.CocoaPlugin - - - YES - - YES - - - YES - - - - YES - - NSApplication - - - FirstResponder - - - NSApplication - - - AMainMenu - - YES - - - Elis Colors - - 1048576 - 2147483647 - - NSImage - NSMenuCheckmark - - - NSImage - NSMenuMixedState - - submenuAction: - - Elis Colors - - YES - - - About Elis Colors - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Preferences… - , - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Services - - 1048576 - 2147483647 - - - submenuAction: - - Services - - YES - - _NSServicesMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Hide Elis Colors - h - 1048576 - 2147483647 - - - - - - Hide Others - h - 1572864 - 2147483647 - - - - - - Show All - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Quit Elis Colors - q - 1048576 - 2147483647 - - - - - _NSAppleMenu - - - - - File - - 1048576 - 2147483647 - - - submenuAction: - - File - - YES - - - New - n - 1048576 - 2147483647 - - - - - - Open Project - - 2147483647 - - - - - - Open Media - o - 1048576 - 2147483647 - - - - - - Open Recent - - 1048576 - 2147483647 - - - submenuAction: - - Open Recent - - YES - - - Clear Menu - - 1048576 - 2147483647 - - - - - _NSRecentDocumentsMenu - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Close - w - 1048576 - 2147483647 - - - - - - Save - s - 1048576 - 2147483647 - - - - - - Save As… - S - 1179648 - 2147483647 - - - - - - Write Movie - - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Page Setup... - P - 1179648 - 2147483647 - - - - - - - Print… - p - 1048576 - 2147483647 - - - - - - - - - Edit - - 1048576 - 2147483647 - - - submenuAction: - - Edit - - YES - - - Undo - z - 1048576 - 2147483647 - - - - - - Redo - Z - 1179648 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Cut - x - 1048576 - 2147483647 - - - - - - Copy - c - 1048576 - 2147483647 - - - - - - Paste - v - 1048576 - 2147483647 - - - - - - Paste and Match Style - V - 1572864 - 2147483647 - - - - - - Delete Layer - - 1048576 - 2147483647 - - - - - - Delete Effect - - 2147483647 - - - - - - Select All - a - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Find - - 1048576 - 2147483647 - - - submenuAction: - - Find - - YES - - - Find… - f - 1048576 - 2147483647 - - - 1 - - - - Find Next - g - 1048576 - 2147483647 - - - 2 - - - - Find Previous - G - 1179648 - 2147483647 - - - 3 - - - - Use Selection for Find - e - 1048576 - 2147483647 - - - 7 - - - - Jump to Selection - j - 1048576 - 2147483647 - - - - - - - - - Spelling and Grammar - - 1048576 - 2147483647 - - - submenuAction: - - Spelling and Grammar - - YES - - - Show Spelling and Grammar - : - 1048576 - 2147483647 - - - - - - Check Document Now - ; - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Check Spelling While Typing - - 1048576 - 2147483647 - - - - - - Check Grammar With Spelling - - 1048576 - 2147483647 - - - - - - Correct Spelling Automatically - - 2147483647 - - - - - - - - - Substitutions - - 1048576 - 2147483647 - - - submenuAction: - - Substitutions - - YES - - - Show Substitutions - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Smart Copy/Paste - f - 1048576 - 2147483647 - - - 1 - - - - Smart Quotes - g - 1048576 - 2147483647 - - - 2 - - - - Smart Dashes - - 2147483647 - - - - - - Smart Links - G - 1179648 - 2147483647 - - - 3 - - - - Text Replacement - - 2147483647 - - - - - - - - - Transformations - - 2147483647 - - - submenuAction: - - Transformations - - YES - - - Make Upper Case - - 2147483647 - - - - - - Make Lower Case - - 2147483647 - - - - - - Capitalize - - 2147483647 - - - - - - - - - Speech - - 1048576 - 2147483647 - - - submenuAction: - - Speech - - YES - - - Start Speaking - - 1048576 - 2147483647 - - - - - - Stop Speaking - - 1048576 - 2147483647 - - - - - - - - - - - - Format - - 2147483647 - - - submenuAction: - - Format - - YES - - - Font - - 2147483647 - - - submenuAction: - - Font - - YES - - - Show Fonts - t - 1048576 - 2147483647 - - - - - - Bold - b - 1048576 - 2147483647 - - - 2 - - - - Italic - i - 1048576 - 2147483647 - - - 1 - - - - Underline - u - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Bigger - + - 1048576 - 2147483647 - - - 3 - - - - Smaller - - - 1048576 - 2147483647 - - - 4 - - - - YES - YES - - - 2147483647 - - - - - - Kern - - 2147483647 - - - submenuAction: - - Kern - - YES - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Tighten - - 2147483647 - - - - - - Loosen - - 2147483647 - - - - - - - - - Ligature - - 2147483647 - - - submenuAction: - - Ligature - - YES - - - Use Default - - 2147483647 - - - - - - Use None - - 2147483647 - - - - - - Use All - - 2147483647 - - - - - - - - - Baseline - - 2147483647 - - - submenuAction: - - Baseline - - YES - - - Use Default - - 2147483647 - - - - - - Superscript - - 2147483647 - - - - - - Subscript - - 2147483647 - - - - - - Raise - - 2147483647 - - - - - - Lower - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Colors - C - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Copy Style - c - 1572864 - 2147483647 - - - - - - Paste Style - v - 1572864 - 2147483647 - - - - - _NSFontMenu - - - - - Text - - 2147483647 - - - submenuAction: - - Text - - YES - - - Align Left - { - 1048576 - 2147483647 - - - - - - Center - | - 1048576 - 2147483647 - - - - - - Justify - - 2147483647 - - - - - - Align Right - } - 1048576 - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - Writing Direction - - 2147483647 - - - submenuAction: - - Writing Direction - - YES - - - YES - Paragraph - - 2147483647 - - - - - - CURlZmF1bHQ - - 2147483647 - - - - - - CUxlZnQgdG8gUmlnaHQ - - 2147483647 - - - - - - CVJpZ2h0IHRvIExlZnQ - - 2147483647 - - - - - - YES - YES - - - 2147483647 - - - - - - YES - Selection - - 2147483647 - - - - - - CURlZmF1bHQ - - 2147483647 - - - - - - CUxlZnQgdG8gUmlnaHQ - - 2147483647 - - - - - - CVJpZ2h0IHRvIExlZnQ - - 2147483647 - - - - - - - - - YES - YES - - - 2147483647 - - - - - - Show Ruler - - 2147483647 - - - - - - Copy Ruler - c - 1310720 - 2147483647 - - - - - - Paste Ruler - v - 1310720 - 2147483647 - - - - - - - - - - - - View - - 1048576 - 2147483647 - - - submenuAction: - - View - - YES - - - Show Toolbar - t - 1572864 - 2147483647 - - - - - - Customize Toolbar… - - 1048576 - 2147483647 - - - - - - - - - Window - - 1048576 - 2147483647 - - - submenuAction: - - Window - - YES - - - Minimize - m - 1048576 - 2147483647 - - - - - - Zoom - - 1048576 - 2147483647 - - - - - - YES - YES - - - 1048576 - 2147483647 - - - - - - Bring All to Front - - 1048576 - 2147483647 - - - - - _NSWindowsMenu - - - - - Help - - 2147483647 - - - submenuAction: - - Help - - YES - - - Elis Colors Help - ? - 1048576 - 2147483647 - - - - - _NSHelpMenu - - - - _NSMainMenu - - - 271 - 2 - {{80, 425}, {1262, 705}} - 1954021376 - Elis Colors - NSWindow - - {1.79769e+308, 1.79769e+308} - {800, 600} - - - 256 - - YES - - - 268 - {{199, 147}, {118, 25}} - - YES - - -2080244224 - 134217728 - Play - - LucidaGrande - 13 - 1044 - - - -2038152961 - 163 - - - 400 - 75 - - - - - 268 - {{18, 178}, {644, 21}} - - YES - - -2079981824 - 0 - - - 1 - 0.0 - 0.0 - 0.0 - 0 - 1 - NO - NO - - - - - 268 - {{531, 151}, {182, 17}} - - YES - - 68288064 - 272630784 - Time Code - - - - 6 - System - controlColor - - 3 - MC42NjY2NjY2NjY3AA - - - - 6 - System - controlTextColor - - 3 - MAA - - - - - - - 268 - {{343, 147}, {118, 25}} - - YES - - -2080244224 - 134217728 - Stop - - - -2038152961 - 163 - - - 400 - 75 - - - - - 10 - {{685, 367}, {564, 324}} - - - YES - - 2 - - - 256 - - YES - - - 265 - {{418, 12}, {129, 25}} - - YES - - -2079981824 - 0 - - - 1 - 0.10000000000000001 - 0.40000000000000002 - 0.0 - 10 - 0 - YES - NO - - - - - 266 - - YES - - - 2304 - - YES - - - 18 - - YES - - YES - Apple PDF pasteboard type - Apple PICT pasteboard type - Apple PNG pasteboard type - Apple URL pasteboard type - NSFilenamesPboardType - NSTypedFilenamesPboardType:'.SGI' - NSTypedFilenamesPboardType:'8BPS' - NSTypedFilenamesPboardType:'BMP ' - NSTypedFilenamesPboardType:'BMPf' - NSTypedFilenamesPboardType:'EPSF' - NSTypedFilenamesPboardType:'FPix' - NSTypedFilenamesPboardType:'GIFf' - NSTypedFilenamesPboardType:'ICO ' - NSTypedFilenamesPboardType:'JPEG' - NSTypedFilenamesPboardType:'PDF ' - NSTypedFilenamesPboardType:'PICT' - NSTypedFilenamesPboardType:'PNGf' - NSTypedFilenamesPboardType:'PNTG' - NSTypedFilenamesPboardType:'TIFF' - NSTypedFilenamesPboardType:'TPIC' - NSTypedFilenamesPboardType:'icns' - NSTypedFilenamesPboardType:'jp2 ' - NSTypedFilenamesPboardType:'qtif' - NSTypedFilenamesPboardType:3FR - NSTypedFilenamesPboardType:3fr - NSTypedFilenamesPboardType:ARW - NSTypedFilenamesPboardType:BMP - NSTypedFilenamesPboardType:CR2 - NSTypedFilenamesPboardType:CRW - NSTypedFilenamesPboardType:CUR - NSTypedFilenamesPboardType:DCR - NSTypedFilenamesPboardType:DNG - NSTypedFilenamesPboardType:EFX - NSTypedFilenamesPboardType:EPI - NSTypedFilenamesPboardType:EPS - NSTypedFilenamesPboardType:EPSF - NSTypedFilenamesPboardType:EPSI - NSTypedFilenamesPboardType:ERF - NSTypedFilenamesPboardType:EXR - NSTypedFilenamesPboardType:FAX - NSTypedFilenamesPboardType:FFF - NSTypedFilenamesPboardType:FPIX - NSTypedFilenamesPboardType:FPX - NSTypedFilenamesPboardType:G3 - NSTypedFilenamesPboardType:GIF - NSTypedFilenamesPboardType:HDR - NSTypedFilenamesPboardType:ICNS - NSTypedFilenamesPboardType:ICO - NSTypedFilenamesPboardType:JFAX - NSTypedFilenamesPboardType:JFX - NSTypedFilenamesPboardType:JP2 - NSTypedFilenamesPboardType:JPE - NSTypedFilenamesPboardType:JPEG - NSTypedFilenamesPboardType:JPF - NSTypedFilenamesPboardType:JPG - NSTypedFilenamesPboardType:MAC - NSTypedFilenamesPboardType:MOS - NSTypedFilenamesPboardType:MRW - NSTypedFilenamesPboardType:NEF - NSTypedFilenamesPboardType:NRW - NSTypedFilenamesPboardType:ORF - NSTypedFilenamesPboardType:PCT - NSTypedFilenamesPboardType:PDF - NSTypedFilenamesPboardType:PEF - NSTypedFilenamesPboardType:PIC - NSTypedFilenamesPboardType:PICT - NSTypedFilenamesPboardType:PNG - NSTypedFilenamesPboardType:PNT - NSTypedFilenamesPboardType:PNTG - NSTypedFilenamesPboardType:PS - NSTypedFilenamesPboardType:PSD - NSTypedFilenamesPboardType:PWL - NSTypedFilenamesPboardType:QTI - NSTypedFilenamesPboardType:QTIF - NSTypedFilenamesPboardType:RAF - NSTypedFilenamesPboardType:RAW - NSTypedFilenamesPboardType:RGB - NSTypedFilenamesPboardType:RW2 - NSTypedFilenamesPboardType:RWL - NSTypedFilenamesPboardType:SGI - NSTypedFilenamesPboardType:SR2 - NSTypedFilenamesPboardType:SRF - NSTypedFilenamesPboardType:TARGA - NSTypedFilenamesPboardType:TGA - NSTypedFilenamesPboardType:TIF - NSTypedFilenamesPboardType:TIFF - NSTypedFilenamesPboardType:XBM - NSTypedFilenamesPboardType:arw - NSTypedFilenamesPboardType:bmp - NSTypedFilenamesPboardType:cr2 - NSTypedFilenamesPboardType:crw - NSTypedFilenamesPboardType:cur - NSTypedFilenamesPboardType:dcr - NSTypedFilenamesPboardType:dng - NSTypedFilenamesPboardType:efx - NSTypedFilenamesPboardType:epi - NSTypedFilenamesPboardType:eps - NSTypedFilenamesPboardType:epsf - NSTypedFilenamesPboardType:epsi - NSTypedFilenamesPboardType:erf - NSTypedFilenamesPboardType:exr - NSTypedFilenamesPboardType:fax - NSTypedFilenamesPboardType:fff - NSTypedFilenamesPboardType:fpix - NSTypedFilenamesPboardType:fpx - NSTypedFilenamesPboardType:g3 - NSTypedFilenamesPboardType:gif - NSTypedFilenamesPboardType:hdr - NSTypedFilenamesPboardType:icns - NSTypedFilenamesPboardType:ico - NSTypedFilenamesPboardType:jfax - NSTypedFilenamesPboardType:jfx - NSTypedFilenamesPboardType:jp2 - NSTypedFilenamesPboardType:jpe - NSTypedFilenamesPboardType:jpeg - NSTypedFilenamesPboardType:jpf - NSTypedFilenamesPboardType:jpg - NSTypedFilenamesPboardType:mac - NSTypedFilenamesPboardType:mos - NSTypedFilenamesPboardType:mrw - NSTypedFilenamesPboardType:nef - NSTypedFilenamesPboardType:nrw - NSTypedFilenamesPboardType:orf - NSTypedFilenamesPboardType:pct - NSTypedFilenamesPboardType:pdf - NSTypedFilenamesPboardType:pef - NSTypedFilenamesPboardType:pic - NSTypedFilenamesPboardType:pict - NSTypedFilenamesPboardType:png - NSTypedFilenamesPboardType:pnt - NSTypedFilenamesPboardType:pntg - NSTypedFilenamesPboardType:ps - NSTypedFilenamesPboardType:psd - NSTypedFilenamesPboardType:pwl - NSTypedFilenamesPboardType:qti - NSTypedFilenamesPboardType:qtif - NSTypedFilenamesPboardType:raf - NSTypedFilenamesPboardType:raw - NSTypedFilenamesPboardType:rgb - NSTypedFilenamesPboardType:rw2 - NSTypedFilenamesPboardType:rwl - NSTypedFilenamesPboardType:sgi - NSTypedFilenamesPboardType:sr2 - NSTypedFilenamesPboardType:srf - NSTypedFilenamesPboardType:targa - NSTypedFilenamesPboardType:tga - NSTypedFilenamesPboardType:tif - NSTypedFilenamesPboardType:tiff - NSTypedFilenamesPboardType:xbm - NeXT Encapsulated PostScript v1.2 pasteboard type - NeXT TIFF v4.0 pasteboard type - - - {531, 229} - - NO - NO - YES - NO - YES - NO - NO - YES - 96 - 96 - - - - - {{1, 1}, {531, 229}} - - - - - 6 - - - - 256 - {{532, 1}, {15, 229}} - - - _doScroller: - 1 - 0.96363627910614014 - - - - -2147483392 - {{-100, -100}, {318, 15}} - - 1 - - _doScroller: - 0.50602412223815918 - - - {{-3, 44}, {548, 231}} - - - 18 - - - - QSAAAEEgAABC8gAAQwgAAA - - - {{10, 33}, {544, 278}} - - - Media Browser - - - - - 1 - - - 256 - - YES - - - 298 - - YES - - - 2304 - - YES - - - 256 - {546, 209} - - YES - - - 256 - {546, 17} - - - - - - -2147483392 - {{492, 0}, {16, 17}} - - - - YES - - name - 252 - 40 - 1000 - - 75628096 - 2048 - - - LucidaGrande - 11 - 3100 - - - 3 - MC4zMzMzMzI5ODU2AA - - - 6 - System - headerTextColor - - - - - 337772096 - 2048 - Text Cell - - - - 6 - System - controlBackgroundColor - - - - - 3 - YES - - - - number - 64 - 40 - 1000 - - 75628096 - 2048 - - - - - - - 337772096 - 2048 - Text Cell - - - - - - 3 - YES - YES - - - - slider - 221 - 10 - 3.4028234663852886e+38 - - 75628096 - 2048 - - - - 6 - System - headerColor - - 3 - MQA - - - - - - -2079981824 - 0 - - - 1 - 0.0 - 1 - 0.0 - 0 - 1 - NO - NO - - 3 - YES - YES - - - - 3 - 2 - - - 6 - System - gridColor - - 3 - MC41AA - - - 17 - -700448768 - - - 4 - 15 - 0 - YES - 0 - - - {{1, 17}, {546, 209}} - - - - - 4 - - - - -2147483392 - {{492, 17}, {15, 281}} - - - _doScroller: - 0.94932432432432434 - - - - -2147483392 - {{1, 298}, {506, 15}} - - 1 - - _doScroller: - 1 - 0.70967741935483875 - - - - 2304 - - YES - - - {{1, 0}, {546, 17}} - - - - - 4 - - - - {{-3, 48}, {548, 227}} - - - 562 - - - - - - QSAAAEEgAABBmAAAQZgAAA - - - - 268 - {{17, 15}, {155, 25}} - - YES - - 67239424 - 134217728 - Recording Animation - - - 914637055 - 163 - - - 400 - 75 - - - - - 265 - {{388, 15}, {148, 25}} - - YES - - -2080244224 - 134217728 - Delete Animation - - - -2038152961 - 163 - - - 400 - 75 - - - - {{10, 33}, {544, 278}} - - Property - - - - - - - 0 - YES - YES - - YES - - - - - - 1292 - - {{19, 208}, {640, 480}} - - - - AAAAYAAAAAA - - - - - - 282 - - YES - - - 2304 - - YES - - - 256 - {454, 261} - - ElisTimeLineView - - - {{1, 1}, {533, 332}} - - - - - 4 - - - - 256 - {{534, 1}, {15, 332}} - - - _doScroller: - 1 - 0.96363627910614014 - - - - 256 - {{1, 333}, {533, 15}} - - 1 - - _doScroller: - 0.50602412223815918 - - - {{692, 20}, {550, 349}} - - - 50 - - - - - - {1262, 705} - - - {{0, 0}, {1920, 1178}} - {800, 622} - {1.79769e+308, 1.79769e+308} - - - Elis_ColorsAppDelegate - - - NSFontManager - - - ElisController - - - ElisTimeLineController - - - ElisPropertyTableController - - - ElisMediaBrowserController - - - ElisWriter - - - 23 - 2 - {{235, 473}, {480, 86}} - 611844096 - Window - NSPanel - - {1.79769e+308, 1.79769e+308} - - - 256 - - YES - - - 1292 - - {{18, 16}, {444, 20}} - - 16392 - 1 - - - - 268 - {{221, 49}, {66, 17}} - - YES - - 68288064 - 272630784 - Writing ... - - - - - - - - {480, 86} - - {{0, 0}, {1920, 1178}} - {1.79769e+308, 1.79769e+308} - - - - - YES - - - performMiniaturize: - - - - 37 - - - - arrangeInFront: - - - - 39 - - - - print: - - - - 86 - - - - runPageLayout: - - - - 87 - - - - clearRecentDocuments: - - - - 127 - - - - orderFrontStandardAboutPanel: - - - - 142 - - - - performClose: - - - - 193 - - - - toggleContinuousSpellChecking: - - - - 222 - - - - undo: - - - - 223 - - - - copy: - - - - 224 - - - - checkSpelling: - - - - 225 - - - - paste: - - - - 226 - - - - stopSpeaking: - - - - 227 - - - - cut: - - - - 228 - - - - showGuessPanel: - - - - 230 - - - - redo: - - - - 231 - - - - selectAll: - - - - 232 - - - - startSpeaking: - - - - 233 - - - - performZoom: - - - - 240 - - - - performFindPanelAction: - - - - 241 - - - - centerSelectionInVisibleArea: - - - - 245 - - - - toggleGrammarChecking: - - - - 347 - - - - toggleSmartInsertDelete: - - - - 355 - - - - toggleAutomaticQuoteSubstitution: - - - - 356 - - - - toggleAutomaticLinkDetection: - - - - 357 - - - - runToolbarCustomizationPalette: - - - - 365 - - - - toggleToolbarShown: - - - - 366 - - - - hide: - - - - 367 - - - - hideOtherApplications: - - - - 368 - - - - unhideAllApplications: - - - - 370 - - - - newDocument: - - - - 373 - - - - addFontTrait: - - - - 421 - - - - addFontTrait: - - - - 422 - - - - modifyFont: - - - - 423 - - - - orderFrontFontPanel: - - - - 424 - - - - modifyFont: - - - - 425 - - - - raiseBaseline: - - - - 426 - - - - lowerBaseline: - - - - 427 - - - - copyFont: - - - - 428 - - - - subscript: - - - - 429 - - - - superscript: - - - - 430 - - - - tightenKerning: - - - - 431 - - - - underline: - - - - 432 - - - - orderFrontColorPanel: - - - - 433 - - - - useAllLigatures: - - - - 434 - - - - loosenKerning: - - - - 435 - - - - pasteFont: - - - - 436 - - - - unscript: - - - - 437 - - - - useStandardKerning: - - - - 438 - - - - useStandardLigatures: - - - - 439 - - - - turnOffLigatures: - - - - 440 - - - - turnOffKerning: - - - - 441 - - - - terminate: - - - - 449 - - - - toggleAutomaticSpellingCorrection: - - - - 456 - - - - orderFrontSubstitutionsPanel: - - - - 458 - - - - toggleAutomaticDashSubstitution: - - - - 461 - - - - toggleAutomaticTextReplacement: - - - - 463 - - - - uppercaseWord: - - - - 464 - - - - capitalizeWord: - - - - 467 - - - - lowercaseWord: - - - - 468 - - - - pasteAsPlainText: - - - - 486 - - - - performFindPanelAction: - - - - 487 - - - - performFindPanelAction: - - - - 488 - - - - performFindPanelAction: - - - - 489 - - - - showHelp: - - - - 493 - - - - delegate - - - - 495 - - - - alignCenter: - - - - 518 - - - - pasteRuler: - - - - 519 - - - - toggleRuler: - - - - 520 - - - - alignRight: - - - - 521 - - - - copyRuler: - - - - 522 - - - - alignJustified: - - - - 523 - - - - alignLeft: - - - - 524 - - - - makeBaseWritingDirectionNatural: - - - - 525 - - - - makeBaseWritingDirectionLeftToRight: - - - - 526 - - - - makeBaseWritingDirectionRightToLeft: - - - - 527 - - - - makeTextWritingDirectionNatural: - - - - 528 - - - - makeTextWritingDirectionLeftToRight: - - - - 529 - - - - makeTextWritingDirectionRightToLeft: - - - - 530 - - - - window - - - - 532 - - - - _mainView - - - - 535 - - - - _mainController - - - - 536 - - - - _timeLineController - - - - 539 - - - - _timeLineView - - - - 540 - - - - _mainController - - - - 541 - - - - startPlay: - - - - 544 - - - - timeCodeField - - - - 552 - - - - timeSlider - - - - 553 - - - - timeSliderChanged: - - - - 554 - - - - stopPlay: - - - - 557 - - - - _timeLineController - - - - 558 - - - - _propertyView - - - - 574 - - - - _mainController - - - - 575 - - - - _tableController - - - - 576 - - - - dataSource - - - - 577 - - - - _tableController - - - - 581 - - - - sliderChanged: - - - - 582 - - - - _timeLineController - - - - 583 - - - - delegate - - - - 584 - - - - deleteSelectLayer: - - - - 585 - - - - recordingStateChanged: - - - - 595 - - - - removeAllKeyFrame: - - - - 596 - - - - removeEffect: - - - - 598 - - - - zoomSliderDidChange: - - - - 604 - - - - dataSource - - - - 605 - - - - delegate - - - - 606 - - - - addImageMenuClicked: - - - - 607 - - - - _mediaBrowser - - - - 608 - - - - _mainController - - - - 614 - - - - writeToFile: - - - - 615 - - - - _mainWindow - - - - 619 - - - - openProjectSaveDialog: - - - - 620 - - - - openProjectLoadDialog: - - - - 622 - - - - rewriteProject: - - - - 624 - - - - _writer - - - - 631 - - - - _mainController - - - - 632 - - - - _mainView - - - - 633 - - - - _bar - - - - 634 - - - - _barSheet - - - - 635 - - - - _mainWindow - - - - 636 - - - - - YES - - 0 - - - - - - -2 - - - File's Owner - - - -1 - - - First Responder - - - -3 - - - Application - - - 29 - - - YES - - - - - - - - - - - - 19 - - - YES - - - - - - 56 - - - YES - - - - - - 217 - - - YES - - - - - - 83 - - - YES - - - - - - 81 - - - YES - - - - - - - - - - - - - - - - - 75 - - - - - 80 - - - - - 78 - - - - - 72 - - - - - 82 - - - - - 124 - - - YES - - - - - - 77 - - - - - 73 - - - - - 79 - - - - - 112 - - - - - 74 - - - - - 125 - - - YES - - - - - - 126 - - - - - 205 - - - YES - - - - - - - - - - - - - - - - - - - - - 202 - - - - - 198 - - - - - 207 - - - - - 214 - - - - - 199 - - - - - 203 - - - - - 197 - - - - - 206 - - - - - 215 - - - - - 218 - - - YES - - - - - - 216 - - - YES - - - - - - 200 - - - YES - - - - - - - - - - - 219 - - - - - 201 - - - - - 204 - - - - - 220 - - - YES - - - - - - - - - - 213 - - - - - 210 - - - - - 221 - - - - - 208 - - - - - 209 - - - - - 57 - - - YES - - - - - - - - - - - - - - - - 58 - - - - - 134 - - - - - 150 - - - - - 136 - - - - - 144 - - - - - 129 - - - - - 143 - - - - - 236 - - - - - 131 - - - YES - - - - - - 149 - - - - - 145 - - - - - 130 - - - - - 24 - - - YES - - - - - - - - - 92 - - - - - 5 - - - - - 239 - - - - - 23 - - - - - 295 - - - YES - - - - - - 296 - - - YES - - - - - - - 297 - - - - - 298 - - - - - 211 - - - YES - - - - - - 212 - - - YES - - - - - - - 195 - - - - - 196 - - - - - 346 - - - - - 348 - - - YES - - - - - - 349 - - - YES - - - - - - - - - - - - 350 - - - - - 351 - - - - - 354 - - - - - 371 - - - YES - - - - - - 372 - - - YES - - - - - - - - - - - - 375 - - - YES - - - - - - 376 - - - YES - - - - - - - 377 - - - YES - - - - - - 388 - - - YES - - - - - - - - - - - - - - - - - - - - - 389 - - - - - 390 - - - - - 391 - - - - - 392 - - - - - 393 - - - - - 394 - - - - - 395 - - - - - 396 - - - - - 397 - - - YES - - - - - - 398 - - - YES - - - - - - 399 - - - YES - - - - - - 400 - - - - - 401 - - - - - 402 - - - - - 403 - - - - - 404 - - - - - 405 - - - YES - - - - - - - - - - 406 - - - - - 407 - - - - - 408 - - - - - 409 - - - - - 410 - - - - - 411 - - - YES - - - - - - - - 412 - - - - - 413 - - - - - 414 - - - - - 415 - - - YES - - - - - - - - - 416 - - - - - 417 - - - - - 418 - - - - - 419 - - - - - 420 - - - - - 450 - - - YES - - - - - - 451 - - - YES - - - - - - - - 452 - - - - - 453 - - - - - 454 - - - - - 457 - - - - - 459 - - - - - 460 - - - - - 462 - - - - - 465 - - - - - 466 - - - - - 485 - - - - - 490 - - - YES - - - - - - 491 - - - YES - - - - - - 492 - - - - - 494 - - - - - 496 - - - YES - - - - - - 497 - - - YES - - - - - - - - - - - - - - - 498 - - - - - 499 - - - - - 500 - - - - - 501 - - - - - 502 - - - - - 503 - - - YES - - - - - - 504 - - - - - 505 - - - - - 506 - - - - - 507 - - - - - 508 - - - YES - - - - - - - - - - - - - - 509 - - - - - 510 - - - - - 511 - - - - - 512 - - - - - 513 - - - - - 514 - - - - - 515 - - - - - 516 - - - - - 517 - - - - - 534 - - - - - 538 - - - - - 542 - - - YES - - - - - - 543 - - - - - 548 - - - YES - - - - - - 549 - - - - - 550 - - - YES - - - - - - 551 - - - - - 555 - - - YES - - - - - - 556 - - - - - 564 - - - - - 586 - - - YES - - - - - - - 587 - - - YES - - - - - - 588 - - - YES - - - - - - - - 589 - - - YES - - - - - - 590 - - - YES - - - - - - - 565 - - - YES - - - - - - - - - 569 - - - - - 568 - - - YES - - - - - - - - 567 - - - - - 566 - - - - - 578 - - - YES - - - - - - 571 - - - YES - - - - - - 570 - - - YES - - - - - - 573 - - - - - 572 - - - - - 580 - - - - - 591 - - - YES - - - - - - 592 - - - - - 593 - - - YES - - - - - - 594 - - - - - 597 - - - - - 600 - - - - - 602 - - - YES - - - - - - 603 - - - - - 609 - - - YES - - - - - - - - 610 - - - - - 611 - - - - - 601 - - - - - 621 - - - - - 625 - - - YES - - - - - - 626 - - - YES - - - - - - - 627 - - - - - 628 - - - YES - - - - - - 629 - - - - - 630 - - - - - 533 - - - - - 649 - - - YES - - - - - - - - 650 - - - - - 651 - - - - - 537 - - - - - - - YES - - YES - -3.IBPluginDependency - 112.IBPluginDependency - 112.ImportedFromIB2 - 124.IBPluginDependency - 124.ImportedFromIB2 - 125.IBEditorWindowLastContentRect - 125.IBPluginDependency - 125.ImportedFromIB2 - 125.editorWindowContentRectSynchronizationRect - 126.IBPluginDependency - 126.ImportedFromIB2 - 129.IBPluginDependency - 129.ImportedFromIB2 - 130.IBPluginDependency - 130.ImportedFromIB2 - 130.editorWindowContentRectSynchronizationRect - 131.IBPluginDependency - 131.ImportedFromIB2 - 134.IBPluginDependency - 134.ImportedFromIB2 - 136.IBPluginDependency - 136.ImportedFromIB2 - 143.IBPluginDependency - 143.ImportedFromIB2 - 144.IBPluginDependency - 144.ImportedFromIB2 - 145.IBPluginDependency - 145.ImportedFromIB2 - 149.IBPluginDependency - 149.ImportedFromIB2 - 150.IBPluginDependency - 150.ImportedFromIB2 - 19.IBPluginDependency - 19.ImportedFromIB2 - 195.IBPluginDependency - 195.ImportedFromIB2 - 196.IBPluginDependency - 196.ImportedFromIB2 - 197.IBPluginDependency - 197.ImportedFromIB2 - 198.IBPluginDependency - 198.ImportedFromIB2 - 199.IBPluginDependency - 199.ImportedFromIB2 - 200.IBEditorWindowLastContentRect - 200.IBPluginDependency - 200.ImportedFromIB2 - 200.editorWindowContentRectSynchronizationRect - 201.IBPluginDependency - 201.ImportedFromIB2 - 202.IBPluginDependency - 202.ImportedFromIB2 - 203.IBPluginDependency - 203.ImportedFromIB2 - 204.IBPluginDependency - 204.ImportedFromIB2 - 205.IBEditorWindowLastContentRect - 205.IBPluginDependency - 205.ImportedFromIB2 - 205.editorWindowContentRectSynchronizationRect - 206.IBPluginDependency - 206.ImportedFromIB2 - 207.IBPluginDependency - 207.ImportedFromIB2 - 208.IBPluginDependency - 208.ImportedFromIB2 - 209.IBPluginDependency - 209.ImportedFromIB2 - 210.IBPluginDependency - 210.ImportedFromIB2 - 211.IBPluginDependency - 211.ImportedFromIB2 - 212.IBPluginDependency - 212.ImportedFromIB2 - 212.editorWindowContentRectSynchronizationRect - 213.IBPluginDependency - 213.ImportedFromIB2 - 214.IBPluginDependency - 214.ImportedFromIB2 - 215.IBPluginDependency - 215.ImportedFromIB2 - 216.IBPluginDependency - 216.ImportedFromIB2 - 217.IBPluginDependency - 217.ImportedFromIB2 - 218.IBPluginDependency - 218.ImportedFromIB2 - 219.IBPluginDependency - 219.ImportedFromIB2 - 220.IBEditorWindowLastContentRect - 220.IBPluginDependency - 220.ImportedFromIB2 - 220.editorWindowContentRectSynchronizationRect - 221.IBPluginDependency - 221.ImportedFromIB2 - 23.IBPluginDependency - 23.ImportedFromIB2 - 236.IBPluginDependency - 236.ImportedFromIB2 - 239.IBPluginDependency - 239.ImportedFromIB2 - 24.IBEditorWindowLastContentRect - 24.IBPluginDependency - 24.ImportedFromIB2 - 24.editorWindowContentRectSynchronizationRect - 29.IBEditorWindowLastContentRect - 29.IBPluginDependency - 29.ImportedFromIB2 - 29.WindowOrigin - 29.editorWindowContentRectSynchronizationRect - 295.IBPluginDependency - 296.IBEditorWindowLastContentRect - 296.IBPluginDependency - 296.editorWindowContentRectSynchronizationRect - 297.IBPluginDependency - 298.IBPluginDependency - 346.IBPluginDependency - 346.ImportedFromIB2 - 348.IBPluginDependency - 348.ImportedFromIB2 - 349.IBEditorWindowLastContentRect - 349.IBPluginDependency - 349.ImportedFromIB2 - 349.editorWindowContentRectSynchronizationRect - 350.IBPluginDependency - 350.ImportedFromIB2 - 351.IBPluginDependency - 351.ImportedFromIB2 - 354.IBPluginDependency - 354.ImportedFromIB2 - 371.IBEditorWindowLastContentRect - 371.IBPluginDependency - 371.IBWindowTemplateEditedContentRect - 371.NSWindowTemplate.visibleAtLaunch - 371.editorWindowContentRectSynchronizationRect - 371.windowTemplate.hasMinSize - 371.windowTemplate.maxSize - 371.windowTemplate.minSize - 372.IBPluginDependency - 375.IBPluginDependency - 376.IBEditorWindowLastContentRect - 376.IBPluginDependency - 377.IBPluginDependency - 388.IBEditorWindowLastContentRect - 388.IBPluginDependency - 389.IBPluginDependency - 390.IBPluginDependency - 391.IBPluginDependency - 392.IBPluginDependency - 393.IBPluginDependency - 394.IBPluginDependency - 395.IBPluginDependency - 396.IBPluginDependency - 397.IBPluginDependency - 398.IBPluginDependency - 399.IBPluginDependency - 400.IBPluginDependency - 401.IBPluginDependency - 402.IBPluginDependency - 403.IBPluginDependency - 404.IBPluginDependency - 405.IBPluginDependency - 406.IBPluginDependency - 407.IBPluginDependency - 408.IBPluginDependency - 409.IBPluginDependency - 410.IBPluginDependency - 411.IBPluginDependency - 412.IBPluginDependency - 413.IBPluginDependency - 414.IBPluginDependency - 415.IBPluginDependency - 416.IBPluginDependency - 417.IBPluginDependency - 418.IBPluginDependency - 419.IBPluginDependency - 450.IBPluginDependency - 451.IBEditorWindowLastContentRect - 451.IBPluginDependency - 452.IBPluginDependency - 453.IBPluginDependency - 454.IBPluginDependency - 457.IBPluginDependency - 459.IBPluginDependency - 460.IBPluginDependency - 462.IBPluginDependency - 465.IBPluginDependency - 466.IBPluginDependency - 485.IBPluginDependency - 490.IBPluginDependency - 491.IBEditorWindowLastContentRect - 491.IBPluginDependency - 492.IBPluginDependency - 496.IBPluginDependency - 497.IBEditorWindowLastContentRect - 497.IBPluginDependency - 498.IBPluginDependency - 499.IBPluginDependency - 5.IBPluginDependency - 5.ImportedFromIB2 - 500.IBPluginDependency - 501.IBPluginDependency - 502.IBPluginDependency - 503.IBPluginDependency - 504.IBPluginDependency - 505.IBPluginDependency - 506.IBPluginDependency - 507.IBPluginDependency - 508.IBEditorWindowLastContentRect - 508.IBPluginDependency - 509.IBPluginDependency - 510.IBPluginDependency - 511.IBPluginDependency - 512.IBPluginDependency - 513.IBPluginDependency - 514.IBPluginDependency - 515.IBPluginDependency - 516.IBPluginDependency - 517.IBPluginDependency - 533.CustomClassName - 533.IBPluginDependency - 537.IBPluginDependency - 542.IBPluginDependency - 543.IBPluginDependency - 548.IBPluginDependency - 549.IBPluginDependency - 550.IBPluginDependency - 551.IBPluginDependency - 555.IBPluginDependency - 556.IBPluginDependency - 56.IBPluginDependency - 56.ImportedFromIB2 - 565.IBPluginDependency - 566.IBPluginDependency - 567.IBPluginDependency - 568.IBPluginDependency - 569.IBPluginDependency - 57.IBEditorWindowLastContentRect - 57.IBPluginDependency - 57.ImportedFromIB2 - 57.editorWindowContentRectSynchronizationRect - 570.IBPluginDependency - 571.IBPluginDependency - 572.IBPluginDependency - 573.IBPluginDependency - 578.IBPluginDependency - 58.IBPluginDependency - 58.ImportedFromIB2 - 580.IBPluginDependency - 586.IBPluginDependency - 587.IBPluginDependency - 588.IBPluginDependency - 589.IBPluginDependency - 590.IBPluginDependency - 591.IBPluginDependency - 592.IBPluginDependency - 593.IBPluginDependency - 594.IBPluginDependency - 597.IBPluginDependency - 601.IBPluginDependency - 602.IBPluginDependency - 603.IBPluginDependency - 609.IBPluginDependency - 610.IBPluginDependency - 611.IBPluginDependency - 621.IBPluginDependency - 625.IBEditorWindowLastContentRect - 625.IBPluginDependency - 625.IBWindowTemplateEditedContentRect - 625.NSWindowTemplate.visibleAtLaunch - 626.IBPluginDependency - 627.IBPluginDependency - 628.IBPluginDependency - 629.IBPluginDependency - 72.IBPluginDependency - 72.ImportedFromIB2 - 73.IBPluginDependency - 73.ImportedFromIB2 - 74.IBPluginDependency - 74.ImportedFromIB2 - 75.IBPluginDependency - 75.ImportedFromIB2 - 77.IBPluginDependency - 77.ImportedFromIB2 - 78.IBPluginDependency - 78.ImportedFromIB2 - 79.IBPluginDependency - 79.ImportedFromIB2 - 80.IBPluginDependency - 80.ImportedFromIB2 - 81.IBEditorWindowLastContentRect - 81.IBPluginDependency - 81.ImportedFromIB2 - 81.editorWindowContentRectSynchronizationRect - 82.IBPluginDependency - 82.ImportedFromIB2 - 83.IBPluginDependency - 83.ImportedFromIB2 - 92.IBPluginDependency - 92.ImportedFromIB2 - - - YES - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{339, 860}, {143, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{522, 812}, {146, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{436, 809}, {64, 6}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{753, 187}, {275, 113}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {275, 83}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{202, 620}, {254, 303}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{187, 434}, {243, 243}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {167, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{753, 217}, {238, 103}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {241, 103}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{689, 763}, {194, 73}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{525, 802}, {197, 73}} - {{1251, 1012}, {441, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - - {74, 862} - {{6, 978}, {478, 20}} - com.apple.InterfaceBuilder.CocoaPlugin - {{312, 880}, {231, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - {{475, 832}, {234, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{746, 287}, {220, 133}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{608, 612}, {215, 63}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{7, 425}, {1262, 705}} - com.apple.InterfaceBuilder.CocoaPlugin - {{7, 425}, {1262, 705}} - - {{33, 99}, {480, 360}} - - {3.40282e+38, 3.40282e+38} - {800, 600} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{573, 793}, {83, 43}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{656, 553}, {175, 283}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{753, 197}, {170, 63}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{725, 289}, {246, 23}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{656, 633}, {204, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{878, 180}, {164, 173}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - ElisMainView - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{392, 653}, {207, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{23, 794}, {245, 183}} - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.imagekit.ibplugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - {{427, 660}, {480, 86}} - com.apple.InterfaceBuilder.CocoaPlugin - {{427, 660}, {480, 86}} - - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - {{1358, 789}, {179, 223}} - com.apple.InterfaceBuilder.CocoaPlugin - - {{145, 474}, {199, 203}} - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - com.apple.InterfaceBuilder.CocoaPlugin - - - - - YES - - - YES - - - - - YES - - - YES - - - - 652 - - - - YES - - ElisController - NSObject - - YES - - YES - changeToSmallWindiw: - deleteSelectLayer: - openProjectLoadDialog: - openProjectSaveDialog: - recordingStateChanged: - removeAllKeyFrame: - removeEffect: - rewriteProject: - startPlay: - stopPlay: - timeSliderChanged: - writeToFile: - - - YES - id - id - id - id - id - id - id - id - id - id - id - id - - - - YES - - YES - _mainView - _mainWindow - _tableController - _timeLineController - _writer - timeCodeField - timeSlider - - - YES - ElisMainView - NSWindow - ElisPropertyTableController - ElisTimeLineController - ElisWriter - NSTextField - NSSlider - - - - IBProjectSource - ElisController.h - - - - ElisMainView - NSOpenGLView - - _mainController - ElisController - - - IBProjectSource - ElisMainView.h - - - - ElisMediaBrowserController - NSObject - - YES - - YES - addImageMenuClicked: - searchFieldUpdate: - zoomSliderDidChange: - - - YES - id - id - id - - - - YES - - YES - _mediaBrowser - _status - - - YES - id - id - - - - IBProjectSource - ElisMediaBrowserController.h - - - - ElisPropertyTableController - NSObject - - sliderChanged: - id - - - YES - - YES - _mainController - _propertyView - _timeLineController - - - YES - id - id - id - - - - IBProjectSource - ElisPropertyTableController.h - - - - ElisTimeLineController - NSObject - - add: - id - - - YES - - YES - _mainController - _tableController - _timeLineView - - - YES - id - id - id - - - - IBProjectSource - ElisTimeLineController.h - - - - ElisTimeLineView - NSView - - YES - - YES - _mainController - _timeLineController - - - YES - id - id - - - - IBProjectSource - ElisTimeLineView.h - - - - ElisWriter - NSObject - - YES - - YES - _bar - _barSheet - _mainController - _mainView - _mainWindow - - - YES - id - id - id - id - id - - - - IBProjectSource - ElisWriter.h - - - - Elis_ColorsAppDelegate - NSObject - - window - NSWindow - - - IBProjectSource - Elis_ColorsAppDelegate.h - - - - - YES - - IKImageBrowserView - NSView - - YES - - YES - _dataSource - _delegate - _dragDestinationDelegate - _horizontalScroller - _verticalScroller - - - YES - id - id - id - NSScroller - NSScroller - - - - IBFrameworkSource - ImageKit.framework/Headers/IKImageBrowserView.h - - - - NSActionCell - NSCell - - IBFrameworkSource - AppKit.framework/Headers/NSActionCell.h - - - - NSApplication - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSApplication.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSApplicationScripting.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSColorPanel.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSHelpManager.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSPageLayout.h - - - - NSApplication - - IBFrameworkSource - AppKit.framework/Headers/NSUserInterfaceItemSearching.h - - - - NSBrowser - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSBrowser.h - - - - NSButton - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSButton.h - - - - NSButtonCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSButtonCell.h - - - - NSCell - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSCell.h - - - - NSControl - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSControl.h - - - - NSDocument - NSObject - - YES - - YES - printDocument: - revertDocumentToSaved: - runPageLayout: - saveDocument: - saveDocumentAs: - saveDocumentTo: - - - YES - id - id - id - id - id - id - - - - IBFrameworkSource - AppKit.framework/Headers/NSDocument.h - - - - NSDocument - - IBFrameworkSource - AppKit.framework/Headers/NSDocumentScripting.h - - - - NSDocumentController - NSObject - - YES - - YES - clearRecentDocuments: - newDocument: - openDocument: - saveAllDocuments: - - - YES - id - id - id - id - - - - IBFrameworkSource - AppKit.framework/Headers/NSDocumentController.h - - - - NSFontManager - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontManager.h - - - - NSFormatter - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFormatter.h - - - - NSMatrix - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSMatrix.h - - - - NSMenu - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenu.h - - - - NSMenuItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSMenuItem.h - - - - NSMovieView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSMovieView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSAccessibility.h - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDictionaryController.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSDragging.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSFontPanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSKeyValueBinding.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSNibLoading.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSOutlineView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSPasteboard.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSSavePanel.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableView.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSToolbarItem.h - - - - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSView.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSError.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSFileManager.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyValueObserving.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSKeyedArchiver.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObject.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSObjectScripting.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSPortCoder.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSRunLoop.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptClassDescription.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptKeyValueCoding.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptObjectSpecifiers.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSScriptWhoseTests.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSThread.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURL.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLConnection.h - - - - NSObject - - IBFrameworkSource - Foundation.framework/Headers/NSURLDownload.h - - - - NSObject - - - - NSObject - - IBFrameworkSource - ImageKit.framework/Headers/IKSaveOptions.h - - - - NSObject - - IBFrameworkSource - ImageKit.framework/Headers/ImageKitDeprecated.h - - - - NSObject - - IBFrameworkSource - PDFKit.framework/Headers/PDFDocument.h - - - - NSObject - - IBFrameworkSource - PDFKit.framework/Headers/PDFView.h - - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureDecompressedAudioOutput.h - - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureDecompressedVideoOutput.h - - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureFileOutput.h - - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureVideoPreviewOutput.h - - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTCaptureView.h - - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTMovie.h - - - - NSObject - - IBFrameworkSource - QTKit.framework/Headers/QTMovieView.h - - - - NSObject - - IBFrameworkSource - QuartzComposer.framework/Headers/QCCompositionParameterView.h - - - - NSObject - - IBFrameworkSource - QuartzComposer.framework/Headers/QCCompositionPickerView.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CAAnimation.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CALayer.h - - - - NSObject - - IBFrameworkSource - QuartzCore.framework/Headers/CIImageProvider.h - - - - NSObject - - IBFrameworkSource - QuartzFilters.framework/Headers/QuartzFilterManager.h - - - - NSObject - - IBFrameworkSource - QuickLookUI.framework/Headers/QLPreviewPanel.h - - - - NSOpenGLView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSOpenGLView.h - - - - NSPanel - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSPanel.h - - - - NSProgressIndicator - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSProgressIndicator.h - - - - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSInterfaceStyle.h - - - - NSResponder - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSResponder.h - - - - NSScrollView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSScrollView.h - - - - NSScroller - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSScroller.h - - - - NSSlider - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSSlider.h - - - - NSSliderCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSSliderCell.h - - - - NSTabView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTabView.h - - - - NSTabViewItem - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTabViewItem.h - - - - NSTableColumn - NSObject - - IBFrameworkSource - AppKit.framework/Headers/NSTableColumn.h - - - - NSTableHeaderView - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSTableHeaderView.h - - - - NSTableView - NSControl - - - - NSText - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSText.h - - - - NSTextField - NSControl - - IBFrameworkSource - AppKit.framework/Headers/NSTextField.h - - - - NSTextFieldCell - NSActionCell - - IBFrameworkSource - AppKit.framework/Headers/NSTextFieldCell.h - - - - NSTextView - NSText - - IBFrameworkSource - AppKit.framework/Headers/NSTextView.h - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSClipView.h - - - - NSView - - - - NSView - - IBFrameworkSource - AppKit.framework/Headers/NSRulerView.h - - - - NSView - NSResponder - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSDrawer.h - - - - NSWindow - NSResponder - - IBFrameworkSource - AppKit.framework/Headers/NSWindow.h - - - - NSWindow - - IBFrameworkSource - AppKit.framework/Headers/NSWindowScripting.h - - - - PDFView - NSView - - YES - - YES - goBack: - goForward: - goToFirstPage: - goToLastPage: - goToNextPage: - goToPreviousPage: - selectAll: - takeBackgroundColorFrom: - zoomIn: - zoomOut: - - - YES - id - id - id - id - id - id - id - id - id - id - - - - - - QCView - NSView - - YES - - YES - play: - start: - stop: - - - YES - id - id - id - - - - IBFrameworkSource - QuartzComposer.framework/Headers/QCView.h - - - - QTMovieView - NSView - - YES - - YES - add: - addScaled: - copy: - cut: - delete: - gotoBeginning: - gotoEnd: - gotoNextSelectionPoint: - gotoPosterFrame: - gotoPreviousSelectionPoint: - paste: - pause: - play: - replace: - selectAll: - selectNone: - stepBackward: - stepForward: - trim: - - - YES - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - - - - - - - 0 - - com.apple.InterfaceBuilder.CocoaPlugin.macosx - - - - com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 - - - YES - ../Elis Colors.xcodeproj - 3 - - -- 2.11.0