summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--macosx/Base.lproj/HBFiltersViewController.xib136
-rw-r--r--macosx/Base.lproj/HBPictureViewController.xib1987
-rw-r--r--macosx/HBFilters.h3
-rw-r--r--macosx/HBFilters.m40
-rw-r--r--macosx/HBJob+HBJobConversion.m34
-rw-r--r--macosx/HBJob+UIAdditions.m11
-rw-r--r--macosx/HBPicture+UIAdditions.h11
-rw-r--r--macosx/HBPicture+UIAdditions.m44
-rw-r--r--macosx/HBPicture.h49
-rw-r--r--macosx/HBPicture.m457
-rw-r--r--macosx/HBPreviewGenerator.m8
11 files changed, 1879 insertions, 901 deletions
diff --git a/macosx/Base.lproj/HBFiltersViewController.xib b/macosx/Base.lproj/HBFiltersViewController.xib
index 037194ef4..39a685a3b 100644
--- a/macosx/Base.lproj/HBFiltersViewController.xib
+++ b/macosx/Base.lproj/HBFiltersViewController.xib
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.70" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17503.1" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.70"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17503.1"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -17,7 +17,7 @@
<rect key="frame" x="0.0" y="0.0" width="875" height="335"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
- <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="1a5-Yb-uwn">
+ <textField verticalHuggingPriority="750" verticalCompressionResistancePriority="751" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="1a5-Yb-uwn">
<rect key="frame" x="8" y="303" width="108" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Detelecine:" id="vTS-MJ-8nt">
<font key="font" metaFont="smallSystem"/>
@@ -45,7 +45,7 @@
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="DER-tS-cLx">
- <rect key="frame" x="119" y="299" width="136" height="22"/>
+ <rect key="frame" x="118" y="297" width="138" height="22"/>
<string key="toolTip">Detelecine removes comb artifacts that are the result of telecine, a process for converting film frame rates to television frame rates.</string>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="130" id="jiO-4I-seR"/>
@@ -72,7 +72,7 @@
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ipJ-z3-XnJ">
- <rect key="frame" x="332" y="300" width="180" height="19"/>
+ <rect key="frame" x="332" y="301" width="180" height="19"/>
<string key="toolTip">Custom Detelecine parameters.
Syntax: skip-left=s:skip-right=s:skip-top=s:skip-bottom=s:strict-breaks=s:plane=p:parity=p:disable=d
@@ -101,7 +101,7 @@ Default: skip-left=1:skip-right=1:skip-top=4:skip-bottom=4:plane=0</string>
</connections>
</textField>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="N8y-at-fwU">
- <rect key="frame" x="8" y="125" width="108" height="14"/>
+ <rect key="frame" x="8" y="149" width="108" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Deblock:" id="gKq-xF-AZE">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -111,17 +111,6 @@ Default: skip-left=1:skip-right=1:skip-top=4:skip-bottom=4:plane=0</string>
<binding destination="-2" name="textColor" keyPath="self.labelColor" id="m7I-VM-1ct"/>
</connections>
</textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="xGD-5W-CDB">
- <rect key="frame" x="8" y="170" width="108" height="14"/>
- <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Rotate:" id="1nr-nE-3a6">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="-2" name="textColor" keyPath="self.labelColor" id="IrA-1f-C6F"/>
- </connections>
- </textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="xKf-yr-nCk">
<rect key="frame" x="8" y="237" width="108" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Deinterlace:" id="VsK-mC-9Pj">
@@ -150,7 +139,7 @@ Default: skip-left=1:skip-right=1:skip-top=4:skip-bottom=4:plane=0</string>
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="xct-UB-bKm">
- <rect key="frame" x="119" y="233" width="136" height="22"/>
+ <rect key="frame" x="118" y="231" width="138" height="22"/>
<string key="toolTip">Deinterlace removes comb artifacts from the picture.
Yadif is a popular and fast deinterlacer.
@@ -180,7 +169,7 @@ Decomb switches between multiple interpolation algorithms for speed and quality.
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="r64-vI-ymx">
- <rect key="frame" x="539" y="234" width="180" height="19"/>
+ <rect key="frame" x="539" y="235" width="180" height="19"/>
<string key="toolTip">Custom Deinterlace parameters.
Yadif syntax: mode=m:parity=p
@@ -228,7 +217,7 @@ Decomb default: mode=7</string>
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6nG-zk-FMo">
- <rect key="frame" x="329" y="233" width="134" height="22"/>
+ <rect key="frame" x="328" y="231" width="136" height="22"/>
<string key="toolTip">Deinterlace filter preset.
Default is well balanced for speed and quality.
@@ -261,45 +250,6 @@ Bob attempts to better preserve motion for a slight penalty to perceived resolut
<outlet property="nextKeyView" destination="1XQ-md-5cQ" id="LJa-RO-dzf"/>
</connections>
</popUpButton>
- <popUpButton toolTip="Rotate the picture clockwise in 90 degree increments." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="dsH-ZQ-dBs">
- <rect key="frame" x="119" y="165" width="61" height="22"/>
- <popUpButtonCell key="cell" type="push" title="0°" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="eZj-V7-e0o" id="ee3-w2-XRX">
- <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
- <menu key="menu" id="HcI-ak-pPG">
- <items>
- <menuItem title="0°" state="on" id="eZj-V7-e0o"/>
- <menuItem title="90°" tag="90" id="OyA-fK-x19"/>
- <menuItem title="180°" tag="180" id="bEe-EV-Q73"/>
- <menuItem title="270°" tag="270" id="PY6-PT-J4z"/>
- </items>
- </menu>
- </popUpButtonCell>
- <connections>
- <accessibilityConnection property="title" destination="xGD-5W-CDB" id="xGe-Sz-aAs"/>
- <binding destination="-2" name="enabled" keyPath="self.filters" id="H8L-zc-UcO">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="selectedTag" keyPath="self.filters.rotate" id="tcT-dR-5Fw"/>
- </connections>
- </popUpButton>
- <button toolTip="Flips (mirrors) the picture on the horizontal axis." translatesAutoresizingMaskIntoConstraints="NO" id="IWV-25-FSC">
- <rect key="frame" x="182" y="168" width="41" height="18"/>
- <buttonCell key="cell" type="check" title="Flip" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="Tvl-40-1Tc">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <connections>
- <binding destination="-2" name="enabled" keyPath="self.filters" id="99W-3A-fiF">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.filters.flip" id="xdh-96-5s5"/>
- </connections>
- </button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="Mg1-Yq-F9S">
<rect key="frame" x="8" y="263" width="108" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Interlace Detection:" id="xHD-vC-ePQ">
@@ -328,7 +278,7 @@ Bob attempts to better preserve motion for a slight penalty to perceived resolut
</connections>
</textField>
<popUpButton toolTip="Interlace Detection, when enabled, allows the Deinterlace filter to only process interlaced video frames." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="IQG-Nn-HTb">
- <rect key="frame" x="119" y="259" width="136" height="22"/>
+ <rect key="frame" x="118" y="257" width="138" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="130" id="Kbc-Vj-81g"/>
</constraints>
@@ -354,7 +304,7 @@ Bob attempts to better preserve motion for a slight penalty to perceived resolut
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rPg-F2-gtl">
- <rect key="frame" x="332" y="260" width="180" height="19"/>
+ <rect key="frame" x="332" y="261" width="180" height="19"/>
<string key="toolTip">Custom Interlace Detection parameters.
Syntax: mode=m:spatial-metric=s:motion-thresh=m:spatial-thresh=s:filter-mode=f:block-thresh=b:block-width=b:block-height=b:disable=d
@@ -382,7 +332,7 @@ Default: mode=3:spatial-metric=2:motion-thresh=1:spatial-thresh=1:filter-mode=2:
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="ZIa-hr-ytV">
- <rect key="frame" x="8" y="72" width="108" height="14"/>
+ <rect key="frame" x="8" y="96" width="108" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Sharpen:" id="Gg8-cE-gaL">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -393,7 +343,7 @@ Default: mode=3:spatial-metric=2:motion-thresh=1:spatial-thresh=1:filter-mode=2:
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="pYa-Af-F47">
- <rect key="frame" x="119" y="68" width="136" height="22"/>
+ <rect key="frame" x="118" y="90" width="138" height="22"/>
<string key="toolTip">Sharpening enhances the appearance of detail, especially edges. Overly strong Sharpen settings may damage picture quality by creating ringing artifacts and enhancing noise, which can reduce compression efficiency.
Unsharp is a general purpose unsharp masking filter. It sharpens by blurring, then calculating the difference between the blurred picture and the original.
@@ -424,7 +374,7 @@ Lapsharp sharpens using convolution kernels approximating Laplacian edge filters
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="200" translatesAutoresizingMaskIntoConstraints="NO" id="cJD-9a-3Xh">
- <rect key="frame" x="278" y="72" width="48" height="14"/>
+ <rect key="frame" x="278" y="96" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Preset:" id="1zF-s5-Lic">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -440,7 +390,7 @@ Lapsharp sharpens using convolution kernels approximating Laplacian edge filters
</connections>
</textField>
<popUpButton toolTip="Sharpen filter preset. Sets the strength of the filter." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bac-vC-bD4">
- <rect key="frame" x="329" y="68" width="134" height="22"/>
+ <rect key="frame" x="328" y="90" width="136" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="lIB-9d-MoC"/>
</constraints>
@@ -477,7 +427,7 @@ Lapsharp sharpens using convolution kernels approximating Laplacian edge filters
</connections>
</textField>
<button toolTip="Grayscale removes the color component of the video. Often referred to as Black &amp; White video." translatesAutoresizingMaskIntoConstraints="NO" id="Psx-nN-XiT">
- <rect key="frame" x="119" y="191" width="74" height="18"/>
+ <rect key="frame" x="121" y="192" width="73" height="16"/>
<buttonCell key="cell" type="check" title="Grayscale" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="h7g-eE-vgv">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
@@ -492,7 +442,7 @@ Lapsharp sharpens using convolution kernels approximating Laplacian edge filters
</connections>
</button>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="9hM-c1-7hB">
- <rect key="frame" x="8" y="98" width="108" height="14"/>
+ <rect key="frame" x="8" y="122" width="108" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Denoise:" id="Rxe-Xm-vXj">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -503,7 +453,7 @@ Lapsharp sharpens using convolution kernels approximating Laplacian edge filters
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ins-7X-kbN">
- <rect key="frame" x="119" y="94" width="136" height="22"/>
+ <rect key="frame" x="118" y="116" width="138" height="22"/>
<string key="toolTip">Denoise reduces or removes the appearance of noise and grain. This can improve compression efficiency and create higher quality video at smaller file sizes. Overly strong Denoise settings may damage picture quality by discarding detail.
NLMeans is a high quality denoise filter with a cost to speed. Use where quality is more important than speed.
@@ -534,7 +484,7 @@ HQDN3D is an adaptive low-pass filter, faster than NLMeans but less effective at
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="1000" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="200" translatesAutoresizingMaskIntoConstraints="NO" id="k1h-3F-Xh0">
- <rect key="frame" x="278" y="98" width="48" height="14"/>
+ <rect key="frame" x="278" y="122" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Preset:" id="8am-ve-1Xl">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -550,7 +500,7 @@ HQDN3D is an adaptive low-pass filter, faster than NLMeans but less effective at
</connections>
</textField>
<popUpButton toolTip="Denoise filter preset. Sets the strength of the filter." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="cTy-PO-BSd">
- <rect key="frame" x="329" y="94" width="134" height="22"/>
+ <rect key="frame" x="328" y="116" width="136" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="128" id="Zly-jH-wkv"/>
</constraints>
@@ -576,7 +526,7 @@ HQDN3D is an adaptive low-pass filter, faster than NLMeans but less effective at
</connections>
</popUpButton>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="1XQ-md-5cQ">
- <rect key="frame" x="537" y="94" width="114" height="22"/>
+ <rect key="frame" x="536" y="116" width="116" height="22"/>
<string key="toolTip">Denoise tune. Further adjusts the Denoise preset to optimize settings for specific scenarios.
None uses the default preset settings.
@@ -616,7 +566,7 @@ Sprite is useful for 1-/4-/8-/16-bit 2-dimensional games. Sprite is not designed
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="O3I-G6-dfv">
- <rect key="frame" x="486" y="98" width="48" height="14"/>
+ <rect key="frame" x="486" y="122" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Custom:" id="KiY-kz-54k">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -632,7 +582,7 @@ Sprite is useful for 1-/4-/8-/16-bit 2-dimensional games. Sprite is not designed
</connections>
</textField>
<textField verticalHuggingPriority="750" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ZR9-YG-pfn">
- <rect key="frame" x="540" y="95" width="180" height="19"/>
+ <rect key="frame" x="540" y="120" width="180" height="19"/>
<string key="toolTip">Custom Denoise parameters.
NLMeans syntax: y-strength=y:y-origin-tune=y:y-patch-size=y:y-range=y:y-frame-count=y:y-prefilter=y:cb-strength=c:cb-origin-tune=c:cb-patch-size=c:cb-range=c:cb-frame-count=c:cb-prefilter=c:cr-strength=c:cr-origin-tune=c:cr-patch-size=c:cr-range=c:cr-frame-count=c:cr-prefilter=c:threads=t
@@ -664,7 +614,7 @@ HQDN3D default: y-spatial=3:cb-spatial=2:cr-spatial=2:y-temporal=2:cb-temporal=3
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="A6i-ft-02b">
- <rect key="frame" x="486" y="98" width="48" height="14"/>
+ <rect key="frame" x="486" y="122" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Tune:" id="tje-4P-jKt">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -680,7 +630,7 @@ HQDN3D default: y-spatial=3:cb-spatial=2:cr-spatial=2:y-temporal=2:cb-temporal=3
</connections>
</textField>
<popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6he-FC-h6S">
- <rect key="frame" x="537" y="68" width="114" height="22"/>
+ <rect key="frame" x="536" y="90" width="116" height="22"/>
<string key="toolTip">Sharpen tune. Further adjusts the Sharpen preset to optimize settings for specific scenarios.
None uses the default preset settings.
@@ -718,7 +668,7 @@ Lapsharp's Sprite tune is useful for 1-/4-/8-/16-bit 2-dimensional games. Sprite
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="8RO-OY-HTu">
- <rect key="frame" x="486" y="72" width="48" height="14"/>
+ <rect key="frame" x="486" y="96" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Custom:" id="oqh-kd-lEw">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -734,7 +684,7 @@ Lapsharp's Sprite tune is useful for 1-/4-/8-/16-bit 2-dimensional games. Sprite
</connections>
</textField>
<textField verticalHuggingPriority="750" preferredMaxLayoutWidth="150" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hht-Rt-VA0">
- <rect key="frame" x="540" y="69" width="180" height="19"/>
+ <rect key="frame" x="540" y="94" width="180" height="19"/>
<string key="toolTip">Custom Sharpen parameters.
Unsharp syntax: y-strength=y:y-size=y:cb-strength=c:cb-size=c:cr-strength=c:cr-size=c
@@ -766,7 +716,7 @@ Lapsharp default: y-strength=0.2:y-kernel=isolap:cb-strength=0.2:cb-kernel=isola
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="JrA-qB-1JA">
- <rect key="frame" x="486" y="72" width="48" height="14"/>
+ <rect key="frame" x="486" y="96" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Tune:" id="N6B-kA-kMA">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -782,7 +732,7 @@ Lapsharp default: y-strength=0.2:y-kernel=isolap:cb-strength=0.2:cb-kernel=isola
</connections>
</textField>
<popUpButton toolTip="Deblock reduces blocky artifacts caused by low quality video compression." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bz8-FC-vYp">
- <rect key="frame" x="119" y="121" width="136" height="22"/>
+ <rect key="frame" x="118" y="143" width="138" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="130" id="lTF-ns-c6C"/>
</constraints>
@@ -808,7 +758,7 @@ Lapsharp default: y-strength=0.2:y-kernel=isolap:cb-strength=0.2:cb-kernel=isola
</connections>
</popUpButton>
<popUpButton toolTip="Deblock tune. Further adjusts the Deblock preset to optimize settings for specific scenarios." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="bRd-Km-Wa8">
- <rect key="frame" x="329" y="121" width="114" height="22"/>
+ <rect key="frame" x="328" y="143" width="116" height="22"/>
<constraints>
<constraint firstAttribute="width" relation="greaterThanOrEqual" constant="108" id="Q7t-rC-L8C"/>
</constraints>
@@ -833,7 +783,7 @@ Lapsharp default: y-strength=0.2:y-kernel=isolap:cb-strength=0.2:cb-kernel=isola
</connections>
</popUpButton>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="dXf-9u-LSs">
- <rect key="frame" x="278" y="125" width="48" height="14"/>
+ <rect key="frame" x="278" y="149" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Custom:" id="xqk-dM-L3o">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -849,7 +799,7 @@ Lapsharp default: y-strength=0.2:y-kernel=isolap:cb-strength=0.2:cb-kernel=isola
</connections>
</textField>
<textField verticalHuggingPriority="750" preferredMaxLayoutWidth="150" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="DI9-Ed-acp">
- <rect key="frame" x="332" y="122" width="180" height="19"/>
+ <rect key="frame" x="332" y="147" width="180" height="19"/>
<string key="toolTip">Custom Deblock parameters.
strength=s:thresh=t:blocksize=b</string>
@@ -875,7 +825,7 @@ strength=s:thresh=t:blocksize=b</string>
</connections>
</textField>
<textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="150" translatesAutoresizingMaskIntoConstraints="NO" id="PIN-cz-nC7">
- <rect key="frame" x="278" y="125" width="48" height="14"/>
+ <rect key="frame" x="278" y="149" width="48" height="14"/>
<textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Tune:" id="ydN-tP-vpt">
<font key="font" metaFont="smallSystem"/>
<color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
@@ -892,13 +842,11 @@ strength=s:thresh=t:blocksize=b</string>
</textField>
</subviews>
<constraints>
- <constraint firstItem="DER-tS-cLx" firstAttribute="firstBaseline" secondItem="Mwp-XS-2tc" secondAttribute="firstBaseline" id="08i-jh-iiz"/>
- <constraint firstItem="xGD-5W-CDB" firstAttribute="firstBaseline" secondItem="dsH-ZQ-dBs" secondAttribute="firstBaseline" id="0PQ-DK-mtL"/>
<constraint firstItem="IQG-Nn-HTb" firstAttribute="firstBaseline" secondItem="RZE-gp-SB7" secondAttribute="firstBaseline" id="0dS-SS-8hV"/>
<constraint firstItem="O3I-G6-dfv" firstAttribute="width" secondItem="A6i-ft-02b" secondAttribute="width" id="1Bm-P8-EJ6"/>
<constraint firstItem="ZIa-hr-ytV" firstAttribute="leading" secondItem="9hM-c1-7hB" secondAttribute="leading" id="3in-pI-cO3"/>
- <constraint firstItem="DER-tS-cLx" firstAttribute="firstBaseline" secondItem="1a5-Yb-uwn" secondAttribute="firstBaseline" id="4Di-pC-1uQ"/>
<constraint firstItem="6nG-zk-FMo" firstAttribute="firstBaseline" secondItem="C83-aJ-v3x" secondAttribute="firstBaseline" id="4Gh-ni-riT"/>
+ <constraint firstItem="DER-tS-cLx" firstAttribute="firstBaseline" secondItem="Mwp-XS-2tc" secondAttribute="firstBaseline" id="4Ne-Es-RdZ"/>
<constraint firstItem="1a5-Yb-uwn" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="18" id="4v0-Rd-A4l"/>
<constraint firstItem="O3I-G6-dfv" firstAttribute="firstBaseline" secondItem="ZR9-YG-pfn" secondAttribute="firstBaseline" id="50f-Fo-ZOR"/>
<constraint firstItem="Mg1-Yq-F9S" firstAttribute="leading" secondItem="1a5-Yb-uwn" secondAttribute="leading" id="5BY-Ix-ea2"/>
@@ -906,9 +854,7 @@ strength=s:thresh=t:blocksize=b</string>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ipJ-z3-XnJ" secondAttribute="trailing" constant="16" id="5gz-m6-AVl"/>
<constraint firstItem="cTy-PO-BSd" firstAttribute="firstBaseline" secondItem="A6i-ft-02b" secondAttribute="firstBaseline" id="65k-wK-z3r"/>
<constraint firstItem="cTy-PO-BSd" firstAttribute="leading" secondItem="k1h-3F-Xh0" secondAttribute="trailing" constant="8" id="69x-s6-r1K"/>
- <constraint firstItem="IQG-Nn-HTb" firstAttribute="top" secondItem="DER-tS-cLx" secondAttribute="bottom" constant="22" id="7T7-Ny-qZI"/>
<constraint firstItem="r64-vI-ymx" firstAttribute="leading" secondItem="C83-aJ-v3x" secondAttribute="trailing" constant="7" id="7hY-RC-dVu"/>
- <constraint firstItem="N8y-at-fwU" firstAttribute="leading" secondItem="xGD-5W-CDB" secondAttribute="leading" id="8WH-Nn-XWx"/>
<constraint firstItem="JrA-qB-1JA" firstAttribute="leading" secondItem="bac-vC-bD4" secondAttribute="trailing" constant="28" id="A4F-M0-eAd"/>
<constraint firstItem="ZIa-hr-ytV" firstAttribute="firstBaseline" secondItem="pYa-Af-F47" secondAttribute="firstBaseline" id="AAF-Wa-WFA"/>
<constraint firstItem="PIN-cz-nC7" firstAttribute="leading" secondItem="bz8-FC-vYp" secondAttribute="trailing" constant="28" id="AEP-Mg-Q8f"/>
@@ -920,12 +866,12 @@ strength=s:thresh=t:blocksize=b</string>
<constraint firstItem="C83-aJ-v3x" firstAttribute="width" secondItem="O3I-G6-dfv" secondAttribute="width" id="EWH-EM-7gu"/>
<constraint firstItem="ns7-Ww-hmX" firstAttribute="firstBaseline" secondItem="Psx-nN-XiT" secondAttribute="firstBaseline" id="EWh-CY-9Rf"/>
<constraint firstItem="C83-aJ-v3x" firstAttribute="leading" secondItem="6nG-zk-FMo" secondAttribute="trailing" constant="28" id="F2f-25-6rO"/>
- <constraint firstItem="xGD-5W-CDB" firstAttribute="top" secondItem="ns7-Ww-hmX" secondAttribute="bottom" constant="9" id="FBZ-Gx-yrs"/>
<constraint firstItem="JrA-qB-1JA" firstAttribute="width" secondItem="8RO-OY-HTu" secondAttribute="width" id="FDo-AO-Miu"/>
<constraint firstItem="9hM-c1-7hB" firstAttribute="firstBaseline" secondItem="ins-7X-kbN" secondAttribute="firstBaseline" id="G4h-Af-D9U"/>
<constraint firstItem="xKf-yr-nCk" firstAttribute="leading" secondItem="Mg1-Yq-F9S" secondAttribute="leading" id="GGp-x0-Xh9"/>
<constraint firstItem="ZIa-hr-ytV" firstAttribute="width" secondItem="9hM-c1-7hB" secondAttribute="width" id="GcR-NY-3In"/>
<constraint firstItem="ins-7X-kbN" firstAttribute="leading" secondItem="9hM-c1-7hB" secondAttribute="trailing" constant="8" id="GpT-1T-5wU"/>
+ <constraint firstItem="N8y-at-fwU" firstAttribute="leading" secondItem="ns7-Ww-hmX" secondAttribute="leading" id="Gyr-Lm-634"/>
<constraint firstItem="xct-UB-bKm" firstAttribute="leading" secondItem="xKf-yr-nCk" secondAttribute="trailing" constant="8" symbolic="YES" id="Hhn-Wm-CKa"/>
<constraint firstItem="k1h-3F-Xh0" firstAttribute="firstBaseline" secondItem="cTy-PO-BSd" secondAttribute="firstBaseline" id="I9w-GF-tGe"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="6he-FC-h6S" secondAttribute="trailing" constant="20" symbolic="YES" id="IUp-GG-Vnj"/>
@@ -935,16 +881,13 @@ strength=s:thresh=t:blocksize=b</string>
<constraint firstItem="6he-FC-h6S" firstAttribute="leading" secondItem="JrA-qB-1JA" secondAttribute="trailing" constant="8" id="ONR-hc-66k"/>
<constraint firstItem="RZE-gp-SB7" firstAttribute="firstBaseline" secondItem="rPg-F2-gtl" secondAttribute="firstBaseline" id="OiR-HB-gIM"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Psx-nN-XiT" secondAttribute="trailing" constant="20" symbolic="YES" id="PFE-0C-68s"/>
- <constraint firstItem="xGD-5W-CDB" firstAttribute="width" secondItem="ns7-Ww-hmX" secondAttribute="width" id="PkL-mZ-nma"/>
- <constraint firstItem="dsH-ZQ-dBs" firstAttribute="firstBaseline" secondItem="IWV-25-FSC" secondAttribute="firstBaseline" id="Pl6-VG-ISW"/>
<constraint firstItem="dXf-9u-LSs" firstAttribute="firstBaseline" secondItem="DI9-Ed-acp" secondAttribute="firstBaseline" id="Rzb-Eo-Irg"/>
<constraint firstItem="pYa-Af-F47" firstAttribute="leading" secondItem="ZIa-hr-ytV" secondAttribute="trailing" constant="8" id="TEn-7K-rcJ"/>
+ <constraint firstItem="N8y-at-fwU" firstAttribute="top" secondItem="ns7-Ww-hmX" secondAttribute="bottom" constant="30" id="TSw-Be-f9f"/>
<constraint firstItem="Mg1-Yq-F9S" firstAttribute="firstBaseline" secondItem="IQG-Nn-HTb" secondAttribute="firstBaseline" id="TUA-D9-0hP"/>
<constraint firstItem="9hM-c1-7hB" firstAttribute="top" secondItem="N8y-at-fwU" secondAttribute="bottom" constant="13" id="TUK-Ba-Aer"/>
- <constraint firstItem="dsH-ZQ-dBs" firstAttribute="leading" secondItem="xGD-5W-CDB" secondAttribute="trailing" constant="8" id="TcK-B9-MAq"/>
<constraint firstItem="cTy-PO-BSd" firstAttribute="firstBaseline" secondItem="O3I-G6-dfv" secondAttribute="firstBaseline" id="TkU-Tx-eUQ"/>
<constraint firstItem="A6i-ft-02b" firstAttribute="firstBaseline" secondItem="1XQ-md-5cQ" secondAttribute="firstBaseline" id="Ttq-h5-KQ7"/>
- <constraint firstItem="N8y-at-fwU" firstAttribute="top" secondItem="xGD-5W-CDB" secondAttribute="bottom" constant="31" id="UaX-5V-3FY"/>
<constraint firstItem="bz8-FC-vYp" firstAttribute="firstBaseline" secondItem="PIN-cz-nC7" secondAttribute="firstBaseline" id="UeH-cp-uAL"/>
<constraint firstItem="ipJ-z3-XnJ" firstAttribute="leading" secondItem="Mwp-XS-2tc" secondAttribute="trailing" constant="8" id="Uep-dq-b95"/>
<constraint firstItem="PIN-cz-nC7" firstAttribute="width" secondItem="Mwp-XS-2tc" secondAttribute="width" id="V0I-kx-Uyo"/>
@@ -954,10 +897,10 @@ strength=s:thresh=t:blocksize=b</string>
<constraint firstItem="xKf-yr-nCk" firstAttribute="width" secondItem="Mg1-Yq-F9S" secondAttribute="width" id="VSJ-pe-iZe"/>
<constraint firstItem="bac-vC-bD4" firstAttribute="leading" secondItem="cJD-9a-3Xh" secondAttribute="trailing" constant="8" id="Vom-f3-0FR"/>
<constraint firstItem="xct-UB-bKm" firstAttribute="firstBaseline" secondItem="9Uz-PL-igg" secondAttribute="firstBaseline" id="W1H-eO-Cb6"/>
- <constraint firstItem="IWV-25-FSC" firstAttribute="leading" secondItem="dsH-ZQ-dBs" secondAttribute="trailing" constant="8" id="XDo-hq-wrs"/>
<constraint firstItem="xKf-yr-nCk" firstAttribute="firstBaseline" secondItem="xct-UB-bKm" secondAttribute="firstBaseline" id="XEq-wm-fhi"/>
<constraint firstItem="IQG-Nn-HTb" firstAttribute="leading" secondItem="Mg1-Yq-F9S" secondAttribute="trailing" constant="8" id="XHx-q2-MUy"/>
<constraint firstItem="9hM-c1-7hB" firstAttribute="leading" secondItem="N8y-at-fwU" secondAttribute="leading" id="Yil-hv-p4i"/>
+ <constraint firstItem="N8y-at-fwU" firstAttribute="width" secondItem="ns7-Ww-hmX" secondAttribute="width" id="ZP7-sR-7md"/>
<constraint firstItem="dXf-9u-LSs" firstAttribute="leading" secondItem="bz8-FC-vYp" secondAttribute="trailing" constant="28" id="a0a-wA-Fan"/>
<constraint firstItem="rPg-F2-gtl" firstAttribute="leading" secondItem="RZE-gp-SB7" secondAttribute="trailing" constant="8" id="aEN-SB-67H"/>
<constraint firstItem="bz8-FC-vYp" firstAttribute="firstBaseline" secondItem="N8y-at-fwU" secondAttribute="firstBaseline" id="aHL-a7-xlD"/>
@@ -967,12 +910,12 @@ strength=s:thresh=t:blocksize=b</string>
<constraint firstItem="Mwp-XS-2tc" firstAttribute="width" secondItem="RZE-gp-SB7" secondAttribute="width" id="bbp-0P-bnR"/>
<constraint firstItem="bac-vC-bD4" firstAttribute="firstBaseline" secondItem="8RO-OY-HTu" secondAttribute="firstBaseline" id="d6I-rq-5ys"/>
<constraint firstItem="C83-aJ-v3x" firstAttribute="firstBaseline" secondItem="r64-vI-ymx" secondAttribute="firstBaseline" id="e8e-r5-iiZ"/>
- <constraint firstItem="xGD-5W-CDB" firstAttribute="leading" secondItem="ns7-Ww-hmX" secondAttribute="leading" id="f1A-7C-Gcf"/>
<constraint firstItem="Psx-nN-XiT" firstAttribute="leading" secondItem="ns7-Ww-hmX" secondAttribute="trailing" constant="8" id="gGh-rk-4tF"/>
<constraint firstItem="9Uz-PL-igg" firstAttribute="firstBaseline" secondItem="6nG-zk-FMo" secondAttribute="firstBaseline" id="gI6-6V-Dh4"/>
<constraint firstItem="8RO-OY-HTu" firstAttribute="leading" secondItem="bac-vC-bD4" secondAttribute="trailing" constant="28" id="gg0-Yl-aFu"/>
<constraint firstItem="JrA-qB-1JA" firstAttribute="firstBaseline" secondItem="6he-FC-h6S" secondAttribute="firstBaseline" id="ghu-tS-XOy"/>
<constraint firstItem="ZR9-YG-pfn" firstAttribute="leading" secondItem="O3I-G6-dfv" secondAttribute="trailing" constant="8" id="gn5-IW-Afc"/>
+ <constraint firstItem="1a5-Yb-uwn" firstAttribute="firstBaseline" secondItem="DER-tS-cLx" secondAttribute="firstBaseline" id="gxp-Ie-JgE"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ZR9-YG-pfn" secondAttribute="trailing" constant="16" id="i1I-OX-yOq"/>
<constraint firstAttribute="bottom" relation="greaterThanOrEqual" secondItem="ZIa-hr-ytV" secondAttribute="bottom" constant="16" id="iwO-8g-aFZ"/>
<constraint firstItem="k1h-3F-Xh0" firstAttribute="width" secondItem="cJD-9a-3Xh" secondAttribute="width" id="jKz-cj-RcU"/>
@@ -989,15 +932,14 @@ strength=s:thresh=t:blocksize=b</string>
<constraint firstItem="bz8-FC-vYp" firstAttribute="leading" secondItem="N8y-at-fwU" secondAttribute="trailing" constant="8" id="px3-NP-9iI"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="r64-vI-ymx" secondAttribute="trailing" constant="16" id="qBi-eK-wC6"/>
<constraint firstItem="Mwp-XS-2tc" firstAttribute="leading" secondItem="DER-tS-cLx" secondAttribute="trailing" constant="28" id="qf0-yA-nvR"/>
+ <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="bRd-Km-Wa8" secondAttribute="trailing" constant="20" symbolic="YES" id="rGV-su-AmC"/>
<constraint firstItem="Mg1-Yq-F9S" firstAttribute="width" secondItem="1a5-Yb-uwn" secondAttribute="width" id="rW7-Mh-RBN"/>
<constraint firstItem="ZIa-hr-ytV" firstAttribute="top" secondItem="9hM-c1-7hB" secondAttribute="bottom" constant="12" id="sW6-LT-Sok"/>
- <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="IWV-25-FSC" secondAttribute="trailing" constant="20" symbolic="YES" id="scV-RG-eOF"/>
<constraint firstItem="cJD-9a-3Xh" firstAttribute="leading" secondItem="pYa-Af-F47" secondAttribute="trailing" constant="28" id="t7M-3E-QXI"/>
<constraint firstItem="9Uz-PL-igg" firstAttribute="width" secondItem="k1h-3F-Xh0" secondAttribute="width" id="tAb-z7-anc"/>
<constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="1XQ-md-5cQ" secondAttribute="trailing" constant="20" symbolic="YES" id="tIL-sP-iSX"/>
<constraint firstItem="pYa-Af-F47" firstAttribute="firstBaseline" secondItem="cJD-9a-3Xh" secondAttribute="firstBaseline" id="tPA-fg-FTO"/>
<constraint firstItem="xKf-yr-nCk" firstAttribute="top" secondItem="Mg1-Yq-F9S" secondAttribute="bottom" constant="12" id="u90-Po-dOZ"/>
- <constraint firstItem="N8y-at-fwU" firstAttribute="width" secondItem="xGD-5W-CDB" secondAttribute="width" id="v3e-nl-NT1"/>
<constraint firstItem="bRd-Km-Wa8" firstAttribute="leading" secondItem="PIN-cz-nC7" secondAttribute="trailing" constant="8" id="wvq-ZA-Jq2"/>
<constraint firstItem="6nG-zk-FMo" firstAttribute="leading" secondItem="9Uz-PL-igg" secondAttribute="trailing" constant="8" id="yfU-Fj-aGf"/>
<constraint firstItem="9hM-c1-7hB" firstAttribute="width" secondItem="N8y-at-fwU" secondAttribute="width" id="z2o-1a-JSL"/>
diff --git a/macosx/Base.lproj/HBPictureViewController.xib b/macosx/Base.lproj/HBPictureViewController.xib
index 2d4c519a0..3faa459c8 100644
--- a/macosx/Base.lproj/HBPictureViewController.xib
+++ b/macosx/Base.lproj/HBPictureViewController.xib
@@ -1,8 +1,8 @@
<?xml version="1.0" encoding="UTF-8"?>
-<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="14490.59" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
+<document type="com.apple.InterfaceBuilder3.Cocoa.XIB" version="3.0" toolsVersion="17503.1" targetRuntime="MacOSX.Cocoa" propertyAccessControl="none" useAutolayout="YES">
<dependencies>
<deployment identifier="macosx"/>
- <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="14490.59"/>
+ <plugIn identifier="com.apple.InterfaceBuilder.CocoaPlugin" version="17503.1"/>
<capability name="documents saved in the Xcode 8 format" minToolsVersion="8.0"/>
</dependencies>
<objects>
@@ -16,525 +16,765 @@
<customObject id="-1" userLabel="First Responder" customClass="FirstResponder"/>
<customObject id="-3" userLabel="Application" customClass="NSObject"/>
<customView id="Hz6-mo-xeY">
- <rect key="frame" x="0.0" y="0.0" width="875" height="335"/>
+ <rect key="frame" x="0.0" y="0.0" width="776" height="341"/>
<autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
<subviews>
- <customView translatesAutoresizingMaskIntoConstraints="NO" id="Mri-4y-8rX">
- <rect key="frame" x="296" y="184" width="281" height="155"/>
+ <stackView distribution="equalSpacing" orientation="horizontal" alignment="top" spacing="23" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="OFE-0G-Zqz">
+ <rect key="frame" x="20" y="154" width="736" height="167"/>
<subviews>
- <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Mke-9L-LvB">
- <rect key="frame" x="192" y="68" width="15" height="22"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="jWe-et-eOH">
- <font key="font" metaFont="smallSystem"/>
- </stepperCell>
- <accessibility description="Crop top"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="mtZ-Ty-n6s" id="HQZ-ek-iiD">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="mtZ-Ty-n6s">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropTop" previousBinding="4Z9-jd-EzH" id="c0Z-ZT-9Cf"/>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxTopCrop" id="4Z9-jd-EzH"/>
- </connections>
- </stepper>
- <matrix verticalHuggingPriority="750" allowsEmptySelection="NO" autosizesCells="NO" translatesAutoresizingMaskIntoConstraints="NO" id="RTr-3u-52l">
- <rect key="frame" x="76" y="96" width="205" height="43"/>
- <string key="toolTip">Cropping mode.
-
-Automatic detects and removes black borders from the video.
-
-Custom allows for manual settings.</string>
+ <stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zU5-gT-j2i">
+ <rect key="frame" x="0.0" y="39" width="222" height="128"/>
+ <subviews>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Uev-zj-FIR">
+ <rect key="frame" x="0.0" y="112" width="163" height="16"/>
+ <subviews>
+ <textField horizontalHuggingPriority="752" verticalHuggingPriority="750" horizontalCompressionResistancePriority="752" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="0rN-RP-Om4">
+ <rect key="frame" x="-2" y="2" width="56" height="14"/>
+ <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="right" title="Rotation:" id="vb2-DA-Pgr">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="2Ug-ef-N1t"/>
+ </connections>
+ </textField>
+ <stackView distribution="fill" orientation="horizontal" alignment="top" spacing="12" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="WTL-cc-yu9">
+ <rect key="frame" x="60" y="0.0" width="103" height="16"/>
+ <subviews>
+ <popUpButton toolTip="Rotate the picture clockwise in 90 degree increments." verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ffe-SL-kPm">
+ <rect key="frame" x="-4" y="-4" width="60" height="22"/>
+ <popUpButtonCell key="cell" type="push" title="0°" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="qsi-r7-kNQ" id="rYp-cI-T3D">
+ <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ <menu key="menu" id="9Va-7k-Mbw">
+ <items>
+ <menuItem title="0°" state="on" id="qsi-r7-kNQ"/>
+ <menuItem title="90°" tag="90" id="V1G-sQ-eqd"/>
+ <menuItem title="180°" tag="180" id="1zy-53-Bvd"/>
+ <menuItem title="270°" tag="270" id="tIU-4H-3Xm"/>
+ </items>
+ </menu>
+ </popUpButtonCell>
+ <connections>
+ <accessibilityConnection property="title" destination="0rN-RP-Om4" id="iR5-sy-qGz"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="bb9-f1-br5">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="selectedTag" keyPath="self.picture.rotate" id="E0m-Wq-BZi"/>
+ </connections>
+ </popUpButton>
+ <button toolTip="Flips (mirrors) the picture on the horizontal axis." translatesAutoresizingMaskIntoConstraints="NO" id="pdM-bf-meC">
+ <rect key="frame" x="63" y="1" width="40" height="16"/>
+ <buttonCell key="cell" type="check" title="Flip" bezelStyle="regularSquare" imagePosition="left" controlSize="small" state="on" inset="2" id="a6O-RP-1cw">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="9Pw-YK-WNR">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.flip" id="nL8-7C-ViZ"/>
+ </connections>
+ </button>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="ZkN-1w-lLe">
+ <rect key="frame" x="0.0" y="0.0" width="222" height="104"/>
+ <subviews>
+ <textField horizontalHuggingPriority="753" verticalHuggingPriority="750" horizontalCompressionResistancePriority="753" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="400" translatesAutoresizingMaskIntoConstraints="NO" id="Aea-Uc-JnZ">
+ <rect key="frame" x="-2" y="90" width="56" height="14"/>
+ <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="right" title="Cropping:" id="zsq-Le-41g">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="iFD-nI-C9u"/>
+ </connections>
+ </textField>
+ <stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="7Bc-mZ-CrZ">
+ <rect key="frame" x="60" y="0.0" width="162" height="104"/>
+ <subviews>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Pvq-R5-nb1">
+ <rect key="frame" x="-1" y="89.5" width="75" height="15"/>
+ <buttonCell key="cell" type="radio" title="Automatic" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="MF1-tQ-h6G">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="zrN-It-5vj">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.autocrop" id="dT5-bj-gI5"/>
+ </connections>
+ </button>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="D2o-1f-y4u">
+ <rect key="frame" x="-1" y="67.5" width="65" height="15"/>
+ <buttonCell key="cell" type="radio" title="Custom:" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="0Mh-nC-WXA">
+ <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ </buttonCell>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="wvs-z1-6z6">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.autocrop" id="lrY-RM-F3k">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </button>
+ <customView translatesAutoresizingMaskIntoConstraints="NO" id="xfh-Wp-ZQz">
+ <rect key="frame" x="0.0" y="0.0" width="162" height="60"/>
+ <subviews>
+ <textField toolTip="Left edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" id="LTu-ic-Ty9">
+ <rect key="frame" x="1" y="21" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="XZs-gj-hoo">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="WoC-YC-H5L"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop left"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="7NV-4H-eCu" id="oXG-X9-P7q">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="7NV-4H-eCu">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropLeft" id="2fq-yE-LSA">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <textField toolTip="Bottom edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" id="1Z0-JT-vst">
+ <rect key="frame" x="57" y="2" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="DzX-1f-HsP">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="r1c-KK-4uF"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop bottom"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="wVJ-Yz-azk" id="Gzx-Ql-84O">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="wVJ-Yz-azk">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropBottom" id="ob5-QF-mOC">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <textField toolTip="Right edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" id="wsq-TS-cC6">
+ <rect key="frame" x="113" y="21" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="CIG-PU-RMT">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="rtx-vd-c05"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop right"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="o5T-kF-JlS" id="XqO-Pq-WZZ">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="o5T-kF-JlS">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropRight" id="krD-da-wuz">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="Ddg-4D-el9">
+ <rect key="frame" x="148" y="18" width="15" height="23"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="QFM-0O-SjJ">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Crop right"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="qtl-2n-uKP" id="WyG-bu-8aC">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="qtl-2n-uKP">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropRight" previousBinding="X5t-bh-W3a" id="s5w-KS-LX0"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxRightCrop" id="X5t-bh-W3a"/>
+ </connections>
+ </stepper>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="Mke-9L-LvB">
+ <rect key="frame" x="92" y="38" width="15" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="jWe-et-eOH">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Crop top"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="mtZ-Ty-n6s" id="HQZ-ek-iiD">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="mtZ-Ty-n6s">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropTop" previousBinding="4Z9-jd-EzH" id="c0Z-ZT-9Cf"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxTopCrop" id="4Z9-jd-EzH"/>
+ </connections>
+ </stepper>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="r9l-cH-pFW">
+ <rect key="frame" x="36" y="18" width="15" height="23"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="Z4J-oE-seK">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="v"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="erl-nf-Xs5" id="UPJ-QD-Izo">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="erl-nf-Xs5">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropLeft" previousBinding="ygC-Mk-gae" id="YCc-wM-Iep"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxLeftCrop" id="ygC-Mk-gae"/>
+ </connections>
+ </stepper>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" id="6W6-RI-fBx">
+ <rect key="frame" x="92" y="-1" width="15" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="Fll-IT-6Ex">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Crop bottom"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="ZKT-as-B7p" id="UHe-hi-SJo">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="ZKT-as-B7p">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropBottom" previousBinding="9V7-cf-abT" id="oaG-Bl-ag8"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxBottomCrop" id="9V7-cf-abT"/>
+ </connections>
+ </stepper>
+ <textField toolTip="Top edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" id="41c-48-2XJ">
+ <rect key="frame" x="57" y="40" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMinX="YES" flexibleMaxY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="CZs-y7-1JV">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="FyD-ad-rqf"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop top"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="Pyj-gb-8gd" id="lb7-GI-AEb">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="Pyj-gb-8gd">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.cropTop" id="x0H-9t-WiF">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ </subviews>
+ <constraints>
+ <constraint firstAttribute="height" constant="60" id="KLa-lj-WRq"/>
+ <constraint firstAttribute="width" constant="162" id="fWY-zW-mQg"/>
+ </constraints>
+ </customView>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ </subviews>
<constraints>
- <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="205" id="nnb-NE-THM"/>
+ <constraint firstItem="Aea-Uc-JnZ" firstAttribute="width" secondItem="0rN-RP-Om4" secondAttribute="width" id="td2-F7-rj7"/>
</constraints>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- <size key="cellSize" width="205" height="20"/>
- <size key="intercellSpacing" width="2" height="3"/>
- <buttonCell key="prototype" type="radio" title="Radio" imagePosition="left" alignment="left" controlSize="small" inset="2" id="S7K-vF-t1n">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <cells>
- <column>
- <buttonCell type="radio" title="Automatic" imagePosition="left" alignment="left" controlSize="small" state="on" inset="2" id="b3y-yE-sYc">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <buttonCell type="radio" title="Custom:" imagePosition="left" alignment="left" controlSize="small" inset="2" id="zmf-MM-j1I">
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="3sU-eh-1ja">
+ <rect key="frame" x="245" y="0.0" width="252" height="167"/>
+ <subviews>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uO6-48-Dmb">
+ <rect key="frame" x="0.0" y="151" width="223" height="16"/>
+ <subviews>
+ <textField horizontalHuggingPriority="752" verticalHuggingPriority="750" horizontalCompressionResistancePriority="752" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="PJL-Y6-9ZV">
+ <rect key="frame" x="-2" y="2" width="92" height="14"/>
+ <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" alignment="right" title="Resolution Limit:" id="d0T-QG-WXU">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="sr7-jY-1tu"/>
+ </connections>
+ </textField>
+ <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="the-i1-S1D">
+ <rect key="frame" x="92" y="-4" width="135" height="22"/>
+ <popUpButtonCell key="cell" type="push" title="None" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="gWL-mx-RIK" id="pzu-rp-72l">
+ <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ <menu key="menu" id="0gK-D5-trU">
+ <items>
+ <menuItem title="None" state="on" id="gWL-mx-RIK"/>
+ <menuItem title="4320p 8K Ultra HD" tag="1" id="Vrx-BH-ry2"/>
+ <menuItem title="2160p 4K Ultra HD" tag="2" id="1Zm-mM-8Tb"/>
+ <menuItem title="1080p HD" tag="3" id="qzy-K8-2tY"/>
+ <menuItem title="720p HD" tag="4" id="Xao-1P-xPT"/>
+ <menuItem title="576p PAL SD" tag="5" id="yue-jq-T1X"/>
+ <menuItem title="480p NTSC SD" tag="6" id="21C-Hg-mk4"/>
+ <menuItem title="Custom" tag="7" id="Xun-U2-N6F"/>
+ </items>
+ </menu>
+ </popUpButtonCell>
+ <connections>
+ <binding destination="-2" name="selectedTag" keyPath="self.picture.resolutionLimitMode" id="rWA-EQ-pdm"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="Hqh-h4-HtI">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </popUpButton>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <stackView distribution="fill" orientation="horizontal" alignment="centerY" spacing="7" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="QW6-1e-ZMT">
+ <rect key="frame" x="96" y="124" width="128" height="19"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="NRy-vc-8qX">
+ <rect key="frame" x="0.0" y="0.0" width="54" height="19"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="54" id="gNB-FK-Qtf"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="7sC-hq-aeg">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="Vpt-IG-MaA"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="value" keyPath="self.picture.maxWidth" id="BIc-fq-9qJ"/>
+ </connections>
+ </textField>
+ <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="20" translatesAutoresizingMaskIntoConstraints="NO" id="who-FI-Crq">
+ <rect key="frame" x="59" y="3" width="10" height="14"/>
+ <textFieldCell key="cell" controlSize="small" enabled="NO" sendsActionOnEndEditing="YES" alignment="right" title="x" id="5Tj-xw-QuU">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FGm-oJ-FVW">
+ <rect key="frame" x="74" y="0.0" width="54" height="19"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="54" id="EEm-90-oEg"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="fUD-KJ-7OF">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="XiK-t7-aeD"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="value" keyPath="self.picture.maxHeight" id="TWm-Sy-xoq"/>
+ </connections>
+ </textField>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ <connections>
+ <binding destination="-2" name="hidden" keyPath="self.picture.customResolutionLimitEnabled" id="0Qi-HN-Rn7">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </stackView>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="9ZE-cV-x9d">
+ <rect key="frame" x="0.0" y="97" width="252" height="19"/>
+ <subviews>
+ <textField horizontalHuggingPriority="751" verticalHuggingPriority="750" horizontalCompressionResistancePriority="752" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="9oG-zm-Y0W">
+ <rect key="frame" x="-2" y="2" width="92" height="14"/>
+ <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="right" title="Storage Size:" id="L7V-2e-qf9">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="Epa-CR-f64"/>
+ <outlet property="nextKeyView" destination="9hH-As-JSa" id="XO3-A3-WZr"/>
+ </connections>
+ </textField>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" spacing="4" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8L9-DZ-yiv">
+ <rect key="frame" x="96" y="0.0" width="156" height="19"/>
+ <subviews>
+ <textField verticalHuggingPriority="751" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9hH-As-JSa">
+ <rect key="frame" x="0.0" y="0.0" width="56" height="19"/>
+ <string key="toolTip">Video storage width. This is the number of pixels wide to be encoded. Storage width may differ from display width depending on anamorphic settings.</string>
+ <constraints>
+ <constraint firstAttribute="width" constant="56" id="wh9-zM-6T3"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="fVv-0N-MQB">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="6jd-2b-RPM"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Storage Width"/>
+ <connections>
+ <accessibilityConnection property="title" destination="9oG-zm-Y0W" id="lTZ-u6-eUU"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="HGq-yI-bDz">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.width" id="Ws8-no-nOU">
+ <dictionary key="options">
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ <outlet property="nextKeyView" destination="FwZ-6T-zJe" id="FVz-Ke-KDt"/>
+ </connections>
+ </textField>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FwZ-6T-zJe">
+ <rect key="frame" x="58" y="-2" width="15" height="22"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="64" id="NP7-P2-Qga">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Storage Width"/>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="CiU-c8-Ky6">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxWidth" id="rzD-bT-FPn"/>
+ <binding destination="-2" name="value" keyPath="self.picture.width" previousBinding="rzD-bT-FPn" id="0U8-Dc-QvL"/>
+ <outlet property="nextKeyView" destination="Hkl-7Z-J2e" id="uHh-Lp-0GY"/>
+ </connections>
+ </stepper>
+ <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="20" translatesAutoresizingMaskIntoConstraints="NO" id="uqQ-uA-3xF">
+ <rect key="frame" x="73" y="2" width="10" height="14"/>
+ <textFieldCell key="cell" controlSize="small" enabled="NO" sendsActionOnEndEditing="YES" alignment="right" title="x" id="hN1-S9-zl8">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description=" "/>
+ </textField>
+ <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hkl-7Z-J2e">
+ <rect key="frame" x="85" y="0.0" width="56" height="19"/>
+ <string key="toolTip">Video storage height. This is the number of pixels tall to be encoded. Storage height may differ from display height depending on anamorphic settings.</string>
+ <constraints>
+ <constraint firstAttribute="width" constant="56" id="tPa-O8-VxI"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="ZHl-Y5-C5P">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Ts7-R5-Oye"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Storage Height"/>
+ <connections>
+ <accessibilityConnection property="title" destination="uqQ-uA-3xF" id="Cho-Kz-bXA"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="nha-oa-kQ8">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.height" id="SEV-F4-Swk">
+ <dictionary key="options">
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ <outlet property="nextKeyView" destination="2s0-5k-fjU" id="D8H-ff-R52"/>
+ </connections>
+ </textField>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2s0-5k-fjU">
+ <rect key="frame" x="143" y="-2" width="15" height="22"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="64" id="MwK-aS-Oaf">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Storage Height"/>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="wcZ-Lg-5Y2">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.height" previousBinding="yUT-oM-ZsK" id="kln-nB-kei"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxHeight" id="yUT-oM-ZsK"/>
+ </connections>
+ </stepper>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <button verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6G0-MW-iVa">
+ <rect key="frame" x="95" y="74" width="118" height="16"/>
+ <string key="toolTip">Keep Aspect Ratio maintains the original display aspect of the source. Disabling this may result in a stretched or squeezed picture.</string>
+ <buttonCell key="cell" type="check" title="Keep Aspect Ratio" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="hcF-CZ-p0E">
<behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
<font key="font" metaFont="smallSystem"/>
</buttonCell>
- </column>
- </cells>
- <connections>
- <accessibilityConnection property="title" destination="Bmd-c8-9hp" id="1MC-Bp-IrM"/>
- <binding destination="-2" name="enabled" keyPath="self.picture" id="aaX-en-7S9">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="selectedIndex" keyPath="self.picture.autocrop" id="0hd-Rk-0R0">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- </connections>
- </matrix>
- <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="r9l-cH-pFW">
- <rect key="frame" x="134" y="45" width="15" height="22"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="Z4J-oE-seK">
- <font key="font" metaFont="smallSystem"/>
- </stepperCell>
- <accessibility description="v"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="erl-nf-Xs5" id="UPJ-QD-Izo">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="erl-nf-Xs5">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropLeft" previousBinding="ygC-Mk-gae" id="YCc-wM-Iep"/>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxLeftCrop" id="ygC-Mk-gae"/>
- </connections>
- </stepper>
- <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="6W6-RI-fBx">
- <rect key="frame" x="192" y="22" width="15" height="22"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="Fll-IT-6Ex">
- <font key="font" metaFont="smallSystem"/>
- </stepperCell>
- <accessibility description="Crop bottom"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="ZKT-as-B7p" id="UHe-hi-SJo">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="ZKT-as-B7p">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropBottom" previousBinding="9V7-cf-abT" id="oaG-Bl-ag8"/>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxBottomCrop" id="9V7-cf-abT"/>
- </connections>
- </stepper>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="250" translatesAutoresizingMaskIntoConstraints="NO" id="Bmd-c8-9hp">
- <rect key="frame" x="18" y="123" width="56" height="14"/>
- <textFieldCell key="cell" sendsActionOnEndEditing="YES" alignment="right" title="Cropping:" id="haC-cO-jDm">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="-2" name="textColor" keyPath="self.labelColor" id="fkJ-hW-R19"/>
- </connections>
- </textField>
- <textField toolTip="Right edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="wsq-TS-cC6">
- <rect key="frame" x="213" y="47" width="36" height="19"/>
- <constraints>
- <constraint firstAttribute="width" constant="36" id="FKh-P6-rGY"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="CIG-PU-RMT">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Crop right"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="o5T-kF-JlS" id="XqO-Pq-WZZ">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="o5T-kF-JlS">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropRight" id="krD-da-wuz">
- <dictionary key="options">
- <string key="NSNullPlaceholder">0</string>
- <bool key="NSValidatesImmediately" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </textField>
- <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="Ddg-4D-el9">
- <rect key="frame" x="248" y="45" width="15" height="22"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="QFM-0O-SjJ">
- <font key="font" metaFont="smallSystem"/>
- </stepperCell>
- <accessibility description="Crop right"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="qtl-2n-uKP" id="WyG-bu-8aC">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="qtl-2n-uKP">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropRight" previousBinding="X5t-bh-W3a" id="s5w-KS-LX0"/>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxRightCrop" id="X5t-bh-W3a"/>
- </connections>
- </stepper>
- <textField toolTip="Bottom edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="1Z0-JT-vst">
- <rect key="frame" x="157" y="24" width="36" height="19"/>
- <constraints>
- <constraint firstAttribute="width" constant="36" id="3ia-1j-BcT"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="DzX-1f-HsP">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Crop bottom"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="wVJ-Yz-azk" id="Gzx-Ql-84O">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="wVJ-Yz-azk">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropBottom" id="ob5-QF-mOC">
- <dictionary key="options">
- <string key="NSNullPlaceholder">0</string>
- <bool key="NSValidatesImmediately" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </textField>
- <textField toolTip="Top edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="41c-48-2XJ">
- <rect key="frame" x="157" y="70" width="36" height="19"/>
- <constraints>
- <constraint firstAttribute="width" constant="36" id="iB8-cV-2Mf"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="CZs-y7-1JV">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Crop top"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="Pyj-gb-8gd" id="lb7-GI-AEb">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="Pyj-gb-8gd">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropTop" id="x0H-9t-WiF">
- <dictionary key="options">
- <string key="NSNullPlaceholder">0</string>
- <bool key="NSValidatesImmediately" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </textField>
- <textField toolTip="Left edge cropping amount in pixels." verticalHuggingPriority="750" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LTu-ic-Ty9">
- <rect key="frame" x="99" y="47" width="36" height="19"/>
- <constraints>
- <constraint firstAttribute="width" constant="36" id="g6w-uS-3jp"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="XZs-gj-hoo">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Crop left"/>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="7NV-4H-eCu" id="oXG-X9-P7q">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="enabled" keyPath="self.picture.autocrop" id="7NV-4H-eCu">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.cropLeft" id="2fq-yE-LSA">
- <dictionary key="options">
- <string key="NSNullPlaceholder">0</string>
- <bool key="NSValidatesImmediately" value="YES"/>
- </dictionary>
- </binding>
- </connections>
- </textField>
- </subviews>
- <constraints>
- <constraint firstItem="LTu-ic-Ty9" firstAttribute="leading" secondItem="Bmd-c8-9hp" secondAttribute="trailing" constant="27" id="1CD-SF-3ne"/>
- <constraint firstAttribute="trailing" secondItem="Mke-9L-LvB" secondAttribute="trailing" constant="76" id="28v-SD-i5m"/>
- <constraint firstItem="Bmd-c8-9hp" firstAttribute="leading" secondItem="Mri-4y-8rX" secondAttribute="leading" constant="20" id="2og-D9-eRi"/>
- <constraint firstItem="Bmd-c8-9hp" firstAttribute="top" secondItem="RTr-3u-52l" secondAttribute="top" constant="2" id="3Rp-09-iy5"/>
- <constraint firstAttribute="bottom" secondItem="1Z0-JT-vst" secondAttribute="bottom" constant="24" id="3uz-Kd-oJj"/>
- <constraint firstItem="Mke-9L-LvB" firstAttribute="leading" secondItem="41c-48-2XJ" secondAttribute="trailing" constant="1" id="8t6-SC-3I7"/>
- <constraint firstItem="1Z0-JT-vst" firstAttribute="leading" secondItem="41c-48-2XJ" secondAttribute="leading" id="DL3-J2-q8X"/>
- <constraint firstItem="Mke-9L-LvB" firstAttribute="centerY" secondItem="41c-48-2XJ" secondAttribute="centerY" id="EBx-Hx-m7A"/>
- <constraint firstItem="6W6-RI-fBx" firstAttribute="leading" secondItem="1Z0-JT-vst" secondAttribute="trailing" constant="1" id="Ig6-np-JIv"/>
- <constraint firstItem="Ddg-4D-el9" firstAttribute="leading" secondItem="wsq-TS-cC6" secondAttribute="trailing" constant="1" id="JUM-DW-Ax2"/>
- <constraint firstAttribute="trailing" secondItem="RTr-3u-52l" secondAttribute="trailing" id="Kmh-ck-ddn"/>
- <constraint firstItem="1Z0-JT-vst" firstAttribute="top" secondItem="LTu-ic-Ty9" secondAttribute="bottom" constant="4" id="LcO-SU-clL"/>
- <constraint firstItem="LTu-ic-Ty9" firstAttribute="top" secondItem="41c-48-2XJ" secondAttribute="bottom" constant="4" id="Oeg-QA-EpY"/>
- <constraint firstItem="wsq-TS-cC6" firstAttribute="baseline" secondItem="LTu-ic-Ty9" secondAttribute="baseline" id="TSx-tN-5sz"/>
- <constraint firstItem="r9l-cH-pFW" firstAttribute="leading" secondItem="LTu-ic-Ty9" secondAttribute="trailing" constant="1" id="UdC-WZ-Oq7"/>
- <constraint firstItem="6W6-RI-fBx" firstAttribute="centerY" secondItem="1Z0-JT-vst" secondAttribute="centerY" id="WEw-3s-Bak"/>
- <constraint firstItem="RTr-3u-52l" firstAttribute="leading" secondItem="Bmd-c8-9hp" secondAttribute="trailing" constant="4" id="WMd-GK-erY"/>
- <constraint firstItem="wsq-TS-cC6" firstAttribute="leading" secondItem="r9l-cH-pFW" secondAttribute="trailing" constant="66" id="a57-oU-J2m"/>
- <constraint firstItem="41c-48-2XJ" firstAttribute="top" secondItem="RTr-3u-52l" secondAttribute="bottom" constant="7" id="cRS-oF-I8k"/>
- <constraint firstAttribute="trailing" secondItem="Ddg-4D-el9" secondAttribute="trailing" constant="20" id="nJp-9K-MPE"/>
- <constraint firstItem="Bmd-c8-9hp" firstAttribute="top" secondItem="Mri-4y-8rX" secondAttribute="top" constant="18" id="sgt-V6-NJP"/>
- <constraint firstItem="r9l-cH-pFW" firstAttribute="centerY" secondItem="LTu-ic-Ty9" secondAttribute="centerY" id="uPP-7j-B8i"/>
- <constraint firstItem="wsq-TS-cC6" firstAttribute="centerY" secondItem="Ddg-4D-el9" secondAttribute="centerY" id="vYN-3g-xVL"/>
- </constraints>
- <accessibility description="Cropping"/>
- </customView>
- <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LWv-Y9-b0S">
- <rect key="frame" x="98" y="246" width="54" height="19"/>
- <string key="toolTip">Display width. This is the number of pixels wide your video will appear to be at its native resolution, and is the result of scaling the storage dimensions by the pixel aspect.</string>
- <constraints>
- <constraint firstAttribute="width" constant="54" id="9Cw-j4-ab2"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="XYg-xi-ExT">
- <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="jW5-N6-2cB"/>
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Display Width"/>
- <connections>
- <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="IKb-wD-kbq"/>
- <binding destination="-2" name="value" keyPath="self.picture.displayWidth" id="j71-Y5-RpA"/>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="IKb-wD-kbq" id="S0y-AY-6DT">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <outlet property="nextKeyView" destination="JC3-5O-BXA" id="oN1-b9-dyt"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nQe-Vq-Og2">
- <rect key="frame" x="180" y="246" width="54" height="19"/>
- <string key="toolTip">Display height. This is the number of pixels tall your video will appear to be at its native resolution, and is the result of scaling the storage dimensions by the pixel aspect.</string>
- <constraints>
- <constraint firstAttribute="width" constant="54" id="oRF-SD-pEX"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="0ho-7Y-adD">
- <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="gd7-JE-NQS"/>
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Display Height"/>
- <connections>
- <binding destination="-2" name="value" keyPath="self.picture.height" id="zm8-6D-NYY"/>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" id="8ix-ds-9fO">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <outlet property="nextKeyView" destination="JC3-5O-BXA" id="Ly3-4t-fIs"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="JC3-5O-BXA">
- <rect key="frame" x="98" y="219" width="54" height="19"/>
- <string key="toolTip">Pixel Aspect Ratio defines the shape of the storage pixels, or how to scale anamorphic video to create the correct display aspect and dimensions. Non-anamorphic video (1:1 PAR) is not scaled during playback.</string>
- <constraints>
- <constraint firstAttribute="width" constant="54" id="SMO-4B-I1G"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="w99-9Y-YN4">
- <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="ygx-uC-eb0"/>
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Pixel Aspect Ration Numerator"/>
- <connections>
- <accessibilityConnection property="title" destination="vOY-Ix-eha" id="Gac-U9-X6e"/>
- <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="IP2-ew-IdV"/>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="IP2-ew-IdV" id="lWR-hz-s9a">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.parWidth" id="GT0-y1-Tr0"/>
- <outlet property="nextKeyView" destination="rFi-0b-3BX" id="IBQ-5n-k0g"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="vOY-Ix-eha">
- <rect key="frame" x="18" y="222" width="74" height="14"/>
- <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="right" title="PAR:" id="gVj-RG-PcL">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="-2" name="textColor" keyPath="self.labelColor" id="VwV-bW-PBZ"/>
- </connections>
- </textField>
- <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="FwZ-6T-zJe">
- <rect key="frame" x="153" y="298" width="15" height="22"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="64" id="NP7-P2-Qga">
- <font key="font" metaFont="smallSystem"/>
- </stepperCell>
- <accessibility description="Storage Width"/>
- <connections>
- <binding destination="-2" name="enabled" keyPath="self.picture" id="CiU-c8-Ky6">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxWidth" id="rzD-bT-FPn"/>
- <binding destination="-2" name="value" keyPath="self.picture.width" previousBinding="rzD-bT-FPn" id="0U8-Dc-QvL"/>
- <outlet property="nextKeyView" destination="Hkl-7Z-J2e" id="uHh-Lp-0GY"/>
- </connections>
- </stepper>
- <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ns0-ar-I7c">
- <rect key="frame" x="95" y="156" width="56" height="22"/>
- <string key="toolTip">Ensure storage dimensions are multiples of this value. Higher values are only necessary for compatibility with certain legacy devices. Set to 2 unless you have a specific compatibility concern.</string>
- <constraints>
- <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="50" id="aED-d6-HLo"/>
- </constraints>
- <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" id="H0L-sP-ky8">
- <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
- <menu key="menu" title="OtherViews" id="und-OA-MLn">
- <items>
- <menuItem title="16" id="uTT-yC-MFJ"/>
- <menuItem title="8" id="Lbl-i2-YJg"/>
- <menuItem title="4" id="MgF-Gw-0fD"/>
- <menuItem title="2" id="OWb-6v-ggg"/>
- </items>
- </menu>
- </popUpButtonCell>
- <connections>
- <accessibilityConnection property="title" destination="tHY-g2-oWj" id="SpR-VQ-gX1"/>
- <binding destination="-2" name="enabled" keyPath="self.picture" id="haa-fs-kQM">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="selectedValue" keyPath="self.picture.modulus" id="lCQ-i3-hQ0"/>
- </connections>
- </popUpButton>
- <textField verticalHuggingPriority="751" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="9hH-As-JSa">
- <rect key="frame" x="98" y="300" width="56" height="19"/>
- <string key="toolTip">Video storage width. This is the number of pixels wide to be encoded. Storage width may differ from display width depending on anamorphic settings.</string>
- <constraints>
- <constraint firstAttribute="width" constant="56" id="ALR-s1-L2M"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="fVv-0N-MQB">
- <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="6jd-2b-RPM"/>
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Storage Width"/>
- <connections>
- <accessibilityConnection property="title" destination="9oG-zm-Y0W" id="lTZ-u6-eUU"/>
- <binding destination="-2" name="enabled" keyPath="self.picture" id="HGq-yI-bDz">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.width" id="Ws8-no-nOU">
- <dictionary key="options">
- <bool key="NSValidatesImmediately" value="YES"/>
- </dictionary>
- </binding>
- <outlet property="nextKeyView" destination="FwZ-6T-zJe" id="FVz-Ke-KDt"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="JBo-0E-AsU">
- <rect key="frame" x="18" y="187" width="74" height="14"/>
- <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Anamorphic:" id="8vS-Mw-bny">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="-2" name="textColor" keyPath="self.labelColor" id="MVb-7T-IbY"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="20" translatesAutoresizingMaskIntoConstraints="NO" id="uqQ-uA-3xF">
- <rect key="frame" x="173" y="303" width="10" height="14"/>
- <textFieldCell key="cell" controlSize="small" enabled="NO" sendsActionOnEndEditing="YES" alignment="right" title="x" id="hN1-S9-zl8">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description=" "/>
- </textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="20" translatesAutoresizingMaskIntoConstraints="NO" id="IVk-ye-fOe">
- <rect key="frame" x="161" y="249" width="10" height="14"/>
- <textFieldCell key="cell" controlSize="small" enabled="NO" sendsActionOnEndEditing="YES" alignment="right" title="x" id="uuL-JR-73C">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="20" translatesAutoresizingMaskIntoConstraints="NO" id="sKT-h2-mAF">
- <rect key="frame" x="161" y="222" width="10" height="14"/>
- <textFieldCell key="cell" controlSize="small" enabled="NO" sendsActionOnEndEditing="YES" alignment="right" title="x" id="cNr-IZ-H9j">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- </textField>
- <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="w1f-3S-up0">
- <rect key="frame" x="95" y="182" width="90" height="22"/>
- <string key="toolTip">Anamorphic allows arbitrary storage dimensions while preserving the original aspect during playback.
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="6Hg-VH-mTD" id="itG-f4-cLz">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.keepDisplayAspect" id="xNv-0O-F7Q"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspectEditable" id="6Hg-VH-mTD"/>
+ </connections>
+ </button>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="nkM-x5-0gf">
+ <rect key="frame" x="0.0" y="51" width="135" height="16"/>
+ <subviews>
+ <textField horizontalHuggingPriority="751" verticalHuggingPriority="750" horizontalCompressionResistancePriority="752" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="tHY-g2-oWj">
+ <rect key="frame" x="-2" y="2" width="92" height="14"/>
+ <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Modulus:" id="jXn-fo-wNU">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="fh5-vf-5Tr"/>
+ </connections>
+ </textField>
+ <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="ns0-ar-I7c">
+ <rect key="frame" x="92" y="-4" width="47" height="22"/>
+ <string key="toolTip">Ensure storage dimensions are multiples of this value. Higher values are only necessary for compatibility with certain legacy devices. Set to 2 unless you have a specific compatibility concern.</string>
+ <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" id="H0L-sP-ky8">
+ <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ <menu key="menu" title="OtherViews" id="und-OA-MLn">
+ <items>
+ <menuItem title="16" id="uTT-yC-MFJ"/>
+ <menuItem title="8" id="Lbl-i2-YJg"/>
+ <menuItem title="4" id="MgF-Gw-0fD"/>
+ <menuItem title="2" id="OWb-6v-ggg"/>
+ </items>
+ </menu>
+ </popUpButtonCell>
+ <connections>
+ <accessibilityConnection property="title" destination="tHY-g2-oWj" id="SpR-VQ-gX1"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="haa-fs-kQM">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="selectedValue" keyPath="self.picture.modulus" id="lCQ-i3-hQ0"/>
+ </connections>
+ </popUpButton>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="gTO-xc-fNR">
+ <rect key="frame" x="0.0" y="27" width="163" height="16"/>
+ <subviews>
+ <textField horizontalHuggingPriority="751" verticalHuggingPriority="750" horizontalCompressionResistancePriority="752" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="JBo-0E-AsU">
+ <rect key="frame" x="-2" y="2" width="92" height="14"/>
+ <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Anamorphic:" id="8vS-Mw-bny">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="MVb-7T-IbY"/>
+ </connections>
+ </textField>
+ <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="w1f-3S-up0">
+ <rect key="frame" x="92" y="-4" width="75" height="22"/>
+ <string key="toolTip">Anamorphic allows arbitrary storage dimensions while preserving the original aspect during playback.
Off disables anamorphic. Video storage dimensions and display dimensions will be identical. Only useful for compatibility with certain legacy devices.
@@ -543,209 +783,536 @@ Auto maximizes storage resolution while preserving the original display aspect r
Loose is similar to Auto, but attempts to preserve the storage aspect ratio. This can result in a slight storage resolution loss compared to Auto.
Custom allows manually setting all parameters. Useful for correcting an incorrect source display aspect and for professionals needing advanced control in post-production.</string>
- <constraints>
- <constraint firstAttribute="width" relation="greaterThanOrEqual" constant="84" id="avw-sh-hdv"/>
- </constraints>
- <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" id="vx1-8S-fyc">
- <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
- <font key="font" metaFont="smallSystem"/>
- <menu key="menu" title="OtherViews" id="qSV-uB-Iup">
- <items>
- <menuItem title="Off" id="1O3-th-4M5"/>
- <menuItem title="Auto" tag="4" id="JyN-AK-Hae"/>
- <menuItem title="Loose" tag="2" id="Uiw-Nb-u5X"/>
- <menuItem title="Custom" tag="3" id="f12-Dh-fDw"/>
- </items>
- </menu>
- </popUpButtonCell>
- <connections>
- <accessibilityConnection property="title" destination="JBo-0E-AsU" id="b1p-96-aIC"/>
- <binding destination="-2" name="enabled" keyPath="self.picture" id="RrW-07-vat">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="selectedTag" keyPath="self.picture.anamorphicMode" id="ugL-AX-WF2"/>
- </connections>
- </popUpButton>
- <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="tHY-g2-oWj">
- <rect key="frame" x="18" y="161" width="74" height="14"/>
- <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" sendsActionOnEndEditing="YES" alignment="right" title="Modulus:" id="jXn-fo-wNU">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="-2" name="textColor" keyPath="self.labelColor" id="fh5-vf-5Tr"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="9oG-zm-Y0W">
- <rect key="frame" x="18" y="303" width="74" height="14"/>
- <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="right" title="Storage Size:" id="L7V-2e-qf9">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="-2" name="textColor" keyPath="self.labelColor" id="Epa-CR-f64"/>
- <outlet property="nextKeyView" destination="9hH-As-JSa" id="XO3-A3-WZr"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="251" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="hei-Cd-vcN">
- <rect key="frame" x="18" y="249" width="74" height="14"/>
- <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="right" title="Display Size:" id="SPg-s0-Oh0">
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <connections>
- <binding destination="-2" name="textColor" keyPath="self.labelColor" id="Ghz-q6-1Y1"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="Hkl-7Z-J2e">
- <rect key="frame" x="187" y="300" width="56" height="19"/>
- <string key="toolTip">Video storage height. This is the number of pixels tall to be encoded. Storage height may differ from display height depending on anamorphic settings.</string>
- <constraints>
- <constraint firstAttribute="width" constant="56" id="DlL-Br-Zgg"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="ZHl-Y5-C5P">
- <numberFormatter key="formatter" formatterBehavior="default10_4" localizesFormat="NO" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Ts7-R5-Oye"/>
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Storage Height"/>
- <connections>
- <accessibilityConnection property="title" destination="uqQ-uA-3xF" id="Cho-Kz-bXA"/>
- <binding destination="-2" name="enabled" keyPath="self.picture" id="nha-oa-kQ8">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.height" id="SEV-F4-Swk">
- <dictionary key="options">
- <bool key="NSValidatesImmediately" value="YES"/>
- </dictionary>
- </binding>
- <outlet property="nextKeyView" destination="2s0-5k-fjU" id="D8H-ff-R52"/>
- </connections>
- </textField>
- <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="rFi-0b-3BX">
- <rect key="frame" x="180" y="219" width="54" height="19"/>
- <string key="toolTip">Pixel Aspect Ratio defines the shape of the storage pixels, or how to scale anamorphic video to create the correct display aspect and dimensions. Non-anamorphic video (1:1 PAR) is not scaled during playback.</string>
- <constraints>
- <constraint firstAttribute="width" constant="54" id="aaK-0g-Qkk"/>
- </constraints>
- <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="QSZ-2r-Ydl">
- <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="Tzx-xq-0zo"/>
- <font key="font" metaFont="smallSystem"/>
- <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
- <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
- </textFieldCell>
- <accessibility description="Pixel Aspect Ratio Denominator"/>
- <connections>
- <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="BXi-rt-OOn"/>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="BXi-rt-OOn" id="c3e-8E-4E8">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSNegateBoolean</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.parHeight" id="Bwn-Hk-CGG"/>
- </connections>
- </textField>
- <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="2s0-5k-fjU">
- <rect key="frame" x="242" y="298" width="15" height="22"/>
- <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="16" minValue="64" maxValue="59" doubleValue="64" id="MwK-aS-Oaf">
- <font key="font" metaFont="smallSystem"/>
- </stepperCell>
- <accessibility description="Storage Height"/>
- <connections>
- <binding destination="-2" name="enabled" keyPath="self.picture" id="wcZ-Lg-5Y2">
- <dictionary key="options">
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.height" previousBinding="yUT-oM-ZsK" id="kln-nB-kei"/>
- <binding destination="-2" name="maxValue" keyPath="self.picture.maxHeight" id="yUT-oM-ZsK"/>
- </connections>
- </stepper>
- <button translatesAutoresizingMaskIntoConstraints="NO" id="6G0-MW-iVa">
- <rect key="frame" x="95" y="278" width="119" height="18"/>
- <string key="toolTip">Keep Aspect Ratio maintains the original display aspect of the source. Disabling this may result in a stretched or squeezed picture.</string>
- <buttonCell key="cell" type="check" title="Keep Aspect Ratio" bezelStyle="regularSquare" imagePosition="left" alignment="left" controlSize="small" inset="2" id="hcF-CZ-p0E">
- <behavior key="behavior" changeContents="YES" doesNotDimImage="YES" lightByContents="YES"/>
- <font key="font" metaFont="smallSystem"/>
- </buttonCell>
- <connections>
- <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="6Hg-VH-mTD" id="itG-f4-cLz">
- <dictionary key="options">
- <integer key="NSMultipleValuesPlaceholder" value="-1"/>
- <integer key="NSNoSelectionPlaceholder" value="-1"/>
- <integer key="NSNotApplicablePlaceholder" value="-1"/>
- <integer key="NSNullPlaceholder" value="-1"/>
- <string key="NSValueTransformerName">NSIsNotNil</string>
- </dictionary>
- </binding>
- <binding destination="-2" name="value" keyPath="self.picture.keepDisplayAspect" id="xNv-0O-F7Q"/>
- <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspectEditable" id="6Hg-VH-mTD"/>
- </connections>
- </button>
+ <popUpButtonCell key="cell" type="push" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" borderStyle="borderAndBezel" inset="2" id="vx1-8S-fyc">
+ <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ <menu key="menu" title="OtherViews" id="qSV-uB-Iup">
+ <items>
+ <menuItem title="Off" id="1O3-th-4M5"/>
+ <menuItem title="Auto" tag="4" id="JyN-AK-Hae"/>
+ <menuItem title="Loose" tag="2" id="Uiw-Nb-u5X"/>
+ <menuItem title="Custom" tag="3" id="f12-Dh-fDw"/>
+ </items>
+ </menu>
+ </popUpButtonCell>
+ <connections>
+ <accessibilityConnection property="title" destination="JBo-0E-AsU" id="b1p-96-aIC"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="RrW-07-vat">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="selectedTag" keyPath="self.picture.anamorphicMode" id="ugL-AX-WF2"/>
+ </connections>
+ </popUpButton>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="Lle-QN-4aa">
+ <rect key="frame" x="0.0" y="0.0" width="222" height="19"/>
+ <subviews>
+ <textField horizontalHuggingPriority="751" verticalHuggingPriority="750" horizontalCompressionResistancePriority="752" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="300" translatesAutoresizingMaskIntoConstraints="NO" id="hei-Cd-vcN">
+ <rect key="frame" x="-2" y="2" width="92" height="14"/>
+ <textFieldCell key="cell" controlSize="small" sendsActionOnEndEditing="YES" alignment="right" title="Display Size:" id="SPg-s0-Oh0">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="Ghz-q6-1Y1"/>
+ </connections>
+ </textField>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" spacing="6" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="8Jh-a4-mTP">
+ <rect key="frame" x="96" y="0.0" width="126" height="19"/>
+ <subviews>
+ <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="LWv-Y9-b0S">
+ <rect key="frame" x="0.0" y="0.0" width="54" height="19"/>
+ <string key="toolTip">Display width. This is the number of pixels wide your video will appear to be at its native resolution, and is the result of scaling the storage dimensions by the pixel aspect.</string>
+ <constraints>
+ <constraint firstAttribute="width" constant="54" id="vO5-oD-AgX"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="XYg-xi-ExT">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="jW5-N6-2cB"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Display Width"/>
+ <connections>
+ <binding destination="-2" name="editable" keyPath="self.picture.customAnamorphicEnabled" id="IKb-wD-kbq"/>
+ <binding destination="-2" name="value" keyPath="self.picture.displayWidth" id="j71-Y5-RpA"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" previousBinding="IKb-wD-kbq" id="S0y-AY-6DT">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <textField verticalHuggingPriority="750" horizontalCompressionResistancePriority="250" allowsCharacterPickerTouchBarItem="YES" preferredMaxLayoutWidth="20" translatesAutoresizingMaskIntoConstraints="NO" id="IVk-ye-fOe">
+ <rect key="frame" x="58" y="2" width="10" height="14"/>
+ <textFieldCell key="cell" controlSize="small" enabled="NO" sendsActionOnEndEditing="YES" alignment="right" title="x" id="uuL-JR-73C">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="controlColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ </textField>
+ <textField verticalHuggingPriority="750" preferredMaxLayoutWidth="200" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="nQe-Vq-Og2">
+ <rect key="frame" x="72" y="0.0" width="54" height="19"/>
+ <string key="toolTip">Display height. This is the number of pixels tall your video will appear to be at its native resolution, and is the result of scaling the storage dimensions by the pixel aspect.</string>
+ <constraints>
+ <constraint firstAttribute="width" constant="54" id="Oyt-9j-v6B"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="0ho-7Y-adD">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" minimumIntegerDigits="0" maximumIntegerDigits="42" id="gd7-JE-NQS"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="textColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Display Height"/>
+ <connections>
+ <binding destination="-2" name="value" keyPath="self.picture.height" id="zm8-6D-NYY"/>
+ <binding destination="-2" name="enabled" keyPath="self.picture.keepDisplayAspect" id="8ix-ds-9fO">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ </subviews>
+ <constraints>
+ <constraint firstItem="tHY-g2-oWj" firstAttribute="width" secondItem="JBo-0E-AsU" secondAttribute="width" id="6lD-aK-oFZ"/>
+ <constraint firstItem="PJL-Y6-9ZV" firstAttribute="width" secondItem="9oG-zm-Y0W" secondAttribute="width" id="AUU-G1-gDf"/>
+ <constraint firstItem="9oG-zm-Y0W" firstAttribute="width" secondItem="tHY-g2-oWj" secondAttribute="width" id="h5I-0o-EV0"/>
+ <constraint firstItem="JBo-0E-AsU" firstAttribute="width" secondItem="hei-Cd-vcN" secondAttribute="width" id="lic-qU-sk5"/>
+ <constraint firstItem="QW6-1e-ZMT" firstAttribute="leading" secondItem="the-i1-S1D" secondAttribute="leading" id="npA-3w-7jD"/>
+ <constraint firstItem="6G0-MW-iVa" firstAttribute="leading" secondItem="9oG-zm-Y0W" secondAttribute="trailing" constant="8" id="pct-5r-gab"/>
+ </constraints>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <stackView distribution="fill" orientation="vertical" alignment="leading" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="EGb-Zz-WQd">
+ <rect key="frame" x="520" y="32" width="216" height="135"/>
+ <subviews>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="i16-mF-pVp">
+ <rect key="frame" x="0.0" y="119" width="195" height="16"/>
+ <subviews>
+ <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="250" translatesAutoresizingMaskIntoConstraints="NO" id="omM-pe-wBc">
+ <rect key="frame" x="-2" y="2" width="50" height="14"/>
+ <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" alignment="right" title="Padding:" id="iqM-GW-fCe">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="bmp-ED-1qJ"/>
+ </connections>
+ </textField>
+ <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="vKr-fn-Ujh">
+ <rect key="frame" x="50" y="-4" width="149" height="22"/>
+ <popUpButtonCell key="cell" type="push" title="None" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="6Qy-ik-hiE" id="pIS-xy-kBb">
+ <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ <menu key="menu" id="whl-q2-Xhg">
+ <items>
+ <menuItem title="None" state="on" id="6Qy-ik-hiE"/>
+ <menuItem title="Fill (Surround)" tag="1" id="N5d-nG-TZV"/>
+ <menuItem title="Fill Height (Letterbox)" tag="2" id="p7U-Ee-kt4"/>
+ <menuItem title="Fill Width (Pillarbox)" tag="3" id="W5p-nd-4WK"/>
+ <menuItem title="Custom" tag="4" id="owa-gb-koC"/>
+ </items>
+ </menu>
+ </popUpButtonCell>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="qVL-Iz-Eng">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="selectedTag" keyPath="self.picture.paddingMode" id="yfL-eb-CI7"/>
+ </connections>
+ </popUpButton>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <customView translatesAutoresizingMaskIntoConstraints="NO" id="OHL-2S-XXO">
+ <rect key="frame" x="54" y="51" width="162" height="60"/>
+ <subviews>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="09f-sT-7la">
+ <rect key="frame" x="92" y="38" width="15" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="atZ-cf-YyH">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Crop top"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="N8A-F4-7bg" id="SjJ-2L-8qg">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="N8A-F4-7bg"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxTopPadding" id="0Ue-21-yg9"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingTop" previousBinding="0Ue-21-yg9" id="Fh6-i2-D7o"/>
+ </connections>
+ </stepper>
+ <textField toolTip="Top edge cropping amount in pixels." verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="6Jp-gt-DbX">
+ <rect key="frame" x="57" y="40" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="0yJ-2J-ept">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="P5C-Bq-g5Y"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop top"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="G8T-un-iNV" id="dMy-dF-OgT">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="G8T-un-iNV"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingTop" id="1yF-dh-GYw">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <textField toolTip="Bottom edge cropping amount in pixels." verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="WfM-tx-rC5">
+ <rect key="frame" x="57" y="2" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="Wfu-ZW-M6N">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="87o-Sq-Vz0"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop bottom"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="wg5-IO-SPl" id="zn2-0d-8Hg">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="wg5-IO-SPl"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingBottom" id="S29-WR-idr">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <textField toolTip="Right edge cropping amount in pixels." verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="ck0-Gu-lGg">
+ <rect key="frame" x="113" y="21" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="TIQ-pu-KHa">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="2oO-Js-S4B"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop right"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="Eev-Ta-QyS" id="XAB-2Q-0y9">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="Eev-Ta-QyS"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingRight" id="fNq-Nm-ba8">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="iZc-Ks-efB">
+ <rect key="frame" x="36" y="19" width="15" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="Rzf-mS-h9z">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="v"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="WJd-cO-An1" id="Hgw-OX-jVX">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="WJd-cO-An1"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxRightPadding" id="Wuh-bv-zBN"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingLeft" previousBinding="Wuh-bv-zBN" id="EtJ-Yg-edZ"/>
+ </connections>
+ </stepper>
+ <textField toolTip="Left edge cropping amount in pixels." verticalHuggingPriority="750" fixedFrame="YES" preferredMaxLayoutWidth="36" textCompletion="NO" translatesAutoresizingMaskIntoConstraints="NO" id="l2V-GK-BgU">
+ <rect key="frame" x="1" y="21" width="36" height="19"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" state="on" borderStyle="bezel" alignment="left" drawsBackground="YES" id="iYd-5t-kFE">
+ <numberFormatter key="formatter" formatterBehavior="default10_4" usesGroupingSeparator="NO" formatWidth="-1" groupingSize="0" minimumIntegerDigits="1" maximumIntegerDigits="42" id="qgq-Hw-brX"/>
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <accessibility description="Crop left"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="gqZ-hT-AOC" id="ikL-R1-v3s">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="gqZ-hT-AOC"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingLeft" id="axd-ol-uoX">
+ <dictionary key="options">
+ <string key="NSNullPlaceholder">0</string>
+ <bool key="NSValidatesImmediately" value="YES"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </textField>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="uoH-Hv-lNp">
+ <rect key="frame" x="148" y="19" width="15" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="xS2-KN-fds">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Crop right"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="I7b-pp-RRE" id="xDK-UI-pnE">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="I7b-pp-RRE"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxLeftPadding" id="rzI-fx-xqC"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingRight" previousBinding="rzI-fx-xqC" id="cNM-mb-52I"/>
+ </connections>
+ </stepper>
+ <stepper horizontalHuggingPriority="750" verticalHuggingPriority="750" fixedFrame="YES" translatesAutoresizingMaskIntoConstraints="NO" id="zVm-0W-Jxg">
+ <rect key="frame" x="92" y="0.0" width="15" height="22"/>
+ <autoresizingMask key="autoresizingMask" flexibleMaxX="YES" flexibleMinY="YES"/>
+ <stepperCell key="cell" controlSize="small" continuous="YES" alignment="left" increment="2" maxValue="59" id="tcI-lL-sqJ">
+ <font key="font" metaFont="smallSystem"/>
+ </stepperCell>
+ <accessibility description="Crop bottom"/>
+ <connections>
+ <binding destination="-2" name="enabled2" keyPath="self.picture" previousBinding="fZW-aV-Qw9" id="2gQ-R1-qMP">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="enabled" keyPath="self.picture.customPaddingEnabled" id="fZW-aV-Qw9"/>
+ <binding destination="-2" name="maxValue" keyPath="self.picture.maxBottomPadding" id="nh2-GD-4d4"/>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingBottom" previousBinding="nh2-GD-4d4" id="YP4-zx-aYV"/>
+ </connections>
+ </stepper>
+ </subviews>
+ <constraints>
+ <constraint firstAttribute="height" constant="60" id="Cfe-bp-87s"/>
+ <constraint firstAttribute="width" constant="162" id="a0u-Rp-4fD"/>
+ </constraints>
+ </customView>
+ <stackView distribution="fill" orientation="horizontal" alignment="firstBaseline" horizontalStackHuggingPriority="249.99998474121094" verticalStackHuggingPriority="249.99998474121094" detachesHiddenViews="YES" translatesAutoresizingMaskIntoConstraints="NO" id="65d-Xd-JdE">
+ <rect key="frame" x="0.0" y="27" width="121" height="16"/>
+ <subviews>
+ <textField horizontalHuggingPriority="251" verticalHuggingPriority="750" preferredMaxLayoutWidth="250" translatesAutoresizingMaskIntoConstraints="NO" id="kJM-a0-qcw">
+ <rect key="frame" x="-2" y="2" width="50" height="14"/>
+ <textFieldCell key="cell" controlSize="small" lineBreakMode="clipping" alignment="right" title="Color:" id="OCX-n7-THw">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="labelColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="textColor" keyPath="self.labelColor" id="hpx-il-Wvu"/>
+ </connections>
+ </textField>
+ <popUpButton verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="BjH-qa-mJM">
+ <rect key="frame" x="50" y="-4" width="75" height="22"/>
+ <popUpButtonCell key="cell" type="push" title="Black" bezelStyle="rounded" alignment="left" controlSize="small" lineBreakMode="truncatingTail" state="on" borderStyle="borderAndBezel" imageScaling="proportionallyDown" inset="2" selectedItem="EM5-tR-x3U" id="5s0-hb-jQV">
+ <behavior key="behavior" lightByBackground="YES" lightByGray="YES"/>
+ <font key="font" metaFont="smallSystem"/>
+ <menu key="menu" id="fl4-RH-rr1">
+ <items>
+ <menuItem title="Black" state="on" id="EM5-tR-x3U"/>
+ <menuItem title="White" tag="1" id="pWs-NL-FVO"/>
+ <menuItem title="Custom" tag="2" id="vzz-ej-1nx"/>
+ </items>
+ </menu>
+ </popUpButtonCell>
+ <connections>
+ <binding destination="-2" name="enabled" keyPath="self.picture" id="0dP-gX-cK8">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSIsNotNil</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="selectedTag" keyPath="self.picture.paddingColorMode" id="Y11-dA-0R2"/>
+ <binding destination="-2" name="enabled2" keyPath="self.picture.paddingMode" previousBinding="0dP-gX-cK8" id="bQ6-yw-bgv">
+ <dictionary key="options">
+ <integer key="NSMultipleValuesPlaceholder" value="-1"/>
+ <integer key="NSNoSelectionPlaceholder" value="-1"/>
+ <integer key="NSNotApplicablePlaceholder" value="-1"/>
+ <integer key="NSNullPlaceholder" value="-1"/>
+ </dictionary>
+ </binding>
+ </connections>
+ </popUpButton>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ <textField verticalHuggingPriority="750" translatesAutoresizingMaskIntoConstraints="NO" id="aby-WS-tzS">
+ <rect key="frame" x="54" y="0.0" width="86" height="19"/>
+ <constraints>
+ <constraint firstAttribute="width" constant="86" id="6fv-RG-oTt"/>
+ </constraints>
+ <textFieldCell key="cell" controlSize="small" scrollable="YES" lineBreakMode="clipping" selectable="YES" editable="YES" sendsActionOnEndEditing="YES" borderStyle="bezel" drawsBackground="YES" id="dDb-IZ-euS">
+ <font key="font" metaFont="smallSystem"/>
+ <color key="textColor" name="controlTextColor" catalog="System" colorSpace="catalog"/>
+ <color key="backgroundColor" name="textBackgroundColor" catalog="System" colorSpace="catalog"/>
+ </textFieldCell>
+ <connections>
+ <binding destination="-2" name="hidden" keyPath="self.picture.customPaddingColorEnabled" id="4oM-Th-Nmm">
+ <dictionary key="options">
+ <string key="NSValueTransformerName">NSNegateBoolean</string>
+ </dictionary>
+ </binding>
+ <binding destination="-2" name="value" keyPath="self.picture.paddingColorCustom" id="5Q2-nr-NfY"/>
+ </connections>
+ </textField>
+ </subviews>
+ <constraints>
+ <constraint firstItem="OHL-2S-XXO" firstAttribute="leading" secondItem="omM-pe-wBc" secondAttribute="trailing" constant="8" id="h9O-n8-r22"/>
+ <constraint firstItem="aby-WS-tzS" firstAttribute="leading" secondItem="BjH-qa-mJM" secondAttribute="leading" id="hfo-Oq-tlg"/>
+ <constraint firstItem="omM-pe-wBc" firstAttribute="width" secondItem="kJM-a0-qcw" secondAttribute="width" id="zHE-aJ-LPo"/>
+ </constraints>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
+ </subviews>
+ <visibilityPriorities>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ <integer value="1000"/>
+ </visibilityPriorities>
+ <customSpacing>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ <real value="3.4028234663852886e+38"/>
+ </customSpacing>
+ </stackView>
</subviews>
<constraints>
- <constraint firstItem="hei-Cd-vcN" firstAttribute="leading" secondItem="9oG-zm-Y0W" secondAttribute="leading" id="3w5-XP-fGc"/>
- <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="ns0-ar-I7c" secondAttribute="trailing" constant="20" symbolic="YES" id="4d7-AW-HE0"/>
- <constraint firstItem="IVk-ye-fOe" firstAttribute="leading" secondItem="LWv-Y9-b0S" secondAttribute="trailing" constant="11" id="5CN-RX-tbh"/>
- <constraint firstItem="FwZ-6T-zJe" firstAttribute="centerY" secondItem="uqQ-uA-3xF" secondAttribute="centerY" id="5Xb-UM-UVq"/>
- <constraint firstItem="Mri-4y-8rX" firstAttribute="leading" secondItem="2s0-5k-fjU" secondAttribute="trailing" constant="41" id="7Fu-rw-NQ5"/>
- <constraint firstItem="w1f-3S-up0" firstAttribute="leading" secondItem="JBo-0E-AsU" secondAttribute="trailing" constant="8" id="7Ui-hg-NUd"/>
- <constraint firstItem="9oG-zm-Y0W" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" id="8y0-eK-p1d"/>
- <constraint firstItem="nQe-Vq-Og2" firstAttribute="baseline" secondItem="IVk-ye-fOe" secondAttribute="baseline" id="A1k-oZ-jxT"/>
- <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="Mri-4y-8rX" secondAttribute="trailing" constant="20" symbolic="YES" id="A8h-Xo-Yf7"/>
- <constraint firstItem="vOY-Ix-eha" firstAttribute="baseline" secondItem="JC3-5O-BXA" secondAttribute="baseline" id="AHl-Mc-RL4"/>
- <constraint firstItem="vOY-Ix-eha" firstAttribute="leading" secondItem="hei-Cd-vcN" secondAttribute="leading" id="CAl-vA-hzG"/>
- <constraint firstItem="hei-Cd-vcN" firstAttribute="width" secondItem="9oG-zm-Y0W" secondAttribute="width" id="CnQ-29-ukc"/>
- <constraint firstItem="ns0-ar-I7c" firstAttribute="top" secondItem="w1f-3S-up0" secondAttribute="bottom" constant="8" id="D8p-hR-m8g"/>
- <constraint firstItem="rFi-0b-3BX" firstAttribute="baseline" secondItem="sKT-h2-mAF" secondAttribute="baseline" id="Ddc-yP-13V"/>
- <constraint firstItem="9oG-zm-Y0W" firstAttribute="baseline" secondItem="9hH-As-JSa" secondAttribute="baseline" id="FuM-gJ-Ws1"/>
- <constraint firstItem="LWv-Y9-b0S" firstAttribute="leading" secondItem="hei-Cd-vcN" secondAttribute="trailing" constant="8" id="JgQ-R2-S4d"/>
- <constraint firstItem="sKT-h2-mAF" firstAttribute="leading" secondItem="JC3-5O-BXA" secondAttribute="trailing" constant="11" id="L9V-AS-0qe"/>
- <constraint firstItem="uqQ-uA-3xF" firstAttribute="baseline" secondItem="Hkl-7Z-J2e" secondAttribute="baseline" id="LO9-aK-AVh"/>
- <constraint firstItem="FwZ-6T-zJe" firstAttribute="centerY" secondItem="9hH-As-JSa" secondAttribute="centerY" id="OPq-WV-0rN"/>
- <constraint firstItem="LWv-Y9-b0S" firstAttribute="baseline" secondItem="IVk-ye-fOe" secondAttribute="baseline" id="OtX-mc-oar"/>
- <constraint firstItem="6G0-MW-iVa" firstAttribute="top" secondItem="9hH-As-JSa" secondAttribute="bottom" constant="7" id="PvA-DS-muN"/>
- <constraint firstItem="ns0-ar-I7c" firstAttribute="leading" secondItem="tHY-g2-oWj" secondAttribute="trailing" constant="8" id="QVv-qJ-Ofs"/>
- <constraint firstItem="tHY-g2-oWj" firstAttribute="leading" secondItem="JBo-0E-AsU" secondAttribute="leading" id="UN8-rQ-FOt"/>
- <constraint firstItem="nQe-Vq-Og2" firstAttribute="leading" secondItem="IVk-ye-fOe" secondAttribute="trailing" constant="11" id="W1D-bO-dgc"/>
- <constraint firstItem="hei-Cd-vcN" firstAttribute="baseline" secondItem="LWv-Y9-b0S" secondAttribute="baseline" id="W4D-1v-rYx"/>
- <constraint firstItem="JBo-0E-AsU" firstAttribute="leading" secondItem="vOY-Ix-eha" secondAttribute="leading" id="WxP-rx-Z3C"/>
- <constraint firstItem="Mri-4y-8rX" firstAttribute="leading" relation="greaterThanOrEqual" secondItem="6G0-MW-iVa" secondAttribute="trailing" constant="8" symbolic="YES" id="XHg-AE-MAw"/>
- <constraint firstItem="JBo-0E-AsU" firstAttribute="baseline" secondItem="w1f-3S-up0" secondAttribute="baseline" id="XjT-JQ-Ydo"/>
- <constraint firstItem="LWv-Y9-b0S" firstAttribute="top" secondItem="6G0-MW-iVa" secondAttribute="bottom" constant="16" id="Y9M-iu-Gn4"/>
- <constraint firstItem="JBo-0E-AsU" firstAttribute="width" secondItem="vOY-Ix-eha" secondAttribute="width" id="YQF-rZ-wB0"/>
- <constraint firstItem="vOY-Ix-eha" firstAttribute="width" secondItem="hei-Cd-vcN" secondAttribute="width" id="ZE9-sd-nm4"/>
- <constraint firstItem="tHY-g2-oWj" firstAttribute="width" secondItem="JBo-0E-AsU" secondAttribute="width" id="bfA-bN-xmc"/>
- <constraint firstItem="Mri-4y-8rX" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="-4" id="cwh-LP-c8Z"/>
- <constraint firstItem="w1f-3S-up0" firstAttribute="top" secondItem="JC3-5O-BXA" secondAttribute="bottom" constant="16" id="d8Q-sV-Al9"/>
- <constraint firstItem="JC3-5O-BXA" firstAttribute="leading" secondItem="vOY-Ix-eha" secondAttribute="trailing" constant="8" id="fde-NK-LLZ"/>
- <constraint firstItem="Hkl-7Z-J2e" firstAttribute="leading" secondItem="uqQ-uA-3xF" secondAttribute="trailing" constant="6" id="gkW-Lu-BH7"/>
- <constraint firstItem="6G0-MW-iVa" firstAttribute="leading" secondItem="9hH-As-JSa" secondAttribute="leading" id="gyR-Lu-st4"/>
- <constraint firstItem="JC3-5O-BXA" firstAttribute="top" secondItem="LWv-Y9-b0S" secondAttribute="bottom" constant="8" id="gzL-GN-orP"/>
- <constraint firstItem="uqQ-uA-3xF" firstAttribute="leading" secondItem="FwZ-6T-zJe" secondAttribute="trailing" constant="9" id="hir-dB-x3n"/>
- <constraint firstItem="tHY-g2-oWj" firstAttribute="baseline" secondItem="ns0-ar-I7c" secondAttribute="baseline" id="jqR-W6-d9k"/>
- <constraint firstAttribute="trailing" relation="greaterThanOrEqual" secondItem="w1f-3S-up0" secondAttribute="trailing" constant="20" symbolic="YES" id="rHw-Bp-bfe"/>
- <constraint firstItem="JC3-5O-BXA" firstAttribute="baseline" secondItem="sKT-h2-mAF" secondAttribute="baseline" id="rhM-x4-rx4"/>
- <constraint firstItem="2s0-5k-fjU" firstAttribute="centerY" secondItem="Hkl-7Z-J2e" secondAttribute="centerY" id="usl-bK-BhB"/>
- <constraint firstItem="rFi-0b-3BX" firstAttribute="leading" secondItem="sKT-h2-mAF" secondAttribute="trailing" constant="11" id="v5K-aK-eKg"/>
- <constraint firstItem="9hH-As-JSa" firstAttribute="leading" secondItem="9oG-zm-Y0W" secondAttribute="trailing" constant="8" id="vkW-yC-lfd"/>
- <constraint firstItem="9oG-zm-Y0W" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="18" id="vuz-LJ-1fi"/>
- <constraint firstItem="FwZ-6T-zJe" firstAttribute="leading" secondItem="9hH-As-JSa" secondAttribute="trailing" constant="1" id="xqZ-an-1yf"/>
- <constraint firstItem="2s0-5k-fjU" firstAttribute="leading" secondItem="Hkl-7Z-J2e" secondAttribute="trailing" constant="1" id="zKn-1Z-8Ea"/>
+ <constraint firstItem="OFE-0G-Zqz" firstAttribute="leading" secondItem="Hz6-mo-xeY" secondAttribute="leading" constant="20" symbolic="YES" id="SP3-l7-QPV"/>
+ <constraint firstItem="OFE-0G-Zqz" firstAttribute="top" secondItem="Hz6-mo-xeY" secondAttribute="top" constant="20" symbolic="YES" id="ZGg-SD-tmB"/>
+ <constraint firstAttribute="trailing" secondItem="OFE-0G-Zqz" secondAttribute="trailing" constant="20" symbolic="YES" id="gdQ-9j-1VW"/>
</constraints>
<connections>
<outlet property="nextKeyView" destination="9oG-zm-Y0W" id="qo2-0g-l82"/>
</connections>
- <point key="canvasLocation" x="152.5" y="-52.5"/>
+ <point key="canvasLocation" x="-156" y="-34.5"/>
</customView>
- <userDefaultsController representsSharedInstance="YES" id="UZ0-eg-oV8"/>
</objects>
</document>
diff --git a/macosx/HBFilters.h b/macosx/HBFilters.h
index 3185e8205..88f36901c 100644
--- a/macosx/HBFilters.h
+++ b/macosx/HBFilters.h
@@ -42,9 +42,6 @@ extern NSString * const HBFiltersChangedNotification;
@property (nonatomic, readwrite) BOOL grayscale;
-@property (nonatomic, readwrite) int rotate;
-@property (nonatomic, readwrite) BOOL flip;
-
@property (nonatomic, readwrite, weak, nullable) NSUndoManager *undo;
@end
diff --git a/macosx/HBFilters.m b/macosx/HBFilters.m
index 077c85e8d..270b285b0 100644
--- a/macosx/HBFilters.m
+++ b/macosx/HBFilters.m
@@ -682,30 +682,6 @@ NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification";
[self postChangedNotification];
}
-#pragma mark - Rotate
-
-- (void)setRotate:(int)rotate
-{
- if (rotate != _rotate)
- {
- [[self.undo prepareWithInvocationTarget:self] setRotate:_rotate];
- }
- _rotate = rotate;
- [self postChangedNotification];
-}
-
-#pragma mark - Flip
-
-- (void)setFlip:(BOOL)flip
-{
- if (flip != _flip)
- {
- [[self.undo prepareWithInvocationTarget:self] setFlip:_flip];
- }
- _flip = flip;
- [self postChangedNotification];
-}
-
#pragma mark - KVO
+ (NSSet *)keyPathsForValuesAffectingValueForKey:(NSString *)key
@@ -800,8 +776,6 @@ NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification";
copy->_deblockCustomString = [_deblockCustomString copy];
copy->_grayscale = _grayscale;
- copy->_rotate = _rotate;
- copy->_flip = _flip;
}
return copy;
@@ -843,8 +817,6 @@ NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification";
encodeObject(_deblockCustomString);
encodeBool(_grayscale);
- encodeInt(_rotate);
- encodeBool(_flip);
}
- (instancetype)initWithCoder:(NSCoder *)decoder
@@ -876,8 +848,6 @@ NSString * const HBFiltersChangedNotification = @"HBFiltersChangedNotification";
decodeObjectOrFail(_deblockCustomString, NSString);
decodeBool(_grayscale);
- decodeInt(_rotate); if (_rotate != 0 && _rotate != 90 && _rotate != 180 && _rotate != 270) { goto fail; }
- decodeBool(_flip);
_notificationsEnabled = YES;
@@ -916,7 +886,6 @@ fail:
preset[@"PictureDeblockCustom"] = self.deblockCustomString;
preset[@"VideoGrayScale"] = @(self.grayscale);
- preset[@"PictureRotate"] = [NSString stringWithFormat:@"angle=%d:hflip=%d", self.rotate, self.flip];
}
- (void)applyPreset:(HBPreset *)preset jobSettings:(NSDictionary *)settings
@@ -957,15 +926,6 @@ fail:
self.deblockCustomString = preset[@"PictureDeblockCustom"];
self.grayscale = [preset[@"VideoGrayScale"] boolValue];
-
- // Rotate
- NSString *rotate = preset[@"PictureRotate"];
- hb_dict_t *hbdict = hb_parse_filter_settings(rotate.UTF8String);
- NSDictionary *dict = [[NSDictionary alloc] initWithHBDict:hbdict];
- hb_value_free(&hbdict);
-
- self.rotate = [dict[@"angle"] intValue];
- self.flip = [dict[@"hflip"] boolValue];
}
self.notificationsEnabled = YES;
diff --git a/macosx/HBJob+HBJobConversion.m b/macosx/HBJob+HBJobConversion.m
index f6c09b9a5..e2cc973c9 100644
--- a/macosx/HBJob+HBJobConversion.m
+++ b/macosx/HBJob+HBJobConversion.m
@@ -23,6 +23,8 @@
#import "HBAudio.h"
#import "HBSubtitles.h"
+#import "NSDictionary+HBAdditions.h"
+
@implementation HBJob (HBJobConversion)
- (NSDictionary *)jobDict
@@ -526,12 +528,40 @@
}
// Add rotate filter
- if (self.filters.rotate || self.filters.flip)
+ if (self.picture.rotate || self.picture.flip)
{
int filter_id = HB_FILTER_ROTATE;
hb_dict_t *filter_dict = hb_generate_filter_settings(filter_id,
NULL, NULL,
- [NSString stringWithFormat:@"angle=%d:hflip=%d", self.filters.rotate, self.filters.flip].UTF8String);
+ [NSString stringWithFormat:@"angle=%d:hflip=%d", self.picture.rotate, self.picture.flip].UTF8String);
+
+ filter = hb_filter_init(filter_id);
+ hb_add_filter_dict(job, filter, filter_dict);
+ hb_dict_free(&filter_dict);
+ }
+
+ if (self.picture.paddingMode != HBPicturePaddingModeNone)
+ {
+ int filter_id = HB_FILTER_PAD;
+ NSString *color;
+ switch (self.picture.paddingColorMode) {
+ case HBPicturePaddingColorModeBlack:
+ color = @"black";
+ break;
+ case HBPicturePaddingColorModeWhite:
+ color = @"white";
+ break;
+ case HBPicturePaddingColorModeCustom:
+ color = self.picture.paddingColorCustom;
+ break;
+ }
+ NSString *settings = [NSString stringWithFormat:@"width=%d:height=%d:color=%@:x=%d:y=%d",
+ self.picture.width + self.picture.paddingLeft + self.picture.paddingRight,
+ self.picture.height + self.picture.paddingTop + self.picture.paddingBottom,
+ color,
+ self.picture.paddingRight,
+ self.picture.paddingTop];
+ hb_dict_t *filter_dict = hb_generate_filter_settings(filter_id, NULL, NULL, settings.UTF8String);
filter = hb_filter_init(filter_id);
hb_add_filter_dict(job, filter, filter_dict);
diff --git a/macosx/HBJob+UIAdditions.m b/macosx/HBJob+UIAdditions.m
index 6993ebc83..b55380211 100644
--- a/macosx/HBJob+UIAdditions.m
+++ b/macosx/HBJob+UIAdditions.m
@@ -945,12 +945,13 @@ static HBMixdownTransformer *mixdownTransformer;
[summary appendString:@", "];
}
+ // FIX ME
// Rotation
- if (filters.rotate || filters.flip)
- {
- [summary appendString:HBKitLocalizedString(@"Rotation", @"HBJob -> filters short description")];
- [summary appendString:@", "];
- }
+ //if (picture.rotate || picture.flip)
+ //{
+ // [summary appendString:HBKitLocalizedString(@"Rotation", @"HBJob -> filters short description")];
+ // [summary appendString:@", "];
+ //}
if ([summary hasSuffix:@", "])
{
diff --git a/macosx/HBPicture+UIAdditions.h b/macosx/HBPicture+UIAdditions.h
index d67e4f719..702173aeb 100644
--- a/macosx/HBPicture+UIAdditions.h
+++ b/macosx/HBPicture+UIAdditions.h
@@ -16,14 +16,21 @@
@property (nonatomic, readonly) NSString *shortInfo;
@property (nonatomic, readonly) NSString *summary;
-@property (nonatomic, readonly) int maxWidth;
-@property (nonatomic, readonly) int maxHeight;
+@property (nonatomic, readonly, getter=isCustomResolutionLimitEnabled) BOOL customResolutionLimitEnabled;
@property (nonatomic, readonly) int maxTopCrop;
@property (nonatomic, readonly) int maxBottomCrop;
@property (nonatomic, readonly) int maxLeftCrop;
@property (nonatomic, readonly) int maxRightCrop;
+@property (nonatomic, readonly) int maxTopPadding;
+@property (nonatomic, readonly) int maxBottomPadding;
+@property (nonatomic, readonly) int maxLeftPadding;
+@property (nonatomic, readonly) int maxRightPadding;
+
+@property (nonatomic, readonly, getter=isCustomPaddingEnabled) BOOL customPaddingEnabled;
+@property (nonatomic, readonly, getter=isCustomPaddingColorEnabled) BOOL customPaddingColorEnabled;
+
@property (nonatomic, readonly, getter=isKeepDisplayAspectEditable) BOOL keepDisplayAspectEditable;
@property (nonatomic, readonly, getter=isCustomAnamorphicEnabled) BOOL customAnamorphicEnabled;
diff --git a/macosx/HBPicture+UIAdditions.m b/macosx/HBPicture+UIAdditions.m
index 41b40425e..bc9403d79 100644
--- a/macosx/HBPicture+UIAdditions.m
+++ b/macosx/HBPicture+UIAdditions.m
@@ -12,16 +12,28 @@
@implementation HBPicture (UIAdditions)
-@dynamic maxHeight;
-@dynamic maxWidth;
-
@dynamic maxTopCrop;
@dynamic maxBottomCrop;
@dynamic maxLeftCrop;
@dynamic maxRightCrop;
+@dynamic maxTopPadding;
+@dynamic maxBottomPadding;
+@dynamic maxLeftPadding;
+@dynamic maxRightPadding;
+
#pragma mark - Editable state
++ (NSSet<NSString *> *)keyPathsForValuesAffectingCustomResolutionLimitEnabled
+{
+ return [NSSet setWithObjects:@"resolutionLimitMode", nil];
+}
+
+- (BOOL)isCustomResolutionLimitEnabled
+{
+ return self.resolutionLimitMode == HBPictureResolutionLimitModeCustom;
+}
+
+ (NSSet<NSString *> *)keyPathsForValuesAffectingKeepDisplayAspectEditable
{
return [NSSet setWithObjects:@"anamorphicMode", nil];
@@ -29,8 +41,8 @@
- (BOOL)isKeepDisplayAspectEditable
{
- if (self.anamorphicMode == HB_ANAMORPHIC_AUTO ||
- self.anamorphicMode == HB_ANAMORPHIC_LOOSE)
+ if (self.anamorphicMode == HBPictureAnarmophicModeAuto ||
+ self.anamorphicMode == HBPictureAnarmophicModeLoose)
{
return NO;
}
@@ -50,6 +62,26 @@
return self.anamorphicMode == HB_ANAMORPHIC_CUSTOM;
}
++ (NSSet<NSString *> *)keyPathsForValuesAffectingCustomPaddingEnabled
+{
+ return [NSSet setWithObjects:@"paddingMode", nil];
+}
+
+- (BOOL)isCustomPaddingEnabled
+{
+ return self.paddingMode == HBPicturePaddingModeCustom;
+}
+
++ (NSSet<NSString *> *)keyPathsForValuesAffectingCustomPaddingColorEnabled
+{
+ return [NSSet setWithObjects:@"paddingColorMode", nil];
+}
+
+- (BOOL)isCustomPaddingColorEnabled
+{
+ return self.paddingColorMode == HBPicturePaddingColorModeCustom;
+}
+
+ (NSSet<NSString *> *)keyPathsForValuesAffectingInfo
{
return [NSSet setWithObjects:@"parWidth", @"parHeight", @"displayWidth", @"width", @"height",@"anamorphicMode", @"cropTop", @"cropBottom", @"cropLeft", @"cropRight", nil];
@@ -98,7 +130,7 @@
+ (NSSet<NSString *> *)keyPathsForValuesAffectingSummary
{
- return [NSSet setWithObjects:@"parWidth", @"parHeight", @"displayWidth", @"width", @"height",@"anamorphicMode", @"cropTop", @"cropBottom", @"cropLeft", @"cropRight", nil];
+ return [NSSet setWithObjects:@"parWidth", @"parHeight", @"displayWidth", @"width", @"height",@"anamorphicMode", @"cropTop", @"cropBottom", @"cropLeft", @"cropRight", @"paddingTop", @"paddingBottom", @"paddingLeft", @"paddingRight", nil];
}
- (NSString *)summary
diff --git a/macosx/HBPicture.h b/macosx/HBPicture.h
index aa3997ff4..adc7a0b4b 100644
--- a/macosx/HBPicture.h
+++ b/macosx/HBPicture.h
@@ -11,6 +11,17 @@
NS_ASSUME_NONNULL_BEGIN
+typedef NS_ENUM(NSUInteger, HBPictureResolutionLimitMode) {
+ HBPictureResolutionLimitModeNone,
+ HBPictureResolutionLimitMode8K,
+ HBPictureResolutionLimitMode4K,
+ HBPictureResolutionLimitMode1080p,
+ HBPictureResolutionLimitMode720p,
+ HBPictureResolutionLimitMode576p,
+ HBPictureResolutionLimitMode480p,
+ HBPictureResolutionLimitModeCustom,
+};
+
typedef NS_ENUM(NSUInteger, HBPictureAnarmophicMode) {
HBPictureAnarmophicModeNone,
HBPictureAnarmophicModeStrict,
@@ -19,6 +30,20 @@ typedef NS_ENUM(NSUInteger, HBPictureAnarmophicMode) {
HBPictureAnarmophicModeAuto
};
+typedef NS_ENUM(NSUInteger, HBPicturePaddingMode) {
+ HBPicturePaddingModeNone,
+ HBPicturePaddingModeFill,
+ HBPicturePaddingModeFillHeight,
+ HBPicturePaddingModeFillWidth,
+ HBPicturePaddingModeCustom
+};
+
+typedef NS_ENUM(NSUInteger, HBPicturePaddingColorMode) {
+ HBPicturePaddingColorModeBlack,
+ HBPicturePaddingColorModeWhite,
+ HBPicturePaddingColorModeCustom,
+};
+
extern NSString * const HBPictureChangedNotification;
/**
@@ -26,6 +51,19 @@ extern NSString * const HBPictureChangedNotification;
*/
@interface HBPicture : NSObject <NSSecureCoding, NSCopying>
+/**
+ * Rotation
+ */
+@property (nonatomic, readwrite) int rotate;
+@property (nonatomic, readwrite) BOOL flip;
+
+/**
+ * Size
+ */
+@property (nonatomic, readwrite) HBPictureResolutionLimitMode resolutionLimitMode;
+@property (nonatomic, readwrite) int maxWidth;
+@property (nonatomic, readwrite) int maxHeight;
+
@property (nonatomic, readwrite) int width;
@property (nonatomic, readwrite) int height;
@@ -50,6 +88,17 @@ extern NSString * const HBPictureChangedNotification;
@property (nonatomic, readwrite) int cropRight;
/**
+ * Padding settings
+ */
+@property (nonatomic, readwrite) HBPicturePaddingMode paddingMode;
+@property (nonatomic, readwrite) int paddingTop;
+@property (nonatomic, readwrite) int paddingBottom;
+@property (nonatomic, readwrite) int paddingLeft;
+@property (nonatomic, readwrite) int paddingRight;
+@property (nonatomic, readwrite) HBPicturePaddingColorMode paddingColorMode;
+@property (nonatomic, readwrite) NSString *paddingColorCustom;
+
+/**
* Source size
*/
@property (nonatomic, readonly) int sourceWidth;
diff --git a/macosx/HBPicture.m b/macosx/HBPicture.m
index 177f6f416..1ba541542 100644
--- a/macosx/HBPicture.m
+++ b/macosx/HBPicture.m
@@ -9,6 +9,7 @@
#import "HBCodingUtilities.h"
#import "HBMutablePreset.h"
+#import "NSDictionary+HBAdditions.h"
#include "handbrake/handbrake.h"
@@ -40,15 +41,22 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
if (self)
{
// Set some values if we ever need a fake instance
- _width = 1280;
- _height = 720;
+ _maxWidth = 1920;
+ _maxHeight = 1080;
- _sourceWidth = 1280;
- _sourceHeight = 720;
+ _width = 1920;
+ _height = 1080;
+
+ _sourceWidth = 1920;
+ _sourceHeight = 1080;
_anamorphicMode = HBPictureAnarmophicModeNone;
_modulus = 2;
+ _paddingMode = HBPicturePaddingModeNone;
+ _paddingColorMode = HBPicturePaddingColorModeBlack;
+ _paddingColorCustom = @"";
+
_parWidth = 1;
_parHeight = 1;
_sourceParNum = 1;
@@ -88,12 +96,120 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
{
if (self.areNotificationsEnabled)
{
- [[NSNotificationCenter defaultCenter] postNotification: [NSNotification notificationWithName:HBPictureChangedNotification
+ [NSNotificationCenter.defaultCenter postNotification:[NSNotification notificationWithName:HBPictureChangedNotification
object:self
userInfo:nil]];
}
}
+#pragma mark - Rotate
+
+- (void)setRotate:(int)rotate
+{
+ if (rotate != _rotate)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setRotate:_rotate];
+ }
+ _rotate = rotate;
+ [self postChangedNotification];
+}
+
+#pragma mark - Flip
+
+- (void)setFlip:(BOOL)flip
+{
+ if (flip != _flip)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setFlip:_flip];
+ }
+ _flip = flip;
+ [self postChangedNotification];
+}
+
+#pragma mark - Resolution limit
+
+- (void)setResolutionLimitMode:(HBPictureResolutionLimitMode)resolutionLimit
+{
+ if (resolutionLimit != _resolutionLimitMode)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setResolutionLimitMode:_resolutionLimitMode];
+ }
+ _resolutionLimitMode = resolutionLimit;
+
+ if (!(self.undo.isUndoing || self.undo.isRedoing))
+ {
+ switch (resolutionLimit) {
+ case HBPictureResolutionLimitModeNone:
+ self.maxWidth = 20480;
+ self.maxHeight = 20480;
+ break;
+ case HBPictureResolutionLimitMode8K:
+ self.maxWidth = 7680;
+ self.maxHeight = 4320;
+ break;
+ case HBPictureResolutionLimitMode4K:
+ self.maxWidth = 3840;
+ self.maxHeight = 2160;
+ break;
+ case HBPictureResolutionLimitMode1080p:
+ self.maxWidth = 1920;
+ self.maxHeight = 1080;
+ break;
+ case HBPictureResolutionLimitMode720p:
+ self.maxWidth = 1280;
+ self.maxHeight = 720;
+ break;
+ case HBPictureResolutionLimitMode576p:
+ self.maxWidth = 720;
+ self.maxHeight = 576;
+ break;
+ case HBPictureResolutionLimitMode480p:
+ self.maxWidth = 720;
+ self.maxHeight = 480;
+ break;
+ case HBPictureResolutionLimitModeCustom:
+ self.maxWidth = self.sourceWidth;
+ self.maxHeight = self.sourceHeight;
+ break;
+ }
+ }
+
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+- (void)setMaxWidth:(int)maxWidth
+{
+ if (maxWidth != _maxWidth)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setMaxWidth:_maxWidth];
+ }
+ _maxWidth = maxWidth;
+
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+- (void)setMaxHeight:(int)maxHeight
+{
+ if (maxHeight != _maxHeight)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setMaxHeight:_maxHeight];
+ }
+ _maxHeight = maxHeight;
+
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+#pragma mark - Size
+
- (void)setWidth:(int)width
{
if (width != _width)
@@ -215,6 +331,8 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
}
}
+#pragma mark - Crop
+
- (void)setCropTop:(int)cropTop
{
if (cropTop != _cropTop)
@@ -330,6 +448,130 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
}
}
+#pragma mark - Padding
+
+- (void)setPaddingTop:(int)paddingTop
+{
+ if (paddingTop != _paddingTop)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setPaddingTop:_paddingTop];
+ }
+ _paddingTop = paddingTop;
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+- (void)setPaddingBottom:(int)paddingBottom
+{
+ if (paddingBottom != _paddingBottom)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setPaddingBottom:_paddingBottom];
+ }
+ _paddingBottom = paddingBottom;
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+- (void)setPaddingLeft:(int)paddingLeft
+{
+ if (paddingLeft != _paddingLeft)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setPaddingLeft:_paddingLeft];
+ }
+ _paddingLeft = paddingLeft;
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+- (void)setPaddingRight:(int)paddingRight
+{
+ if (paddingRight != _paddingRight)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setPaddingRight:_paddingRight];
+ }
+ _paddingRight = paddingRight;
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+- (BOOL)validatePaddingTop:(id *)ioValue error:(NSError * __autoreleasing *)outError
+{
+ [self validatePadding:ioValue max:self.maxTopPadding];
+ return YES;
+}
+
+- (BOOL)validatePaddingBottom:(id *)ioValue error:(NSError * __autoreleasing *)outError
+{
+ [self validatePadding:ioValue max:self.maxBottomPadding];
+ return YES;
+}
+
+- (BOOL)validatePaddingLeft:(id *)ioValue error:(NSError * __autoreleasing *)outError
+{
+ [self validatePadding:ioValue max:self.maxLeftPadding];
+ return YES;
+}
+
+- (BOOL)validatePaddingRight:(id *)ioValue error:(NSError * __autoreleasing *)outError
+{
+ [self validatePadding:ioValue max:self.maxRightPadding];
+ return YES;
+}
+
+- (void)validatePadding:(NSNumber **)ioValue max:(int)maxPadding
+{
+ if (nil != *ioValue)
+ {
+ int value = [*ioValue intValue];
+ if (value >= maxPadding)
+ {
+ *ioValue = @(maxPadding);
+ }
+ else if (value < 0)
+ {
+ *ioValue = @0;
+ }
+ }
+}
+
+- (void)setPaddingMode:(HBPicturePaddingMode)paddingMode
+{
+ if (paddingMode != _paddingMode)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setPaddingMode:_paddingMode];
+ }
+ _paddingMode = paddingMode;
+
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+- (void)setPaddingColorMode:(HBPicturePaddingColorMode)paddingColorMode
+{
+ if (paddingColorMode != _paddingColorMode)
+ {
+ [[self.undo prepareWithInvocationTarget:self] setPaddingColorMode:_paddingColorMode];
+ }
+ _paddingColorMode = paddingColorMode;
+
+ if (!self.isValidating)
+ {
+ [self validateSettings];
+ }
+}
+
+#pragma mark - Anamorphic
+
- (void)setAnamorphicMode:(HBPictureAnarmophicMode)anamorphicMode
{
if (anamorphicMode != _anamorphicMode)
@@ -378,64 +620,79 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
#pragma mark - Max sizes
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxWidth
+- (int)maxTopCrop
{
- return [NSSet setWithObjects:@"cropTop", @"cropBottom", @"cropLeft", @"cropRight", nil];
+ return self.sourceHeight - self.cropBottom - 32;
}
-- (int)maxWidth
++ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxBottomCrop
{
- return self.sourceWidth - self.cropRight - self.cropLeft;
+ return [NSSet setWithObjects:@"cropTop", nil];
}
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxHeight
+- (int)maxBottomCrop
{
- return [NSSet setWithObjects:@"cropTop", @"cropBottom", @"cropLeft", @"cropRight", nil];
+ return self.sourceHeight - self.cropTop - 32;
}
-- (int)maxHeight
++ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxLeftCrop
{
- return self.sourceHeight - self.cropTop - self.cropBottom;
+ return [NSSet setWithObjects:@"cropRight", nil];
}
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxTopCrop
+- (int)maxLeftCrop
{
- return [NSSet setWithObjects:@"cropBottom", nil];
+ return self.sourceWidth - self.cropRight - 32;
}
-- (int)maxTopCrop
++ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxRightCrop
{
- return self.sourceHeight - self.cropBottom - 32;
+ return [NSSet setWithObjects:@"cropLeft", nil];
}
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxBottomCrop
+- (int)maxRightCrop
{
- return [NSSet setWithObjects:@"cropTop", nil];
+ return self.sourceWidth - self.cropLeft - 32;
}
-- (int)maxBottomCrop
++ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxTopPadding
{
- return self.sourceHeight - self.cropTop - 32;
+ return [NSSet setWithObjects:@"paddingBottom", nil];
}
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxLeftCrop
+- (int)maxTopPadding
{
- return [NSSet setWithObjects:@"cropRight", nil];
+ return self.maxHeight - self.height - self.paddingBottom;
}
-- (int)maxLeftCrop
++ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxBottomPadding
{
- return self.sourceWidth - self.cropRight - 32;
+ return [NSSet setWithObjects:@"paddingTop", nil];
}
-+ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxRightCrop
+- (int)maxBottomPadding
{
- return [NSSet setWithObjects:@"cropLeft", nil];
+ return self.maxHeight - self.height - self.paddingTop;
}
-- (int)maxRightCrop
++ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxLeftPadding
{
- return self.sourceWidth - self.cropLeft - 32;
+ return [NSSet setWithObjects:@"paddingRight", nil];
+}
+
+- (int)maxLeftPadding
+{
+ return self.maxWidth - self.width - self.paddingRight;
+}
+
++ (NSSet<NSString *> *)keyPathsForValuesAffectingMaxRightPadding
+{
+ return [NSSet setWithObjects:@"paddingLeft", nil];
+}
+
+- (int)maxRightPadding
+{
+ return self.maxWidth - self.width - self.maxLeftPadding;
}
- (int)sourceDisplayWidth
@@ -487,8 +744,8 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
uiGeo.geometry.height = self.height;
// Modulus added to maxWidth/maxHeight to allow a small amount of
// upscaling to the next mod boundary.
- uiGeo.maxWidth = self.sourceWidth - crop[2] - crop[3] + self.modulus - 1;
- uiGeo.maxHeight = self.sourceHeight - crop[0] - crop[1] + self.modulus - 1;
+ uiGeo.maxWidth = self.maxWidth ? self.maxWidth : self.sourceWidth - crop[2] - crop[3] + self.modulus - 1;
+ uiGeo.maxHeight = self.maxHeight ? self.maxHeight : self.sourceHeight - crop[0] - crop[1] + self.modulus - 1;
hb_rational_t par = {self.parWidth, self.parHeight};
uiGeo.geometry.par = par;
@@ -507,6 +764,38 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
self.parWidth = resultGeo.par.num;
self.parHeight = resultGeo.par.den;
self.displayWidth = display_width;
+
+ int maxPaddingX = self.maxWidth - self.width;
+ int maxPaddingY = self.maxHeight - self.height;
+ switch (self.paddingMode)
+ {
+ case HBPicturePaddingModeNone:
+ self.paddingRight = 0;
+ self.paddingLeft = 0;
+ self.paddingTop = 0;
+ self.paddingBottom = 0;
+ break;
+ case HBPicturePaddingModeFill:
+ self.paddingRight = maxPaddingX / 2;
+ self.paddingLeft = maxPaddingX / 2;
+ self.paddingTop = maxPaddingY / 2;
+ self.paddingBottom = maxPaddingY / 2;
+ break;
+ case HBPicturePaddingModeFillHeight:
+ self.paddingRight = 0;
+ self.paddingLeft = 0;
+ self.paddingTop = maxPaddingY / 2;
+ self.paddingBottom = maxPaddingY / 2;
+ break;
+ case HBPicturePaddingModeFillWidth:
+ self.paddingRight = maxPaddingX / 2;
+ self.paddingLeft = maxPaddingX / 2;
+ self.paddingTop = 0;
+ self.paddingBottom = 0;
+ break;
+ case HBPicturePaddingModeCustom:
+ break;
+ }
}
self.validating = NO;
self.keep = 0;
@@ -523,6 +812,12 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
if (copy)
{
+ copy->_rotate = _rotate;
+ copy->_flip = _flip;
+
+ copy->_resolutionLimitMode = _resolutionLimitMode;
+ copy->_maxWidth = _maxWidth;
+ copy->_maxHeight = _maxHeight;
copy->_width = _width;
copy->_height = _height;
@@ -545,6 +840,14 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
copy->_autoCropLeft = _autoCropLeft;
copy->_autoCropRight = _autoCropRight;
+ copy->_paddingMode = _paddingMode;
+ copy->_paddingTop = _paddingTop;
+ copy->_paddingBottom = _paddingBottom;
+ copy->_paddingLeft = _paddingLeft;
+ copy->_paddingRight = _paddingRight;
+ copy->_paddingColorMode = _paddingColorMode;
+ copy->_paddingColorCustom = [_paddingColorCustom copy];
+
copy->_sourceWidth = _sourceWidth;
copy->_sourceHeight = _sourceHeight;
copy->_sourceParNum = _sourceParNum;
@@ -565,8 +868,14 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
- (void)encodeWithCoder:(NSCoder *)coder
{
- [coder encodeInt:1 forKey:@"HBPictureVersion"];
+ [coder encodeInt:2 forKey:@"HBPictureVersion"];
+ encodeInt(_rotate);
+ encodeBool(_flip);
+
+ encodeInteger(_resolutionLimitMode);
+ encodeInt(_maxWidth);
+ encodeInt(_maxHeight);
encodeInt(_width);
encodeInt(_height);
@@ -589,6 +898,14 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
encodeInt(_autoCropLeft);
encodeInt(_autoCropRight);
+ encodeInteger(_paddingMode);
+ encodeInt(_paddingTop);
+ encodeInt(_paddingBottom);
+ encodeInt(_paddingLeft);
+ encodeInt(_paddingRight);
+ encodeInteger(_paddingColorMode);
+ encodeObject(_paddingColorCustom);
+
encodeInt(_sourceWidth);
encodeInt(_sourceHeight);
encodeInt(_sourceParNum);
@@ -599,6 +916,17 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
{
self = [super init];
+ decodeInt(_rotate); if (_rotate != 0 && _rotate != 90 && _rotate != 180 && _rotate != 270) { goto fail; }
+ decodeBool(_flip);
+
+ decodeInteger(_resolutionLimitMode);
+ if (_resolutionLimitMode < HBPictureResolutionLimitModeNone || _resolutionLimitMode > HBPictureResolutionLimitModeCustom)
+ {
+ goto fail;
+ }
+ decodeInt(_maxWidth); if (_maxWidth < 0) { goto fail; }
+ decodeInt(_maxHeight); if (_maxHeight < 0) { goto fail; }
+
decodeInt(_width); if (_width < 0) { goto fail; }
decodeInt(_height); if (_height < 0) { goto fail; }
@@ -626,6 +954,22 @@ NSString * const HBPictureChangedNotification = @"HBPictureChangedNotification";
decodeInt(_autoCropLeft); if (_autoCropLeft < 0) { goto fail; }
decodeInt(_autoCropRight); if (_autoCropRight < 0) { goto fail; }
+ decodeInteger(_paddingMode);
+ if (_paddingMode < HBPicturePaddingModeNone || _paddingMode > HBPicturePaddingModeCustom)
+ {
+ goto fail;
+ }
+ decodeInt(_paddingTop); if (_paddingTop < 0) { goto fail; }
+ decodeInt(_paddingBottom); if (_paddingBottom < 0) { goto fail; }
+ decodeInt(_paddingLeft); if (_paddingLeft < 0) { goto fail; }
+ decodeInt(_paddingRight); if (_paddingRight < 0) { goto fail; }
+ decodeInteger(_paddingColorMode);
+ if (_paddingColorMode < HBPicturePaddingColorModeBlack || _paddingColorMode > HBPicturePaddingColorModeCustom)
+ {
+ goto fail;
+ }
+ decodeObject(_paddingColorCustom, NSString);
+
decodeInt(_sourceWidth); if (_sourceWidth < 0) { goto fail; }
decodeInt(_sourceHeight); if (_sourceHeight < 0) { goto fail; }
decodeInt(_sourceParNum); if (_sourceParNum < 0) { goto fail; }
@@ -643,6 +987,11 @@ fail:
- (void)writeToPreset:(HBMutablePreset *)preset
{
+ preset[@"PictureRotate"] = [NSString stringWithFormat:@"angle=%d:hflip=%d", self.rotate, self.flip];
+
+ preset[@"PictureWidth"] = @(self.maxWidth);
+ preset[@"PictureHeight"] = @(self.maxHeight);
+
preset[@"PictureKeepRatio"] = @(self.keepDisplayAspect);
preset[@"PictureModulus"] = @(self.modulus);
@@ -694,6 +1043,50 @@ fail:
self.validating = YES;
self.notificationsEnabled = NO;
+ // Rotate
+ NSString *rotate = preset[@"PictureRotate"];
+ hb_dict_t *hbdict = hb_parse_filter_settings(rotate.UTF8String);
+ NSDictionary *dict = [[NSDictionary alloc] initWithHBDict:hbdict];
+ hb_value_free(&hbdict);
+
+ self.rotate = [dict[@"angle"] intValue];
+ self.flip = [dict[@"hflip"] boolValue];
+
+ self.maxWidth = [preset[@"PictureWidth"] intValue];
+ self.maxHeight = [preset[@"PictureHeight"] intValue];
+
+ if (self.maxWidth == 0 && self.maxHeight == 0)
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitModeNone;
+ }
+ else if (self.maxWidth == 7680 && self.maxHeight == 4320)
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitMode8K;
+ }
+ else if (self.maxWidth == 3840 && self.maxHeight == 2160)
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitMode4K;
+ }
+ else if (self.maxWidth == 1920 && self.maxHeight == 1080)
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitMode1080p;
+ }
+ else if (self.maxWidth == 1280 && self.maxHeight == 720)
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitMode720p;
+ }
+ else if (self.maxWidth == 720 && self.maxHeight == 576)
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitMode576p;
+ }
+ else if (self.maxWidth == 720 && self.maxHeight == 480)
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitMode576p;
+ }
+ else
+ {
+ self.resolutionLimitMode = HBPictureResolutionLimitModeCustom;
+ }
// Check to see if UsesPictureSettings is greater than 0, as 0 means use picture sizing "None"
// (2 is use max for source and 1 is use exact size when the preset was created) and the
diff --git a/macosx/HBPreviewGenerator.m b/macosx/HBPreviewGenerator.m
index 91dcfb6de..35620ea49 100644
--- a/macosx/HBPreviewGenerator.m
+++ b/macosx/HBPreviewGenerator.m
@@ -99,8 +99,8 @@
forTitle:self.job.title
pictureFrame:self.job.picture
deinterlace:deinterlace
- rotate:self.job.filters.rotate
- flipped:self.job.filters.flip];
+ rotate:self.job.picture.rotate
+ flipped:self.job.picture.flip];
if (cache && theImage)
{
// The cost is the number of pixels of the image
@@ -194,8 +194,8 @@
forTitle:self.job.title
pictureFrame:self.job.picture
deinterlace:NO
- rotate:self.job.filters.rotate
- flipped:self.job.filters.flip];
+ rotate:self.job.picture.rotate
+ flipped:self.job.picture.flip];
CFAutorelease(image);
}