네, 결론부터 말하자면 일부 PMP들이 기기상의 문제점으로
SYNC 태그를 인식하지 못하는 경우가 있습니다

SAMI 표준 규격을 무시한 PMP 기기의 버그입니다 (..)

(참고: CC4의 기본 싱크 태그는 Sync 입니다.)

해결책은 2가지가 있습니다.

1. 기본 싱크를 SYNC로 바꾸기

도구(T) -> 프로그램 설정(S)... -> 사용자 정의 기능 탭 ->
시간 태그 값을 수정합니다.

아래는 기본 설정값을 나타냅니다.

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin
   CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
   CCP_CaretY := CCP_CaretY + 1;
End
Else
Begin
   CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(CC_MEDIACURRENTSYNCTIME)+'>'+CC_PTAG);
   CCP_CaretY := CCP_CaretY + 2;
   CC_MOVETOEDITORCARETBOTTOM;
End;

여기서 가장 긴 줄인

CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(CC_MEDIACURRENTSYNCTIME)+'>'+CC_PTAG);
<Sync<SYNC로 고치시면 됩니다.


2. 사용자 정의 핸들러를 이용하기

도구(T) -> 프로그램 설정(S)... -> 기본 설정 탭으로 들어갑니다. (기본페이지입니다)

파일을 열고 닫을때 사용자 정의 핸들러 사용을 체크합니다.

다음으로 핸들러 편집 버튼을 누릅니다.

"일부 PMP를 위해서 SYNC 태그 대문자 변환" 기능의 오른쪽 드랍다운 버튼을 누르고
"해당기능을 사용"으로 선택해줍니다.


확인을 누르시고 설정을 저장하면 저장시에 SYNC 태그로 자동으로 변환되는 것을 볼수 있습니다.

Posted by 투명인간취급
,

Caption Creator 4에는 잘 알려지지 않은 수많은 기능이 존재합니다.

그중에서 가장 안쓸것 같은 기능을 뽑자면 바로 이 매직커맨드 기능을 뽑을 수 있을 것 같습니다. -_-

어떤 기능인지 설명을 해보도록 하겠습니다.





위의 이미지를 보시면
magic FindFileName="_sp=-100 _nsp=+100 _test==150"

라고 작성되어있습니다.


결과부터 미리 말씀드리자면
홀드의 최상단에 이렇게 기록후

파일명을 "test_sp.smi" 로 저장을 해주시면

자막의 첫줄인
Sync Start=200 이

Sync Start=100 으로 수정되어 기록됩니다.


다음으로 파일명을 Alpha_nsp.smi 로 저장을 해주면
Sync Start=200 이

Sync Start=300 으로 수정되어 기록됩니다.


마지막으로

다음으로 파일명을 Start1_test.smi 로 저장을 해주면
Sync Start=200 이

Sync Start=150 으로 수정되어 기록됩니다.


눈치채셨나요?

"_sp=-100 _nsp=+100 _test==150" 입니다.

즉, "_sp" 를 파일명에서 찾아서
-100을 해당홀드에 감안해주는것입니다.

다음은 "_nsp"를 찾아서 +100을 해줍니다.

마지막으로 "_test"를 파일명에서 찾아서 시작시간 기능으로 150을 잡아주는것입니다. ^^;




한마디로 매직 커맨드는 자막안에서 Magic 태그를 선언해서 홀드자체에 변화를 주는 기능이 되겠습니다.

다음 몇가지 사항을 유념해주시면 더욱 편하게 홀드를 제어하실수 있습니다.
1. 전체 홀드를 합쳐서 스크립트로 저장 기능으로만 동작합니다.
2. 1개의 홀드엔 1개의 매직커맨드만을 사용할수 있습니다.
3. 반드시 " " 로 값의 내용을 감싸주셔야 합니다.
4. 대소문자를 구별하지 않습니다.
5. 홀드에디터의 값을 기준으로 작동합니다.
6. 매직커맨드는 몇몇 경우를 제외하고는 저장시에 지워지지 않습니다.


Posted by 투명인간취급
,

TTS 는 Text To Speech 의 약자로 글을 음성으로 출력해주는 것을 말합니다.

Caption Creator 4는 4.0.34 버전부터 이를 위한 TTS 브리지를 함께 제공하고 있으며 이를 이용하여 자막을 이용한 음성출력이 가능합니다.

사 실 Caption Creator와 주로 함께 사용되는 KMP가 기본적으로 TTS 기능을 내장하고 있기 때문에 크게 활용도가 있는 기능은 아닙니다만, 그래도 혹여나 사용이 필요한 분들을 위해서 이 페이지에서는 해당 기능을 사용하기 위한 내용을 다루고 있습니다.


이 기능을 사용하기 위해서는 우선 SAPI 4의 환경을 만들어 주시는 것이 필요합니다.
(이미 다른 회사의 번역, TTS 프로그램을 설치하시면서 환경이 구축되신 분은 이 과정이 필요하지 않습니다.)
+ SAPI 5가 기본 내장된 Windows Server 2003 등의 OS에서는 해당 OS의 지시에 따라서 설치하시기 바랍니다.

먼저 http://www.microsoft.com/msagent/downloads/user.aspx#tts 페이지를 엽니다.

위 페이지에 있는 SAPI 4.0 runtime support 를 다운로드 받아서 설치합니다.
( http://activex.microsoft.com/activex/controls/sapi/spchapi.exe )

다음으로 같은 페이지에 있는 Text-to-speech engines을 다운로드 받습니다.
한국어의 경우 "TTS3000 TTS engine - Korean (3 MB exe)" 를 선택해서 받으시면 됩니다.
( http://activex.microsoft.com/activex/controls/agent2/lhttskok.exe )

다른 언어를 음성으로 출력하실 경우엔 해당 언어에 맞는 언어엔진팩을 다운로드 받으시면 됩니다.
기본 음원의 경우 결과물이 좋지 않지만 상용 서드파티 음성엔진을 사용할경우 좀 더 좋은 품질을 얻을수 있습니다


이것으로 SAPI 4 환경 구축은 끝이 났습니다.
다음으로 CC4 에서 기본재생기를 TTS 브리지로 변경해주면 끝입니다.


메뉴의 도구(T) -> 프로그램 설정(S)... -> 재생기 설정 파트로 이동합니다.
재생기 목록에서 "TTS KMP Bridge version 1.0 BETA" 를 선택합니다.





환경설정의 확인을 누르시면 TTS 브리지가 실행이 되게 됩니다.
이 단계에서 만일 TTS 브리지가 오류가 나거나 종료가 된다면 SAPI 4가 정상작동하지 않고 있을 가능성이 있습니다.
정확하게 설치가 되었는지 다시 확인해주시기 바랍니다.

TTS 브리지가 실행되면 마지막 테스트로
메뉴의 설정(S) -> 시험 출력(D) 를 선택해서 음성이 정상적으로 출력되는지 확인합니다.


모든 작업이 끝났습니다. CC4로 재생을 하시면 됩니다.


Posted by 투명인간취급
,

홀드는 Caption Creator 0.1 버전부터 제공되는 Caption Creator 의 독특한 기능으로 자막 스크립트를 분할하여

관리가 가능한 기능으로 2파트로 분리된 자막들을 합치기 용이하게 하기 위해서 포토샵, 플래시 등과 같은

그래픽 툴들의 레이어, 타임라임과 비슷한 개념을 가지고 만들어졌습니다.

하지만, 다른 자막 툴에는 없는 생소한 개념으로 인해서 거의 사용되지 않는 기능 중 하나이기도 합니다.

 



(초창기 0.1 버전의 홀드 기능)

 (당시 버전은 드래그를 통한 시간 조작도 가능 - 현버전에선 지원하지 않는 기능입니다) 

 

최초로 제공되던 홀드 기능의 경우 다소 빈약하지만 위의 화면 처럼 시간 조정이나 합침등이 기본으로 제공되어

비중을 두고 있음을 볼수 있으나 지금의 4.1 에 오면서 기본 표시 기능에서 완전히 제외되고 있습니다.

(홀드 기능의 비중이 낮아진 것은 용어상의 생소함도 있지만 DVD등의 보급으로 예전과 다르게

영상이 상, 하권으로 분리되지 않아 자막을 합치거나 분리해야할 이유가 없어진 영향도 크다고 할 수 있습니다.)

 



(4.0 이후의 버전에서 제공되는 홀드 기능)

 

물론, 비록 기본 표시 기능에서는 제외되었더라도 지속적인 기능 개선으로 홀드로 할 수 있는 작업은 예전에 비해서

매우 많아져서 아래의 메뉴에서 볼 수 있듯이 제법 편리한 기능들을 홀드를 통해서 제공하고 있음을 볼 수 있습니다.

(파일(F) -> 홀드 명령(H) 을 통해서 아래의 메뉴를 호출할 수 있습니다.)

 



(제법 많은 기능이 제공됩니다.)

 

대부분의 기능이 여러개의 자막을 합치거나 분리하는데 특화되어 있기 때문에 기능이 필요한 경우는 없지만

홀드 전체를 각각 저장하거나 홀드 전체를 ZIP 파일로 저장하는 기능 등은 가끔씩 유용하다고 할 수 있습니다.


자막 합치기 : http://nscc4.tistory.com/8
자막 분할 : http://nscc4.tistory.com/12



Posted by 투명인간취급
,

Caption Creator 4의 SSA 플러그인은 SAMI 형식을 기반으로 모든 기능에 접근하도록 도와줍니다.
사용자는 평소와 같이 SAMI 자막을 만드는 방식으로 자막을 만든뒤 SSA 형식으로 저장하면 Caption Creator 가 변환을 수행합니다.

SSA를 사용시에는 4가지 추가적인 사항이 작동하게 됩니다.

1. ID 선언 확장
SSA 플러그인은 SAMI 의 ID 선언을 V4 Styles 처럼 활용할수 있게 합니다.

기본적인 SAMI의 ID 형식 선언은 아래와 같습니다.
#IDName { Name:보통; }

SSA의 V4 Styles 는  
Name, Fontname, Fontsize, PrimaryColour, SecondaryColour 등의 옵션을 가지고 있는데 이것을 SMI 형태에서 동일하게 사용할수 있습니다.

예를 들어 Fontname 을 선언한다면
#IDName { Name:보통; Fontname: Arial; Fontsize: 23; }
이런식으로 선언이 가능합니다.
선언된 자막파일을 변환해보면 V4 Styles 란에

Style: IDName,Arial,23,&HFFFFFF,65535,65535,0,-1,0,1,1,0,2,8,8,2,0,129
로 변환되어 있는 것을 볼수 있습니다.


추가적으로 한번에 모든 설정값을 입력할 경우에는
#IDName { SSA:none,arial,20,&HFFFFFF,65535,65535,0,-1,0,1,1,0,2,8,8,2,0,0 }
이렇게 선언해서 한번에 모든 설정을 넣을수도 있습니다.


2. Sync 태그의 확장
Sync 태그의 확장은 매우 간단합니다. 바로 End 명령어가 확장되었습니다.
지정하지 않을경우 다음 대사가 나오기 전까지를 사용하게 됩니다.

<Sync Start=100 End=200>
이런식으로 선언하게 됩니다.


3. P 태그의 확장
P태그의 확장은 앞서서 선언한 ID 를 사용하기 위함입니다.

기본적으로 대부분의 자막은 <P Class=KRCC> 인 경우가 많습니다.
여기서 <P Class=KRCC ID=IDName> 로 선언하면 IDName 이라는 스타일을 적용하게 됩니다.

CC4에서 제공하는 ID 빠른 변환 기능을 이용하면 ID 스타일을 빠르게 적용해서 자막을 만들수 있습니다.

다음으로 SSAEFFECT 명령어를 통해서 Effect 선언과 MarginL, MarginR, MarginV 를 통해서 영역 설정이 함께 가능합니다.

예를 들어서
<P Class=KRCC ID=IDName SSAEffect=!Effect MarginL=001 MarginR=001 MarginV=001> 로 선언하면

Dialogue: Marked=0,시작시간,종료시간,IDName,,001,001,001,!Effect,대사
의 결과값을 얻게 됩니다.


4. 기본 태그의 변화
기본태그는 SMI 헤더에 존재하는

  P { margin-left:8pt; margin-right:8pt; margin-bottom:2pt;
      margin-top:2pt; font-size:20pt; text-align:center;
      font-family:arial, sans-serif; font-weight:normal; color:white;
      }

값을 SSA용으로 자동변경하는 것입니다.
P 태그는 Main 이라는 이름의 스타일로 변경되는데 위의 값들중 Margin 값을 제외한 다른값들을 SSA 전용으로 자동 변환합니다.

Posted by 투명인간취급
,

------------------------------------------------------------------------------------------------------

자동완성기능

------------------------------------------------------------------------------------------------------

자동완성기능은 잘 알려진 대로 아래와 같이 시작하는 몇글자만을 입력하면

나머지 문자를 자동적으로 선택해서 완성할 수 있게 도와주는 기능입니다.

근래에 제공되는 대부분의 고급 편집 프로그램이나 개발 툴들에서는 사용자의 편의를 위해서

이러한 기능을 제공하는데요, Caption Creator 4 도 자동 완성 기능을 기본으로 제공하고 있습니다.

 



(잘 알려진 태그들에 대해서 자동완성을 지원합니다.)


무척이나 편리한 기능이지만 일부 버전에서는 최적화를 위해서

이 기능을 기본 설정에서 OFF 로 조정해놓은 경우가 있으므로

이 기능을 사용하기 위해서는 환경설정의 옵션을 켜주어야 합니다.  


메뉴의 (도구(T) -> 프로그램 설정(S)...) 을 통해서 환경 설정을 호출한 뒤,

작업 환경 설정 탭에서 "자동완성 기능 사용" 을 체크하셔야 기능이 동작하게 됩니다.






바로위의 사진에서 빨간색 사각 박스안에 체크된 자동완성 기능 사용입니다.

해당 설정을 확인을 누르고 적용 하시게 되면 비로써 기능이 동작하게 됩니다.
단순히 여기까지만 하면 다른 프로그램과 차이가 없는데요

Caption Creator 의 자동완성은 사용자에게 자동완성을 손쉽게 편집할 수 있도록 열려있습니다.

 

------------------------------------------------------------------------------------------------------

고유명사 자동완성 사전

------------------------------------------------------------------------------------------------------

먼저, 고유명사 자동완성 사전기능입니다.

이 기능은 번역시에 자주 사용될 법한 고유명사를 미리 입력해두고 매번 입력하는 번거로움을 덜어주는 기능으로

아래의 그림과 같이 도구(T) -> 고유명사 자동완성 사전(A)... 메뉴를 통하여 호출할 수 있습니다.





 



(안의 내용은 편의상 제가 추가했습니다)


위와 같이 고유명사 자동완성 사전 편집 화면이 나타나게 되면 자유롭게 입력이 가능하며,

줄 단위로 단어를 구분하여 자동완성시에 아래와 같이 바로 사용이 가능해집니다.



 

여러개의 아이템이 나타날 경우엔 아래위 방향키로 이동이 가능하며 엔터를 누를 경우 입력을,

ESC 키로 자동완성 창을 사라지게 할 수 있습니다. 


만일 스미스 라는 이름을 지속적으로 사용한다면

이곳에 스미스 라는 이름을 등록하는 것으로 쉽게 사용이 가능해진다는 겁니다.


------------------------------------------------------------------------------------------------------

다음으로 기본 제공되는 html 태그를 위한 자동 완성 기능은 Caption Creator 4 가 설치된 폴더 안의

Handler 폴더 안에 있는 AutoComplete.psc 파일을 메모장 등으로 편집하여 기본 설정을 변경할 수 있습니다.

기본으로 제공되는 자동완성 문장은 아래와 같습니다.



(메모장으로 해당 파일을 열어 보았습니다)

 

각각의 자동완성 셋트는 역시나 줄 단위로 구분되게 되며 "태그<tab>태그종류<tab>커서 위치"

(커서 위치를 지정하지 않는 경우 "태그<tab>태그종류" 가 됩니다) 의 형태로 지정되게 됩니다.

Caption Creator 의 자동완성 기능을 써보시면 알게 되시겠지만 <SYNC Start=> 를 자동완성으로 생성시

커서의 위치가 '=' 문자 다음으로 이동하여 바로 숫자를 입력하기 편하도록 배려하고 있는데요,


이것이 바로 12번째 위치이기 때문에 해당 태그 설정의 끝에 12라는 수치가 입력되어 있는 것입니다.

이러한 설정이 없는 경우 자동으로 문자열의 길이를 계산하여

커서가 끝 위치로 이동하게 되므로 별도로 지정을 원하지 않으시는 경우 지정하지 않으셔도 됩니다 ^_^

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


다음으로 태그 종류의 경우 설명을 앞에 붙이기 위한 문장을 설정하는 것으로 고유명사 사전을 이용할 경우

name 이 앞에 붙게 되며, tag로 표기한 자동 완성의 경우 앞에 tag 가 붙게 됩니다.

재미삼아 아래와 같은 내용을 넣고 자동완성을 시험해보도록 하죠

AutoComplete.psc 파일의 수정을 통한 적용은 고유명사 사전과 다르게

Caption Creator 를 재시작하는 과정이 필요하므로

프로그램을 실행중이시라면 종료하신 후 적용해야 합니다. (고유명사 사전은 바로 적용됩니다.)

 




(너는 이미 CC를 사용하고 있다)






네, -_- 별로 재미는 없군요.. 앞에 북두 라는 설명이 붙고 "you는 shock" 가 자동완성으로 튀어나오게 됩니다.

하여튼 멋진 Caption Creator 입니다. 그럼 유용한 시간 되셨길..

(주의: 앞의 설명은 너무 길면 짤리니깐 3자 이하로 하시는게 좋습니다.

그리고 반드시 구분자는 탭(Tab)을 사용해야 합니다. 스페이스 바로 띄우시면 정상동작하지 않습니다)

Posted by 투명인간취급
,

먼저.. 기본적으로 CC의 탐색 시간의 양은

1초, 2초, 3초, 5초, 30초, 1분, 1분 28초 로
다양하게 선택할수 있습니다만
전부 다가 메뉴에 나오는게 아닙니다. 메뉴에 보이는건

2초, 5초, 30초, 1분, 1분 28초 의 5가지 종류 뿐입니다.

때문에 대부분의 분들은 1초랑 3초가 있다는걸 모르고 계십니다!
이건 단축키 설정으로만 넣을수 있습니다. 메뉴엔 안보입니다.

도구(T) -> 프로그램 설정(S)... -> 단축키 설정 안으로 가시면

메뉴에는 보이지 않는 1초와 3초가 있는걸 보실수 있습니다.


글 제목은 그외의 시간이 필요할때죠, 본론으로 들어가겠습니다.
사실 전 2초 기능만 있으면 됩니다 -_-;;

그러나 그외의 시간이 필요하다면 매크로나 사용자 정의 태그에 요렇게 적어 주시면 됩니다.

CC_MediaSeek(-1000);


기능은 간단합니다. 영상을 1초 이전으로 갑니다.
밀리 세컨드 단위이므로 1000이 1초를 의미합니다.

5분짜리 탐색이 필요하면 300초니깐

CC_MediaSeek(-300000);


... 뒤로 밀려면

CC_MediaSeek(300000);


넣어주고 해당 매크로나 사용자 정의 태그를 실행하면 됩니다.


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


매크로에서 값을 자주 바꿔서 사용이 귀찮다면 그냥 메뉴에 있는 탐색시간을 이용하셔도 됩니다.


매크로 항목을 2페이지나 잡아먹는 것보단 오히려 메뉴탐색시간을 이용하는 게 더 나을 거 같습니다.


1. 하단 메뉴 탐색시간 값을 지정해주시고 : 1초 = 1000



2. 단축키 설정 항목에서 단축키만 지정해주시면 됩니다. (단축키 설정 http://nscc4.tistory.com/2)




Posted by 투명인간취급
,

기본적으로 미디어 파일열기를 누르시면 아래의 확장자들만 필터링 해서 보여주는데요
*.avi;*.asf;*.wmv;*.asx;*.mpg;*.mpe;*.mpa;*.mpeg;*.dat;*.mov;*.wma;*.mp3;*.wav;*.ra;*.rm;*.ram;*.ogg;*.mp4
재생기가 몇몇 파일을 더 지원해서 추가해야할 필요가 있을 경우가 있습니다.

이 경우 매우 간단하게 더 추가할수 있습니다.
캡션 크리에이터가 설치된 폴더 안의

\Players

를 보시면 현재 선택된 DCC 재생기의 pld 파일이 존재합니다.
기본설정으로 되어 있는 KMP Bridge의 경우 "KMPBridge.pld" 파일로 존재하지요
이 파일을 메모장이나 기타 문서 편집기로 열어줍니다.

열어보시면 다음과 같은 문자열들을 볼수 있습니다.


아래 명령은 철저하게 대소문자 구별을 합니다
PldVersion=1.0
Name=The KMPlayer DCC Bridge Version 1.0
Class=TDCCKMPBridge
RunWithCC=1
RunExe=KMPBridge.exe
SupportInternetFile=1
CloseWith=1
SupportFiles=*.avi;*.asf;*.wmv;*.asx;*.mpg;*.mpe;*.mpa;*.mpeg;*.dat;*.mov;*.wma;*.mp3;*.wav;*.ra;*.rm;*.ram;*.ogg;*.mp4
SelectMessage=
SelectMessageTitle=알림

AdditionalFunction
#명령은 반드시 "AF_" 로 시작해야 합니다.


매우 간단합니다.


SupportFiles=*.avi;*.asf;*.wmv;*.asx;*.mpg;*.mpe;*.mpa;*.mpeg;*.dat;*.mov;*.wma;*.mp3;*.wav;*.ra;*.rm;*.ram;*.ogg;*.mp4


줄에 더 추가해주시면 됩니다.
만일 *.mkv 확장자를 추가해 주시기 위해서라면 ;*.mkv 를 추가해주시면 됩니다.

예)

SupportFiles=*.avi;*.asf;*.wmv;*.asx;*.mpg;*.mpe;*.mpa;*.mpeg;*.dat;*.mov;*.wma;*.mp3;*.wav;*.ra;*.rm;*.ram;*.ogg;*.mp4;*.mkv


추가적인 내용을 설명하자면

PldVersion=1.0 <- 수정해선 안됨
Name=The KMPlayer DCC Bridge Version 1.0 <- DCC 재생기 선택 목록에 나오는 이름
Class=TDCCKMPBridge <- DCC 재생기 고유 네임
RunWithCC=1 <- CC 실행시에 함께 실행할지 여부 (0으로 설정하면 실행하지 않음)
RunExe=KMPBridge.exe <- 실행할 파일 이름
SupportInternetFile=1 <- 인터넷 파일을 지원할지 여부
CloseWith=1 <- CC 종료시 함께 종료 할것인지 여부
SupportFiles=*.avi;*.asf;*.wmv;*.asx;*.mpg;*.mpe;*.mpa;*.mpeg;*.dat;*.mov;*.wma;*.mp3;*.wav;*.ra;*.rm;*.ram;*.ogg;*.mp4
SelectMessage= <- 이곳에 메세지를 적으면 DCC 재생기로 선택 되었을때 메세지가 출력됩니다.
SelectMessageTitle=알림 <- 메세지를 출력할때 제목

Posted by 투명인간취급
,

안녕하세요 관리자입니다. ^^;

CCP_CurrentLine 함수의 경우 유니코드를 지원합니다.
다만 Caption Creator 4(이하 CC4)의 문자열 처리 방식 때문에 말씀하신 상황이 생긴것으로 보입니다.

보통 대입 연산자의 경우 첫번째 문자의 형을 기준으로 인코딩을 자동 수행합니다.
특별한 선언이 없는 문자열은 기본적으로 Ansi 문자열로 처리하기 때문에
아래와 같이 대입을 수행하면 일반 Ansi 문자열로 자동 인코딩 하여 대입이 되게 됩니다.

CCP_CurrentLine := '<font color="red">'+CCP_CurrentLine+'</font>';

때문에 유니코드로 변경하여 대입하게 되면 문제가 사라지게 됩니다.


현재 열에 좌측과 우측

 CCP_CurrentLine := CC_AnsiToUnicode('<font color="red">') + CCP_CurrentLine + '</font>';


블록 속 싱크 태그에 좌측과 우측

CCP_BLOCKSTRING := CC_AnsiToUnicode('<b>') + CCP_BLOCKSTRING + '</b>';


첫번째 보이는 글자가 유니코드이므로 이하의 문자를 모두 유니코드로 처리합니다.

만족하실만한 답변이 되었나요? 즐거운 주말되세요~

+ 추가정보 +
1. CCP_CurrentLine := CCP_CurrentLine+'</font>';
와 같은 문자는 첫번째 CCP_CurrentLine 이 유니코드 이므로 깨지지 않습니다.

2. 사용자 정의 명령의 "컬러 태그 넣기 기능"을 추천합니다. http://nscc4.tistory.com/7
단축키 설정후 사용하시면 편하게 사용가능합니다. http://nscc4.tistory.com/2




Posted by 투명인간취급
,

CC의 기본태그와 공백태그는 설정 가능하게 구성되어 있습니다.

약간의 프로그래밍 지식이 필요해지는데요 따지고 보면 심각하게 복잡한것도 아닙니다.

시간태그 넣기의 기본 설정값은 다음과 같습니다.
한줄 한줄 설명을 해드리겠습니다.

If CC_ISSYNCLINE(CCP_CaretY) Then
Begin
   CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
   CCP_CaretY := CCP_CaretY + 1;
End
Else
Begin
   CC_InsertLine(CCP_CaretY, '<Sync Start='+IntToStr(CC_MEDIACURRENTSYNCTIME)+'>'+CC_PTAG);
   CCP_CaretY := CCP_CaretY + 2;
   CC_MOVETOEDITORCARETBOTTOM;
End;

원본은 위와 같습니다.
그럼 한줄 한줄 설명을 해보겠습니다.


If CC_ISSYNCLINE(CCP_CaretY) Then

If (선택지) Then (명령); 문장입니다.
선택지가 맞을때 명령문을 실행하게 됩니다. ELSE를 함께 사용할 경우 거짓일때도 실행하게 할수 있습니다.

CC_IsSyncLine( 숫자 / 변수 ) 은 선택한 줄에 싱크 태그가 있는지 없는지를 조사하는 함수입니다.
지정한 줄에 싱크 태그가 있으면 TRUE 를 없으면 FALSE 를 반환해줍니다.

CCP_CaretY 는 현재 커서가 있는 위치를 반환해줍니다.

결국 이 문장은 현재 커서가 있는 줄이 싱크 태그가 있는지 없는지를 확인해서
진실일 경우 바로 다음에 나오는 Begin End 블럭을 실행하고
거짓일경우 Else 다음에 나오는 Begin End 블럭을 실행합니다.


다음은 첫번째 Begin End 블럭입니다.
Begin
문장을 묶어줄때 사용하는 문장입니다. Begin 과 End 로 구성됩니다.

   CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
CCP_CurrentTime 은 현재의 줄이 가지는 싱크 시간을 의미합니다.
CC_MediaCurrentSyncTime은 현재 미디어의 시간을 의미합니다.

즉, 이문장은 현재의 줄이 가지는 싱크시간에 미디어의 시간을 넣는것을 의미합니다.

   CCP_CaretY := CCP_CaretY + 1;
위에서 한번 나왔던 CCP_CaretY 입니다. 캐럿의 위치에 +1을 해서 대입함으로써 줄을 한줄 내립니다.

End

첫번째 블럭의 End는 뒤에 ' ; ' 를 붙이지 않아야 합니다.


Else
이 아래는 거짓일 경우를 위미합니다.

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


CC_InsertLine(문장 넣을 줄번호, 넣을 문장) 함수는 특정한 줄에 지정한 문장을 끼워넣는 함수입니다.
뮈 문장에서는 CCP_CaretY를 넣었으므로 현재 커서가 깜빡이는 위치에  ' ,' 이후의 문장이 들어가게 됩니다.
넣을 문장은 '<Sync Start=' +IntToStr(CC_MEDIACURRENTSYNCTIME)+ '>' +CC_PTAG); 입니다.


' ' 로 싸준 문장은 문장 그대로 들어가게 되고 나머지는 함수로 실행되어 들어갑니다.
복잡해 보이는 위 문장은 다음과 같이 풀어보시면 간단합니다.

'<Sync Start='

+ IntToStr(CC_MEDIACURRENTSYNCTIME)

+ '>'

+ CC_PTAG);

여기서 CC_PTAG는 클래스와 ID를 자동완성해서 반환해줍니다.

   CCP_CaretY := CCP_CaretY + 2;
줄을 두줄 내립니다.

   CC_MOVETOEDITORCARETBOTTOM;
화면 밖으로 커서가 나갈경우 자동으로 스크롤 해줍니다.

End;




더욱 고급의 예제

if CC_ISSYNCLINE(CCP_CaretY) Then
Begin
   CCP_CURRENTTIME := CC_MEDIACURRENTSYNCTIME;
   CCP_CaretY := CCP_CaretY + 1;
   If Pos('<br>', UpperCase(CCP_CurrentLine)) > 0 Then
     CCP_CaretY := CCP_CaretY + 1;
End
Else
Begin

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


추가된것이 두줄 보이지요 ^^

바로 이것입니다.
   If Pos('<br>', UpperCase(CCP_CurrentLine)) > 0 Then
     CCP_CaretY := CCP_CaretY + 1;

이건 뭐냐하면 <br>태그가 현재줄에서 발견될 경우 한줄 더 내리는 기능입니다.

   If Pos('<br>', UpperCase(CCP_CurrentLine)) > 0 Then

Pos(찾을 문장, 대상 문장) 명령은 실행시 찾을 문장을 대상 문장에서 찾아서 그 위치를 반환해줍니다.
찾지 못했을경우 0을 반환하게 됩니다.
이 함수는 대소문자 구별을 하게 되므로 UpperCase 라는 문장을 써서 대상 문장을 대문자로 다 바꿉니다.

즉 이 문장은 현재 줄 전체를 대문자로 바꾼뒤
태그를 찾아서 만일 보이면
아래의 문장을 실행하게 됩니다.

     CCP_CaretY := CCP_CaretY + 1;

한줄 더 내립니다.


Posted by 투명인간취급
,