Пример #1
0
        public void Switch()
        {
            Caption capTemp = cap1;

            cap1 = cap2;
            cap2 = capTemp;
        }
Пример #2
0
        private string BlockMerge()
        {
            Caption ct = new Caption();

            ct.AutoWrap = false;
            int max = cap1.Count > cap2.Count?cap1.Count:cap2.Count;

            for (int i = 0; i < max; i++)
            {
                Section st = new Section();
                if (i < cap1.Count)
                {
                    st = cap1[i].Copy();
                    if (this.isRepeatHead || i >= cap2.Count)
                    {
                        ct.Add(st);
                    }
                }

                if (i < cap2.Count)
                {
                    addText(ref st, cap2[i]);
                    ct.Add(st);
                }
            }

            return(ct.ToString());
        }
Пример #3
0
        public static Caption ParseSrt(string[] Buffer)
        {
            Caption cap = new Caption();
            Section sec = new Section();

            for (int i = 0; i < Buffer.Length; i++)
            {
                if (Buffer[i] == "")
                {
                    continue;
                }

                if (Buffer[i].IndexOf(Pub.SrtSymbol) > -1)
                {
                    sec = ExtractSrtSection(Buffer[i]);
                    cap.Add(sec);
                }
                else
                {
                    try
                    {
                        int.Parse(Buffer[i]);
                    }
                    catch
                    {
                        if (sec.Items.Count == 0)
                        {
                            sec.StyleFormat = ExtractStyle(ref Buffer[i]);
                        }
                        sec.Items.Add(Buffer[i]);
                    }
                }
            }
            return(cap);
        }
Пример #4
0
        public static Caption Parse(string[] Buffer)
        {
            int i   = 0;
            int cnt = 10 < Buffer.Length?10:Buffer.Length;

            for (; i < cnt; i++)
            {
                if (Buffer[i].IndexOf(Pub.SrtSymbol) > -1)
                {
                    break;
                }
            }
            Caption ct = i < 10?ParseSrt(Buffer):ParseSsa(Buffer);

            if (ct.Count == 0)
            {
                ct = null;
                throw new ExtendException(0);
                //	MessageBox.Show(Pub.GetSetting("CaptionParseExceptionText"),Pub.GetSetting("CaptionParseExceptionTitle"),MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
            else
            {
                //if (ct[0].ToString(-1,0,false).StartsWith(Pub.copyRight)) ct.Remove(0);
                //ct.AdjustFirstIndex=ct.BuildFirstIndex=0+Pub.BeginIndex;
                //ct.AdjustLastIndex=ct.BuildLastIndex=ct.Count-1+Pub.BeginIndex;
            }
            return(ct);
        }
Пример #5
0
		public static Caption ParseSrt(string[] Buffer)
		{  
			Caption cap=new Caption();
			Section sec=new Section();
			for (int i=0;i<Buffer.Length;i++)
			{
				if (Buffer[i]=="") continue;

				if (Buffer[i].IndexOf(Pub.SrtSymbol)>-1)
				{
					sec=ExtractSrtSection(Buffer[i]);
					cap.Add(sec);
				}
				else
				{
					try 
					{
						int.Parse(Buffer[i]);
					}
					catch
					{
							if (sec.Items.Count==0) sec.StyleFormat=ExtractStyle(ref Buffer[i]);
						sec.Items.Add(Buffer[i]);
					}
				}
			}
			return cap;
		}
Пример #6
0
        public Caption Clone(bool isFix)
        {
            Caption ct = (Caption)this.MemberwiseClone();

            if (isFix)
            {
                ct.Fix();
            }
            return(ct);
        }
Пример #7
0
        private string TimeMerge()
        {
            Caption ct = new Caption();

            ct.AutoWrap = false;
            int index1, index2;
            int lockType;            //0 no, 1 cap1, 2 cap2

            lockType = index1 = index2 = 0;
            DateTime capTime1 = new DateTime(), capTime2 = new DateTime();

            while (index1 < cap1.Count || index2 < cap2.Count)
            {
                Section st = new Section();
                if (lockType != 1 && index1 < cap1.Count)
                {
                    capTime1 = cap1[index1].GetBeginTime();
                }
                if (lockType != 2 && index2 < cap2.Count)
                {
                    capTime2 = cap2[index2].GetBeginTime();
                }
                lockType = 0;
                if (capTime1 > capTime2 && capTime1 > capTime2.Add(TimeIgnore) && index2 < cap2.Count || index1 == cap1.Count)
                {
                    lockType = 1;
                }
                if (capTime2 > capTime1 && capTime2 > capTime1.Add(TimeIgnore) && index1 < cap1.Count || index2 == cap2.Count)
                {
                    lockType = 2;
                }


                if (lockType != 1)
                {
                    st = cap1[index1++].Copy();
                    if (this.isRepeatHead || lockType == 2)
                    {
                        ct.Add(st);
                    }
                }

                if (lockType != 2)
                {
                    addText(ref st, cap2[index2]);
                    ct.Add(st);
                    index2++;
                }
            }

            return(ct.ToString());
        }
Пример #8
0
        public static Caption ParseSsa(string[] Buffer)
        {
            Caption cap = new Caption();

            for (int i = 0; i < Buffer.Length; i++)
            {
                if (Buffer[i].IndexOf(Pub.SsaSymbol) > -1)
                {
                    cap.Add(ExtractSsaSection(Buffer[i]));
                }
            }
            return(cap);
        }
Пример #9
0
        public static Caption LoadFile(string FileName, TextBox tb)
        {
            Caption ct = null;

            string[] buffer = Pub.ReadFile(FileName);
            if (buffer != null)
            {
                if (tb != null)
                {
                    tb.Lines = buffer;
                }
                try
                {
                    ct = CaptionParser.Parse(buffer);
                }
                catch (ExtendException ee)
                {
                    MessageBox.Show(ee.Message, Pub.GetSetting("CaptionParseExceptionTitle"), MessageBoxButtons.OK, MessageBoxIcon.Warning);
                }
            }
            return(ct);
        }
Пример #10
0
		private string TimeMerge()
		{
			Caption ct=new Caption();
			ct.AutoWrap=false;
			int index1,index2;
			int lockType;//0 no, 1 cap1, 2 cap2
			lockType=index1=index2=0;
			DateTime capTime1=new DateTime(),capTime2=new DateTime();

			while (index1<cap1.Count||index2<cap2.Count)
			{

				Section st=new Section();
				if (lockType!=1&&index1<cap1.Count) capTime1=cap1[index1].GetBeginTime();
				if (lockType!=2&&index2<cap2.Count) capTime2=cap2[index2].GetBeginTime();
				lockType=0;
				if (capTime1>capTime2&&capTime1>capTime2.Add(TimeIgnore)&&index2<cap2.Count||index1==cap1.Count) lockType=1;
				if (capTime2>capTime1&&capTime2>capTime1.Add(TimeIgnore)&&index1<cap1.Count||index2==cap2.Count) lockType=2;
				

				if (lockType!=1)
				{

					st=cap1[index1++].Copy();
					if (this.isRepeatHead||lockType==2) ct.Add(st);
				}

				if (lockType!=2)
				{
					addText(ref st,cap2[index2]);
					ct.Add(st);
					index2++;
				}

			}

			return ct.ToString();
		}
Пример #11
0
		private string BlockMerge()
		{
			Caption ct=new Caption();
			ct.AutoWrap=false;
			int max=cap1.Count>cap2.Count?cap1.Count:cap2.Count;
			for (int i=0;i<max;i++)
			{
				Section st=new Section();
				if (i<cap1.Count)
				{
					st=cap1[i].Copy();
					if (this.isRepeatHead||i>=cap2.Count) ct.Add(st);
				}

				if (i<cap2.Count)
				{
					addText(ref st,cap2[i]);
					ct.Add(st);
				}
			}

			return ct.ToString();
		}
Пример #12
0
		public static Caption ParseSsa(string[] Buffer)
		{  

			Caption cap=new Caption();
			for (int i=0;i<Buffer.Length;i++)
			{
				if (Buffer[i].IndexOf(Pub.SsaSymbol)>-1)
					cap.Add(ExtractSsaSection(Buffer[i]));
			}
			return cap;

		}
Пример #13
0
		private void mergeToBuild()
		{
			if (captionNull(mergeTarget.Lines.Length==0?null:"",Pub.GetSetting("buildOpen2"))) return;
			capBuild=CaptionParser.ParseSrt(mergeTarget.Lines);
			buildSource.Text=mergeTarget.Text;
			capBuild.AutoWrap=false;
			capBuildUpdate();
		}
Пример #14
0
		private void merge2ToBuild()
		{
			if (captionNull(capMerge.Caption2,Pub.GetSetting("buildOpen1"))) return;
			capBuild=capMerge.Caption2;
			buildSource.Text=mergeSource2.Text;
			capBuildUpdate();
		}
Пример #15
0
//
//		private void timeLine_ValueChanged(object sender, EventArgs e)
//		{
//			if (capBuild==null) return;
//			//capBuild.AutoWrap=Pub.AutoWrap;
//			capBuild.TimeBaseLine=timeLine.Value;
//			buildTarget.Text=capBuild.ToString();
//		}


		private void merge1ToBuild()
		{
			if (captionNull(capMerge.Caption1,Pub.GetSetting("buildOpen0"))) return;
			capBuild=capMerge.Caption1;
			buildSource.Text=mergeSource1.Text;
			capBuildUpdate();
		}
Пример #16
0
		private void buildOpenFile(string FileName)
		{	
			capBuild=Pub.LoadFile(FileName,buildSource);
			if (capBuild!=null)
			{
				//timeLine.Value=capBuild.TimeBaseLine;//new TimeSpan(0);
				buildOpen.AddMenu(FileName);
				capBuildUpdate();
				//beginIndex_ValueChanged(null,null);
			}
		
		}
Пример #17
0
		public void Switch()
		{
			Caption capTemp=cap1;
			cap1=cap2;
			cap2=capTemp;
		}