コード例 #1
0
        /* Private Members */

        private Boolean ShiftTimesAll()
        {
            if (Base.Document.Subtitles.Count == 0)
            {
                return(false);
            }

            ShiftOperator shiftOp = new ShiftOperator(Base.Document.Subtitles);

            shiftOp.Shift(time);
            time = time.Negate();

            return(true);
        }
コード例 #2
0
        private Boolean ShiftFramesAll()
        {
            if (Base.Document.Subtitles.Count == 0)
            {
                return(false);
            }

            ShiftOperator shiftOp = new ShiftOperator(Base.Document.Subtitles);

            shiftOp.Shift(frames);
            frames = -frames;

            return(true);
        }
コード例 #3
0
        private Boolean ShiftFramesRange()
        {
            if ((Paths == null) || (Paths.Length == 0))
            {
                return(false);
            }

            int firstSubtitle = Util.PathToInt(FirstPath);
            int lastSubtitle  = Util.PathToInt(LastPath);

            ShiftOperator shiftOp = new ShiftOperator(Base.Document.Subtitles);

            shiftOp.Shift(frames, firstSubtitle, lastSubtitle);
            frames = -frames;

            return(true);
        }
コード例 #4
0
ファイル: SyncUtil.cs プロジェクト: GNOME/gnome-subtitles
	/// <summary>Auto syncs a range of subtitles given their first and last correct times.</summary>
	/// <remarks>The subtitles are first shifted to the first subtitle's correct time, and then proportionally
	/// adjusted using the last subtitle's correct time.</remarks>
	/// <param name="subtitles">The subtitles to sync.</param>
	/// <param name="startIndex">The subtitle index to start the adjustment with.</param>
	/// <param name="startTime">The correct start time for the first subtitle.</param>
	/// <param name="endIndex">The subtitle index to end the adjustment with.</param>
	/// <param name="endTime">The correct start time for the last subtitle.</param>
	/// <param name="syncLast">Whether to sync the last subtitle.</param>
	/// <returns>Whether the subtitles could be adjusted.</returns>
	public static bool Sync (Subtitles subtitles, int startIndex, TimeSpan startTime, int endIndex, TimeSpan endTime, bool syncLast) {
		if (!AreSyncArgsValid(subtitles, startIndex, startTime, endIndex, endTime))
			return false;

		/* Perform initial calculations */
		int syncEndIndex = (syncLast ? endIndex : endIndex - 1);
		Subtitle startSubtitle = subtitles.Collection.Get(startIndex);
		TimeSpan shift = startTime - startSubtitle.Times.PreciseStart;
		Subtitle endSubtitle = subtitles.Collection.Get(endIndex);
		double factor = (endTime - startTime).TotalMilliseconds / (endSubtitle.Times.PreciseStart - startSubtitle.Times.PreciseStart).TotalMilliseconds;

		/* Shift subtitles to the start point */
		if (shift != TimeSpan.Zero) {
			ShiftOperator shiftOp = new ShiftOperator(subtitles);
			shiftOp.Shift(shift, startIndex, syncEndIndex);
		}

		/* Sync timings with proportion */
		for (int index = startIndex ; index <= syncEndIndex ; index++) {
			Subtitle subtitle = subtitles.Collection.Get(index);
			subtitle.Times.Scale(factor, startTime);
		}
		return true;
	}
コード例 #5
0
	private void ShiftTimesRange () {
		int firstSubtitle = Util.PathToInt(FirstPath);
		int lastSubtitle = Util.PathToInt(LastPath);

		ShiftOperator shiftOp = new ShiftOperator(Base.Document.Subtitles);
		shiftOp.Shift(time, firstSubtitle, lastSubtitle);
		time = time.Negate();
	}
コード例 #6
0
	private void ShiftFramesAll () {
		ShiftOperator shiftOp = new ShiftOperator(Base.Document.Subtitles);
		shiftOp.Shift(frames);
		frames = -frames;
	}
コード例 #7
0
	/* Private Members */

	private void ShiftTimesAll () {
		ShiftOperator shiftOp = new ShiftOperator(Base.Document.Subtitles);
		shiftOp.Shift(time);
		time = time.Negate();
	}
コード例 #8
0
	private void ShiftFramesRange () {
		int firstSubtitle = Util.PathToInt(FirstPath);
		int lastSubtitle = Util.PathToInt(LastPath);

		ShiftOperator shiftOp = new ShiftOperator(Base.Document.Subtitles);
		shiftOp.Shift(frames, firstSubtitle, lastSubtitle);
		frames = -frames;
	}
コード例 #9
0
ファイル: SyncUtil.cs プロジェクト: GNOME/gnome-subtitles
	/// <summary>Auto syncs a range of subtitles given their first and last correct frames.</summary>
	/// <remarks>The subtitles are first shifted to the first subtitle's correct frame, and then proportionally
	/// adjusted using the last subtitle's correct frame.</remarks>
	/// <param name="subtitles">The subtitles to sync.</param>
	/// <param name="startIndex">The subtitle index to start the adjustment with.</param>
	/// <param name="startFrame">The correct start frame for the first subtitle.</param>
	/// <param name="endIndex">The subtitle index to end the adjustment with.</param>
	/// <param name="endFrame">The correct start frame for the last subtitle.</param>
	/// <param name="syncLast">Whether to sync the last subtitle.</param>
	/// <returns>Whether the subtitles could be adjusted.</returns>
	public static bool Sync (Subtitles subtitles, int startIndex, int startFrame, int endIndex, int endFrame, bool syncLast) {
		if (!AreSyncArgsValid(subtitles, startIndex, startFrame, endIndex, endFrame))
			return false;

		/* Perform initial calculations */
		int syncEndIndex = (syncLast ? endIndex : endIndex - 1);
		Subtitle startSubtitle = subtitles.Collection.Get(startIndex);
		int shift = (int)(startFrame - startSubtitle.Frames.PreciseStart);
		Subtitle endSubtitle = subtitles.Collection.Get(endIndex);
		double factor = (endFrame - startFrame) / (endSubtitle.Frames.PreciseStart - startFrame);

		/* Shift subtitles to the start point */
		if (shift != 0) {
			ShiftOperator shiftOp = new ShiftOperator(subtitles);
			shiftOp.Shift(shift, startIndex, syncEndIndex);
		}

		/* Auto adjust timings with proportion */
		for (int index = startIndex ; index <= syncEndIndex ; index++) {
			Subtitle subtitle = subtitles.Collection.Get(index);
			subtitle.Frames.Scale(factor, startFrame);
		}
		return true;
	}