/// <summary> /// Initializes a new instance of the <see cref="SubtitleTrack"/> class. /// Copy Constructor /// </summary> /// <param name="subtitle"> /// The subtitle. /// </param> public SubtitleTrack(SubtitleTrack subtitle) { this.Burned = subtitle.Burned; this.Default = subtitle.Default; this.Forced = subtitle.Forced; this.sourceTrack = subtitle.SourceTrack; this.SrtCharCode = subtitle.SrtCharCode; this.SrtFileName = subtitle.SrtFileName; this.SrtLang = subtitle.SrtLang; this.SrtOffset = subtitle.SrtOffset; this.SrtPath = subtitle.SrtPath; this.SubtitleType = subtitle.SubtitleType; this.SourceTrack = subtitle.SourceTrack; }
/// <summary> /// Initializes a new instance of the <see cref="HandBrakeWPF.ViewModels.SubtitlesViewModel"/> class. /// </summary> public SubtitlesViewModel() { this.Task = new EncodeTask(); this.Langauges = LanguageUtilities.MapLanguages().Keys; this.CharacterCodes = CharCodesUtilities.GetCharacterCodes(); this.ForeignAudioSearchTrack = new Subtitle { SubtitleType = SubtitleType.ForeignAudioSearch, Language = "Foreign Audio Search (Bitmap)" }; this.SourceTracks = new List<Subtitle> { this.ForeignAudioSearchTrack }; this.SubtitleBehaviours = new SubtitleBehaviours(); this.SelectedAvailableToMove = new BindingList<string>(); this.SelectedLangaugesToMove = new BindingList<string>(); this.availableLanguages = new BindingList<string>(); this.SetupLanguages(null); }
/// <summary> /// Add a subtitle track. /// The Source track is set based on the following order. If null, it will skip to the next option. /// 1. Passed in Subitle param /// 2. First preferred Subtitle from source /// 3. First subtitle from source. /// Will not add a subtitle if the source has none. /// </summary> /// <param name="subtitle"> /// The subtitle. Use null to add preferred, or first from source (based on user preference) /// </param> private void Add(Subtitle subtitle) { Subtitle source = subtitle ?? ((this.SourceTracks != null) ? (this.SourceTracks.FirstOrDefault(l => l.Language == this.GetPreferredSubtitleTrackLanguage()) ?? this.SourceTracks.FirstOrDefault( s => s.SubtitleType != SubtitleType.ForeignAudioSearch)) : null); if (source == null) { source = ForeignAudioSearchTrack; } SubtitleTrack track = new SubtitleTrack { SubtitleType = SubtitleType.VobSub, SourceTrack = source, }; // Burn-in Behaviours if (this.SubtitleBehaviours.SelectedBurnInBehaviour == SubtitleBurnInBehaviourModes.ForeignAudio || this.SubtitleBehaviours.SelectedBurnInBehaviour == SubtitleBurnInBehaviourModes.ForeignAudioPreferred) { track.Burned = true; this.SetBurnedToFalseForAllExcept(track); } // For MP4, PGS Subtitles must be burned in. if (!track.Burned && (source.SubtitleType == SubtitleType.PGS) && this.Task != null && this.Task.OutputFormat == OutputFormat.Mp4) { if (track.CanBeBurned) { track.Burned = true; this.SetBurnedToFalseForAllExcept(track); } } var encodeTask = this.Task; if (encodeTask != null) { encodeTask.SubtitleTracks.Add(track); } }
/// <summary> /// The equals. /// </summary> /// <param name="other"> /// The other. /// </param> /// <returns> /// The System.Boolean. /// </returns> public bool Equals(Subtitle other) { if (ReferenceEquals(null, other)) { return false; } if (ReferenceEquals(this, other)) { return true; } return other.TrackNumber == this.TrackNumber && object.Equals(other.Language, this.Language) && object.Equals(other.LanguageCode, this.LanguageCode) && object.Equals(other.SubtitleType, this.SubtitleType); }