<?xml version="1.0" encoding="utf-8"?>
<page xmlns="http://projectmallard.org/1.0/" xmlns:its="http://www.w3.org/2005/11/its" type="topic" id="magic-mirror.vala" xml:lang="ko">

  <info>
  <title type="text">마법의 거울(Vala)</title>
    <link type="guide" xref="vala#examples"/>

    <desc>지스트리머와 GTK+로 웹캠을 거울처럼 사용합니다</desc>

    <revision pkgversion="0.1" version="0.1" date="2011-03-19" status="review"/>
    <credit type="author">
      <name>Daniel G. Siegel</name>
      <email its:translate="no">dgsiegel@gnome.org</email>
    </credit>
    <credit type="author">
      <name>Johannes Schmid</name>
      <email its:translate="no">jhs@gnome.org</email>
    </credit>
    <credit type="editor">
      <name>Marta Maria Casetti</name>
      <email its:translate="no">mmcasetti@gmail.com</email>
      <years>2013</years>
    </credit>
  
    <mal:credit xmlns:mal="http://projectmallard.org/1.0/" type="translator copyright">
      <mal:name>조성호</mal:name>
      <mal:email>shcho@gnome.org</mal:email>
      <mal:years>2017-2019.</mal:years>
    </mal:credit>
  </info>

<title>마법의 거울</title>

<synopsis>
  <p><em>거울이 벽에서 떨어져 나가 수많은 조각으로 깨졌습니다. 그러나 턱수염을 면도하거나 화장을 하려면 거울이 필요합니다! 통근 버스를 잡기까지 15분 밖에 안남았습니다. 뭘 할 수 있을까요?</em></p>
  <p>이 따라하기 지침을 통해 웹 캠을 거울로 사용하는 프로그램을 만들겠습니다. 다음 방법을 배워나갑니다:</p>
  <list>
    <item><p>GTK+ 프로그램 만들기</p></item>
    <item><p>지스트리머로 웹캠에 접근해서 결과 동영상을 창에 넣기</p></item>
    <item><p>웹 캠으로 사진 찍기</p></item>
  </list>
  <p>이 지침을 따라갈 수 있으려면 다음이 필요합니다:</p>
  <list>
    <item><p><link xref="getting-ready">안주타 IDE</link> 설치 사본</p></item>
    <item><p>GTK, 지스트리머, Vala 컴파일러 설치</p></item>
    <item><p>객체 지향 프로그래밍 언어 기본 지식</p></item>
  </list>
</synopsis>

<media type="image" mime="image/png" src="media/magic-mirror.png"/>

<section id="anjuta">
  <title>안주타에서 프로젝트 만들기</title>
  <p>코딩을 시작하기 전에 안주타에서 새 프로젝트를 설정해야합니다. 이 프로그램은 빌드에 필요한 모든 파일을 만들고 그 다음 코드를 실행합니다. 또한 이 모든 상태를 유지 관리하는데 쓸만합니다.</p>
  <steps>
    <item>
    <p>안주타를 시작하고 <guiseq><gui>파일</gui><gui>새로 만들기</gui><gui>프로젝트</gui></guiseq> 를 눌러 프로젝트 마법사를 여십시오.</p>
    </item>
    <item>
    <p><gui>Vala</gui> 탭에서 <gui>GTK+ (단순)</gui>를 선택하고, <gui>계속</gui>을 누른 다음, 나타난 페이지에서 몇가지 자세한 내용을 입력하십시오. 프로젝트 이름과 디렉터리에 <file>magic-mirror</file>를 입력하십시오.</p>
   	</item>
   	<item>
    <p>따라하기 지침을 통해 사용자 인터페이스를 직접 만들 예정이므로 <gui>사용자 인터페이스에 GtkBuilder 사용</gui> 설정을 끄십시오. 인터페이스 빌더 사용법을 알아보려면 <link xref="guitar-tuner.vala">기타 조율 프로그램</link> 따라하기 지침서를 확인하십시오.</p>
    </item>
    <item>
    <p><gui>외부 패키지 설정</gui>을 <gui>켬</gui>으로 설정했는지 확인하십시오. 다음 페이지의 목록에서 <em>gstreamer-0.10</em>를 선택하여 프로젝트에 <app>지스트리머</app> 라이브러리를 넣으십시오.</p>
    </item>
    <item>
    <p><gui>적용</gui>을 누르면 프로젝트를 만들어줍니다. <gui>프로젝트</gui>나 <gui>파일</gui>탭에서 <file>src/magic_mirror.vala</file> 파일을 여십시오. 다음 줄로 시작하는 일부 코드를 볼 수 있습니다:</p>
    <code mime="text/x-csharp">
using GLib;
using Gtk;</code>
    </item>
  </steps>
</section>

<section id="build">
  <title>첫 코드 작성</title>
  <p>코드에서 (비어 있는) 창을 불러와서 보여줍니다. 자세한 내용은 아래에 있습니다. 기본을 이해하셨다면 건너뛰십시오:</p>
  <list>
  <item>
    <p><code>using</code> 선언부 두줄은 이름 여역을 가져오므로 굳이 이름을 적어넣을 필요는 없습니다.</p>
   </item>
   <item>
    <p><code>Main</code> 클래스 생성자에서는 새 창을 만들고 제목을 설정합니다. 그 다음 창을 보여주고, 창을 닫았을 때 어떤 프로그램을 끝낼지 시그널을 연결합니다. 다른 시그널은 나중에 살펴보겠습니다.</p>
   </item>
   <item>
    <p>정적 <code>main</code> 함수는 Vala 프로그램을 실행할 때 기본으로 동작합니다. Main 클래스를 만들고, 섲렁하며, 프로그램을 실행할 몇가지 함수를 호출합니다. <code>Gtk.Main</code> 함수는 사용자 인터페이스를 실행하고 이벤트(마우스 단추 누름과 키보드 키 누름) 기다림을 시작하는 GTK 메인 루프를 시작합니다.</p>
   </item>
  </list>

  <p>이 코드를 사용할 준비가 됐으니 <guiseq><gui>빌드</gui><gui>프로젝트 빌드</gui></guiseq>(또는 <keyseq><key>Shift</key><key>F7</key></keyseq> 키 누름)를 눌러 코드를 컴파일할 수 있습니다.</p>
  <p><gui>설정</gui>을 <gui>기본</gui>으로 바꾸고 <gui>실행</gui>을 눌러 빌드 디렉터리를 설정하십시오. 처음 빌드 때 한 번만 실행하면 됩니다.</p>
</section>

<section id="webcam">
 <title>지스트리머로 웹캠 동영상 스트림 접근하기</title>
 <p>지스트리머 멀티미디어 프레임워크는 웹캠 동영상을 처리할 수 있습니다. 동영상 스트림에 접근할 수 있도록 지스트리머를 프로그램에 추가해보겠습니다.</p>

<code mime="text/x-csharp" style="numbered">
using GLib;
using Gtk;

public class Main : Object
{
	private Gst.Element camerabin;

	public Main () {
		this.camerabin = Gst.ElementFactory.make ("camerabin", "camera");
		this.camerabin.set_state (Gst.State.PLAYING);
	}

	static int main (string[] args) {
		Gtk.init (ref args);
		Gst.init (ref args);
		var app = new Main ();

		Gtk.main ();

		return 0;
	}
}
</code>
 <steps>
 <item><p>지스트리머에서는 화면에 그림을 띄우는 방법을 다루기 때문에 우선 앞서 만든 창을 제거하겠습니다.</p>
 </item>
  <item>
  <p>이제 웹 캠에 접근할 지스트리머 이벤트를 만들겠습니다. 일체형 카메라 구성요소이며 사진, 동영상, 효과적용 기능 등이 있는 Camerabin 구성 요소를 활용하겠습니다. 우리가 활용하기에 완벽하죠! 지스트리머 파이프라인에 <code>this.camerabin.set_state (Gst.State.PLAYING)</code>로 지스트리머 파이프라인에 재생을 시작할 거리를 만들었다고 알리겠습니다.</p>
  <p>물론 동영상을 다른 창에 꽉 붙여둘 수도 있지만, X 윈도우 시스템의 일부 구체적 내용이 들어가는 고급 주제이므로 여기서는 생략하겠습니다.</p>
  <p>다시 컴파일하고 실행하십시오. 창 두개가 뜹니다. 다음 단계에서는 GTK+ 창으로 동영상을 통합하겠습니다.</p>
  </item>
 </steps>
</section>

<section id="impl">
 <title>참조 구현체</title>
 <p>지침서를 따라하는 실행하는 과정에 문제가 있다면, <link href="magic-mirror/magic-mirror.vala">참조 코드</link>와 여러분의 코드를 비교해보십시오. 일부 고급기술을 넣어 보통 Gtk.Window에 창을 넣고, 사진 표시 시작/정지 단추를 추가한 <link href="magic-mirror/magic-mirror-advanced.vala">추가 구현체</link>가 있습니다.</p>
</section>

<section id="further">
<title>더 읽을거리</title>
<p>Vala 프로그래밍 언어에 대해 더 알아보려면 <link href="http://live.gnome.org/Vala/Tutorial">Vala 따라하기 지침서</link>를 확인해보시는게 좋습니다.</p>
</section>

<section id="conclusion">
<title>마무리</title>
  <p>다 됐습니다. 15분동안 완전한 기능을 수행하는 웹캠 사진 프로그램을 열심히 만들었습니다. 이제 15분동안 열심히 만든 대단한 프로그램으로 친구나 동료에게 인상을 심어줄 수 있는 일터에서 아름다운 나날을 보내기 전 수염을 깎거나 여러분의 이쁘장한 얼굴을 화장할 수 있습니다.</p>

</section>

</page>
