Skip to content

Tut3 Example1 2

Sung-June, Lim edited this page Oct 14, 2016 · 4 revisions

File Composition for Tutorial3

_tutorials

_tutorial3

example1_2

apps

VolumeViewer.py

blocks

Reader.py
Volume_0_1.py
Volume_app_0_1.py
HistogramControl.py
OpacityMapControl.py
ColorMapControl.py

cyapp.py
cyapp_cfg.py
cymgr.py
cymgr_cfg.py
cycoord.py
cycoord_cfg.py

Introduction

이번 예제에서는 Tut3 Example1-1에 Customized Widget을 활용하여 Transfer Function 기능을 추가하는 과정을 학습하고자 합니다.
우선, 이전 예제와 어떻게 작용하는지 Pipeline 구성을 통하여 살펴 보겠습니다.
다음으로, 본 예제에서 제공되는 Histogram, OpacityMap, ColorMap과 같은 Customized Widget Block 활용법에 대해 살펴 보겟습니다.

Pipeline

Implementation

  • Customized Widget Block(Histogram, OpacityMap, ColorMap) 클래스의 구성
  • Customized Widget과 signal/slot 연결을 통한 Transfer Function 조작

Application Specification

아래와 같이 app_spec 파일의 각 항목들을 지정하여 다양한 Block 활용이 가능한 App을 구성 할 수 있습니다.

VolumeViewer.py

  • B(Block) : 'HistogramControl'의 별칭을 'histogram'으로, 'OpacityMapControl'의 별칭을 'opacity'으로, 'ColorMapControl'의 별칭을 'colormap'으로 사용
  • C(Connectivity) : main와 colormap은 같은 process에서 존재해야 함
  • colormap widget의 경우 별도의 색상 선택 window가 나타나기 때문에 main에 존재 해야 함(추후 수정 필요)
  • R(Reference) :
  • 'main' Block에서 'histogram' Block을 'histogram' 라는 별칭으로 사용
  • 'main' Block에서 'opacity' Block을 'opacity' 라는 별칭으로 사용
  • 'main' Block에서 'colormap' Block을 'colormap' 라는 별칭으로 사용
  • S(Slot) :
  • 'opacity', 'colormap'의 mouse_press, mouse_move, mouse_dbl_click Signal을 각각 'volume'의 on_changed_opacity와 on_changed_colormap Slot에 연결
def app_spec(dcm):
    t = 'Volume Viewer'
    B = [
        ('reader', 'Reader_0_1', [], {}),
        ('volume', 'Volume_0_1', [], {}),
        ('histogram', 'HistogramControl', [], {}),
        ('opacity', 'OpacityMapControl', [], {}),
        ('colormap', 'ColorMapControl', [], {}),
        ('main', 'Volume_app_0_1', [], {}),
    ]

    C = [('reader', 'volume'), ('main', 'colormap')]

    D = dict(
        reader=dict(dcm=dcm)
    )

    R = [
        ('main', 'reader', 'reader'),
        ('main', 'volume', 'volume'),
        ('main', 'histogram', 'histogram'),
        ('main', 'opacity', 'opacity'),
        ('main', 'colormap', 'colormap'),
        ('volume', 'reader', 'reader'),
    ]
    S = [
        ('opacity', 'mouse_press', 'volume', 'on_changed_opacity'),
        ('opacity', 'mouse_move', 'volume', 'on_changed_opacity'),
        ('opacity', 'mouse_dbl_click', 'volume', 'on_changed_opacity'),
        ('colormap', 'mouse_press', 'volume', 'on_changed_colormap'),
        ('colormap', 'mouse_move', 'volume', 'on_changed_colormap'),
        ('colormap', 'mouse_dbl_click', 'volume', 'on_changed_colormap'),
    ]

    return t, B, C, D, R, S

Clone this wiki locally