From 6e249a6139902ee268809d73b06b70da5d53be77 Mon Sep 17 00:00:00 2001 From: Matt Long Date: Thu, 9 Aug 2012 17:32:46 -0600 Subject: [PATCH] Add open/save dialogs for choosing files for converting --- .gitignore | 11 + .../project.pbxproj | 67 +- Encoder/AppDelegate.h | 13 + Encoder/AppDelegate.m | 106 + ...plist => Base 64 Video Encoder-Info.plist} | 0 ...x.pch => Base 64 Video Encoder-Prefix.pch} | 0 Encoder/NSData+Additions.h | 19 + Encoder/NSData+Additions.m | 212 ++ Encoder/NSString+Additions.h | 22 + Encoder/NSString+Additions.m | 237 ++ Encoder/en.lproj/MainMenu.xib | 2043 ++++++----------- Encoder/part2.html | 3 + Encoder/video.html | 4 + 13 files changed, 1323 insertions(+), 1414 deletions(-) create mode 100644 .gitignore rename {Encoder.xcodeproj => Base 64 Video Encoder.xcodeproj}/project.pbxproj (70%) rename Encoder/{Encoder-Info.plist => Base 64 Video Encoder-Info.plist} (100%) rename Encoder/{Encoder-Prefix.pch => Base 64 Video Encoder-Prefix.pch} (100%) create mode 100644 Encoder/NSData+Additions.h create mode 100644 Encoder/NSData+Additions.m create mode 100644 Encoder/NSString+Additions.h create mode 100644 Encoder/NSString+Additions.m create mode 100644 Encoder/part2.html create mode 100644 Encoder/video.html diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..49d011e --- /dev/null +++ b/.gitignore @@ -0,0 +1,11 @@ +build +xcuserdata +*.mode* +*pbxuser +*.perspectivev3 +project.xcworkspace +*.xcuserstate +*tmproj +~* +.DS_Store +*.orig diff --git a/Encoder.xcodeproj/project.pbxproj b/Base 64 Video Encoder.xcodeproj/project.pbxproj similarity index 70% rename from Encoder.xcodeproj/project.pbxproj rename to Base 64 Video Encoder.xcodeproj/project.pbxproj index d04d8a6..30e9efc 100644 --- a/Encoder.xcodeproj/project.pbxproj +++ b/Base 64 Video Encoder.xcodeproj/project.pbxproj @@ -13,22 +13,32 @@ B36E03B51500889E00AE9C13 /* Credits.rtf in Resources */ = {isa = PBXBuildFile; fileRef = B36E03B31500889E00AE9C13 /* Credits.rtf */; }; B36E03B81500889E00AE9C13 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = B36E03B71500889E00AE9C13 /* AppDelegate.m */; }; B36E03BB1500889F00AE9C13 /* MainMenu.xib in Resources */ = {isa = PBXBuildFile; fileRef = B36E03B91500889E00AE9C13 /* MainMenu.xib */; }; + B39FF32615008E2900768855 /* NSData+Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = B39FF32515008E2900768855 /* NSData+Additions.m */; }; + B39FF32A15008E5B00768855 /* NSString+Additions.m in Sources */ = {isa = PBXBuildFile; fileRef = B39FF32915008E5B00768855 /* NSString+Additions.m */; }; + B39FF32C1500985F00768855 /* video.html in Resources */ = {isa = PBXBuildFile; fileRef = B39FF32B1500985F00768855 /* video.html */; }; + B3C7D26715009AF800ECE445 /* part2.html in Resources */ = {isa = PBXBuildFile; fileRef = B3C7D26615009AF800ECE445 /* part2.html */; }; /* End PBXBuildFile section */ /* Begin PBXFileReference section */ - B36E03A01500889D00AE9C13 /* Encoder.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Encoder.app; sourceTree = BUILT_PRODUCTS_DIR; }; + B36E03A01500889D00AE9C13 /* Base 64 Video Encoder.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Base 64 Video Encoder.app"; sourceTree = BUILT_PRODUCTS_DIR; }; B36E03A41500889D00AE9C13 /* Cocoa.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Cocoa.framework; path = System/Library/Frameworks/Cocoa.framework; sourceTree = SDKROOT; }; B36E03A71500889D00AE9C13 /* AppKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AppKit.framework; path = System/Library/Frameworks/AppKit.framework; sourceTree = SDKROOT; }; B36E03A81500889D00AE9C13 /* CoreData.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreData.framework; path = System/Library/Frameworks/CoreData.framework; sourceTree = SDKROOT; }; B36E03A91500889D00AE9C13 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; }; - B36E03AC1500889E00AE9C13 /* Encoder-Info.plist */ = {isa = PBXFileReference; path = "Encoder-Info.plist"; sourceTree = ""; }; + B36E03AC1500889E00AE9C13 /* Base 64 Video Encoder-Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = "Base 64 Video Encoder-Info.plist"; sourceTree = ""; }; B36E03AE1500889E00AE9C13 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = en; path = en.lproj/InfoPlist.strings; sourceTree = ""; }; B36E03B01500889E00AE9C13 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; }; - B36E03B21500889E00AE9C13 /* Encoder-Prefix.pch */ = {isa = PBXFileReference; path = "Encoder-Prefix.pch"; sourceTree = ""; }; + B36E03B21500889E00AE9C13 /* Base 64 Video Encoder-Prefix.pch */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Base 64 Video Encoder-Prefix.pch"; sourceTree = ""; }; B36E03B41500889E00AE9C13 /* en */ = {isa = PBXFileReference; lastKnownFileType = text.rtf; name = en; path = en.lproj/Credits.rtf; sourceTree = ""; }; - B36E03B61500889E00AE9C13 /* AppDelegate.h */ = {isa = PBXFileReference; path = AppDelegate.h; sourceTree = ""; }; + B36E03B61500889E00AE9C13 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = ""; }; B36E03B71500889E00AE9C13 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = ""; }; B36E03BA1500889F00AE9C13 /* en */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = en; path = en.lproj/MainMenu.xib; sourceTree = ""; }; + B39FF32415008E2900768855 /* NSData+Additions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+Additions.h"; sourceTree = ""; }; + B39FF32515008E2900768855 /* NSData+Additions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+Additions.m"; sourceTree = ""; }; + B39FF32815008E5B00768855 /* NSString+Additions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+Additions.h"; sourceTree = ""; }; + B39FF32915008E5B00768855 /* NSString+Additions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+Additions.m"; sourceTree = ""; }; + B39FF32B1500985F00768855 /* video.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = video.html; path = Encoder/video.html; sourceTree = ""; }; + B3C7D26615009AF800ECE445 /* part2.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = part2.html; path = Encoder/part2.html; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -46,6 +56,8 @@ B36E03951500889D00AE9C13 = { isa = PBXGroup; children = ( + B39FF32B1500985F00768855 /* video.html */, + B3C7D26615009AF800ECE445 /* part2.html */, B36E03AA1500889D00AE9C13 /* Encoder */, B36E03A31500889D00AE9C13 /* Frameworks */, B36E03A11500889D00AE9C13 /* Products */, @@ -55,7 +67,7 @@ B36E03A11500889D00AE9C13 /* Products */ = { isa = PBXGroup; children = ( - B36E03A01500889D00AE9C13 /* Encoder.app */, + B36E03A01500889D00AE9C13 /* Base 64 Video Encoder.app */, ); name = Products; sourceTree = ""; @@ -86,6 +98,10 @@ B36E03B71500889E00AE9C13 /* AppDelegate.m */, B36E03B91500889E00AE9C13 /* MainMenu.xib */, B36E03AB1500889E00AE9C13 /* Supporting Files */, + B39FF32415008E2900768855 /* NSData+Additions.h */, + B39FF32515008E2900768855 /* NSData+Additions.m */, + B39FF32815008E5B00768855 /* NSString+Additions.h */, + B39FF32915008E5B00768855 /* NSString+Additions.m */, ); path = Encoder; sourceTree = ""; @@ -93,10 +109,10 @@ B36E03AB1500889E00AE9C13 /* Supporting Files */ = { isa = PBXGroup; children = ( - B36E03AC1500889E00AE9C13 /* Encoder-Info.plist */, + B36E03AC1500889E00AE9C13 /* Base 64 Video Encoder-Info.plist */, B36E03AD1500889E00AE9C13 /* InfoPlist.strings */, B36E03B01500889E00AE9C13 /* main.m */, - B36E03B21500889E00AE9C13 /* Encoder-Prefix.pch */, + B36E03B21500889E00AE9C13 /* Base 64 Video Encoder-Prefix.pch */, B36E03B31500889E00AE9C13 /* Credits.rtf */, ); name = "Supporting Files"; @@ -105,9 +121,9 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ - B36E039F1500889D00AE9C13 /* Encoder */ = { + B36E039F1500889D00AE9C13 /* Base 64 Video Encoder */ = { isa = PBXNativeTarget; - buildConfigurationList = B36E03BE1500889F00AE9C13 /* Build configuration list for PBXNativeTarget "Encoder" */; + buildConfigurationList = B36E03BE1500889F00AE9C13 /* Build configuration list for PBXNativeTarget "Base 64 Video Encoder" */; buildPhases = ( B36E039C1500889D00AE9C13 /* Sources */, B36E039D1500889D00AE9C13 /* Frameworks */, @@ -117,9 +133,9 @@ ); dependencies = ( ); - name = Encoder; + name = "Base 64 Video Encoder"; productName = Encoder; - productReference = B36E03A01500889D00AE9C13 /* Encoder.app */; + productReference = B36E03A01500889D00AE9C13 /* Base 64 Video Encoder.app */; productType = "com.apple.product-type.application"; }; /* End PBXNativeTarget section */ @@ -128,10 +144,10 @@ B36E03971500889D00AE9C13 /* Project object */ = { isa = PBXProject; attributes = { - LastUpgradeCheck = 0420; + LastUpgradeCheck = 0440; ORGANIZATIONNAME = "Skye Road Systems, Inc."; }; - buildConfigurationList = B36E039A1500889D00AE9C13 /* Build configuration list for PBXProject "Encoder" */; + buildConfigurationList = B36E039A1500889D00AE9C13 /* Build configuration list for PBXProject "Base 64 Video Encoder" */; compatibilityVersion = "Xcode 3.2"; developmentRegion = English; hasScannedForEncodings = 0; @@ -143,7 +159,7 @@ projectDirPath = ""; projectRoot = ""; targets = ( - B36E039F1500889D00AE9C13 /* Encoder */, + B36E039F1500889D00AE9C13 /* Base 64 Video Encoder */, ); }; /* End PBXProject section */ @@ -156,6 +172,8 @@ B36E03AF1500889E00AE9C13 /* InfoPlist.strings in Resources */, B36E03B51500889E00AE9C13 /* Credits.rtf in Resources */, B36E03BB1500889F00AE9C13 /* MainMenu.xib in Resources */, + B39FF32C1500985F00768855 /* video.html in Resources */, + B3C7D26715009AF800ECE445 /* part2.html in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -168,6 +186,8 @@ files = ( B36E03B11500889E00AE9C13 /* main.m in Sources */, B36E03B81500889E00AE9C13 /* AppDelegate.m in Sources */, + B39FF32615008E2900768855 /* NSData+Additions.m in Sources */, + B39FF32A15008E5B00768855 /* NSString+Additions.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -251,10 +271,11 @@ B36E03BF1500889F00AE9C13 /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { + COMBINE_HIDPI_IMAGES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Encoder/Encoder-Prefix.pch"; - INFOPLIST_FILE = "Encoder/Encoder-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; + GCC_PREFIX_HEADER = "Encoder/Base 64 Video Encoder-Prefix.pch"; + INFOPLIST_FILE = "Encoder/Base 64 Video Encoder-Info.plist"; + PRODUCT_NAME = "Base 64 Video Encoder"; WRAPPER_EXTENSION = app; }; name = Debug; @@ -262,10 +283,11 @@ B36E03C01500889F00AE9C13 /* Release */ = { isa = XCBuildConfiguration; buildSettings = { + COMBINE_HIDPI_IMAGES = YES; GCC_PRECOMPILE_PREFIX_HEADER = YES; - GCC_PREFIX_HEADER = "Encoder/Encoder-Prefix.pch"; - INFOPLIST_FILE = "Encoder/Encoder-Info.plist"; - PRODUCT_NAME = "$(TARGET_NAME)"; + GCC_PREFIX_HEADER = "Encoder/Base 64 Video Encoder-Prefix.pch"; + INFOPLIST_FILE = "Encoder/Base 64 Video Encoder-Info.plist"; + PRODUCT_NAME = "Base 64 Video Encoder"; WRAPPER_EXTENSION = app; }; name = Release; @@ -273,7 +295,7 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - B36E039A1500889D00AE9C13 /* Build configuration list for PBXProject "Encoder" */ = { + B36E039A1500889D00AE9C13 /* Build configuration list for PBXProject "Base 64 Video Encoder" */ = { isa = XCConfigurationList; buildConfigurations = ( B36E03BC1500889F00AE9C13 /* Debug */, @@ -282,13 +304,14 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B36E03BE1500889F00AE9C13 /* Build configuration list for PBXNativeTarget "Encoder" */ = { + B36E03BE1500889F00AE9C13 /* Build configuration list for PBXNativeTarget "Base 64 Video Encoder" */ = { isa = XCConfigurationList; buildConfigurations = ( B36E03BF1500889F00AE9C13 /* Debug */, B36E03C01500889F00AE9C13 /* Release */, ); defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; }; /* End XCConfigurationList section */ }; diff --git a/Encoder/AppDelegate.h b/Encoder/AppDelegate.h index 93b0f34..769426b 100644 --- a/Encoder/AppDelegate.h +++ b/Encoder/AppDelegate.h @@ -12,4 +12,17 @@ @property (assign) IBOutlet NSWindow *window; +@property (weak) IBOutlet NSTextField *videoInputFilePathLabel; +@property (weak) IBOutlet NSTextField *htmlOutputFilePathLabel; +@property (weak) IBOutlet NSTextField *videoOutputFilePathLabel; +@property (weak) IBOutlet NSTextField *htmlInputFilePathLabel; + +@property (copy) NSString *videoInputFilePath; +@property (copy) NSString *htmlOutputFilePath; +@property (copy) NSString *videoOutputFilePath; +@property (copy) NSString *htmlInputFilePath; + +- (void)updateLabels; + + @end diff --git a/Encoder/AppDelegate.m b/Encoder/AppDelegate.m index 659a9fd..5236b32 100644 --- a/Encoder/AppDelegate.m +++ b/Encoder/AppDelegate.m @@ -7,14 +7,120 @@ // #import "AppDelegate.h" +#import "NSData+Additions.h" +#import "NSString+Additions.h" @implementation AppDelegate @synthesize window = _window; + +@synthesize videoInputFilePathLabel; +@synthesize htmlOutputFilePathLabel; +@synthesize videoOutputFilePathLabel; +@synthesize htmlInputFilePathLabel; +@synthesize videoInputFilePath; +@synthesize htmlOutputFilePath; +@synthesize videoOutputFilePath; +@synthesize htmlInputFilePath; + +static NSString *start = @"" +"Video" +"" +"" +"" +""; + - (void)applicationDidFinishLaunching:(NSNotification *)aNotification { + // Insert code here to initialize your application } +- (IBAction)didClickChooseInputFileButton:(id)sender +{ + NSOpenPanel *openPanel; + + openPanel = [NSOpenPanel openPanel]; + [openPanel setCanChooseDirectories:NO]; + [openPanel setAllowsMultipleSelection:NO]; + [openPanel setResolvesAliases:YES]; + + if ([openPanel runModal] == NSOKButton) { + if ([sender tag] == 10000) { + [self setVideoInputFilePath:[[openPanel URL] path]]; + } else if ([sender tag] == 10002) { + [self setHtmlInputFilePath:[[openPanel URL] path]]; + } + [self updateLabels]; + } +} + +- (IBAction)didClickChooseOutputFileButton:(id)sender +{ + NSSavePanel *savePanel; + + savePanel = [NSSavePanel savePanel]; + + if( [savePanel runModal] == NSOKButton) { + if ([sender tag] == 10001) { + [self setHtmlOutputFilePath:[[savePanel URL] path]]; + } else if ([sender tag] == 10003) { + [self setVideoOutputFilePath:[[savePanel URL] path]]; + } + [self updateLabels]; + } +} + +- (IBAction)didClickConvertButton:(id)sender +{ + if ([sender tag] == 10005) { + if (![self videoInputFilePath] || ![self htmlOutputFilePath] || [[self videoInputFilePath] length] <= 0 || [[self htmlOutputFilePath] length] <= 0) + return; + NSData *data = [NSData dataWithContentsOfFile:[self videoInputFilePath]]; + + NSString *encoded = [data base64String]; + + NSString *output = [NSString stringWithFormat:@"%@%@%@", start, encoded, end]; + + NSError *error = nil; + if (![output writeToFile:[self htmlOutputFilePath] atomically:YES encoding:NSUTF8StringEncoding error:&error]) { + NSLog(@"Couldn't write file: %@", [error localizedDescription]); + } + + } else if ([sender tag] == 10006) { + if (![self videoOutputFilePath] || ![self htmlInputFilePath] || [[self videoOutputFilePath] length] <= 0 || [[self htmlInputFilePath] length] <= 0) + return; + + NSError *error = nil; + NSString *encoded = [NSString stringWithContentsOfFile:[self htmlInputFilePath] encoding:NSUTF8StringEncoding error:&error]; + + if (!encoded) { + NSLog(@"Couldn't load file: %@", [error localizedDescription]); + } + + // Strip off the html if any + encoded = [encoded stringByReplacingOccurrencesOfString:start withString:@""]; + encoded = [encoded stringByReplacingOccurrencesOfString:end withString:@""]; + + NSData *decoded = [encoded base64Data]; + + if (![decoded writeToFile:[self videoOutputFilePath] atomically:YES]) { + NSLog(@"Couldn't write file"); + } + + } + +} + +- (void)updateLabels +{ + [[self videoInputFilePathLabel] setStringValue:[self videoInputFilePath]]; + [[self htmlOutputFilePathLabel] setStringValue:[self htmlOutputFilePath]]; + [[self videoOutputFilePathLabel] setStringValue:[self videoOutputFilePath]]; + [[self htmlInputFilePathLabel] setStringValue:[self htmlInputFilePath]]; +} + @end diff --git a/Encoder/Encoder-Info.plist b/Encoder/Base 64 Video Encoder-Info.plist similarity index 100% rename from Encoder/Encoder-Info.plist rename to Encoder/Base 64 Video Encoder-Info.plist diff --git a/Encoder/Encoder-Prefix.pch b/Encoder/Base 64 Video Encoder-Prefix.pch similarity index 100% rename from Encoder/Encoder-Prefix.pch rename to Encoder/Base 64 Video Encoder-Prefix.pch diff --git a/Encoder/NSData+Additions.h b/Encoder/NSData+Additions.h new file mode 100644 index 0000000..fc9271f --- /dev/null +++ b/Encoder/NSData+Additions.h @@ -0,0 +1,19 @@ +// +// NSData+Additions.h +// Encoder +// +// Created by Matt Long on 3/1/12. +// Copyright (c) 2012 Skye Road Systems, Inc. All rights reserved. +// + +#import +#import + +@interface NSData (Additions) + +- (NSString*)ga_digest; ++ (NSData*)base64DataFromString:(NSString*)string; +- (NSString*)base64String; +- (NSString*)base64StringOfLength:(unsigned long)length; + +@end diff --git a/Encoder/NSData+Additions.m b/Encoder/NSData+Additions.m new file mode 100644 index 0000000..40c1c4e --- /dev/null +++ b/Encoder/NSData+Additions.m @@ -0,0 +1,212 @@ +// +// NSData+Additions.m +// Encoder +// +// Created by Matt Long on 3/1/12. +// Copyright (c) 2012 Skye Road Systems, Inc. All rights reserved. +// + +#import "NSData+Additions.h" + +static char base64EncodingTable[64] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' +}; + +@implementation NSData (Additions) + +- (NSString*)ga_digest +{ + uint8_t digest[CC_SHA1_DIGEST_LENGTH]; + + CC_SHA1([self bytes], (CC_LONG)[self length], digest); + + NSMutableString* outputHolder = [[NSMutableString alloc] initWithCapacity:CC_SHA1_DIGEST_LENGTH * 2]; + + for (int i = 0; i < CC_SHA1_DIGEST_LENGTH; i++) { + [outputHolder appendFormat:@"%02x", digest[i]]; + } + + return [outputHolder copy]; +} + ++ (NSData*)base64DataFromString:(NSString*)string +{ + unsigned long ixtext, lentext; + unsigned char ch, inbuf[4], outbuf[3]; + short i, ixinbuf; + Boolean flignore, flendtext = false; + const unsigned char *tempcstring; + NSMutableData *theData; + + if (string == nil) + { + return [NSData data]; + } + + ixtext = 0; + + tempcstring = (const unsigned char *)[string UTF8String]; + + lentext = [string length]; + + theData = [NSMutableData dataWithCapacity: lentext]; + + ixinbuf = 0; + + while (true) + { + if (ixtext >= lentext) + { + break; + } + + ch = tempcstring [ixtext++]; + + flignore = false; + + if ((ch >= 'A') && (ch <= 'Z')) + { + ch = ch - 'A'; + } + else if ((ch >= 'a') && (ch <= 'z')) + { + ch = ch - 'a' + 26; + } + else if ((ch >= '0') && (ch <= '9')) + { + ch = ch - '0' + 52; + } + else if (ch == '+') + { + ch = 62; + } + else if (ch == '=') + { + flendtext = true; + } + else if (ch == '/') + { + ch = 63; + } + else + { + flignore = true; + } + + if (!flignore) + { + short ctcharsinbuf = 3; + Boolean flbreak = false; + + if (flendtext) + { + if (ixinbuf == 0) + { + break; + } + + if ((ixinbuf == 1) || (ixinbuf == 2)) + { + ctcharsinbuf = 1; + } + else + { + ctcharsinbuf = 2; + } + + ixinbuf = 3; + + flbreak = true; + } + + inbuf [ixinbuf++] = ch; + + if (ixinbuf == 4) + { + ixinbuf = 0; + + outbuf[0] = (inbuf[0] << 2) | ((inbuf[1] & 0x30) >> 4); + outbuf[1] = ((inbuf[1] & 0x0F) << 4) | ((inbuf[2] & 0x3C) >> 2); + outbuf[2] = ((inbuf[2] & 0x03) << 6) | (inbuf[3] & 0x3F); + + for (i = 0; i < ctcharsinbuf; i++) + { + [theData appendBytes: &outbuf[i] length: 1]; + } + } + + if (flbreak) + { + break; + } + } + } + + return theData; +} + +- (NSString*)base64String +{ + return [self base64StringOfLength:[self length]]; +} + +- (NSString*)base64StringOfLength:(unsigned long)length +{ + unsigned long ixtext, lentext; + long ctremaining; + unsigned char input[3], output[4]; + short i, charsonline = 0, ctcopy; + const unsigned char *raw; + NSMutableString *result; + + lentext = [self length]; + if (lentext < 1) + return @""; + result = [NSMutableString stringWithCapacity: lentext]; + raw = [self bytes]; + ixtext = 0; + + while (true) { + ctremaining = lentext - ixtext; + if (ctremaining <= 0) + break; + for (i = 0; i < 3; i++) { + unsigned long ix = ixtext + i; + if (ix < lentext) + input[i] = raw[ix]; + else + input[i] = 0; + } + output[0] = (input[0] & 0xFC) >> 2; + output[1] = ((input[0] & 0x03) << 4) | ((input[1] & 0xF0) >> 4); + output[2] = ((input[1] & 0x0F) << 2) | ((input[2] & 0xC0) >> 6); + output[3] = input[2] & 0x3F; + ctcopy = 4; + switch (ctremaining) { + case 1: + ctcopy = 2; + break; + case 2: + ctcopy = 3; + break; + } + + for (i = 0; i < ctcopy; i++) + [result appendString: [NSString stringWithFormat: @"%c", base64EncodingTable[output[i]]]]; + + for (i = ctcopy; i < 4; i++) + [result appendString: @"="]; + + ixtext += 3; + charsonline += 4; + + if ((length > 0) && (charsonline >= length)) + charsonline = 0; + } + return result; +} + +@end \ No newline at end of file diff --git a/Encoder/NSString+Additions.h b/Encoder/NSString+Additions.h new file mode 100644 index 0000000..34c33a2 --- /dev/null +++ b/Encoder/NSString+Additions.h @@ -0,0 +1,22 @@ +// +// NSString+Additions.h +// Encoder +// +// Created by Matt Long on 3/1/12. +// Copyright (c) 2012 Skye Road Systems, Inc. All rights reserved. +// + +#import + +@interface NSString (Additions) + +- (NSString*)numericOnly; +- (NSString*)numericOrDecimal; +- (NSString*)ga_digest; +- (NSString*)ga_urlencoded; ++ (NSString*)base64StringFromData:(NSData*)data length:(unsigned long)length; ++ (NSString*)base64StringFromData:(NSData *)data; +- (NSData*)base64Data; + + +@end diff --git a/Encoder/NSString+Additions.m b/Encoder/NSString+Additions.m new file mode 100644 index 0000000..2158f0d --- /dev/null +++ b/Encoder/NSString+Additions.m @@ -0,0 +1,237 @@ +// +// NSString+Additions.m +// Encoder +// +// Created by Matt Long on 3/1/12. +// Copyright (c) 2012 Skye Road Systems, Inc. All rights reserved. +// + +#import "NSString+Additions.h" + +static char base64EncodingTable[64] = { + 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P', + 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', + 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', + 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '+', '/' +}; + +@implementation NSString (Additions) + +- (NSString*)numericOnly +{ + NSMutableString *strippedString = [[NSMutableString alloc] init]; + for (int i=0; i<[self length]; i++) { + if (isdigit([self characterAtIndex:i])) { + [strippedString appendFormat:@"%c",[self characterAtIndex:i]]; + } + } + return strippedString; +} + +- (NSString*)numericOrDecimal +{ + NSMutableString *strippedString = [[NSMutableString alloc] init]; + for (int i=0; i<[self length]; i++) { + if (isdigit([self characterAtIndex:i]) || [self characterAtIndex:i] == '.') { + [strippedString appendFormat:@"%c",[self characterAtIndex:i]]; + } + } + return strippedString; +} + +- (NSString*)ga_digest +{ + const char *cstr = [self cStringUsingEncoding:NSASCIIStringEncoding]; + return [[NSData dataWithBytes:cstr length:strlen(cstr)] ga_digest]; +} + +- (NSString*)ga_urlencoded +{ + NSString * encodedString = (__bridge NSString *)CFURLCreateStringByAddingPercentEscapes( + NULL, + (__bridge CFStringRef)self, + NULL, + (CFStringRef)@"!*'();:@&=+$,/?%#[]", + kCFStringEncodingUTF8 ); + return encodedString; +} + ++ (NSString*)base64StringFromData:(NSData*)data +{ + return [self base64StringFromData:data length:[data length]]; +} + ++ (NSString*)base64StringFromData:(NSData*)data length:(unsigned long)length +{ + unsigned long ixtext, lentext; + long ctremaining; + unsigned char input[3], output[4]; + short i, charsonline = 0, ctcopy; + const unsigned char *raw; + NSMutableString *result; + + lentext = [data length]; + if (lentext < 1) + return @""; + result = [NSMutableString stringWithCapacity: lentext]; + raw = [data bytes]; + ixtext = 0; + + while (true) { + ctremaining = lentext - ixtext; + if (ctremaining <= 0) + break; + for (i = 0; i < 3; i++) { + unsigned long ix = ixtext + i; + if (ix < lentext) + input[i] = raw[ix]; + else + input[i] = 0; + } + output[0] = (input[0] & 0xFC) >> 2; + output[1] = ((input[0] & 0x03) << 4) | ((input[1] & 0xF0) >> 4); + output[2] = ((input[1] & 0x0F) << 2) | ((input[2] & 0xC0) >> 6); + output[3] = input[2] & 0x3F; + ctcopy = 4; + switch (ctremaining) { + case 1: + ctcopy = 2; + break; + case 2: + ctcopy = 3; + break; + } + + for (i = 0; i < ctcopy; i++) + [result appendString: [NSString stringWithFormat: @"%c", base64EncodingTable[output[i]]]]; + + for (i = ctcopy; i < 4; i++) + [result appendString: @"="]; + + ixtext += 3; + charsonline += 4; + + if ((length > 0) && (charsonline >= length)) + charsonline = 0; + } + return result; +} + +- (NSData*)base64Data +{ + unsigned long ixtext, lentext; + unsigned char ch, inbuf[4], outbuf[3]; + short i, ixinbuf; + Boolean flignore, flendtext = false; + const unsigned char *tempcstring; + NSMutableData *theData; + + if (self == nil) + { + return [NSData data]; + } + + ixtext = 0; + + tempcstring = (const unsigned char *)[self UTF8String]; + + lentext = [self length]; + + theData = [NSMutableData dataWithCapacity: lentext]; + + ixinbuf = 0; + + while (true) + { + if (ixtext >= lentext) + { + break; + } + + ch = tempcstring [ixtext++]; + + flignore = false; + + if ((ch >= 'A') && (ch <= 'Z')) + { + ch = ch - 'A'; + } + else if ((ch >= 'a') && (ch <= 'z')) + { + ch = ch - 'a' + 26; + } + else if ((ch >= '0') && (ch <= '9')) + { + ch = ch - '0' + 52; + } + else if (ch == '+') + { + ch = 62; + } + else if (ch == '=') + { + flendtext = true; + } + else if (ch == '/') + { + ch = 63; + } + else + { + flignore = true; + } + + if (!flignore) + { + short ctcharsinbuf = 3; + Boolean flbreak = false; + + if (flendtext) + { + if (ixinbuf == 0) + { + break; + } + + if ((ixinbuf == 1) || (ixinbuf == 2)) + { + ctcharsinbuf = 1; + } + else + { + ctcharsinbuf = 2; + } + + ixinbuf = 3; + + flbreak = true; + } + + inbuf [ixinbuf++] = ch; + + if (ixinbuf == 4) + { + ixinbuf = 0; + + outbuf[0] = (inbuf[0] << 2) | ((inbuf[1] & 0x30) >> 4); + outbuf[1] = ((inbuf[1] & 0x0F) << 4) | ((inbuf[2] & 0x3C) >> 2); + outbuf[2] = ((inbuf[2] & 0x03) << 6) | (inbuf[3] & 0x3F); + + for (i = 0; i < ctcharsinbuf; i++) + { + [theData appendBytes: &outbuf[i] length: 1]; + } + } + + if (flbreak) + { + break; + } + } + } + + return theData; +} + + +@end diff --git a/Encoder/en.lproj/MainMenu.xib b/Encoder/en.lproj/MainMenu.xib index c5f0b81..48a3798 100644 --- a/Encoder/en.lproj/MainMenu.xib +++ b/Encoder/en.lproj/MainMenu.xib @@ -1,21 +1,25 @@ - 1070 - 11A511 - 1920 - 1138 - 566.00 + 1080 + 12A269 + 2549 + 1187 + 624.00 com.apple.InterfaceBuilder.CocoaPlugin - 1920 + 2549 - NSWindowTemplate - NSView + NSButton + NSButtonCell + NSCustomObject NSMenu NSMenuItem - NSCustomObject + NSTextField + NSTextFieldCell + NSView + NSWindowTemplate com.apple.InterfaceBuilder.CocoaPlugin @@ -39,7 +43,7 @@ - Encoder + Base 64 Video Encoder 1048576 2147483647 @@ -53,11 +57,11 @@ submenuAction: - Encoder + Base 64 Video Encoder - About Encoder + About Base 64 Video Encoder 2147483647 @@ -122,7 +126,7 @@ - Hide Encoder + Hide Base 64 Video Encoder h 1048576 2147483647 @@ -160,7 +164,7 @@ - Quit Encoder + Quit Base 64 Video Encoder q 1048576 2147483647 @@ -1275,7 +1279,7 @@ - Encoder Help + Base 64 Video Encoder Help ? 1048576 2147483647 @@ -1292,18 +1296,328 @@ 15 2 - {{335, 390}, {480, 360}} + {{335, 390}, {459, 316}} 1954021376 - Encoder + Base 64 Video Encoder NSWindow - + 256 - {480, 360} - - {{0, 0}, {1920, 1178}} + + + + 268 + {{14, 225}, {201, 32}} + + + + _NS:9 + 10000 + YES + + 67108864 + 134217728 + Choose Video File + + LucidaGrande + 13 + 1044 + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{14, 192}, {201, 32}} + + + + _NS:9 + 10001 + YES + + 67108864 + 134217728 + Choose Output HTML File + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{214, 236}, {228, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + + + _NS:1535 + + + 6 + System + controlColor + + 3 + MC42NjY2NjY2NjY3AA + + + + 6 + System + controlTextColor + + 3 + MAA + + + + NO + + + + 268 + {{214, 202}, {228, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + + + _NS:1535 + + + + + NO + + + + 268 + {{184, 159}, {90, 32}} + + + + _NS:9 + 10005 + YES + + 67108864 + 134217728 + Convert + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{14, 46}, {201, 32}} + + + + _NS:9 + 10003 + YES + + 67108864 + 134217728 + Choose Output Video File + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{14, 79}, {201, 32}} + + + + _NS:9 + 10002 + YES + + 67108864 + 134217728 + Choose Input HTML File + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{214, 55}, {228, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + + + _NS:1535 + + + + + NO + + + + 268 + {{214, 89}, {228, 17}} + + + + _NS:1535 + YES + + 68157504 + 272630784 + + + _NS:1535 + + + + + NO + + + + 268 + {{184, 13}, {90, 32}} + + + _NS:9 + 10006 + YES + + 67108864 + 134217728 + Convert + + _NS:9 + + -2038284288 + 129 + + + 200 + 25 + + NO + + + + 268 + {{17, 261}, {425, 43}} + + + + _NS:1535 + YES + + 68157504 + 138413056 + Video >> HTML + + LucidaGrande-Bold + 33 + 16 + + _NS:1535 + + + + + NO + + + + 268 + {{17, 115}, {425, 43}} + + + + _NS:1535 + YES + + 68157504 + 138413056 + HTML >> Video + + _NS:1535 + + + + + NO + + + {459, 316} + + + + + {{0, 0}, {2560, 1418}} {10000000000000, 10000000000000} YES @@ -1996,6 +2310,86 @@ 532 + + + didClickConvertButton: + + + + 550 + + + + didClickConvertButton: + + + + 563 + + + + videoInputFilePathLabel + + + + 568 + + + + htmlOutputFilePathLabel + + + + 569 + + + + didClickChooseInputFileButton: + + + + 572 + + + + didClickChooseOutputFileButton: + + + + 573 + + + + didClickChooseInputFileButton: + + + + 574 + + + + didClickChooseOutputFileButton: + + + + 575 + + + + htmlInputFilePathLabel + + + + 576 + + + + videoOutputFilePathLabel + + + + 577 + @@ -2520,6 +2914,20 @@ 372 + + + + + + + + + + + + + + @@ -2995,6 +3403,162 @@ + + 536 + + + + + + + + 537 + + + + + 538 + + + + + + + + 539 + + + + + 540 + + + + + + + + 541 + + + + + 542 + + + + + + + + 543 + + + + + 544 + + + + + + + + 545 + + + + + 551 + + + + + + + + 552 + + + + + + + + 553 + + + + + + + + 554 + + + + + + + + 555 + + + + + + + + 556 + + + + + 557 + + + + + 558 + + + + + 559 + + + + + 560 + + + + + 564 + + + + + + + + 565 + + + + + 566 + + + + + + + + 567 + + + @@ -3138,7 +3702,31 @@ 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 @@ -3157,1005 +3745,80 @@ - 535 + 577 - ABCardController + AppDelegate NSObject - - id - id - id - id - id - id - id - - - - addCardViewField: - id - - - copy: - id - - - cut: - id - - - doDelete: - id - - - find: - id - - - paste: - id - - - saveChanges: - id - - - ABCardView - NSButton - NSManagedObjectContext - NSSearchField - NSTextField - NSWindow + NSTextField + NSTextField + NSTextField + NSTextField + NSWindow - - mCardView - ABCardView - - - mEditButton - NSButton + + htmlInputFilePathLabel + NSTextField - - mManagedObjectContext - NSManagedObjectContext + + htmlOutputFilePathLabel + NSTextField - - mSearchField - NSSearchField + + videoInputFilePathLabel + NSTextField - - mStatusTextField + + videoOutputFilePathLabel NSTextField - - mWindow + + window NSWindow IBProjectSource - ./Classes/ABCardController.h + ./Classes/AppDelegate.h - ABCardView - NSView + NSDocument - id - id + id + id + id + id + id + id - - commitAndSave: + + printDocument: id - - statusImageClicked: + + revertDocumentToSaved: id - - - NSImageView - NSView - ABNameFrameView - NSView - NSImage - ABImageView - - - - mBuddyStatusImage - NSImageView - - - mHeaderView - NSView - - - mNameView - ABNameFrameView - - - mNextKeyView - NSView - - - mUserImage - NSImage - - - mUserImageView - ABImageView - - - - IBProjectSource - ./Classes/ABCardView.h - - - - ABImageView - NSImageView - - id - id - id - id - - - - copy: + + runPageLayout: id - - cut: + + saveDocument: id - - delete: + + saveDocumentAs: id - - paste: - id - - - - IBProjectSource - ./Classes/ABImageView.h - - - - DVTAutoLayoutView - NSView - - IBProjectSource - ./Classes/DVTAutoLayoutView.h - - - - DVTBorderedView - DVTAutoLayoutView - - contentView - NSView - - - contentView - - contentView - NSView - - - - IBProjectSource - ./Classes/DVTBorderedView.h - - - - DVTDelayedMenuButton - NSButton - - IBProjectSource - ./Classes/DVTDelayedMenuButton.h - - - - DVTGradientImageButton - NSButton - - IBProjectSource - ./Classes/DVTGradientImageButton.h - - - - DVTImageAndTextCell - NSTextFieldCell - - IBProjectSource - ./Classes/DVTImageAndTextCell.h - - - - DVTImageAndTextColumn - NSTableColumn - - IBProjectSource - ./Classes/DVTImageAndTextColumn.h - - - - DVTOutlineView - NSOutlineView - - IBProjectSource - ./Classes/DVTOutlineView.h - - - - DVTSplitView - NSSplitView - - IBProjectSource - ./Classes/DVTSplitView.h - - - - DVTStackView - DVTAutoLayoutView - - IBProjectSource - ./Classes/DVTStackView.h - - - - DVTViewController - NSViewController - - IBProjectSource - ./Classes/DVTViewController.h - - - - HFController - NSObject - - selectAll: - id - - - selectAll: - - selectAll: - id - - - - IBProjectSource - ./Classes/HFController.h - - - - HFRepresenterTextView - NSView - - selectAll: - id - - - selectAll: - - selectAll: - id - - - - IBProjectSource - ./Classes/HFRepresenterTextView.h - - - - IBEditor - NSObject - - id - id - id - - - - changeFont: - id - - - selectAll: - id - - - sizeSelectionToFit: - id - - - - IBProjectSource - ./Classes/IBEditor.h - - - - IDECapsuleListView - DVTStackView - - dataSource - id - - - dataSource - - dataSource - id - - - - IBProjectSource - ./Classes/IDECapsuleListView.h - - - - IDEDMArrayController - NSArrayController - - IBProjectSource - ./Classes/IDEDMArrayController.h - - - - IDEDMEditor - IDEEditor - - DVTBorderedView - NSView - IDEDMEditorSourceListController - DVTSplitView - - - - bottomToolbarBorderView - DVTBorderedView - - - sourceListSplitViewPane - NSView - - - sourceListViewController - IDEDMEditorSourceListController - - - splitView - DVTSplitView - - - - IBProjectSource - ./Classes/IDEDMEditor.h - - - - IDEDMEditorController - IDEViewController - - IBProjectSource - ./Classes/IDEDMEditorController.h - - - - IDEDMEditorSourceListController - IDEDMEditorController - - DVTBorderedView - IDEDMEditor - DVTImageAndTextColumn - DVTOutlineView - NSTreeController - - - - borderedView - DVTBorderedView - - - parentEditor - IDEDMEditor - - - primaryColumn - DVTImageAndTextColumn - - - sourceListOutlineView - DVTOutlineView - - - sourceListTreeController - NSTreeController - - - - IBProjectSource - ./Classes/IDEDMEditorSourceListController.h - - - - IDEDMHighlightImageAndTextCell - DVTImageAndTextCell - - IBProjectSource - ./Classes/IDEDMHighlightImageAndTextCell.h - - - - IDEDataModelBrowserEditor - IDEDMEditorController - - IDEDataModelPropertiesTableController - IDECapsuleListView - NSArrayController - IDEDataModelPropertiesTableController - IDEDataModelEntityContentsEditor - IDEDataModelPropertiesTableController - - - - attributesTableViewController - IDEDataModelPropertiesTableController - - - capsuleView - IDECapsuleListView - - - entityArrayController - NSArrayController - - - fetchedPropertiesTableViewController - IDEDataModelPropertiesTableController - - - parentEditor - IDEDataModelEntityContentsEditor - - - relationshipsTableViewController - IDEDataModelPropertiesTableController - - - - IBProjectSource - ./Classes/IDEDataModelBrowserEditor.h - - - - IDEDataModelConfigurationEditor - IDEDMEditorController - - IDECapsuleListView - IDEDataModelEditor - IDEDataModelConfigurationTableController - - - - capsuleListView - IDECapsuleListView - - - parentEditor - IDEDataModelEditor - - - tableController - IDEDataModelConfigurationTableController - - - - IBProjectSource - ./Classes/IDEDataModelConfigurationEditor.h - - - - IDEDataModelConfigurationTableController - IDEDMEditorController - - NSArrayController - NSArrayController - IDEDataModelConfigurationEditor - XDTableView - - - - configurationsArrayController - NSArrayController - - - entitiesArrayController - NSArrayController - - - parentEditor - IDEDataModelConfigurationEditor - - - tableView - XDTableView - - - - IBProjectSource - ./Classes/IDEDataModelConfigurationTableController.h - - - - IDEDataModelDiagramEditor - IDEDMEditorController - - XDDiagramView - IDEDataModelEntityContentsEditor - - - - diagramView - XDDiagramView - - - parentEditor - IDEDataModelEntityContentsEditor - - - - IBProjectSource - ./Classes/IDEDataModelDiagramEditor.h - - - - IDEDataModelEditor - IDEDMEditor - - DVTDelayedMenuButton - DVTDelayedMenuButton - NSSegmentedControl - IDEDataModelConfigurationEditor - IDEDataModelEntityContentsEditor - IDEDataModelFetchRequestEditor - NSSegmentedControl - NSTabView - - - - addEntityButton - DVTDelayedMenuButton - - - addPropertyButton - DVTDelayedMenuButton - - - browserDiagramSegmentControl - NSSegmentedControl - - - configurationViewController - IDEDataModelConfigurationEditor - - - entityContentsViewController - IDEDataModelEntityContentsEditor - - - fetchRequestViewController - IDEDataModelFetchRequestEditor - - - hierarchySegmentControl - NSSegmentedControl - - - tabView - NSTabView - - - - IBProjectSource - ./Classes/IDEDataModelEditor.h - - - - IDEDataModelEntityContentsEditor - IDEDMEditorController - - IDEDataModelBrowserEditor - IDEDataModelDiagramEditor - IDEDataModelEditor - NSTabView - - - - browserViewController - IDEDataModelBrowserEditor - - - diagramViewController - IDEDataModelDiagramEditor - - - parentEditor - IDEDataModelEditor - - - tabView - NSTabView - - - - IBProjectSource - ./Classes/IDEDataModelEntityContentsEditor.h - - - - IDEDataModelFetchRequestEditor - IDEDMEditorController - - NSArrayController - IDEDataModelEditor - IDECapsuleListView - - - - entityController - NSArrayController - - - parentEditor - IDEDataModelEditor - - - tableView - IDECapsuleListView - - - - IBProjectSource - ./Classes/IDEDataModelFetchRequestEditor.h - - - - IDEDataModelPropertiesTableController - IDEDMEditorController - - IDEDMArrayController - NSTableColumn - NSArrayController - IDEDataModelBrowserEditor - IDEDMHighlightImageAndTextCell - XDTableView - - - - arrayController - IDEDMArrayController - - - entitiesColumn - NSTableColumn - - - entityArrayController - NSArrayController - - - parentEditor - IDEDataModelBrowserEditor - - - propertyNameAndImageCell - IDEDMHighlightImageAndTextCell - - - tableView - XDTableView - - - - IBProjectSource - ./Classes/IDEDataModelPropertiesTableController.h - - - - IDEDocSetOutlineView - NSOutlineView - - IBProjectSource - ./Classes/IDEDocSetOutlineView.h - - - - IDEDocSetOutlineViewController - NSObject - - id - id - id - id - id - - - - getDocSetAction: - id - - - showProblemInfoForUpdate: - id - - - subscribeToPublisherAction: - id - - - unsubscribeFromPublisher: - id - - - updateDocSetAction: - id - - - - docSetOutlineView - IDEDocSetOutlineView - - - docSetOutlineView - - docSetOutlineView - IDEDocSetOutlineView - - - - IBProjectSource - ./Classes/IDEDocSetOutlineViewController.h - - - - IDEDocViewingPrefPaneController - IDEViewController - - id - id - id - id - id - id - id - id - id - - - - addSubscription: - id - - - checkForAndInstallUpdatesNow: - id - - - minimumFontSizeComboBoxAction: - id - - - minimumFontSizeEnabledAction: - id - - - showHelp: - id - - - showSubscriptionSheet: - id - - - subscriptionCancelAction: - id - - - toggleAutoCheckForAndInstallUpdates: - id - - - toggleDocSetInfo: - id - - - - DVTGradientImageButton - DVTGradientImageButton - DVTGradientImageButton - NSSplitView - NSView - NSView - DVTBorderedView - DVTBorderedView - NSButton - NSTextView - IDEDocSetOutlineViewController - NSComboBox - NSTextField - NSButton - NSTextField - NSWindow - NSButton - - - - _addButton - DVTGradientImageButton - - - _deleteButton - DVTGradientImageButton - - - _showInfoAreaButton - DVTGradientImageButton - - - _splitView - NSSplitView - - - _splitViewDocSetInfoSubview - NSView - - - _splitViewDocSetsListSubview - NSView - - - borderedViewAroundSplitView - DVTBorderedView - - - borderedViewBelowTable - DVTBorderedView - - - checkAndInstallNowButton - NSButton - - - docSetInfoTextView - NSTextView - - - docSetOutlineViewController - IDEDocSetOutlineViewController - - - minimumFontSizeControl - NSComboBox - - - noUpdatesAvailableMessage - NSTextField - - - showInfoButton - NSButton - - - subscriptionTextField - NSTextField - - - subscriptionWindow - NSWindow - - - validateAddSubscriptionButton - NSButton - - - - IBProjectSource - ./Classes/IDEDocViewingPrefPaneController.h - - - - IDEEditor - IDEViewController - - IBProjectSource - ./Classes/IDEEditor.h - - - - IDEViewController - DVTViewController - - IBProjectSource - ./Classes/IDEViewController.h - - - - IKImageView - - id - id - id - id - - - - copy: - id - - - crop: - id - - - cut: - id - - - paste: - id - - - - IBProjectSource - ./Classes/IKImageView.h - - - - NSDocument - - id - id - id - id - id - id - - - - printDocument: - id - - - revertDocumentToSaved: - id - - - runPageLayout: - id - - - saveDocument: - id - - - saveDocumentAs: - id - - - saveDocumentTo: + + saveDocumentTo: id @@ -4164,410 +3827,6 @@ ./Classes/NSDocument.h - - QLPreviewBubble - NSObject - - id - id - - - - hide: - id - - - show: - id - - - - parentWindow - NSWindow - - - parentWindow - - parentWindow - NSWindow - - - - IBProjectSource - ./Classes/QLPreviewBubble.h - - - - QTMovieView - - id - id - id - id - id - - - - showAll: - id - - - showCustomButton: - id - - - toggleLoops: - id - - - zoomIn: - id - - - zoomOut: - id - - - - IBProjectSource - ./Classes/QTMovieView.h - - - - WebView - - id - id - id - id - - - - reloadFromOrigin: - id - - - resetPageZoom: - id - - - zoomPageIn: - id - - - zoomPageOut: - id - - - - IBProjectSource - ./Classes/WebView.h - - - - XDDiagramView - NSView - - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - id - - - - _graphLayouterMenuItemAction: - id - - - _zoomPopUpButtonAction: - id - - - alignBottomEdges: - id - - - alignCentersHorizontallyInContainer: - id - - - alignCentersVerticallyInContainer: - id - - - alignHorizontalCenters: - id - - - alignLeftEdges: - id - - - alignRightEdges: - id - - - alignTopEdges: - id - - - alignVerticalCenters: - id - - - bringToFront: - id - - - collapseAllCompartments: - id - - - copy: - id - - - cut: - id - - - delete: - id - - - deleteBackward: - id - - - deleteForward: - id - - - deselectAll: - id - - - diagramZoomIn: - id - - - diagramZoomOut: - id - - - expandAllCompartments: - id - - - flipHorizontally: - id - - - flipVertically: - id - - - layoutGraphicsConcentrically: - id - - - layoutGraphicsHierarchically: - id - - - lock: - id - - - makeSameHeight: - id - - - makeSameWidth: - id - - - moveDown: - id - - - moveDownAndModifySelection: - id - - - moveLeft: - id - - - moveLeftAndModifySelection: - id - - - moveRight: - id - - - moveRightAndModifySelection: - id - - - moveUp: - id - - - moveUpAndModifySelection: - id - - - paste: - id - - - rollDownAllCompartments: - id - - - rollUpAllCompartments: - id - - - selectAll: - id - - - sendToBack: - id - - - sizeToFit: - id - - - toggleGridShown: - id - - - toggleHiddenGraphicsShown: - id - - - togglePageBreaksShown: - id - - - toggleRuler: - id - - - toggleSnapsToGrid: - id - - - unlock: - id - - - - _diagramController - IDEDataModelDiagramEditor - - - _diagramController - - _diagramController - IDEDataModelDiagramEditor - - - - IBProjectSource - ./Classes/XDDiagramView.h - - - - XDTableView - NSTableView - - showAllTableColumns: - id - - - showAllTableColumns: - - showAllTableColumns: - id - - - - IBProjectSource - ./Classes/XDTableView.h - - - - AppDelegate - NSObject - - id - id - - - - applicationShouldTerminate: - id - - - applicationWillFinishLaunching: - id - - - - IBProjectSource - ./Classes/AppDelegate.h - - 0 @@ -4575,8 +3834,8 @@ YES 3 - {9, 8} - {7, 2} + {11, 11} + {10, 3} diff --git a/Encoder/part2.html b/Encoder/part2.html new file mode 100644 index 0000000..a27050b --- /dev/null +++ b/Encoder/part2.html @@ -0,0 +1,3 @@ +"> + + \ No newline at end of file diff --git a/Encoder/video.html b/Encoder/video.html new file mode 100644 index 0000000..f14ea3d --- /dev/null +++ b/Encoder/video.html @@ -0,0 +1,4 @@ + +Video + +