]> granicus.if.org Git - handbrake/commitdiff
MacGui: implement NSCoding protocol in HBJob.
authorritsuka <damiog@gmail.com>
Mon, 22 Dec 2014 07:55:39 +0000 (07:55 +0000)
committerritsuka <damiog@gmail.com>
Mon, 22 Dec 2014 07:55:39 +0000 (07:55 +0000)
git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@6638 b64f7644-9d1e-0410-96f1-a4d463321fa5

13 files changed:
macosx/HBAudioDefaults.h
macosx/HBAudioDefaults.m
macosx/HBFilters.h
macosx/HBFilters.m
macosx/HBJob.m
macosx/HBPicture.h
macosx/HBPicture.m
macosx/HBSubtitlesDefaults.h
macosx/HBSubtitlesDefaults.m
macosx/HBVideo.h
macosx/HBVideo.m
macosx/HandBrake.xcodeproj/project.pbxproj
macosx/NSCodingMacro.h [new file with mode: 0644]

index aeb2717706e447b588e52299185702ad517258ef..a2e30a318823e1a42da40b351816fbb803a72b15 100644 (file)
@@ -16,7 +16,7 @@ typedef NS_ENUM(NSUInteger, HBAudioTrackSelectionBehavior) {
  *  HBAudioSettings
  *  Stores the audio defaults settings.
  */
-@interface HBAudioDefaults : NSObject
+@interface HBAudioDefaults : NSObject <NSCoding>
 
 @property (nonatomic, readwrite) HBAudioTrackSelectionBehavior trackSelectionBehavior;
 @property (nonatomic, readwrite, retain) NSMutableArray *trackSelectionLanguages;
index 58b3555730e199495bc01afbabd691863b2563ff..3628b55642f49fce7bafaee074176135628dac99 100644 (file)
@@ -6,6 +6,7 @@
 
 #import "HBAudioDefaults.h"
 #import "HBAudioTrackPreset.h"
+#import "NSCodingMacro.h"
 #import "hb.h"
 #import "lang.h"
 
     self.container = container;
 }
 
+#pragma mark - NSCoding
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+    [coder encodeInt:1 forKey:@"HBAudioDefaultsVersion"];
+
+    encodeInteger(_trackSelectionBehavior);
+    encodeObject(_trackSelectionLanguages);
+
+    encodeObject(_tracksArray);
+
+    encodeBool(_allowAACPassthru);
+    encodeBool(_allowAC3Passthru);
+    encodeBool(_allowDTSHDPassthru);
+    encodeBool(_allowDTSPassthru);
+    encodeBool(_allowMP3Passthru);
+
+    encodeInt(_encoderFallback);
+    encodeBool(_secondaryEncoderMode);
+}
+
+- (id)initWithCoder:(NSCoder *)decoder
+{
+    self = [super init];
+
+    decodeInteger(_trackSelectionBehavior);
+    decodeObject(_trackSelectionLanguages);
+
+    decodeObject(_tracksArray);
+
+    decodeBool(_allowAACPassthru);
+    decodeBool(_allowAC3Passthru);
+    decodeBool(_allowDTSHDPassthru);
+    decodeBool(_allowDTSPassthru);
+    decodeBool(_allowMP3Passthru);
+
+    decodeInt(_encoderFallback);
+    decodeBool(_secondaryEncoderMode);
+
+    return self;
+}
+
 @end
index f0a5fbbe9bbf3ceb987053f39f6d844cc117c6d6..ae0603ea04a43b2a1b7a7840adc2c2c56a6ce706 100644 (file)
@@ -11,7 +11,7 @@ extern NSString * const HBFiltersChangedNotification;
 /**
  *  Filters settings.
  */
-@interface HBFilters : NSObject
+@interface HBFilters : NSObject <NSCoding>
 
 - (void)prepareFiltersForPreset:(NSMutableDictionary *)preset;
 - (void)applySettingsFromPreset:(NSDictionary *)preset;
index 4d3583daf2ae98a5f1076eb940b084fac7ef966e..1d9c5893b573b844aa6ea447b5e13be73b75bfd9 100644 (file)
@@ -5,6 +5,7 @@
  It may be used under the terms of the GNU General Public License. */
 
 #import "HBFilters.h"
+#import "NSCodingMacro.h"
 
 NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification";
 
@@ -257,6 +258,66 @@ static NSDictionary *_nlmeansTunesDict;
     [self postChangedNotification];
 }
 
+#pragma mark - NSCoding
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+    [coder encodeInt:1 forKey:@"HBFiltersVersion"];
+
+    encodeInteger(_detelecine);
+    encodeObject(_detelecineCustomString);
+
+    encodeInteger(_deinterlace);
+    encodeObject(_deinterlaceCustomString);
+
+    encodeInteger(_decomb);
+    encodeObject(_decombCustomString);
+
+    encodeInteger(_detelecine);
+    encodeObject(_detelecineCustomString);
+
+    encodeObject(_denoise);
+    encodeObject(_denoisePreset);
+    encodeObject(_denoiseTune);
+    encodeObject(_denoiseCustomString);
+
+    encodeInteger(_deblock);
+    encodeBool(_grayscale);
+
+    encodeBool(_useDecomb);
+}
+
+- (id)initWithCoder:(NSCoder *)decoder
+{
+    self = [super init];
+
+    decodeInteger(_detelecine);
+    decodeObject(_detelecineCustomString);
+
+    decodeInteger(_deinterlace);
+    decodeObject(_deinterlaceCustomString);
+
+    decodeInteger(_decomb);
+    decodeObject(_decombCustomString);
+
+    decodeInteger(_detelecine);
+    decodeObject(_detelecineCustomString);
+
+    decodeObject(_denoise);
+    decodeObject(_denoisePreset);
+    decodeObject(_denoiseTune);
+    decodeObject(_denoiseCustomString);
+
+    decodeInteger(_deblock);
+    decodeBool(_grayscale);
+
+    decodeBool(_useDecomb);
+
+    _notificationsEnabled = YES;
+
+    return self;
+}
+
 #pragma mark - Presets and queue
 
 - (void)prepareFiltersForPreset:(NSMutableDictionary *)preset
index 7449524019f53e1b28d640985efecb39095809d7..5e334bae29838cd81b4ddc8aed72e4fb1b6c2147 100644 (file)
@@ -11,7 +11,7 @@
 #import "HBAudioController.h"
 #import "HBSubtitlesController.h"
 
-#include "lang.h"
+#import "NSCodingMacro.h"
 
 @implementation HBJob
 
@@ -71,6 +71,8 @@
  */
 - (hb_job_t *)hb_job
 {
+    NSAssert(self.title, @"HBJob: calling hb_job without a valid title loaded");
+
     hb_title_t *title = self.title.hb_title;
     hb_job_t *job = hb_job_init(title);
 
 
 - (void)encodeWithCoder:(NSCoder *)coder
 {
+    [coder encodeInt:1 forKey:@"HBVideoVersion"];
+
+    encodeInt(_state);
+
+    encodeObject(_fileURL);
+    encodeObject(_destURL);
+
+    encodeInt(_fileFormat);
+    encodeBool(_mp4HttpOptimize);
+    encodeBool(_mp4iPodCompatible);
+
+    encodeObject(_video);
+    encodeObject(_picture);
+    encodeObject(_filters);
+
+    encodeObject(_audioTracks);
+    encodeObject(_subtitlesTracks);
+
+    encodeBool(_chaptersEnabled);
+    encodeObject(_chapterNames);
+
+    encodeObject(_audioDefaults);
+    encodeObject(_subtitlesDefaults);
 }
 
 - (id)initWithCoder:(NSCoder *)decoder
 {
-    return nil;
+    self = [super init];
+
+    decodeInt(_state);
+
+    decodeObject(_fileURL);
+    decodeObject(_destURL);
+
+    decodeInt(_fileFormat);
+    decodeBool(_mp4HttpOptimize);
+    decodeBool(_mp4iPodCompatible);
+
+    decodeObject(_video);
+    decodeObject(_picture);
+    decodeObject(_filters);
+
+    decodeObject(_audioTracks);
+    decodeObject(_subtitlesTracks);
+
+    decodeBool(_chaptersEnabled);
+    decodeObject(_chapterNames);
+
+    decodeObject(_audioDefaults);
+    decodeObject(_subtitlesDefaults);
+
+    return self;
 }
 
 #pragma mark - NSCopying
index ee35f75eb47d96bf5600a7a3610c37f333aa284b..25394767f904da805b2c41f726492bf74ecdfd22 100644 (file)
@@ -13,7 +13,7 @@ extern NSString * const HBPictureChangedNotification;
 /**
  * HBPicture
  */
-@interface HBPicture : NSObject
+@interface HBPicture : NSObject <NSCoding>
 
 - (instancetype)initWithTitle:(HBTitle *)title;
 
@@ -63,7 +63,7 @@ extern NSString * const HBPictureChangedNotification;
 @property (nonatomic, readonly, getter=isKeepDisplayAspect) BOOL keepDisplayAspectEditable;
 @property (nonatomic, readonly, getter=isCustomAnamorphicEnabled) BOOL customAnamorphicEnabled;
 
-@property (nonatomic, readonly) HBTitle *title;
+@property (nonatomic, readwrite, assign) HBTitle *title;
 
 
 @end
index beecd8d81767dc590bbd252805f04ef87f76a1a9..63318757c7f31cec947dde50159c27c41a85e11c 100644 (file)
@@ -7,6 +7,8 @@
 #import "HBPicture.h"
 #import "HBTitle.h"
 
+#import "NSCodingMacro.h"
+
 #include "hb.h"
 
 NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
@@ -42,7 +44,7 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
     self = [self init];
     if (self)
     {
-        _title = [title retain];
+        _title = title;
         _width = title.hb_title->geometry.width;
         _height = title.hb_title->geometry.height;
 
@@ -479,6 +481,56 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
     [self postChangedNotification];
 }
 
+#pragma mark - NSCoding
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+    [coder encodeInt:1 forKey:@"HBPictureVersion"];
+
+    encodeInt(_width);
+    encodeInt(_height);
+
+    encodeInt(_keepDisplayAspect);
+    encodeInt(_anamorphicMode);
+    encodeInt(_modulus);
+
+    encodeInt(_displayWidth);
+    encodeInt(_parWidth);
+    encodeInt(_parHeight);
+
+    encodeBool(_autocrop);
+    encodeInt(_cropTop);
+    encodeInt(_cropBottom);
+    encodeInt(_cropLeft);
+    encodeInt(_cropRight);
+}
+
+- (id)initWithCoder:(NSCoder *)decoder
+{
+    self = [super init];
+
+    decodeInt(_width);
+    decodeInt(_height);
+
+    decodeInt(_keepDisplayAspect);
+    decodeInt(_anamorphicMode);
+    decodeInt(_modulus);
+
+    decodeInt(_displayWidth);
+    decodeInt(_parWidth);
+    decodeInt(_parHeight);
+
+    decodeBool(_autocrop);
+    decodeInt(_cropTop);
+    decodeInt(_cropBottom);
+    decodeInt(_cropLeft);
+    decodeInt(_cropRight);
+    
+    return self;
+}
+
+#pragma mark - Presets/Queue
+
 - (void)preparePictureForPreset:(NSMutableDictionary *)preset
 {
     preset[@"PictureKeepRatio"] = @(self.keepDisplayAspect);
index f345e6c86644d1039a2395458fedc025cbbda4cf..b09da81272d4674ac61b6135481c17f31e609339 100644 (file)
@@ -12,7 +12,7 @@ typedef NS_ENUM(NSUInteger, HBSubtitleTrackSelectionBehavior) {
     HBSubtitleTrackSelectionBehaviorAll,
 };
 
-@interface HBSubtitlesDefaults : NSObject
+@interface HBSubtitlesDefaults : NSObject <NSCoding>
 
 @property (nonatomic, readwrite) HBSubtitleTrackSelectionBehavior trackSelectionBehavior;
 @property (nonatomic, readwrite, retain) NSMutableArray *trackSelectionLanguages;
index 544123de19726d85e4b5d57ce06423cc8423893a..efcd49c8d42a49fdd1b89a5ac032a50f9956bcac 100644 (file)
@@ -5,6 +5,7 @@
  It may be used under the terms of the GNU General Public License. */
 
 #import "HBSubtitlesDefaults.h"
+#import "NSCodingMacro.h"
 
 @implementation HBSubtitlesDefaults
 
     preset[@"SubtitleAddForeignAudioSubtitle"] = @(self.addForeignAudioSubtitle);
 }
 
+#pragma mark - NSCoding
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+    [coder encodeInt:1 forKey:@"HBAudioDefaultsVersion"];
+
+    encodeInteger(_trackSelectionBehavior);
+    encodeObject(_trackSelectionLanguages);
+
+    encodeBool(_addForeignAudioSearch);
+    encodeBool(_addForeignAudioSubtitle);
+    encodeBool(_addCC);
+}
+
+- (id)initWithCoder:(NSCoder *)decoder
+{
+    self = [super init];
+
+    decodeInteger(_trackSelectionBehavior);
+    decodeObject(_trackSelectionLanguages);
+
+    decodeBool(_addForeignAudioSearch);
+    decodeBool(_addForeignAudioSubtitle);
+    decodeBool(_addCC);
+
+    return self;
+}
+
 - (void)dealloc
 {
     [_trackSelectionLanguages release];
index 72208ae8a4ad4cf9824c9cecf0e43ea1ee28540d..837aaaeb267d9615788aa881fe0ada5b91a2e5a8 100644 (file)
@@ -5,12 +5,11 @@
  It may be used under the terms of the GNU General Public License. */
 
 #import <Foundation/Foundation.h>
-#include "hb.h"
 
 /**
  *  HBVideo
  */
-@interface HBVideo : NSObject
+@interface HBVideo : NSObject <NSCoding>
 
 - (void)applySettingsFromPreset:(NSDictionary *)preset;
 - (void)prepareVideoForPreset:(NSMutableDictionary *)preset;
@@ -27,7 +26,6 @@
 @property (nonatomic, readwrite) int frameRate;
 @property (nonatomic, readwrite) int frameRateMode;
 
-@property (nonatomic, readwrite) BOOL fastFirstPass;
 @property (nonatomic, readwrite) BOOL twoPass;
 @property (nonatomic, readwrite) BOOL turboTwoPass;
 
index 48c5a8a158f0f60907680c0efd7cab64890a35a8..73a3e8c7ea784195ddde194b7abadb0126533aa3 100644 (file)
@@ -5,6 +5,8 @@
  It may be used under the terms of the GNU General Public License. */
 
 #import "HBVideo.h"
+#import "NSCodingMacro.h"
+#include "hb.h"
 
 @interface HBVideo ()
 
     return retval;
 }
 
+#pragma mark - NSCoding
+
+- (void)encodeWithCoder:(NSCoder *)coder
+{
+    [coder encodeInt:1 forKey:@"HBVideoVersion"];
+
+    encodeInt(_encoder);
+
+    encodeInt(_qualityType);
+    encodeInt(_avgBitrate);
+    encodeDouble(_quality);
+
+    encodeInt(_frameRate);
+    encodeInt(_frameRateMode);
+
+    encodeBool(_twoPass);
+    encodeBool(_turboTwoPass);
+
+    encodeBool(_turboTwoPass);
+
+    encodeInt(_advancedOptions);
+    encodeObject(_preset);
+    encodeObject(_tune);
+    encodeObject(_profile);
+    encodeObject(_level);
+
+    encodeObject(_videoOptionExtra);
+
+    encodeBool(_fastDecode);
+}
+
+- (id)initWithCoder:(NSCoder *)decoder
+{
+    self = [super init];
+
+    decodeInt(_encoder);
+
+    decodeInt(_qualityType);
+    decodeInt(_avgBitrate);
+    decodeDouble(_quality);
+
+    decodeInt(_frameRate);
+    decodeInt(_frameRateMode);
+
+    decodeBool(_twoPass);
+    decodeBool(_turboTwoPass);
+
+    decodeBool(_turboTwoPass);
+
+    decodeInt(_advancedOptions);
+    decodeObject(_preset);
+    decodeObject(_tune);
+    decodeObject(_profile);
+    decodeObject(_level);
+
+    decodeObject(_videoOptionExtra);
+
+    decodeBool(_fastDecode);
+
+    return self;
+}
+
 #pragma mark - Various conversion methods from dict/preset/queue/etc
 
 - (void)applySettingsFromPreset:(NSDictionary *)preset
index 14361e830d2aa8f5e3c210448cfa3cc29682d1d1..11b7933a461c407e2aa6e0b803185e4385cd7aa9 100644 (file)
                A98C29C21977B10600AF5DED /* HBLanguagesSelection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBLanguagesSelection.h; sourceTree = "<group>"; };
                A98C29C31977B10600AF5DED /* HBLanguagesSelection.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBLanguagesSelection.m; sourceTree = "<group>"; };
                A9935212196F38A70069C6B7 /* English */ = {isa = PBXFileReference; lastKnownFileType = file.xib; name = English; path = ChaptersTitles.xib; sourceTree = "<group>"; };
+               A9A2A77F1A4737DD006C219C /* NSCodingMacro.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = NSCodingMacro.h; sourceTree = "<group>"; };
                A9AA44781970664A00D7DEFC /* HBUtilities.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = HBUtilities.h; sourceTree = "<group>"; };
                A9AA44791970664A00D7DEFC /* HBUtilities.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = HBUtilities.m; sourceTree = "<group>"; };
                A9AA447B1970724D00D7DEFC /* HBAdvancedController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HBAdvancedController.h; sourceTree = "<group>"; };
                                A9D1E41618262364002F6424 /* HBPreviewGenerator.m */,
                                273F209714ADBE670021BE6D /* HBDVDDetector.h */,
                                273F209814ADBE670021BE6D /* HBDVDDetector.m */,
+                               A9A2A77F1A4737DD006C219C /* NSCodingMacro.h */,
                        );
                        name = Core;
                        sourceTree = "<group>";
diff --git a/macosx/NSCodingMacro.h b/macosx/NSCodingMacro.h
new file mode 100644 (file)
index 0000000..7cfbfc7
--- /dev/null
@@ -0,0 +1,23 @@
+/*  NSCodingMacro.h $
+
+ This file is part of the HandBrake source code.
+ Homepage: <http://handbrake.fr/>.
+ It may be used under the terms of the GNU General Public License. */
+
+#ifndef HandBrake_NSCodingMacro_h
+#define HandBrake_NSCodingMacro_h
+
+#define OBJC_STRINGIFY(x) @#x
+#define encodeInt(x) [coder encodeInt:x forKey:OBJC_STRINGIFY(x)]
+#define encodeInteger(x) [coder encodeInteger:x forKey:OBJC_STRINGIFY(x)]
+#define encodeBool(x) [coder encodeBool:x forKey:OBJC_STRINGIFY(x)]
+#define encodeDouble(x) [coder encodeDouble:x forKey:OBJC_STRINGIFY(x)]
+#define encodeObject(x) [coder encodeObject:x forKey:OBJC_STRINGIFY(x)]
+
+#define decodeInt(x) x = [decoder decodeIntForKey:OBJC_STRINGIFY(x)]
+#define decodeInteger(x) x = [decoder decodeIntegerForKey:OBJC_STRINGIFY(x)]
+#define decodeBool(x) x = [decoder decodeBoolForKey:OBJC_STRINGIFY(x)]
+#define decodeDouble(x) x = [decoder decodeDoubleForKey:OBJC_STRINGIFY(x)]
+#define decodeObject(x) x = [decoder decodeObjectForKey:OBJC_STRINGIFY(x)]
+
+#endif