콘텐츠로 이동

henc — 커널

전자해도 커널의 핵심 함수 — 초기화·뷰 생성·해도 로딩·표시·이동·확대·축소·회전·레이어 제어 등

int hencInit()
  • S-52 데이터 파일을 로딩한다.
  • 사용자 설정(data\encoptions.ini)을 로딩한다.

없음

  • = 0 : 초기화 성공
  • < 0 : 초기화 실패

int hencDeinit()
  • 모든 S-52 데이터 파일을 제거한다.
  • 라이브러리와 관련된 메모리 및 데이터를 삭제한다.
  • 현재의 설정값을 저장한다.

없음

  • = 0 : 성공
  • < 0 : 실패

int hencLoad( const char *fn, bool flagLoadUpdate = true )
  • ENC cell 파일을 로딩 후 SENC 포맷으로 변환한다.
  • ENC catalog 파일을 로딩 후 multiple ENC 파일을 로딩한다.
  • SENC 파일을 로딩한다.
  • SENC catalog 파일을 로딩 후 SENC 포맷으로 변환하고 메모리에 로딩한다.
  • Shape 파일을 로딩 후 multiple ENC 파일을 로딩한다.

const char *fn : IN (로딩하려는 파일명)

  • = 0 : 성공
  • < 0 : 실패

int hencLoadENCintoDom( const char *fn, CDomNode *node )
  • ENC 파일을 CDomNode 포맷으로 메모리에 읽어들인다.
  • 지도 정보는 생성되지 않고 파일 내용만을 읽어들인다.
  • ENC 파일 또는 ENC를 저장하고 있는 Dom 파일만 가능
  • const char *fn : IN (읽고자 하는 파일명)
  • CDomNode *node : IN, OUT (저장소)
  • = 0 : 읽기 성공

  • < 0 : 읽기 실패

int hencIsUpdateENC( CDomNode *node )

지도 정보가 UpdateENC 여부를 판정한다.

  • ENC 정보, 함수에서 읽어온 CDomNode이어야만 정상적으로 동작한다.
  • == 0 : Update ENC로 판정된 경우
  • != 0 : Update ENC가 아닌 경우

int hencGetEncVersion( CDomNode *node, int &major, int &minor )

으로 로딩한 지도 정보의 ENC 파일 버젼을 읽어들인다. ENC 파일을 비교하거나 패치 버전 비교시에 사용된다.

  • ENC 정보, 함수에서 읽어온 CDomNode이어야만 정상적으로 동작한다.

= 0 : 성공 < 0 : 실패


int hencUpdateENCDom( CDomNode *nodeBase, CDomNode *nodeUpdate )

함수를 통해 로딩한 2 개의 ENC 파일을 가지고, S-75 파일을 패치한다.

  • CDomNode *nodeBase : IN (BASE ENC)
  • CDomNode *nodeUpdate : IN (UPDATE ENC)
  • = 0 : 성공

  • < 0 : 실패

int hencLoadDom( CDomNode *node )
  • CDomNode 포맷의 데이터로부터 지도 정보를 읽어 온다.
  • 함수에서 읽어 온 CdomNode 이어야만 정상적으로 동작한다.

CDomNode *node : IN, OUT (저장소)

  • = 0 : 읽기 성공

  • < 0 : 읽기 실패

int hencSave( const char *fn )
  • 로딩된 모든 지도 정보를 CATALOG.SENC와 각 지도 셀(cell)별 SENC 파일로 저장한다.
  • 개별 지도 cell 파일은 CATALOG 파일과 동일한 디렉토리 경로에 저장된다.

const char *fn : IN (카탈로그 파일명)

  • = 0 : 성공
  • < 0 : 실패

int hencLoadFileListFromCatalogFile( const char *fn, list &filelist )

ENC 또는 SENC Catalog 파일로부터 파일 목록을 가져온다.

  • const char *fn : IN (catalog 파일명)
  • list &filelist : OUT (파일 리스트)
  • = 0 : 성공
  • < 0 : 실패

int hencSaveCatalogSENC( const char *fn )

로드된 Map의 Catalog SENC 파일만 저장하고, cell 파일은 저장하지 않는다.

const char *fn : IN (저장될 카탈로그 파일명)

  • = 0 : 성공
  • < 0 : 실패

int hencEncfileSaveToSENC( int no, const char *dirSave )
  • 개별 지도셀(Map Cell) 파일을 SENC 파일로 저장한다. 이때 저장되는 파일명은 로딩한 파일명이 그대로 사용된다.
  • 저장시 ObjMask로 설정된 특징(Feature) 들만 저장된다.
  • hencSetObjMask() 함수를 참조하세요.
  • int no : IN
  • 저장할 지도셀(Map Cell)의 번호
  • 지도셀의 로딩시 0번부터 순서대로 번호가 부여된다.
  • , 등의 함수를 이용하면 이미 로드된 파일명과 번호를 알 수가 있다.
  • const char *dirSave : IN (저장할 디렉토리명)
  • = 0 : 성공
  • < 0 : 실패

int hencEncfileToDom( int no, CDomNode &dom )

개별 지도셀(Map Cell) 파일의 정보를 복사해 준다. 저장시 ObjMask로 설정된 특징(Feature) 들만 저장된다. hencSetObjMask()을 참조하세요. class CDomNode를 통해서 내부의 정보를 사용할 수 있다.

  • 저장할 지도셀(Map Cell)의 번호
  • 지도셀의 로딩시 0번부터 순서대로 번호가 부여된다.
  • , 등의 함수를 이용하면 이미 로드된 파일명과 번호를 알 수가 있다.

= 0 : 성공 < 0 : 실패


int hencEncfileSaveToMem( int no, LPVOID &ptr, int &size )

개별 지도셀(Map Cell) 파일의 정보를 SENC로 메모리에 저장, 복사해 준다. 저장시 ObjMask로 설정된 특징(Feature) 들만 저장된다. 함수를 참조하세요.

  • 저장할 지도셀(Map Cell)의 번호
  • 지도셀의 로딩시 0번부터 순서대로 번호가 부여된다.
  • , 등의 함수를 이용하면 이미 로드된 파일명과 번호를 알 수가 있다.

= 0 : 성공 < 0 : 실패


int hencEncfileLoadFromMem( LPVOID ptr, int size )

메모리로부터 SENC를 읽어낸다.

LPVOID ptr : IN (SENC 저장 메모리) int size : IN (SENC 정보의 크기)

= 0 : 성공 < 0 : 실패


int hencUnload( const char *fn )

해당 파일명으로 로드된 지도를 메모리에서 삭제한다.

  • no ) 함수에서 주는 파일명과 동일해야 한다.
  • 이때 파일명에는 경로(path)를 포함하지 않는다.

= 0 : 성공 < 0 : 실패

int hencUnload( int idx )

해당 번호로 로드된 지도를 메모리에서 삭제한다.

int idx : IN (지도 번호)

= 0 : 성공 < 0 : 실패


int hencUnloadAll()

로드된 모든 지도 정보를 메모리에서 삭제한다.

없음

= 0 : 성공 < 0 : 실패


int hencEncfileSetLimit( int cnt )

메모리에 로드되는 지도셀의 개수를 제한한다. 데모 버젼(Demo version) 제작을 위한 기능으로 사용할 수 있다.

int cnt : IN (최대 지도셀 개수)

= 0 : 성공 < 0 : 실패


int hencEncfileGetCount()

로드된 지도셀의 개수를 얻기 위한 기능이다.

없음

로드된 지도셀의 수


const char *hencEncfileGetName( int no )

로드된 지도셀의 파일명을 얻을 수 있다.

  • 지도셀은 로드되는 순서대로 0번부터 번호가 부여된다.

!= NULL : 파일명 (Null로 종료된 문자열) == NULL : 파일명 획득 실패 (존재하지 않는 파일 번호)


int hencEncfileGetInfo( int no, CDomNode &dom )

해당 ENC의 파일명과 영역 정보를 취득한다.

int no : IN (정보를 획득할 ENC 번호) CDomNode &dom : OUT (파일명, 영역 정보가 저장)

= 0 : 성공 < 0 : 실패


bool hencIsENCFile( const char *fn )

입력된 파일이 S-57 ENC 파일이 맞는지 검사한다.

const char *fn : IN (검사 파일명)

true : ENC 파일이 맞는 경우 false : Error 또는 ENC 파일이 아닌 경우


bool hencIsSENCFile( const char *fn )

입력된 파일이 hns SENC 파일이 맞는지 검사한다.

const char *fn : IN (검사 파일명)

true : SENC 파일이 맞는 경우 false : Error 또는 SENC 파일이 아닌 경우


bool hencIsCatalogFile( const char *fn )

ENC 또는 SENC의 Catalog 파일인지 검사하고, 파일명이 CATALOG인지 여부를 검사한다.

const char *fn : IN (검사 파일명)

true : 검사 성공, Catalog 파일이 맞는 경우 false : 검사 실패 또는 에러, Catalog 파일이 맞지 않는 경우


bool hencIsShapeFile( const char *fn )

Shape 파일인지 여부와 파일명의 확장자를 검사한다.

const char *fn : IN (검사 파일명)

true : 검사 성공, Shape 파일이 맞는 경우 false : 검사 실패 또는 에러, Shape 파일이 맞지 않는 경우


char *hencEncStringToMBC( const char *str )

으로 로딩된 ENC 정보의 저장에 사용되는 이진 문자열을 디코딩하여 멀티바이트 코드(Multi Byte Code)로 변환하기 위해 사용한다.

const char *str : IN (인코딩된 문자열)

!= NULL : 변환된 문자열 (호출자(Caller)가 메모리 해제(free)해야 함) == NULL : 변환 실패

ENC 정보 저장 이진 문자열은 인코딩 타입과 이진 문자열을 가지고 있다. 이는 S-57 표준의 문자열 인코딩을 지원하기 위한 포맷이다.


int hencCreate( HWND hwnd )
  • 지도 전시 대상 창에 대해서 사용될 정보인 HGLRC와 HDC를 생성한다.
  • OpenGL API 사용을 위해서는 반드시 전시 대상창이 있어야만 한다.
  • 모든 전시와 관련된 API는 함수를 통해 전시 준비를 하여야 하며, 사용 전에는 반드시 함수를 사용 후에 호출해야 한다.
  • 복수의 창에서 전시하는 경우에는 함수로 전시할 창을 구분한다. 그러나 전시 설정은 단일 설정으로 동작하며, 각 창별로 따로 설정할 수는 없다. 예를 들면 지도의 축척, 중심 위경도는 1 개의 상태값 만 있으며, 각 창과는 독립적이다.

HWND : IN (전시 대상 창)

= 0 : 성공. < 0 : 실패


int hencDelete( HWND wnd )

지도 전시 대상 창에 대해서 사용될 정보인 HGLRC와 HDC를 제거한다.

HWND : IN (전시 대상 창)

= 0 : 성공. < 0 : 실패


HGLRC hencGetGLRC( HWND hwnd )

지정 창에 해당되는 HGLRC를 획득한다.

HWND : IN (전시 대상 창)

!= NULL : HGLRC == NULL : 실패 (전시 대상 창 정보가 없음)


HDC hencGetDC( HWND hwnd )

지정 HWND 창에 사용되는 HDC를 획득한다.

HWND : IN (전시 대상 창)

!= NULL : HDC == NULL : 실패 (전시 대상 창 정보가 없음)

HDC hencGetDC()

현재 전시 창에 사용되는 HDC를 획득한다.

없음

!= NULL : HDC == NULL : 실패 (현재 전시 대상 창 없음)


int hencSelect( HWND hwnd )

지도 전시 대상 창을 지정한다.

HWND : IN (전시 대상 창)

= 0 : 성공 < 0 : 실패


HWND hencGetHwnd( )

설정된 전시 대상 창의 윈도우 핸들을 획득한다.

없음

!= NULL : HWND (전시 대상 창 핸들) == NULL : 실패 (전시 대상 창 없음)


int hencClearBackground()

현재 선택된 전시 창에 전체 OpenGL 전시 버퍼를 지운다. 따라서, 이전에 그려진 지도 내용이 삭제되어서 재사용할 수 없게 된다. OpenGL의 전시 버퍼 만을 지우는 기능이므로 현재 창의 화면에는 영향이 없다. 함수가 필요

없음

= 0 : 성공 < 0 : 실패


int hencSetViewport( int x, int y, int w, int h )

전시 버퍼의 지도 영역을 지정한다. hencSelect() 함수가 필요

int x : IN (WinPos, 윈도우 좌표계, 전시 영역 좌측 상단 지정) int y : IN (WinPos, 윈도우 좌표계, 전시 영역 좌측 상단 지정) int w : IN (WinPos, 윈도우 좌표계, 전시 영역 폭 지정) int h : IN (WinPos, 윈도우 좌표계, 전시 영역 높이 지정)

= 0 : 성공 < 0 : 실패


int hencClearViewport()

전시 버퍼의 지도 영역만을 삭제한다. 함수가 필요

없음

= 0 : 성공 < 0 : 실패


int hencRender()
  • 전시 버퍼의 지도 영역에 지도를 그린다. 현재의 설정에 맞게 전 지도를 그린 후에 Return하는 함수로서, 지도의 용량에 따라 긴 시간이 소요될 수 있다. 이는 버퍼에만 그려지며 실제 화면에는 나타나지 않는다.
  • 화면 표시 함수를 호출한 후에 실제로 화면에 나타나게 된다.
  • 함수가 필요

없음

  • = 0 : 성공
  • < 0 : 실패

int hencRenderWaitFinish()
  • OpenGL의 특성상 버퍼에 그린 후 곧바로 그림이 완성되지는 않기 때문에 일정한 시간 동안 대기가 필요하다. 이는 그림이 완성될 때까지 대기를 하기 위한 함수이다. 대부분의 경우 이 함수의 사용이 불필요하다.
  • 함수가 필요

없음

  • = 0 : 성공
  • < 0 : 실패

int hencRenderReset()
  • 부분적인 그리기를 준비한다. 함수와는 다르게 전시 준비만 수행한다.
  • 함수가 필요

없음

  • = 0 : 성공
  • < 0 : 실패

int hencRenderMore()
  • 전체 지도 그리기 과정 중 하나의 요소 만을 그린다. 즉, 부분 그리기를 제공하기 때문에 단 시간에 결과가 리턴된다. 이 함수를 반복하여 호출하면 전체 그리기 과정을 순차적으로 진행, 완료할 수 있다.
  • , 함수가 필요

없음

  • 0 : 하나의 요소 그리기 성공 (더 그릴 요소가 남아 있는 경우)

  • = 0 : 하나의 요소 그리기 성공 (전체 그리기 완료된 경우)
  • < 0 : 실패

int hencRenderStop()
  • 부분 그리기 과정을 중단하고, 과정 중 생성된 임시 정보들을 삭제한다.
  • 지도 버퍼에는 미 완성된 지도 그림이 남아있게 된다.
  • , 함수가 필요

없음

  • = 0 : 성공

  • < 0 : 실패

int hencRenderMoreTimed( DWORD msec = 100 )
  • hencRenderMore()와 동작은 동일하나 일정한 시간 동안에 다수의 요소를 그리도록 하는 함수이다. 지정된 시간 이상을 경과하면 함수는 자동 리턴된다.
  • , 함수가 필요

없음

  • 0 : 하나의 요소 그리기 성공 (더 그릴 요소가 남아 있는 경우)

  • = 0 : 하나의 요소 그리기 성공 (전체 그리기 완료된 경우)
  • < 0 : 실패

int hencSwapBuffer()
  • 전시 버퍼의 내용을 화면에 표시한다. 이 함수는 OpenGL의 특성을 이용하는 것으로, 실제 화면 상에 표시되는 것은 함수가 리턴되는 시점 이후에 이루어지는 비동기 함수이다. 따라서 CPU를 좀 더 활용할 수 있기 때문에 성능 향상에는 도움이 된다. 그러나, 창에 HDC를 이용해 그리기는 할 경우에는 원치 않는 결과가 발생될 수 있음을 주의해야 한다.
  • 이 함수가 호출되는 경우, 전시 버퍼에는 지도 내용이 남아 있지 않거나 잘못된 것이 남아 있을 수 있다. 이는 OpenGL 디바이스 드라이버에 따라 다를 수도 있으며, 일반적으로는 지도의 내용이 남아 있지 않는다.
  • 함수가 필요
  • 전체 지도 그리기 또는 부분 지도 그리기 과정 이후에 사용 가능
  • 전체 지도 그리기 :
  • 부분 지도 그리기 : , , 등

없음

  • = 0 : 성공
  • < 0 : 실패

int hencCopyBuffer()
  • 전시 버퍼 내용을 화면에 복사한다. 이 함수는 전시 버퍼의 내용은 그대로 보존하면서 복사하여 화면에 표시하기 위한 것으로서 OpenGL 전시가 완료될 때까지 대기한 후에 복사를 수행하는 동기 함수이다.
  • OpenGL 전시가 완료될 때까지 대기한 후에 복사를 수행하는 동기 함수이다. 전시가 완료되기를 대기하므로 에 비해 상대적으로 CPU 활용도는 떨어지지만, 이후 전시 화면에 HDC를 사용해서 그리기를 할 수 있다.
  • 이 함수를 호출한 후에도 전시 버퍼에는 이전 지도의 내용이 그대로 남아 있게 된다.
  • 함수가 필요
  • 전체 지도 그리기 또는 부분 지도 그리기 과정 이후에 사용 가능
  • 전체 지도 그리기 :
  • 부분 지도 그리기 : , , 등

없음

  • = 0 : 성공
  • < 0 : 실패

bool hencEncfileIsRendered( int no )

특정 ENC 파일이 현재 화면에 일부라도 표시되고 있는지 여부를 판정한다.

  • 지도셀은 로드되는 순서대로 0번부터 번호가 부여된다.
  • true : 일부 또는 전체가 화면에 표시되고 있음을 의미
  • false : 화면 영역에 포함되지 않음을 의미

int hencSetCenter( double cx, double cy )

지도 전시의 중심점을 지정하기 위해 사용한다.

  • double cx : IN (경도, degree)
  • double cy : IN (위도, degree)
  • = 0 : 성공
  • < 0 : 실패

int hencGetCenter( double &cx, double &cy )

현재 지도의 중심점을 획득하기 위해 사용한다.

  • double &cx : OUT (경도, degree)
  • double &cy : OUT (위도, degree)
  • = 0 : 성공
  • < 0 : 실패

double hencGetCenterX()

현재 지도의 중심점의 경도값을 획득한다.

없음

지도 중심점의 경도값


double hencGetCenterY()

현재 지도의 중심점의 위도값을 획득한다.

없음

지도 중심점의 위도값


int hencSetZoom( double scale )
  • 지도의 확대 비율을 지정하기 위한 함수로서 위경도 1도와 화면 1픽셀의 비율을 지정한다.
  • 함수와 연동되며, 오직 단위만 다르다.

scale : IN (확대 비율)

  • = 0 : 성공
  • < 0 : 실패

double hencGetZoom()
  • 지도의 확대 비율을 획득하기 위한 함수로서 위경도 1도와 화면 1 pixel의 비율을 지정한다.
  • 함수와 연동이 되며, 단위만 차이가 있다.

없음

지도 확대 비율값


double hencGetScale()
  • 이 값은 또는 함수로 지정된 실제 화면 상의 픽셀 크기 대비 실제 거리의 비율을 나타내는 값이다.

없음

축적값


int hencSetScale( double value )
  • 지도의 축척값을 지정하기 위한 함수로서 1:N 으로 표현되는 지도 축적 값에서의 N 값을 지정한다.
  • 이 값은 또는 함수로 지정된 실제 화면상의 픽셀 크기로부터 적절한 비율을 계산하여 화면의 축소 비율을 결정한다.
  • 함수와 연동이 되며, 단위만 차이가 있다.

value : IN (축척 값)

  • = 0 : 성공
  • < 0 : 실패

int hencSetRotation( double deg )

화면상에서 지도의 회전 각도를 지정한다.

deg : IN (CW 방향, degree 단위의 회전 각도)

  • = 0 : 성공
  • < 0 : 실패

double hencGetRotation()

현재 화면에 표시되고 있는 지도의 회전 각도를 획득한다.

없음

지도 회전 값. CW(단위 degree)


int hencSetMapArea( double minx, double miny, double maxx, double maxy )

지정한 사각 블럭의 영역이 지도 전시 영역에 표시되도록 지도 배율 값을 설정한다. 이 때 회전값은 0으로 지정된다.

  • double minx : IN (경도, 영역 내 최소 경도 값)
  • double miny : IN (위도, 영역 내 최소 위도 값)
  • double maxx : IN (경도, 영역 내 최대 경도 값)
  • double maxy : IN (위도, 영역 내 최대 위도 값)
  • = 0 : 성공
  • < 0 : 실패

int hencGetMapArea( double &minx, double &miny, double &maxx, double &maxy )

현재 화면에서 지도 정보가 있는 영역 전체의 위경도 좌표를 획득한다.

  • double &minx : OUT (경도, 영역 내 최소 경도 값)
  • double &miny : OUT (위도, 영역 내 최소 위도 값)
  • double &maxx : OUT (경도, 영역 내 최대 경도 값)
  • double &maxy : OUT (위도, 영역 내 최대 위도 값)
  • = 0 : 성공
  • < 0 : 실패

이 함수가 획득하는 값은 로 설정된 값과는 다를 수도 있다.


int hencSetMapParameter( double cx, double cy, double zoom, double rotation)
  • 중심 좌표, 확대 비율, 회전을 한꺼번에 설정
  • double cx : IN (지도 전시 중심점 경도, degree)
  • double cy : IN (지도 전시 중심점 위도, degree)
  • double zoom : IN (지도 확대 비율  경위도 1도와 화면 1픽셀의 비율)
  • double rotation : IN (지도 화면 각도, CW, degree)
  • = 0 : 성공
  • < 0 : 실패

int hencGetMapParameter( double &cx, double &cy, double &zoom, double &rotation )

화면 설정을 일괄적으로 획득한다.

  • double &cx : OUT (지도 전시 중심점 경도, degree)
  • double &cy : OUT (지도 전시 중심점 위도, degree)
  • double &zoom : OUT (지도 확대 비율  경위도 1도와 화면 1픽셀의 비율)
  • double &rotation : OUT (지도 화면 각도, CW, degree)
  • = 0 : 성공
  • < 0 : 실패

bool hencIsMapRectInView( double minx, double miny, double maxx, double maxy )

지정 영역이 전시 화면내에 일부라도 포함되어 있는 지 여부를 검사한다.

  • double minx : IN (경도, 영역 내 최소 경도 값)
  • double miny : IN (위도, 영역 내 최소 위도 값)
  • double maxx : IN (경도, 영역 내 최대 경도 값)
  • double maxy : IN (위도, 영역 내 최대 위도 값)
  • true : 지정 영역이 화면 내에 일부라도 포함되어 있음을 의미
  • false : 지정 영역이 화면을 벗어나 있음을 의미

bool hencIsGlRectInView( double minx, double miny, double maxx, double maxy )

지정 영역이 전시 화면내에 일부라도 포함되어 있는 지 여부를 검사한다.

  • double minx : IN (GIPos, 영역 내 최소 x 값)
  • double miny : IN (GIPos, 영역 내 최소 y 값)
  • double maxx : IN (GIPos, 영역 내 최대 x 값)
  • double maxy : IN (GIPos, 영역 내 최대 y 값)
  • true : 지정 영역이 화면 내에 일부라도 포함되어 있음을 의미
  • false : 지정 영역이 화면을 벗어나 있음을 의미

DWORD hencGetMapLevelMask()
  • ENC 지도는 6 개의 지도 레벨이 있다. 이 함수는 현재 지도의 레벨별 전시 여부에 대한 플래그값(flag)을 획득한다. 즉, 각 레벨별 전시 설정값을 획득한다.
  • 각 레벨별로 LSB05의 비트값은 각각 16 S-57 Code에 해당된다. 각 비트값에 따라 해당 레벨이 지도를 화면에 전시하거나 전시하지 않는다.
  • 0 이면 전시하지 않고, 1 이면 전시한다.

없음

레벨별 비트 마스크(Bit Mask)


void hencSetMapLevelMask( DWORD mask )
  • 지도의 레벨별 전시 여부를 설정하기 위한 함수이다. 각 지도 레벨별 전시 설정 여부는 비트마스크(Bit Mask) 형태로 지정한다.
  • 각 레벨별로 LSB05의 비트값은 각각 16 S-57 Code에 해당된다. 각 비트값에 따라 해당 레벨이 지도를 화면에 전시하거나 전시하지 않는다.
  • 0 이면 전시하지 않고, 1 이면 전시한다.
  • Level 05는 S-57 Code 16에 해당하며, 각 지도 전시 여부를 결정

없음

  • 전자해도 로드시 레벨 값은 지도셀의 파일명이 xx?xxxxx.xxx일 경우, ?의 값으로 지정된다. 이 값은 S-57 코드값으로 1~6 까지 설정이 가능하다. 내부적으로 저장되는 레벨 값은 S-57 코드값 보다 1 작은 값으로 세팅된다.
  • (예) Level 0 = S-57 Code 1
  • 레벨 값을 확인할 수 없는 경우에는 “0”으로 지정한다.
  • 레벨 10은 최상위 레벨로서 별도로 처리되며, 모든 지도의 최상위 계층에 그려지게 된다.
  • 함수의 결과값으로 지도의 레벨 값을 변경할 수가 있다.

int hencEncfileGetVisible( int no )

각 지도셀 별로 전시가 설정되어 있는지 여부를 확인한다.

int no : IN (지도 번호)

  • 0 : 전시

  • == 0 : 미전시
  • < 0 : 실패 (지도 번호 오류)
  • 상세 내용은 “지도 파일 입출력”을 참고

int hencEncfileSetVisible( int no, int isShow )
  • flag가 0 이면, 해당 지도셀을 화면에서 보이지 않도록 감춘다.
  • int no : IN (지도 번호)
  • int isShow : IN (0 : 미전시, 1 : 전시)
  • = 0 : 성공
  • < 0 : 실패

int hencEncfileSetLevel( int no, int level )
  • 개별 지도 파일의 레벨을 변경한다.
  • 각 지도를 로딩할 때 파일명에 포함된 S-57 코드값에 따라 전시 레벨이 결정된다.
  • 상위 레벨(숫자가 크면 상위 레벨)이 하위 레벨의 지도와 영역이 겹치는 경우, 상위 레벨 지도가 하위 레벨 지도를 가리게 된다.
  • int no : IN (지도 번호)
  • int level : IN (지도 레벨, 0~5 or 10까지 가능)
  • = 0 : 성공
  • < 0 : 실패

int hencEncfileGetLevel( int no )

지도 맵 파일(Map File)의 현재 설정된 레벨값을 얻는다.

int no : IN (지도 번호)

  • 0~5 or 10 : 성공 (레벨 값)
  • < 0 : 실패

int hencEncfileSetBottom( int no )

특정 지도 셀을 레벨 0으로 지정하여 화면상에서 다른 지도의 하위 레이어에 그려지도록 한다.

없음

  • = 0 : 성공.
  • < 0 : 실패

int hencEncfileSetTopMost( int no )

특정 지도 셀을 레벨 10으로 지정하여 화면상에서 다른 지도의 상위 레이어에 그려지도록 한다.

없음

  • = 0 : 성공.
  • < 0 : 실패

int hencEncfileSetScaleForTopmost( int scale )
  • 레벨 10의 지도를 전시할 최소의 축척을 지정한다. 이는 최상위(Top Most)의 지도가 용량이 매우 크고, 상세한 지도일 때 사용하기 위한 함수이다.
  • 즉, 기존 전자해도 상위에 추가적으로 오버레이(Overlay)하는 지도를 사용하기 위한 용도에 적용될 수 있다.
  • 0 : 상시 전시
  • 0 : 전시 축척 1:N에서 N 값이 스케일(scale) 값보다 작을 때에만 전시

  • = 0 : 성공.
  • < 0 : 실패

int hencSetObjMask( EEncObject obj, bool flag )

ENC Feature Object의 종류별 전시 여부를 지정한다.

  • EEncObject obj : IN (ENC Feature Object Code)
  • 2.23.1 S-57 Feature Object Catalog 참조
  • bool flag : IN
  • true : 전시
  • false : 미전시
  • = 0 : 성공
  • < 0 : 실패

bool hencGetObjMask( EEncObject obj )

ENC Feature Object의 종류별 전시 여부를 획득한다.

  • 2.23.1 S-57 Feature Object Catalog 참조
  • true : 전시
  • false : 미전시

int hencSetPixelSize( double meter )
  • 지도의 축척 계산에 사용되는 화면 픽셀의 크기를 지정한다. (단위 : meter)
  • 함수와 연동이 되며, 단위만 차이가 있다.

double meter : IN (화면 1 픽셀의 크기, meter)

  • = 0 : 성공
  • < 0 : 실패

기본 설정값 : 0.000265 ~= 96DPI


int hencSetPixelDPI( int dpi )
  • 지도의 축척 계산에 사용되는 화면 픽셀의 크기를 지정한다. (단위 : 픽셀수, DPI)
  • 함수와 연동이 되며, 단위만 차이가 있다.

int dpi : IN (화면 1 인치 당 픽셀 수, DPI)

  • = 0 : 성공
  • < 0 : 실패

기본 설정값 : 0.000265 ~= 96DPI


double hencGetPixelSize()

설정된 화면 1 픽셀의 크기 값을 미터 단위로 변환하여 반환한다.

없음

설정된 화면 1 픽셀에 해당하는 크기 값 (미터 단위)

기본 설정값 : 0.000265 ~= 96DPI


int hencGetPixelDPI()

설정된 화면 1 픽셀의 크기 값을 DPI 단위로 변환하여 반환한다.

없음

설정된 화면 DPI 값

기본 설정값 : 0.000265 ~= 96DPI


double hencGetSymbolScale()

S-52 심볼(Symbol), 패턴(Pattern), 라인(Line) 등의 크기값을 획득한다.

없음

Symbol Scale 값


int hencSetSymbolScale( double scale )

S-52 심볼(Symbol), 패턴(Pattern), 라인(Line) 등의 크기값을 지정한다. 이 값의 비율에 따라 각 심볼, 패턴, 라인이 같은 비율로 바뀐다.

double scale : IN (심볼의 크기(Symbol Scale) 값)

  • = 0 : 성공
  • < 0 : 실패

기본 설정값 : 0.033333 ~= 96DPI


bool hencIsAutoScaleToZoom()

위도 변경시 전시 배율의 자동 조정 기능을 사용하고 있는지 여부를 확인한다.

없음

  • true : 자동 배율을 사용
  • false : 자동 배율을 사용하지 않음

int hencSetAutoScaleToZoom( bool flag )

위도 변경시 축척값에 맞게 전시 배율을 자동으로 조정하는 기능을 설정한다.

  • true : 자동 배율을 사용
  • false : 자동 배율을 사용하지 않음
  • = 0 : 성공
  • < 0 : 실패

bool hencIsMercator()

Mercator 투영법의 사용 여부를 확인한다.

없음

  • true : Mercator 투영법을 사용
  • false : Mercator 투영법을 사용하지 않음

void hencSetMercator( bool flag )

Mercator 투영법의 사용 여부를 지정한다.

  • true : Mercator 투영법을 사용
  • false : Mercator 투영법을 사용하지 않음

없음


void hencSetSimplifiedSymbol( bool flag )

S-52 심볼, 패턴, 라인을 전시할 때 간략화 심볼(Simpilfied Symbol)의 사용 여부를 지정한다.

  • true : Simpilfied 심볼, 패턴, 라인을 사용
  • false : Simpilfied 심볼, 패턴, 라인을 사용하지 않음

없음


bool hencIsSimplifiedSymbol()

S-52 심볼, 패턴, 라인을 전시할 때 간략화된 심볼(Simpilfied Symbol)의 사용 여부를 확인한다.

없음

  • true : Simpilfied 심볼, 패턴, 라인을 사용
  • false : Simpilfied 심볼, 패턴, 라인을 사용하지 않음

EDisplayCategory hencGetDisplayCategory()

전시 카테고리를 획득한다. (2.23.5절의 S-52 Display Category 참조)

없음

EDisplayCategory의 현재 설정값


void hencSetDisplayCategory( EDisplayCategory c )

전시 카테고리를 지정한다. (2.23.5절의 S-52 Display Category 참조)

EDisplayCategory c : IN (EDisplayCategory 설정값)

없음


void hencSetNationalLanguage( bool flag )
  • ENC 파일 내에 지역 언어의 사용 여부를 지정한다.
  • 각 ENC 특성 객체(Feature Object)의 정보를 표시할 때 지역 언어 정보를 포함하고 있으면, 이를 사용할 것인지 여부를 지정한다. 사용하지 않도록 설정하면 항상 영어로 표시된다.
  • true : 지역 언어 사용
  • false : 영어만 사용

없음


bool hencIsNationalLanguage()

ENC 파일 내에 지역 언어의 사용 여부를 확인한다.

없음

  • true : 지역 언어 사용
  • false : 영어만 사용

int hencGetUseScaleMinMax()

ENC Feature Object 내에 SCAMIN, SCAMAX 값을 활용하여 전시하고 있는지 여부를 확인한다.

없음

  • != 0 : 사용 중
  • ==0 : 사용 안 함
  • < 0 : 실패

void hencSetUseScaleMinMax( int flag )

ENC Feature Object 내 SCAMIN, SCAMAX 값을 활용하여 전시할지 여부를 지정한다.

  • != 0 : 사용
  • ==0 : 사용 안 함

없음


int hencGetUseScaleMinMax()

지도 전시 시 레벨에 따라 전시 여부를 결정하는 기능의 사용 여부를 획득합니다.

없음

  • != 0 : 사용 중
  • ==0 : 사용 안 함
  • < 0 : 실패

void hencSetViewMapByScale( int flag )

지도 전시 시 레벨에 따라 전시 여부를 결정하는 기능의 사용 여부를 설정한다. 지정된 축척 이하에서는 상세 지도를 화면에서 감추는 기능을 설정한다.

  • != 0 : 사용
  • ==0 : 사용 안 함

없음


int hencSetDepth( EDepthType t, double depth )

현재 설정된 수심을 표시하는 설정값을 변경한다. S-52 CSP에 사용되는 수심 별 색상 및 선 구분 표시에 사용되는 수심값을 설정한다.

  • EDepthType t: IN (수심 종류)
  • double depth : IN (수심 값, meter)
  • = 0 : 성공

  • < 0 : 실패

double hencGetDepth( EDepthType t );
  • 현재 설정된 수심 표시에 대한 설정값을 획득한다.
  • 상세 내용은 함수를 참조

EDepthType t : IN (수심 종류) enum EDepthType { SHALLOW_CONTOUR, DEEP_CONTOUR, SAFETY_CONTOUR, SAFETY_DEPTH, DEPTHTYPE_MAX };

현재 설정값


int hencSetShallowPattern( bool flag )

얕은 수심을 표시하기 위한 저수심 패턴(Shallow pattern)의 표시 여부를 설정한다.

  • true : 저수심 패턴을 표시
  • false : 저수심 패턴을 표시 안함
  • = 0 : 성공

  • < 0 : 실패

bool hencIsShallowPattern()

얕은 수심을 표시하기 위한 저수심 패턴(Shallow pattern)의 표시 유무 설정값을 획득한다.

없음

저수심 패턴의 전시 유무 값


int hencSetTwoShades( bool flag )
  • 해수면의 수심 영역을 표시할 때 2 가지 색상만 사용할지에 대한 여부를 설정한다.
  • 해수면은 2 가지 색상 또는 4 가지의 색상으로 수심 깊이에 따라 다른 색상으로 표시된다. 이때 사용할 색상의 수를 지정한다.
  • true : 2가지 색상만을 사용
  • false : 2가지 색상 이상을 사용
  • = 0 : 성공

  • < 0 : 실패

bool hencIsTwoShades()

해수면을 표시할 때 2가지 색상 모드를 사용하는지 여부를 획득한다.

없음

1: 2가지 색상 사용 1: 2가지 색상 사용하지 않음(4가지 색상이 사용됨)


int hencSetHideMeta( bool flag )

S-57 ENC의 특성객체(Feature Object) 중에서 메타객체(Meta Object, 300번대 Object Code)에 해당하는 객체의 표시 여부를 설정한다.

  • true : 메타객체를 전시하지 않음
  • false : 메타객체를 전시
  • = 0 : 성공

  • < 0 : 실패

bool hencIsHideMeta()

메타객체(Meta Object)의 전시 여부 설정값을 획득한다.

없음

메타객체의 전시 여부


int hencSetColorset( EEncColorset colorset )

지도 전시 색상표를 지정한다. (S-52 Color 참조)

EEncColorset colorset : IN (색상표 값) enum EEncColorset { COLORSET_DAY_BRIGHT, COLORSET_DAY_WHITEBACK, COLORSET_DAY_BLACKBACK, COLORSET_DUSK, COLORSET_NIGHT, COLORSET_USER, COLORSET_MAX };

  • = 0 : 성공
  • < 0 : 실패

EEncColorset hencGetColorset()

사용 중인 지도 전시 색상표 값을 획득한다. (S-52 Color 참조)

없음

사용 중인 지도 전시 색상표 값 enum EEncColorset { COLORSET_DAY_BRIGHT, COLORSET_DAY_WHITEBACK, COLORSET_DAY_BLACKBACK, COLORSET_DUSK, COLORSET_NIGHT, COLORSET_USER, COLORSET_MAX };


int hencFontGet( LOGFONT *lf )

지도 전시에 사용할 글꼴에 대한 설정값을 획득한다.

LOGFONT *lf : IN, OUT (Win32 LOGFONT structure)

  • = 0 : 성공
  • < 0 : 실패

int hencFontSet( LOGFONT *lf )

지도 전시에 사용할 글꼴의 설정값을 지정한다.

LOGFONT *lf : IN (Win32 LOGFONT structure)

  • = 0 : 성공
  • < 0 : 실패

int hencSelectObj( HENCOBJECT obj )

지정한 객체(Object)를 선택된 모양으로 전시하도록 설정한다.

  • 함수를 이용하여 검색한 객체 핸들값(Object handle)
  • = 0 : 성공
  • < 0 : 실패

int hencPickObj( double x, double y, list &listObjs )
  • 검색되는 객체는 현재 화면의 전시 설정에 따라 대상이 제한된다. 지정된 좌표에서 현재 배율로 화면 상의 약 10 pixel 범위 이내의 점, 선, 영역이 검색된다.
  • 단, 현재 표시하지 않고 있는 객체나 지도셀은 검색에서 제외된다.
  • double x : IN (경도, degree)
  • double y : IN (위도, degree)
  • list &listObjs : IN, OUT (검색된 객체의 고유 핸들값 목록)
  • = 0 : 성공
  • < 0 : 실패

void hencObjToString( HENCOBJECT obj, string &str )

해당 객체에 대한 세부 정보를 문자열 형태로 변환해 준다.

  • HENCOBJECT obj : IN (ENC 특성객체 핸들값)
  • hencPickObj()로부터 획득한 값이어야 한다.
  • string &str : IN, OUT (객체에 대한 상세 정보를 포함하고 있는 문자열)

없음


const char *hencGetFilenameOfObj( HENCOBJECT obj )

해당 객체를 포함하고 있는 파일을 검색하여 파일명을 추출한다.

  • 로부터 획득한 값이어야 한다.
  • != NULL : 파일명, Null로 종료된 문자열
  • == NULL : 파일명을 찾을 수 없음(실패)

EEncObject hencObjGetCode( HENCOBJECT obj )

해당 객체의 S-57 객체코드(Object Code) 값을 알아낸다.

  • hencPickObj()로부터 획득한 값이어야 한다.
  • S-57 특성객체 카탈로그(Feature Object Catalog) 참조

EObjectPrimitiveType hencObjGetPrimType( HENCOBJECT obj )

해당 객체의 S-57 객체의 Primitive Type(점, 선, 면)을 알아낸다.

  • HENCOBJECT obj : IN (ENC 특성객체 핸들값)
  • 로부터 획득한 값이어야 한다.

해당 객체의 S-57 특성객체 Primitive Type 참조


int hencObjGetPoints( HENCOBJECT obj, S_OBJ_POLYGON *data )

해당 객체의 S-57 객체 좌표 정보를 획득한다.

  • HENCOBJECT obj : IN (ENC 특성객체 핸들값)
  • 로부터 획득한 값이어야 한다.
  • S_OBJ_POLYGON * data : IN, OUT (S_OBJ_POLYGON *data)
  • 다음 형태의 구조체로, 폴리폴리곤의 정보를 담고 있다.
  • == 0 : 성공
  • < 0 : 실패

HENCDEPTHMAP hencDepthmapGenerate()

현재 로드된 모든 ENC 지도셀(Map Cell)로부터 수심 정보 만을 수집한다.

없음

  • != 0 : 생성된 수심 정보의 핸들값
  • == 0 : 실패

int hencDepthmapSave( HENCDEPTHMAP hdd, const char *fn )

생성된 수심 정보의 집합을 파일로 저장한다.

  • HENCDEPTHMAP hdd : IN ( 함수로 생성한 수심 정보 핸들값)
  • const char * fn : IN (수심 정보 저장 파일명)
  • = 0 : 성공
  • < 0 : 실패

HENCDEPTHMAP hencDepthmapLoad( const char *fn )

수심 정보 파일로부터 수심 정보 집합을 읽어 들인다.

const char *fn : IN (수심 정보 저장 파일명)

  • != 0 : 읽어온 수심 정보의 핸들값
  • == 0 : 실패

int hencDepthmapGetData( HENCDEPTHMAP hdd, double x, double y, double &dep1, double &dep2 )

수심 정보 집합에서 특정 좌표의 수심 정보를 검색한다.

  • HENCDEPTHMAP hdd : IN (수심 정보 집합의 핸들값)
  • double x : IN (수심 정보 검색 위치의 경도, degree)
  • double y : IN (수심 정보 검색 위치의 위도, degree)
  • double &dep1 : OUT (최저 수심)
  • double &dep2 : OUT (최대 수심)
  • = 0 : 성공
  • < 0 : 실패

int hencDepthmapDelete( HENCDEPTHMAP hdd )

수심 정보 집합이 점유하고 있는 메모리를 해제한다.

HENCDEPTHMAP hdd : IN (수심 정보 집합의 핸들값)

  • = 0 : 성공
  • < 0 : 실패

int hencGetEncSymbolCount()

사용 가능한 S-52 심볼의 개수를 획득한다.

없음

라이브러리에서 사용 가능한 심벌의 개수


const char *hencGetEncSymbolName( int no )

S-52 심볼 번호에 대한 문자열의 이름을 획득한다.

int no : IN (심볼 번호)

  • != NULL : 심볼 이름, Null로 종료된 문자열
  • S-52 표준 문서에 명시된 이름과 동일
  • == NULL : 실패 (잘못된 심볼 번호)

int hencDrawEncSymbol( const char *name )

S-52 심볼을 화면에 전시한다.

  • const char *name : IN (Null로 종료된 문자열)
  • S-52 표준 문서에 명시된 이름과 동일
  • = 0 : 성공
  • < 0 : 실패

int hencDrawEncSymbolAtGlPos( const char *name, double x, double y, double z, double angle = 0, double scale = 1.0 )

S-52 심볼을 화면에 전시한다.

  • const char *name : IN (Null로 종료된 문자열, S-52 표준 문서에 명시된 이름과 동일)
  • double x : IN (OpenGL 좌표계 x값)
  • double y : IN (OpenGL 좌표계 y값)
  • double z : IN (OpenGL 좌표계 z값)
  • double angle : IN (CW, 회전 각도, degree)
  • double scale : IN (확대/축소 값)
  • = 0 : 성공
  • < 0 : 실패

int hencDrawEncSymbolAtWinPos( const char *name, double x, double y )

S-52 심볼을 화면에 전시한다.

  • const chat *name : IN (Null로 종료된 문자열, S-52 표준 문서에 명시된 이름과 동일)
  • double x : IN (Window GDI 좌표계 x값)
  • double y : IN (Window GDI 좌표계 y값)
  • = 0 : 성공
  • < 0 : 실패

int hencDrawEncSymbolAtMapPos( const char *name, double x, double y )

S-52 심볼을 화면에 전시한다.

  • const char *name : IN (Null로 종료된 문자열, S-52 표준 문서에 명시된 이름과 동일)
  • double x : IN (경도, degree)
  • double y : IN (위도, degree)
  • = 0 : 성공
  • < 0 : 실패

int hencGetEncLineCount()

사용 가능한 S-52 Complex Line의 개수를 획득한다.

없음

라이브러리에서 사용이 가능한 Complex Line의 개수


const char *hencGetEncLineName( int no )

S-52 Complex Line 번호에 대한 문자열의 이름을 획득한다.

int no : IN (Complex Line 번호)

  • != NULL : Complex Line 번호 문자열 이름, Null로 종료된 문자열
  • S-52 표준 문서에 명시된 이름과 동일
  • == NULL : 실패 (잘못된 번호)

int hencDrawEncLineAtGlPos( LPCTSTR name, double x1, double y1, double x2, double y2, double z )

S-52 Complex Line을 화면에 전시한다.

  • LPCTSTR name : IN (Null로 종료된 문자열, 으로 획득하는 이름을 사용)
  • double x1 : IN (라인 시점의 x값, OpenGL 좌표계)
  • double y1 : IN (라인 시점의 y값, OpenGL 좌표계)
  • double x2 : IN (라인 종점의 x값, OpenGL 좌표계)
  • double y2 : IN (라인 종점의 y값, OpenGL 좌표계)
  • double z : IN (라인의 z값, OpenGL 좌표계)
  • = 0 : 성공
  • < 0 : 실패

int hencDrawEncLineAtWinPos( const char *name, double x1, double y1, double x2, double y2, double z )

S-52 Complex Line을 화면에 전시한다.

  • LPCTSTR name : IN (Null로 종료된 문자열, 으로 획득하는 이름을 사용)
  • double x1 : IN (라인 시점의 x값, Windows GDI 좌표계)
  • double y1 : IN (라인 시점의 y값, Windows GDI 좌표계)
  • double x2 : IN (라인 종점의 x값, Windows GDI 좌표계)
  • double y2 : IN (라인 종점의 y값, Windows GDI 좌표계)
  • double z : IN (라인의 z값, OpenGL 좌표계)
  • = 0 : 성공
  • < 0 : 실패

int hencDrawEncLineAtMapPos( LPCTSTR name, double x1, double y1, double x2, double y2, double z )

S-52 Complex Line을 화면에 전시한다.

  • LPCTSTR name : IN (Null로 종료된 문자열, 으로 획득하는 이름을 사용)
  • double x1 : IN (라인 시점의 x값, degree, 위경도 좌표계)
  • double y1 : IN (라인 시점의 y값, degree, 위경도 좌표계)
  • double x2 : IN (라인 종점의 x값, degree, 위경도 좌표계)
  • double y2 : IN (라인 종점의 y값, degree, 위경도 좌표계)
  • double z : IN (라인의 z값, OpenGL 좌표계)
  • = 0 : 성공
  • < 0 : 실패

int hencGetEncPatternCount()

사용 가능한 S-52 Fill 패턴의 개수를 획득한다.

없음

라이브러리에서 사용이 가능한 Fill 패턴의 개수


const char * hencGetEncPatternName( int no )

S-52 Fill 패턴 번호에 대한 문자열 이름을 획득한다.

int no : IN (Fill 패턴 번호)

  • != NULL : 패턴 번호 문자열 이름, Null로 종료된 문자열
  • S-52 표준 문서에 명시된 이름과 동일
  • == NULL : 실패 (잘못된 패턴 번호)

int hencDrawEncPatternFillAtGlPos( LPCTSTR name, int cntPts, double *x, double *y, double z )

S-52 Fill 패턴으로 주어진 영역을 채운다.

  • LPCTSTR name : IN (Null로 종료된 문자열, S-52 Fill 패턴 이름)
  • int cntPts : 영역 Polygon 좌표의 개수
  • double *x : IN (영역 Polygon x 좌표 배열, OpenGL 좌표계)
  • double *y : IN (영역 Polygon y 좌표 배열, OpenGL 좌표계)
  • double z : IN (라인의 z값, OpenGL 좌표계, 모든 좌표 동일)
  • = 0 : 성공
  • < 0 : 실패

int hencDrawEncPatternFillAtWinPos( LPCTSTR name, int cntPts, double *x, double *y )

S-52 Fill 패턴으로 주어진 영역을 채운다.

  • LPCTSTR name : IN (Null로 종료된 문자열, S-52 Fill 패턴 이름)
  • int cntPts : 영역 Polygon 좌표의 개수
  • double *x : IN (영역 Polygon x 좌표 배열, Windows GDI 좌표계)
  • double *y : IN (영역 Polygon y 좌표 배열, Windows GDI 좌표계)
  • = 0 : 성공
  • < 0 : 실패

int hencDrawEncPatternFillAtMapPos( LPCTSTR name, int cntPts, double *x, double *y )

S-52 Fill 패턴으로 주어진 영역을 채운다.

  • LPCTSTR name : IN (Null로 종료된 문자열, S-52 Fill 패턴 이름)
  • int cntPts : 영역 Polygon 좌표의 개수
  • double *x : IN (영역 Polygon 경도 좌표 배열)
  • double *y : IN (영역 Polygon 위도 좌표 배열)
  • = 0 : 성공
  • < 0 : 실패

COLORREF hencGetColor( EEncColor color )
  • S-52 Color 참조

EEncColor color : IN (S-52 색상(color) 코드 값)

색상 RGB 값

COLORREF hencGetColor( EEncColorset setNo, EEncColor color )
  • S-52 Color 참조
  • EEncColorset setNo : 취득을 원하는 색상 지정
  • EEncColor color : IN (S-52 색상(color) 코드 값)

색상 RGB 값

COLORREF hencGetColor( const char *acronym )
  • S-52 Color 참조

const char *acronym : IN (S-52 color acronym 문자열)

색상 RGB 값


const char * hencGetColorName( EEncColor color )

색상 코드에 해당하는 acronym을 획득한다.

EEncColor color : IN (S-52 색상 코드)

  • != NULL : S-52 color acronym 문자열
  • == NULL : 실패 (잘못된 문자열)

const char * hencGetPrimName( EObjectPrimitiveType t )
  • S-57 ENC Object Primitive Type 참조

EObjectPrimitiveType t : IN (S-57 ENC Object Primitive Type)

  • != NULL : 문자열
  • == NULL : 실패

const char * hencGetObjectName( EEncObject obj )

S-57 Feature Object Code에 해당하는 acronym 문자열을 획득한다.

EEncObject obj : IN (S-57 Feature Object Code)

  • != NULL : 문자열
  • == NULL : 실패

const char * hencGetObjectDesc( EEncObject obj )

S-57 Feature Object Code에 해당하는 description 문자열을 획득한다.

EEncObject obj : IN (S-57 Feature Object Code)

  • != NULL : 문자열
  • == NULL : 실패

const char * hencGetAttrName( EEncAttr attr )

S-57 Feature Attribute Code에 해당하는 acronym 문자열을 획득한다.

EEncAttr attr : IN (S-57 Feature Attribute Code)

  • != NULL : 문자열
  • == NULL : 실패

EEncAttr hencEnumAttr( const char *acronym )

S-57 Feature Attribute acronym에 해당하는 코드값을 획득한다.

const char *acronym : IN (S-57 Feature Attribute acronym 문자열)

S-57 Feature Attribute Code


EEncObject hencEnumObjectName( const char *acronym )

S-57 Feature Object acronym에 해당하는 코드값을 획득한다.

const char *acronym : IN (S-57 Feature Object acronym 문자열)

S-57 Feature Object Code


COLORREF hencGetUserColor( EEncColor eco )

사용자 색상표에서 S-52 색상 코드에 해당하는 RGB 값을 획득한다.

EEncColor eco : IN (S-52 색상 코드값)

RGB 색상 값


void hencSetUserColor( EEncColor eco, COLORREF co )

사용자 색상표에서 S-52 색상 코드에 해당하는 RGB 값을 설정한다.

  • EEncColor eco : IN (S-52 색상 코드값)
  • COLORREF co : IN (RGB 색상)

없음


void hencResetUserColor()

사용자 정의 색상표의 모든 색 값을 표준 낮 색상표로 설정한다

없음

없음


CEncUserImage *hencUserImageNew( const char *fnBmp )

이미지 파일로부터 이미지를 생성한다.

const char * fnBmp : IN (이미지 파일명)

  • != NULL : 이미지 객체
  • == NULL : 읽기 실패

int hencUserImageDelete( CEncUserImage * hui )

이미지 객체의 메모리를 해제한다.

  • 함수로 생성된 값이어야 함
  • = 0 : 성공
  • < 0 : 실패

int hencUserImageDrawAtMapPos( CEncUserImage * hui, double x, double y, double angle = 0, double scale = 1.0)

이미지 객체를 지도 위 좌표 상에 그린다.

  • CEncUserImage * hui : IN (이미지 객체)
  • 함수로 생성된 값이어야 함
  • double x : IN (경도, degree)
  • double y : IN (위도, degree)
  • double angle : IN (회전 각도, CW, degree)
  • double scale : IN (확대 비율_)

int hencUserImageDrawAtGlPos( CEncUserImage * hui, double x, double y, double z = 0, double angle = 0, double scale = 1)
  • z 좌표 지정
  • CEncUserImage * hui : IN (이미지 객체)
  • 함수로 생성된 값이어야 함
  • double x : IN (GlPos)
  • double y : IN (GlPos)
  • double z : IN (GlPos)
  • double angle : IN (회전 각도, CW, degree)
  • double scale : IN (확대 비율)
  • = 0 : 성공
  • < 0 : 실패

int hencUsersymbolInit()
  • 사용자 정의 심볼을 초기화 시킨다.
  • 이전에 등록된 사용자 정의 심벌을 메모리에 적재한다.
  • 라이브러리 내에서 자동적으로 호출이 되므로 별도로 호출할 필요가 없다.

없음

  • = 0 : 성공
  • < 0 : 실패

void hencUsersymbolClear()
  • 사용자 정의 심벌이 점유하고 있는 메모리를 해제한다.
  • 라이브러리 내에서 자동적으로 호출이 되므로 별도로 호출할 필요가 없다.

없음

없음


int hencUsersymbolDel( const char *name )

이름에 해당하는 사용자 정의 심볼을 삭제한다. 이 때 사용자 정의 심벌을 저장하는 디렉토리의 이미지 파일도 함께 삭제된다.

const char * name : IN (객체 이름, Null로 종료된 문자열)

  • = 0 : 성공
  • < 0 : 실패
int hencUsersymbolDel( CEncUserImage *img )

객체 포인터에 해당하는 사용자 정의 심볼을 삭제한다. 이 때 사용자 정의 심볼을 저장하는 디렉토리의 이미지 파일도 함께 삭제된다.

CEncUserImage * img : IN (사용자 정의 심볼 포인터)

  • = 0 : 성공
  • < 0 : 실패

int hencUsersymbolAddNewImage( CEncUserImage *imgNew, const char *fname)
  • 사용자 정의 심벌을 등록한다.
  • 사용자 정의 심벌을 저장하는 디렉토리에 해당 파일을 PNG 포맷의 이미지로 저장하여 다음 실행 시에도 사용할 수 있다.
  • CEncUserImage *imgNew : IN (사용자가 생성한 사용자 정의 이미지 객체)
  • 등록된 이후에는 라이브러리가 직접 메모리를 관리하므로 삭제(delete)나 메모리 해제(free)를 하지 말아야 한다.
  • const char *name : IN (사용자 정의 이미지 객체의 이름, Null로 종료된 문자열)
  • 파일 이름으로 적합한 문자열이어야 한다.
  • = 0 : 성공
  • < 0 : 실패

int hencUsersymbolAddToMap( CEncUserImage *imgNew, const char *name )
  • 사용자 정의 심벌로 임시 등록한다.
  • 이 경우, 사용자 정의 심벌 저장 디렉토리에 해당 파일을 저장하지 않는다. 따라서, 이번 실행 시에만 사용이 가능하고, 다음번 실행 시에는 사용할 수 없다.
  • CEncUserImage *imgNew : IN (사용자가 생성한 사용자 정의 이미지 객체)
  • 등록된 이후에는 라이브러리가 직접 메모리를 관리하므로 삭제(delete)나 메모리 해제(free)를 하지 말아야 한다.
  • const char *name : IN (사용자 정의 이미지 객체의 이름, Null로 종료된 문자열)
  • 파일 이름으로 적합한 문자열이어야 한다.
  • = 0 : 성공
  • < 0 : 실패

int hencUsersymbolGetCount()

등록된 사용자 정의 심벌의 개수를 획득한다.

없음

사용자 정의 심벌 개수


const char * hencUsersymbolGetName( int no )
  • 등록된 사용자 정의 심벌의 번호로부터 이름을 획득한다.
  • 사용자 정의 심벌의 번호는 새로운 심벌이 등록되거나 삭제될 경우에는 그 값이 바뀔 수 있으므로, 번호에 따른 이름은 매번 확인해야만 한다.

int no : IN (심볼 번호)

  • != NULL : 사용자 정의 이미지 객체의 이름 (Null로 종료된 문자열)
  • == NULL : 실패 (잘못된 심벌 번호)
const char * hencUsersymbolGetName( CEncUserImage *img )

해당 객체의 심벌 이름을 획득한다.

CEncUserImage *img : IN (이미지 객체 포인터)

  • != NULL : 사용자 정의 이미지 객체의 이름
  • == NULL : 실패 (잘못된 심벌 번호)

CEncUserImage * hencUsersymbolGetImage( int no )
  • 등록된 사용자 정의 심벌의 번호로부터 이름을 획득한다.
  • 사용자 정의 심벌의 번호는 새로운 심벌이 등록되거나 삭제될 경우에는 그 값이 바뀔 수 있으므로, 번호에 따른 이름은 매번 확인해야만 한다.

int no : IN (심볼 번호)

  • != NULL : 이미지 객체
  • 라이브러리가 직접 메모리를 관리하는 객체이므로 삭제(delete)나 메모리 해제(free)를 하지 말아야 한다.
  • == NULL : 실패 (잘못된 심벌 번호)
CEncUserImage *hencUsersymbolGetImage( const char *name )
  • 사용자 정의 심볼의 이름으로부터 객체를 획득한다.
  • 이 객체는 라이브러리에서 저장 관리하는 것이므로, 삭제(delete)하거나 메모리에서 해제(free)하면 안 된다.

const char *name : IN (객체 이름, Null로 종료된 문자열)

  • != NULL : 성공 (객체 포인터)
  • == NULL : 실패 (존재하지 않는 객체)

CEncUserObject * hencUserobjAdd( double x, double y, LPCTSTR *name )

사용자 정의 심볼을 지도 상에 추가한다.

  • double x : IN (경도, degree)
  • double y : IN (위도, degree)
  • const char *name : IN (심볼 저장소에 등록된 심벌의 이름, Null로 종료된 문자열)
  • != NULL : 사용자 정의 객체의 포인터값
  • 이 객체는 라이브러리에서 관리하므로 직접 삭제(delete)나 해제(free)하지 말아야 한다.
  • == NULL : 실패
CEncUserObject * hencUserobjAdd( double x, double y, CEncUserImage *img )
  • 사용자가 로드한 이미지를 지도 상에 추가한다.
  • 사용자 정의 심벌 저장소에 등록된 이미지가 아닌 경우, 이름이 없기 때문에 프로그램 종료 시에 저장이 되지 않는다. 따라서 다음 실행 시에는 지도 상에 복원되지 않는다.
  • double x : IN (경도, degree)
  • double y : IN (위도, degree)
  • CEncUserImage *img : IN (이미지 객체 포인터)
  • != NULL : 사용자 정의 객체의 포인터값
  • 라이브러리가 직접 메모리를 관리하는 객체이므로 삭제(delete)나 메모리 해제(free)를 하지 말아야 한다.
  • == NULL : 실패

int hencUserobjDel( CEncUserObject *obj )

지도 상의 사용자 정의 심볼을 삭제한다. 객체를 생성할 때 얻은 객체 포인터를 이용하여 삭제한다.

CEncUserObject *obj : IN (추가 시 리턴된 객체 포인터)

  • = 0 : 성공 (삭제된 userobj 갯수)

  • < 0 : 실패
int hencUserobjDel( CEncUserImage *obj )

지도 상의 사용자 정의 심볼을 삭제한다. 동일 심벌의 이미지 객체를 사용하는 모든 위치의 심볼들을 삭제한다.

CEncUserImage *obj : IN (사용자 정의 심볼 이미지 객체)

  • = 0 : 성공 (삭제된 userobj 갯수)

  • < 0 : 실패
int hencUserobjDel( double x, double y, const char *name )

지정한 위치와 지정한 이름의 사용자 정의 심볼을 삭제한다.

  • double x : IN (경도, degree)
  • double y : IN (위도, degree)
  • const char *name : IN (심볼 저장소에 등록된 심벌의 이름, Null로 종료된 문자열)
  • = 0 : 성공 (삭제된 userobj 갯수)

  • < 0 : 실패
int hencUserobjDel( const char *name )

지도 상의 사용자 정의 심볼을 삭제한다. 동일 이름의 심벌 이미지 객체를 사용하는 모든 위치의 심볼들을 삭제한다.

const char *name : IN (심볼 저장소에 등록된 심벌의 이름, Null로 종료된 문자열)

  • = 0 : 성공 (삭제된 userobj 갯수)

  • < 0 : 실패
int hencUserobjDel( double x, double y )

지도 상의 지정 위치의 모든 사용자 정의 심볼을 삭제한다.

  • double x : IN (경도, degree)
  • double y : IN (위도, degree)
  • = 0 : 성공 (삭제된 userobj 갯수)

  • < 0 : 실패

CEncUserObject * hencUserobjGet( int no )

no 번째 사용자 지정 심벌의 객체를 반환한다.

int no : IN (사용자 객체 번호)

  • != NULL : 사용자 정의 객체의 포인터값
  • 이 객체는 라이브러리에서 관리하므로 직접 삭제(delete)나 해제(free)하지 말아야 한다.
  • == NULL : 실패

int hencUserobjGetCount()

등록된 사용자 정의 심벌의 개수를 반환한다.

없음

사용자 정의 심벌의 개수


int hencOptGetInt( const char *str, int def = 0 )

전자해도 설정 INI 파일에 지정된 이름의 변수값을 읽어 들인다.

  • const char *str : IN (변수명)
  • int def : IN (변수가 존재하지 않을 때 사용할 기본값)

설정값


int hencOptSetInt( const char *str, int no )

전자해도 설정 INI 파일에 지정된 이름의 변수값을 변경한다.

  • const chat *str : IN (변수명)
  • int no : IN (설정값)
  • = 0 : 성공
  • < 0 : 실패

int hencOptSave()

전자해도 설정값을 INI 파일로 저장한다.

없음

  • = 0 : 성공
  • < 0 : 실패

int hencMapPosToWinPos( double &x, double &y )

지도상 위경도 좌표값에 해당하는 GDI Window의 좌표값을 계산한다.

  • double &x : IN, OUT
  • IN : 경도(degree)
  • OUT : GDI Pixel의 x 좌표값
  • double &y: IN, OUT
  • IN : 위도(degree)
  • OUT : GDI Pixel의 y 좌표값
  • = 0 : 성공
  • < 0 : 실패

int hencWinPosToMapPos( double &x, double &y )

GDI Window 좌표값에 해당하는 지도상 위경도 좌표값을 계산한다.

  • double &x : IN, OUT
  • IN : GDI Pixel의 x 좌표값
  • OUT : 경도(degree)
  • double &y: IN, OUT
  • IN : GDI Pixel의 y 좌표값
  • OUT : 위도(degree)
  • = 0 : 성공
  • < 0 : 실패

int hencMapPosToGlPos( double &x, double &y )

지도상 위경도 좌표값에 해당하는 라이브러리 설정 OpenGL 좌표값을 계산한다.

  • x : IN, OUT
  • IN : 경도(degree)
  • OUT : OpenGL Viewport의 x 좌표값
  • y: IN, OUT
  • IN : 위도(degree)
  • OUT : OpenGL Viewport의 y 좌표값
  • = 0 : 성공
  • < 0 : 실패

int hencGlPosToMapPos( double &x, double &y )

라이브러리 설정 OpenGL 좌표값에 해당하는 지도상 위경도 좌표값을 계산한다.

  • double &x : IN, OUT
  • IN : OpenGL Viewport의 x 좌표값
  • OUT : 경도(degree)
  • double &y: IN, OUT
  • IN : OpenGL Viewport의 y 좌표값
  • OUT : 위도(degree)
  • = 0 : 성공
  • < 0 : 실패

int hencWinPosToGlPos( double &x, double &y )

GDI Pixel 좌표값에 해당하는 라이브러리 설정 OpenGL 좌표값을 계산한다.

  • double &x : IN, OUT
  • IN : GDI Pixel의 x 좌표값
  • OUT : OpenGL Viewport의 x 좌표값
  • double &y: IN, OUT
  • IN : GDI Pixel의 y 좌표값
  • OUT : OpenGL Viewport의 y 좌표값
  • = 0 : 성공
  • < 0 : 실패

int hencGlPosToWinPos( double &x, double &y )

라이브러리 설정 OpenGL 좌표값에 해당하는 GDI Pixel 좌표값을 계산한다.

  • double &x : IN, OUT
  • IN : OpenGL Viewport의 x 좌표값
  • OUT : GDI Pixel의 x 좌표값
  • double &y: IN, OUT
  • IN : OpenGL Viewport의 y 좌표값
  • OUT : GDI Pixel의 y 좌표값
  • = 0 : 성공
  • < 0 : 실패

double hencWgs84ToMercator( double lat )

WGS84 위도값에 해당하는 Mercator 투영 좌표값을 계산한다.

double lat : IN (WGS84 위도, degree)

Mercator 투영 좌표값 (위도. degree)


double hencMercatorToWgs84( double mercator_y )

Mercator 투영 좌표값에 해당하는 WGS84 위도값을 계산한다.

double mercator_y : IN, Mecator 투영 좌표 값. (위도, degree)

WGS84 투영 좌표값 (위도. degree)


GLuint hencCaptureMapTexture( GLuint texture = 0 )
  • 현재 지도 전시를 위한 버퍼 전체의 내용을 텍스처로 만든다.
  • Texture 번호가 0인 경우, 새로 생성
  • Texture 번호가 0이 아닌 경우, 주어진 Texture 번호를 재사용

GLuint texture : IN (OpenGL Texture 이름)

OpenGL Texture 이름


void hencRenderMapTexture( GLuint tex )

이전에 보관해 둔 지도 전시를 위한 버퍼 저장 Texture를 이용해서 화면에 지도를 도시한다. 캡쳐할 당시와 동일은 창이고 창 크기의 변화가 없는 경우에만 정상적으로 그려지게 된다.

GLuint texture : IN (OpenGL Texture 이름)

없음


DWORD hencGetMapUpdateCounter()
  • 현재창에 대한 변경사항 카운터 값을 획득한다.
  • 변경사항 카운터 값을 클리어(clear) 한 후 전시 버퍼를 새로 그려야 하는 설정의 변경사항을 확인할 수 있는 카운터 값이다.
  • 이 값은 개별창을 기준으로 전시 버퍼에 대한 변동치 값이다.
  • 지도 설정이 바뀔 경우에는 모든 전시창의 변동치 값이 올라가고,
  • 개별창의 전시 설정이 바뀔 경우에는 해당하는 창의 변동치 값만 올라간다.
  • 단일 Viewport에 대해서만 유효한 값이며, 다수의 Viewport인 경우에는 직접 변동 여부를 확인해야 한다.

없음

변경사항 카운터 값


void hencClearMapUpdateCounter()

현재창에 대한 변경사항 카운터 값을 지운다.

없음

없음


void hencIncMapUpdateCounter()

수동으로 현재창에 대한 변경사항이 있음을 표시한다.

없음

없음


void hencIncMapUpdateCounterAll()

수동으로 전체창에 대한 변경사항이 있음을 표시한다.

없음

없음


void hencClearMapUpdateCounterAll()

모든 창에 대한 변경사항 카운터를 지운다.

없음

없음


int hencPrintf( double x, double y, COLORREF co, const char *fmt, ... )
  • 지도 전시에 사용되는 글꼴과 동일한 글꼴로 지정된 좌표에 지정된 색상으로 문자열을 그린다.
  • C언어의 printf 형태의 문자열 formatting 기능
  • double x : IN (글자를 표시할 OpenGL x 좌표값)
  • double y : IN (글자를 표시할 OpenGL y 좌표값)
  • COLORREF co : IN (글자 색상)
  • const char *fmt : IN (화면에 표시할 문자열, Null로 종료된 문자열)
  • C언어 printf 포맷 규격을 참조
  • = 0 : 성공

  • < 0 : 실패
int hencPrintf( double x, double y, double z, COLORREF co, const char *fmt, ... )
  • 지도 전시에 사용되는 글꼴과 동일한 글꼴로 지정된 좌표에 지정된 색상으로 문자열을 그린다. (z 좌표 포함)
  • C언어의 printf 형태의 문자열 formatting 기능
  • double x : IN (글자를 표시할 OpenGL x 좌표값)
  • double y : IN (글자를 표시할 OpenGL y 좌표값)
  • double z : IN (글자를 표시할 OpenGL z 좌표값)
  • COLORREF co : IN (글자 색상)
  • const char *fmt : IN (화면에 표시할 문자열, Null로 종료된 문자열)
  • C언어 printf 포맷 규격을 참조
  • = 0 : 성공

  • < 0 : 실패

void hencDrawVRM( double cx, double cy, double radius, int resoultion = 360 )

VRM(Variable Range Marker) 그리기 함수로서, 중심점을 기준으로 동일한 거리의 점을 잇는 다각형을 그린다.

  • double cx : IN (중심점 경도, degree)
  • double cy : IN (중심점 위도, degree)
  • double radius : IN (중심점으로 부터의 거리, meter)
  • int resolution : IN (다각형의 면 수)

없음


void hencDrawEBL( double cx, double cy, double bearing, double radius1, double radius2 )

EBL(Electronic Bearing Line) 그리기 함수

  • double cx : IN (중심점 경도, degree)
  • double cy : IN (중심점 위도, degree)
  • double bearing : IN (각도. 정북 0도, CW, degree)
  • double radius1 : IN (중심점으로부터의 EBL 시작점까지의 거리, meter)
  • double radius2 : IN (중심점으로부터의 EBL 종점까지의 거리, meter)

없음