고급 지능형 싱크는 rc7 버전 이상부터 사용할 수 있습니다


정식 버전에서도 사용 가능합니다.


ccmp 기본 싱크 방식이 고급 지능형 방식과 유사하니
ccmp등을 써보셨던 분이나 cc4로 갈아타려 하시는 분이라면
고급 지능형 싱크 사용을 권합니다.

시간 싱크
*추가 방법은 도구->프로그램 설정->기본 태그 설정->시작 태그



=====================================================================================================


Var
maxline, linecheck: Integer;
LineStr: String;
Begin

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin
  CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
  CCP_CaretY := CCP_CaretY + 1;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) = '' then break;

    LineStr := UpperCase(Trim(CCP_CurrentLine));

    If Copy(LineStr, Length(LineStr)-3, 4) = '<BR>' Then
    CCP_CaretY := CCP_CaretY + 1;
  end;

If not CC_ISSYNCLINE(CCP_CaretY) Then
begin
CCP_CaretY := CCP_CaretY + 1; //싱크 값만 변경 후 이동시 좀 더 지능적으로 커서 이동
End;
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
  CC_MOVETOEDITORCARETBOTTOM;
End
Else
Begin

  CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(CC_MEDIACURRENTSYNCTIME)+'>'+CC_PTAG);
  CCP_CaretY := CCP_CaretY + 1;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) = '' then break;

    LineStr := UpperCase(Trim(CCP_CurrentLine));

    If Copy(LineStr, Length(LineStr)-3, 4) = '<BR>' Then
    CCP_CaretY := CCP_CaretY + 1;
  end;
{
If CC_GetLineCount-1 <= CCP_CaretY Then
Begin
CC_InsertLine(CCP_CaretY+1, CRLF); //마지막 대사 아래에 엔터값 생성
end;
}
CCP_CaretY := CCP_CaretY + 1;

//CP_TopLine := CCP_CaretY - 35; // 자동스크롤 기능 숫자 값 조정하시면 새로 스크롤 위치 조정됩니다.
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
 CC_MOVETOEDITORCARETBOTTOM;
End;

End;


=====================================================================================================
*시간 태그 수정사항
위 태그는 오른쪽 끝에 <br>태그가 있으면 알아서 판단해서 커서가 이동됩니다.

예전 거는 31대사<br>32대사<br>33대사<br> 이런 식으로 겹겹이 있는 건 <br> 판단을 잘 못 했지만
이번에 수정한 방식은 <br> 태그가 가로 새로 혼용에도 좀 더 지능적으로 대응하게 했습니다.
예전 거보다 더 똑똑해졌습니다

아래처럼 <br>이 여러 개가 있어도 자동적으로 판단해서 1~10칸까지 이동 됩니다.

10칸 이상 이동이 필요하신분은 maxline := CCP_CaretY+10; 숫자 10에 값을 조정 하시면 됩니다.

1대사<br>2대사
3대사<br>4대사
5대사<br>
6대사
7대사<br>
8대사
9대사<br>10대사<br>11대사
12대사<br>13대사<br>
14대사
15대사<br>16대사<br>17대사
18대사<br>19대사<br>
20대사
21대사<br>22대사<br>
23대사<br>24대사<br>
25대사<br>26대사
27대사<br>28대사<br>
29대사<br>30대사
31대사<br>32대사<br>33대사<br>
34대사<br>35대사<br>36대사<br>
37대사<br>38대사<br>39대사<br>
40대사<br>41대사<br>42대사
43대사<br>44대사<br>45대사<br>
46대사<br>47대사<br>48대사<br>
49대사<br>50대사<br>51대사

=====================================================================================================
공백 싱크
*추가 방법은 도구->프로그램 설정->기본 태그 설정->공백 태그



=====================================================================================================


Var
maxline, linecheck: Integer;
Begin

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin
   CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
   CCP_CaretY := CCP_CaretY + 1;

If not CC_ISSYNCLINE(CCP_CaretY) Then
begin
CCP_CaretY := CCP_CaretY + 1; //싱크 값만 변경 후 이동시 좀 더 지능적으로 커서 이동
End;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) <> '' then break;
    CCP_CaretY := CCP_CaretY + 1;
  end;
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
  CC_MOVETOEDITORCARETBOTTOM;
End
Else
Begin
{
If CC_GetLineCount-1 <= CCP_CaretY Then
Begin
CC_InsertLine(CCP_CaretY+1, CRLF); //마지막 대사 아래에 엔터값 생성
end;
}
  CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(CC_MEDIACURRENTSYNCTIME)+'>'+CC_PTAG+CRLF+'&nbsp;');
  CCP_CaretY := CCP_CaretY + 1;
CCP_CaretY := CCP_CaretY + 1;

  maxline := CCP_CaretY+10;
  If maxline >= CC_CurrentLineCount then maxline := CC_CurrentLineCount-1;

  for linecheck := CCP_CaretY to maxline do
  begin
    If CC_GetLineText(Linecheck) <> '' then break;
    CCP_CaretY := CCP_CaretY + 1;
  end;

//CP_TopLine := CCP_CaretY - 35; // 자동스크롤 기능 숫자 값 조정하시면 새로 스크롤 위치 조정됩니다.
CCP_CaretX := 0;// 다음에 찍을 대사에서 커서를 제일 좌측으로 이동
  CC_MOVETOEDITORCARETBOTTOM;
End;

End;


=====================================================================================================
*공백 태그 수정사항
기능이 뭐가 다른가 하면.. 관리자님 글 긁어왔습니다...

(번역문) ----------------------------------
안녕하세요





네, 안녕하세요
------------------------------------------


(사용형태) --------------------------------
<Sync Start=0><P Class=KRCC>
안녕하세요
<Sync Start=0><P Class=KRCC>
&nbsp;





<Sync Start=0><P Class=KRCC>
네, 안녕하세요
<Sync Start=0><P Class=KRCC>
&nbsp;
------------------------------------------

제 경우엔 구별이 필요한 부분은 중간에 엔터로 띄워 놓는 편인데요

이런 식으로 대사간의 간격을 보기 편하게 하려고 띄워 놓은 대사의 경우
안녕하세요의 바로 밑에서 클리어 태그를 찍으면

네, 안녕하세요 까지 자동으로 커서 이동을 해줍니다.
궁금하신 분은 시험 삼아 사용자 정의 태그나 매크로에 넣고 한번 돌려 보시면 알 겁니다.

자동적으로 판단해서 1~10칸 까지 이동 되게 수정해봤습니다.
10칸 이상 필요하신분은 maxline := CCP_CaretY+10; 숫자 10에 값을 조정 하시면 됩니다.
=====================================================================================================
*시간, 공백 공통 수정사항

대본이 아래처럼 찍혔을때 예전 싱크 방식은 4대사 아래 공백이 없으면 1~4대사 위에까지 싱크를 찍고
싱크를 계속 찍어도 계속 4대사 위에만 싱크 태그가 들어갔는데요
-----------------------------------------------
1대사
2대사
3대사
4대사(아래 공백없음)
-----------------------------------------------
-----------------------------------------------
1대사
2대사
3대사
4대사(아래 공백없음)
-----------------------------------------------
아래 if문
{
If CC_GetLineCount-1 <= CCP_CaretY Then
Begin
CC_InsertLine(CCP_CaretY+1, CRLF);
end;
}


//if문을 넣어서 1~4대사 위에까지는 기본방식으로 찍히고
4대사에서 아래 공백이 없으면 엔터값을 생성해서
4대사 아래로도 계속 싱크 값을 찍을 수 있게 바꿨습니다.

정식 버전과 호환을 위해서 일단 주석처리 됐으니

rc7버전에서 써보실 분은 코드 앞뒤에 { } 만 지워주시면 됩니다.


그리고 싱크가 아래처럼 찍혀있을 때 시간 값만 바꿀 경우
-----------------------------------------------
<Sync Start=0><P Class=KRCC>1대사<BR>1
<Sync Start=100><P Class=KRCC>&nbsp;
<Sync Start=200><P Class=KRCC>2대사<BR>
2
<Sync Start=300><P Class=KRCC>&nbsp;
<Sync Start=400><P Class=KRCC>
3대사<BR>3
<Sync Start=500><P Class=KRCC>
&nbsp;
<Sync Start=600><P Class=KRCC>
4대사<BR>
4
<Sync Start=700><P Class=KRCC>
&nbsp;
<Sync Start=800><P Class=KRCC>5대사<BR>
5<BR>
5
<Sync Start=900><P Class=KRCC>&nbsp;
<Sync Start=1000><P Class=KRCC>6대사<BR>6<BR>6
<Sync Start=1100><P Class=KRCC>&nbsp;
<Sync Start=1200><P Class=KRCC>
7대사<BR>7<BR>7
<Sync Start=1300><P Class=KRCC>
&nbsp;
<Sync Start=1400><P Class=KRCC>
8대사<BR>
8<BR>
8
<Sync Start=1500><P Class=KRCC>
&nbsp;
-----------------------------------------------
If not CC_ISSYNCLINE(CCP_CaretY) Then
begin
CCP_CaretY := CCP_CaretY + 1;
End;
//이 if문을 넣어서 불규칙한 싱크 형태에도 시간 값만 바꾸고 새로 커서가
1칸인지 2칸인지 알아서 좀 더 지능적으로 판단하도록 했습니다.


CP_TopLine := CCP_CaretY - 35; //을 넣어 싱크를 찍을 때 다음 대사들이
좀 넉넉히 보이는 곳에서 편집창이 스크롤 되게 했습니다.
스크롤 제어 부분은 불편하실 분도 있을 거 같아, 일단 주석처리 됐으니 쓰실 분은
//CP_TopLine := 코드 앞에 // 만 지워주시면 됩니다.


CCP_CaretX := 0; //넣어서 싱크를 찍고 다음에 찍을 대사에서 커서를 제일 좌측에 가게 했습니다.

=====================================================================================================

Posted by 투명인간취급
,