Skip to main content
search
PRODUCT 2

Generic Logic/GLG 4.3 Release!!

By 2023년 04월 27일No Comments

GLG 4.3 Release!!

새로운 기능과 향상된 기능

화면 크기 타겟팅(Screen Size Targeting) 지원 향상

작업 영역 크기(Work Area Size) 정의하기

GLG Toolkit은 고정되어 있는 크기와 크기 조정이 가능한 도면(Resizable Drawings)을 모두 지원합니다. 크기 조정 가능한 도면은 표시되는 창의 크기에 맞게 도면에 있는 객체의 크기를 자동으로 조정합니다. 크기 조정 가능한 도면을 GLG 편집기(Graphic Builder 또는 HMI Configurator)에서 편집할 때, 편집기의 도면 영역(Drawing Area) 크기를 가정합니다. GLG 편집기가 최대화 되면, 드로잉 영역(Drawing Area)의 크기는 화면 크기에 따라 달라집니다. 예를 들어, 노트북 화면은 일반적으로 데스크탑 화면보다 작으며, 드로잉(Drawing)이 편집되는 위치에 따라 다른 크기로 표시됩니다.   

4.3 버전에서는 새로운 작업 영역(Work Area) 기능을 사용하여 화면의 크기와 GLG 편집기의 드로잉 영역(Drawing Area)에 관계없이 동일한 방식으로 크기 조정 가능한 드로잉(Resizable Drawing)을 표시할 수 있습니다. 작업 영역(Work Area) 크기가 정의되면, 로딩한 도면은 화면 크기나 편집기의 창 크기에 관계없이 해당 크기로 표시됩니다. 사용자가 도면을 탐색하면 도면도 해당 크기로 표시됩니다. 작업 영역(Work Area)이 편집기의 드로잉 영역(Drawing Area)보다 크면, 필요에 따라 도면을 스크롤 할 수 있습니다.

파일, 작업 영역 크기(File, Work Area Size) 메뉴는 작업 영역 크기를 정의하기 위한 몇 가지 옵션을 제공합니다 :

  • 기본적으로, 자동(Auto) 옵션은 편집기의 드로잉 영역(Drawing Area) 크기를 사용합니다.
  • 맞춤형 크기(Custom Size) 옵션을 사용하면 맞춤형 작업 영역(Work Area)를 픽셀 단위로 정의할 수 있습니다.
  • Size From Config File 옵션은 GLG 편집기의 Configuration 파일(glg_config 또는 glg_hmi_config)에 있는 WorkAreaWidth 및 WorkAreaHeight  변수가 정의하는 크기를 사용합니다.

Configuration 파일에 있는 SetWorkAreaOnStart  변수는 GLG 편집기 시작 시, 작업 영역의 크기를 설정하는데도 사용할 수 있습니다.

작업 영역(Work Area)의 크기가 설정되면 작업 영역의 경계는 빨간색 파선(Dashed Line)을 통해 GLG 편집기에서 주석(Annotated)되어 집니다. 옵션(Options), 범위 표시(Show Span), 작업 영역(Work Area) 메뉴 옵션을 사용하여 작업 영역 경계 표시 여부도 제어할 수 있습니다. 또한, GLG 편집기 Configuration 파일의 ShowWorkArea 변수는 편집기 시작 시 기본 동작을 제어하는데 사용할 수 있습니다.  

 

위젯 크기 조정을 위한 새로운 옵션(New Options for Adjusting Widget Size)

위젯 크기를 조정하는 새로운 옵션이 GLG Graphics Builder의 File, Adjust $Widget Size 메뉴에 추가되었습니다.

  • 보이는 영역(Visible Area-Preserves Size 크기 유지) 옵션은 위젯의 너비/높이 비율을 유지하면서 위젯 크기를 GLG 편집기의 드로잉 영역(Drawing Area)의 보이는 영역(Visible Area)에 맞도록 조정합니다.
  • 작업 영역 크기(Work Area Size) 옵션으로 위젯 크기를 작업 영역의 크기로 설정합니다.
  • 맞춤형 크기 설정(Set Custom Size-Pixels) 옵션을 사용하여 위젯 크기를 픽셀 단위로 맞춤형 설정할 수 있습니다.

 

하위 도면(SubDrawings) 생성을 위한 새로운 옵션

File, New, SubDrawing (Resizable) 메뉴를 통해 크기를 조정할 수 있는 하위 도면(Subdrawings) 생성을 위한 하위 도면 비율 타케팅 옵션이 추가되었습니다. 이 새로운 옵션은 너비/높이 비율이 다른 목표 도면(Targeting Drawings)을 선택하고, 크기 조정이 가능한 새 위젯을 만들기 위해 해당 옵션을 매칭합니다.   

  • 1:1 Drawing Ratio
  • 4:3 Drawing Ratio
  • 16:9 Drawing Ratio
  • Custom Drawing Ratio
  • Drawing Ratio From Config File

생성할 때 선택한 목표 비율(Targeting Ratio)에 관계없이 비율이 다른 도면에서 동일한 하위 도면을 사용할 수 있습니다. 그러나, 정확한 크기를 맞추기 위해 목표 비율을 사용할 수도 있습니다. 작업 영역이 정의되고 도면 크기가 작업 영역의 크기와 일치하는 경우, 하위 도면을 생성할 때 일치하는 비율을 사용하면 하위 도면이 생성될 때 나타난 것과 정확하게 같은 크기로 도면에 나타납니다.

4.3 버전에서는 Builder’s Drawing Area(해당 SpanX 및 SpanY로 정의됨)의 도면 비율이 도면과 함께 저장됩니다.

 

GLG Graphic Builder의 추가 기능

새로운 맞춤형 너비/높이 비율(Custom Width/Height Ratio) 옵션을 통해 위젯의 X와 Y 범위를 정의하여 맞춤형의 너비/높이 비율로 크기 조정 가능한 위젯을 만들 수 있습니다. 이전 버전에서는 위젯을 생성한 후 위젯 뷰포트(Viewport)의 범위를 편집해야만 했습니다.

TopDrawingAreaSpanX 와 TopDrawingAreaSpanY configuration 파일 변수를 사용하여 Graphics Builder의 드로잉 영역(Drawing Area)의 좌표 범위를 정의할 수 있습니다.

InitSpanX 와 InitSpanY configuration 파일 변수는 Graphics Builder가 시작할 때 $Widget 뷰포트 비율(Viewport Ratio) 을 정의합니다.

로딩 속도 증가 및 드로잉 압축 향상

이전 버전에서는 tmp 디렉토리의 임시 파일을 사용하여 압축 도면을 쉽게 로드하고 저장할 수 있었습니다. 새로운 버전에서는 압축된 도면이 tmp 디렉토리의 임시 파일을 사용하지 않고 로딩, 저장되므로 프로세스가 더욱 효율적입니다.

다른 개선 사항과 함께 새로운 로딩 기술로 C/C++ 애플리케이션과 GLG 편집기에서 압축된 도면의 로딩 속도는 압축된 ASCII 도면의 경우 평균 50%, 압축된 Binary 도면의 경우는 30% 까지 더 빨라졌습니다.

NOTE : 위에 나열된 로딩 속도 통계는 GlgLoadObject 와 GlgLoadWidget 함수로 수행되는 드로잉 로드만을 나타냅니다. GlgSetupHierarchy 함수를 사용하여 드로잉 계층 구조를 설정하고 GlgUpdate로 수행되는 실제 렌더링도 포함되기 때문에 드로잉을 로드하고 표시하는데 걸리는 총 시간은 더 길어집니다.    

메모리 이미지에서 드로잉을 로드하는 GlgLoadWidgetFromImage 와 GlgLoadObjectFromImage 함수는 이제 압축 메모리도 지원하므로 이 기능을 사용하는 실행 파일의 크기가 줄어듭니다.

Linux의 네이티브 GTK 지원

툴킷과 GLG C/C++ 라이브러리의 네이티브 GTK 버전

새로운 버전은 Linux 용 툴킷의 두 가지 버전인 GTK 버전과 X11 버전을 제공합니다. GTK 버전은 모든 인터페이스와 렌더링 요건에 GTK를 사용하며 Wayland나 X11 디스플레이 서버와 함께 사용할 수 있습니다.

GLG 라이브러리의 GTK 버전은 GLG 도면 내에서 GTK 기본 입력 객체(예, 텍스트 항목, 버튼/토글, 콤보 상자, 목록 등)를 완벽하게 지원하여 모든 GTK 기반의 애플리케이션에 완벽하게 통합됩니다.

새로운 버전에서는 Linux의 GLG 편집기, 데모 및 예제에 대해 두 가지 버전의 실행 파일이 제공됩니다.

  • _x11 접미사가 있는 버전은 실행 파일의 X11 버전입니다.
  • _x11 접미사가 없으면 GTK 버전입니다.

또한, GLG C/C++ 라이브러리에도 두 가지 버전이 제공됩니다 ;

  • libglg_gtk.a 는 GLG 라이브러리의 GTK 버전입니다.
  • libglg.a 는 X11 버전입니다.

GLG Intermediate API, GLG Extended API 및 GLG Map Server 라이브러리와 같은 기타 GLG C/C++ 라이브러리는 GLG 라이브러리의 GTK나 X11 버전과 함께 사용할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

GLG 툴킷의 GTK 버전에 대한 렌더링 디테일

툴킷의 GTK 버전은 GTK 자체 이외의 다른 라이브러리에 의존하기 않습니다. 이로써 툴킷의 GTK 버전이 예전에 GLG 편집기 실행을 위해 설치해야 했던 X11 폰트에 종속되지 않게 되었습니다.  

GTK 버전은 OpenGL을 명시적으로 사용하지 않으며, 사용 가능한 경우에는 하드웨어 가속을 활용하여 Anti-aliasing과 Alpha-blending 기능을 제공하는 렌더링 에 Cairo를 사용합니다. 이전 버전에서는 이런 렌더링 기능을 OpenGL 드라이버에서만 사용할 수 있었습니다. 3D 객체를 렌더링하기 위해 숨겨진 표면 제거(Hidden Surface Removal)가 필요한 경우, GTK 버전의 GLG 도면에서 OpenGL 드라이버를 계속 사용할 수 있습니다.

툴킷의 X11 버전은 렌더링을 위해 X11 드로잉 원본(Primitives)이나 OpenGL을 사용합니다.

 

C/C++ 애플리케이션에서 툴킷의 GTK 버전 사용

애플리케이션이 GLG Generic API를 사용하여 GLG 드로잉을 로드하고 표시하는 경우, 간단하게 GLG 라이브러리의 GTK 또는 X11 버전을 컴파일하고 연결하여 사용을 원하는 GLG 라이브러리 버전을 선택할 수 있습니다. GLG 설치(Installation)의 src 디렉토리는 두 가지 버전의 애플리케이션을 빌드하기 위한 makefile을 제공합니다.  

애플리케이션이 GTK GUI 내부에 GLG 드로잉을 포함하고 있는 경우, GLG 라이브러리에서 제공하는 gtk_glg 위젯을 사용할 수 있습니다. GLG 설치의 integration/gtk3_glg_native  디렉토리는 위젯 사용을 위한 예제를 제공합니다. integration/gtkmm3_glg_native 디렉토리에는 제공된 GtkmmGlgWidget  위젯을 통해 툴킷의 GTK 버전을 사용하는C++ GTKMM 예제가 포함되어 있습니다.

레거시 애플리케이션을 지원하기 위해 GTK와 GTKMM를 통합하는 X11 버전도 제공합니다.

 

GTK 버전에서 OpenGL 사용하기

이전 버전에서는 Anti-Aliasing과 Alpha-Blending 기능을 사용하려면 OpenGL이 필요했고 기본적으로 활성화되어 있었습니다. OpenGL 컨텍스트의 수를 최소로 하기 위해 소프트웨어 기반의 OpenGL이 연속 애니메이션이 필요하지 않은 버튼과 기타 하위 뷰포트(Childern Viewports)에 사용되었으며, 하드웨어 OpenGL은 연속 애니메이션이 있는 메인 드로잉에 사용되었습니다.  

새로운 버전에서 하드웨어 가속을 사용할 수 있지만, GTK 버전은 Anti-aliasing 렌더링과 Alpha-blending을 위해 OpenGL에 의존하지 않습니다. GTK 버전에서는 뷰포트의 OpenGLHint 속성 설정으로 요청되는 OpenGL의 명시적 사용이 불필요 하므로 비활성화 됩니다. OpenGL이 3D 객체를 렌더링 할 때 숨겨진 표면 제거를 위해 실제로 필요한 경우, 뷰포트 화면의 ForceOpenGL 속성을 사용하여 활성화 할 수 있습니다.

 

GTK 버전에서 이중 버퍼링(Double Buffering) 사용하기

GTK는 자체 이중 버퍼링 시스템을 사용하므로 GTK 버전의 툴킷에서 GLG 이중 버퍼링이 중복됩니다. 이중 버퍼링 픽스맵(Pixmaps)으로 인한 불필요한 리소스 사용을 방지하기 위해 뷰포트의 DoubleBuffering 속성이 On으로 설정되어 있어도 GTK 버전에서는 기본적으로 GLG 이중 버퍼링이 비활성화 됩니다. 필요한 경우에는 새로운 ON(FORCED) 속성 값을 사용하여 뷰포트에서 GLG 기반의 이중 버퍼링을 사용하도록 할 수 있습니다.

GlgApi.h 파일의 GlgDoubleBufferingType 열거형(eunum)은 GLG API를 통해 사용할 수 있는 속성 값을 제공합니다. GlgDisableDB 전역 구성 리소스(Global Configuration Resource)와 해당 GLG_DISABLE_DB  환경 변수를 사용하여 GLG 이중 버퍼링 사용 전체를 제어할 수 있습니다.  

 

GTK 버전에서 이벤트 핸들링

GLG 라이브러리의 GTK 버전에서 GXEvent 구조는 GLG Trace 콜백(Callback)으로 이벤트를 전달하는데 사용됩니다. 이 구조는 GLG 라이브러리의 GTK 또는 X11 버전과 함께 사용하기 위해 동일한 코드를 컴파일 할 수 있는 XEvent 구조를 모방합니다. 네이티브 GDK 이벤트는 GlgTraceCBStruct 구조의 event1 필드에서도 제공되며 해당 GDK 이벤트가 없는 GX 이벤트의 경우 NULL이 될 수 있습니다.

GTK 버전으로 코드를 컴파일 하려면 GLG_GTK Preprocessor 매크로를 정의해야 XEvent 구조 대신 GXEvent를 사용할 수 있습니다. 모든 GLG 데모와 예제는 코드 변경 없이 두 가지 버전의 라이브러리로 컴파일 할 수 있습니다. XEvent 구조 유형이 코드에서 명시적으로 참조되어야 하는 경우, X11 버전에서만 사용되도록 ifdef‘ed 되어야 합니다.

 

GTK 버전에서 System Locale과 UTF8 핸들링

툴킷의 GTK 버전은 추가 작업이나 폰트 설정 없이 UTF8과 비 UTF8 Locale을 비롯한 다양한 System Locale을 투명하게 처리합니다.

내부적으로 GTK는 현재의 Locale에 관계없이 모든 텍스트 문자열(Text Strings)에 대해 UTF8 인코딩을 사용합니다. GLG Toolkit은 UTF8 플래그가 설정되지 않은 문자열 데이터 값에 현재의 Locale을 사용합니다. 이러한 데이터 값에 대한 모든 GlgSetSResource  호출은 현재 Locale의 문자열을 사용해야 하며,  GlgGetSResource  호출은 현재 Locale의 문자열을 반환합니다. 툴킷은 UTF8과 현재 시스템 Locale 간의 필요한 모든 재인코딩을 처리합니다.

S(문자열) 속성의 UTF8 Flag가 설정된 경우, 속성은 현재 Locale에 관계없이 UTF8 인코딩을 사용합니다. UTF8으로 인코딩된 문자열은 GlgSetSResource  호출을 통해 이러한 속성 값을 설정하는데 사용해야 하며, GlgGetSResource 호출은 이러한 속성에 대해 UTF8으로 인코딩된 문자열을 반환합니다.

현재 Locale이 UTF8과 다른 경우, 제공된 모든 문자열이 현재 Locale에서 UTF8으로 자동 재 인코딩 됩니다. 제공된 문자열이 잘못된 Locale인 경우, 다시 인코딩 하면 잘못된 UTF8 문자열이 생성됩니다. GlgValidateUTF8 전역 구성 변수(Global Configuration Variable) 및 해당 GLG_VALIDATE_UTF8  환경 변수는 오류와 렌더링 문제를 방지하기 위해 수행되는 내부 문자열 유효성 검사를 제어합니다. 유효성 검사를 활성화하려면 기본적으로 true로 설정됩니다.

 

GTK 테마 지원

GLG 편집기와 Run-Time 애플리케이션에서 GTK 테마(Themes) 사용하기

기본적으로 GLG 편집기는 Adwaita GTK 테마를 사용합니다. -dark-theme 명령줄(Command-line) 옵션을 사용하여 Adwaita-dark 테마를 지정할 수 있습니다. -system-theme 명령줄 옵션은 GLG 편집기가 현재 시스템 테마를 사용하도록 합니다.

GLG 라이브러리의 GTK 버전과 연결된 C/C++ 애플리케이션이 실행되면 GLG 도면 내부의 네이티브 입력 객체(Native Input Objects : 예, 텍스트 항목, 콤보 상자 등)가 현재 시스템 테마를 사용하여 렌더링 됩니다. GTK 환경 변수 GTK_THEME은 런타임 시 애플리케이션의 GTK 테마를 제어하는데 사용합니다.

GTM 테마 매칭을 위해 런타임에서 대화 색상(Dialog Colors) 조정

GTK 버전에서 WidgetType=DIALOG_AREA 가 있는 뷰포트는 현재 GTK 테마를 사용하여 배경을 그립니다. 뷰포트의 FillColor도 가능한 제한을 위해 렌더링된 배경과 일치하는 RGB 값으로 설정됩니다. 뷰포트 화면의 DefaultLabelColor 속성도 현재 GTK 테마의 라벨 색상으로 설정되어 뷰포트에서 텍스트 객체의 TextColor로 사용될 수 있습니다. GTK 테마가 변경되면 Dialog Area 뷰포트는 해당 GTK 테마 색상과 일치하도록 배경 색상과 DefaultLabelColor로 제한된 라벨을 자동으로 변경합니다.

GlgDefaultDialogColor 와 GlgDefaultLabelColor 전역 구성 리소스(Global Configuration Resources)와 해당 GLG_DEFAULT_DIALOG_COLOR 및GLG_DEFAULT_LABEL_COLOR 환경 변수를 사용하여 테마 색상을 재정의하고 드로잉이 다른 환경이 배포될 때 이런 색상을 정의할 수 있습니다.

 

GTK 버전의 기타 기능

폰트 크기 조정

새로운 GlgGtkFontSize 전역 구성 리소스(Global Configuration Resource)와 해당 GLG_GTK_FONT_SIZE  환경 변수를 사용하여 텍스트 항목, 버튼 및 토글, 콤보 상자 등과 같은 기본 GTK 입력 객체에 사용될 폰트 크기를 정의할 수 있습니다.

예를 들어, $config/GlgGtkFontSize 리소스를 “20px” 문자열(String)로 설정하면  GTK 테마에서 정의된 폰트 크기에 우선하여 네이티브 입력 객체의 폰트 크기를 정의하게 됩니다.   

리눅스 프린팅(Linux Printing)

4.3 버전에서 Linux의 GLG 편집기는 GTK 기반의 인쇄 대화(Printing Dialog) 방식으로 프린팅을 지원합니다. Print 와 레거시 Export PostScript 옵션이 모두 제공됩니다.

C/C++ 애플리케이션에서 GLG 도면 인쇄를 활용하도록 GlgNativePrint API 함수가 제공됩니다.

GTK 슬라이드 눈금(GTK Slide Ticks)

GTK 버전에서 기본 GTK 슬라이더와 함께 사용되는 GlgNSlider Interaction Handler는 DrawTicks 와 TickFormat 속성을 지원하므로 슬라이더 눈금을 그리고 눈금 라벨 형식(Tick Label Format)을 정의할 수 있습니다.

Created with GIMP

.NET 4.6.2 지원(Support for .NET 4.6.2)

새로운 버전에서는 모든 C#/.NET DLLs 및 Visual Studio 프로젝트는 .NET 4.6.2.를 목표(Target)로 합니다. 이전 .NET 4.0을 목표로 하는 C#/.NET DLLs은 이전 버전의 Visual Studio 용 GLG 다운로드에서도 사용할 수 있습니다

새로운 Change Cursor 작업(New Change Cursor Action)

새로운 CHANGE_CURSOR 작업 유형을 사용하여 마우스가 객체 위로 이동할 때 커서 모양을 변경할 수 있습니다. ProcessArmed 작업 속성은 마우스가 객체 위로 이동할 때 Control 키를 누른 경우에만 커서를 변경하는데 사용할 수 있는데, 이는 Control 키를 누른 상태에서만 마우스 클릭으로 활성화 되는 버튼 로직과 일치시키기 위해서 입니다. CursorType 작업 속성은 마우스가 객체 위로 이동할 때 사용되는 커서 유형을 정의하며 다음 중 하나일 수 있습니다.

  • DEFAULT_CURSOR
  • CROSSHAIR_CURSOR
  • WAIT_CURSOR
  • HAND_CURSOR
  • MOVE_CURSOR

이 작업은 연결된 마우스 클릭 작업이 있는 객체에 대한 시각적 피드백을 제공하고 객체를 클릭할 때 일부 작업을 수행하는데 사용할 수 있습니다.

Child Widget 뷰포트에서 텍스트 스케일링(Text Scaling inside Child Widget Viewports)

이전 버전에서 ZOOM TextScaling 유형은 텍스트 객체의 상위 뷰포트나 조명(Light) 뷰포트의 확대/축소 배율을 사용했습니다. 버튼이나 다이얼과 같이 뷰포트 기반의 위젯이 포함된 그림이 확대된 경우, 위젯 뷰포트의 확대/축소 비율이 변경되지 않았기 때문에 위젯 뷰포트 내부의 텍스트 라벨 크기가 조정되지 않았습니다. 이런 Child 뷰포트 내에서 텍스트 크기 조정을 활성화하는 유일한 방법은 TextScaling=RESIZE 를 설정하고 해당 BaseWidth 도 설정하여 도면이 확대될 때 위젯 크기 변경에 따른 텍스트 크기가 조정 되도록 하는 것이었습니다.

4.3 버전에서는 새로운 ZoomFromParent 뷰포트와 조명(light) 뷰포트 속성을 설정하여 상위(Parent) 뷰포트의 확대/축소 비율을 기반으로 확대하고 축소할 때 텍스트 객체의 크기를 조정할 수 있습니다. 이렇게 하면 각각의 하위(Child) 위젯 뷰포트의 BaseWidth 를 설정할 필요가 없어 편리합니다. 새로운 버전에서 이 속성은 GLG 팔레트의 모든 뷰포트 기반의 위젯에 대해 기본으로 설정되어 있으며 확대/축소 시 텍스트 스케일링을 기본으로 활성화 합니다.

최대 폰트 사이즈 제한을 위한 새로운 텍스트 객체 속성

텍스트 객체의 새로운 MaxFontSize 속성으로 확장 가능한 텍스트 객체에 사용할최대 폰트 크기를 정의합니다. MaxFontSize 를 음수 값으로 설정하면 최대 크기 제한을 비활성화 합니다.

MaxFontSize  속성은 텍스트 객체의 크기가 조정될 때만 최대 폰트 크기를 제한합니다. 텍스트 객체의 FontSize 가 MaxFontSize, 보다 크게 설정된 경우, FontSize 값이 최대 폰트 크기 제한 보다 우선합니다.

Global과 Bound 속성 분리(Separate Global and Bound Attributes)

이전 버전에서는 데이터 객체의 전역 속성(Global Attributes)이 오버로드 되어 복제(Clone)와 하위 도면(Subdrawing) 바인딩을 제한하는 정보가 포함되었습니다. 이 오버로드로 인하여 정교하게 사용하는 경우에 두 가지 조건을 모두 지정하지 못했습니다.   

새로운 버전에서는 별도의 Bound 속성에 바인딩 정보가 포함되는 반면, Global 속성에는 제한과 관련된 정보만 포함되므로, 이를 통해 필요한 경우 두 가지 조건을 모두 지정할 수 있습니다.

바인딩을 사용하는 도면을 EXTENDED 저장 형식을 사용하여 4.3 이전 버전으로 내보내는 경우, 두 가지 속성을 이전 버전에서 사용된 단일 전역(Global) 속성으로 결합하는 특별 옵션을 사용해야 합니다.

-glg-ext-save-42 명령줄(Command-line) 옵션이 사용되거나 GLG_EXT_SAVE_42 환경 변수가 true로 설정된 경우, GLG 도면 파일 변환 유틸리티(GLG Drawing File Conversion Utility)와 GLG Graphics Builder는 도면이 EXTENDED 형식으로 저장되면 두 가지 속성을 하나로 병합합니다. 이런 옵션은 툴킷의 4.3 이전 버전으로 내보낼 때만 사용해야 합니다. GlgExtSave42 전역 구성 리소스(Global Configuration Resource)도 API 사용을 위해 제공됩니다

시리즈 인스턴스의 공용 속성 처리(Handling Public Properties of Series Instances)

$Series/ 접두사를 시리즈 인스턴스의 공용 속성을 구별하는데 사용할 수 있습니다. 시리스 템플릿 속성에 연결된 Export 태그의 TagName 에 접두사를 추가하면 속성 이름에 숫자 접미사가 추가되어 인스턴스의 해당 공용 속성이 만들어 집니다. 예를 들어, 어떤 시리즈 템플릿이 TagName=$Series/Value 가 있는 공용 속성을 갖는 경우, 시리즈 인스턴스에는 Value0Value1 등과 같은 해당 공용 속성을 갖게 됩니다. 템플릿 내보내기 태그의 범주(Category) 에 $Series/ 접두사가 있는 경우, 각 시리즈 인스턴스에는 같은 방식으로 범주 이름에 숫자 인덱스를 추가하여 생성된 범주를 갖게 됩니다.

$Series/ 접두사가 있는 시리즈 템플릿의 내보내기 태그는 OEM 모드에서는 태그 브라우저에 나열되지만, 비 OEM 모드에서는 생략됩니다.

새로운 프로그래밍 API 메소드와 API 변경(New Programming API Methods & API Changes)

새로운 GlgSetCursorType API 메소드를 사용하여 모든 지원 환경에서 커서 유형을 설정할 수 있습니다. GlgCursorType 열거형에 나열된 여러 가지 커서 유형이 지원됩니다 :

  • DEFAULT_CURSOR
  • CROSSHAIR_CURSOR
  • WAIT_CURSOR
  • HAND_CURSOR
  • MOVE_CURSOR


새로운 직렬화 API 메소드(New Serialization API Methods)

GlgSerialize 와 GlgSerializeFull C/C++ 함수는 임시 파일을 생성하지 않고 GLG 도면을 스트림이나 메모리에 저장하는 방법을 제공합니다. 이전 버전에서는 이 기능을 GLG 라이브러리의 Java와 C# 버전에서만 사용할 수 있었습니다.

 

새로운 프린팅 API(New Printing API)

새로운 GlgNativePrint API 메소드를 사용하여 Windows와 Linux에서 GLG 도면을인쇄할 수 있습니다. 이 메소드는 Windows나 GTK 인쇄 대화를 통해 얻은 인쇄 컨텍스트를 전달하고 이를 사용하여 도면을 인쇄합니다.

이전 버전에서 사용된 GlgWinPrint 메소드는 더 이상 사용되지 않는 대신, GlgNativePrint 를 사용해야 합니다. PostScript 출력을 생성하는데 사용되는 GlgPrint 메소드도 사용되지 않으며, 이제 새로운 GlgExportPostScript 메소드가 이 기능을 제공합니다.

 

JavaScript에서 Null SubDrawing 템플릿 사용하기

GLG JavaScript 라이브러리에서 하위 도면(Subdrawing)이나 하위 창(Subwindow)의 템플릿을 설정하는데 사용되는 SetTemplate 메소드는 이제 null 을 매개 변수로 전달할 수 있습니다. Null이 아닌 템플릿을 사용하는 경우, 이것은 객체의 SourcePath 속성이 지정한 파일 이름보다 우선합니다. null 템플릿이 전달되면 객체의 SourcePath 속성이 지정한 파일이 사용됩니다(null 템플릿을 설정하기 전에 반드시 SourcePath 속성을 설정해야 합니다)

 

새로운 GlgFindObjects API 메소드

FindMatchingObjects 메소드는 더 이상 사용되지 않으며, 새로운 FindObjects 메소드로 대체되었습니다. 새로운 메소드는 객체 매개 변수로 전달된 최상위 객체가 검색 기준과 일치하는 경우, 검색 결과에 포함되는지 여부를 제어하는 새로운 include_top_object 영역과 함께 GlgFindObjectsData 구조를 사용합니다.

라이브러리의 C/C++ 버전에서 향후 확장을 수용하려면, C/C++ 환경에서GlgFindObjectsData 구조를 사용하기 전에 GlgInitStruct 매크로를 사용하여 0으로 초기화 해야 합니다.

 

새로운 대화 함수(New Dialog Functions)

이전 버전에서는 별도의 파일에 저장된 대화 뷰포트를 처리하기 위해 GLG Extended API가 필요했습니다. 새로운 GlgDialogInitialDraw 와 GlgDialogSetupHierarchy 함수가 C/C++ API에 추가되어 Extended API 없이 별도의 파일에 저장된 대화 뷰포트(Dialog Viewports)를 처리할 수 있습니다.

함수는 해당되는 GlgInitialDraw 와 GlgSetupHierarchy 함수와 유사하지만 대화가연결될 상위 뷰포트(Parent Viewport)를 지정하는 상위 매개변수(Parent Parameter)를 사용합니다. 대화 뷰포트(Dialog Viewport)는 하위 뷰포트가 아닌 최상위 뷰포트가 됩니다.

 

C++ 매크로 변경(C++ Macro Changes)

이전 버전에서는 GlgWrapperC 클래스를 비 활성화 하기 위해 GLG_DISABLE_X_WRAPPER 매크로를 정의해야 했습니다. 이 클래스는 X Windows 환경에서 Motif 기반의 GLG 래핑 위젯(Wrapped Widget)으로 사용 했습니다. 새로운 버전에서 GlgWrapperC 클래스는 C/C++ 라이브러리의 레거시 X11 버전에서만 사용되며 기본적으로 비 활성화 되어 있습니다. C++ 환경에서 GTK 버전의 라이브러리는 별도의 GtkmmGlgWidget 클래스를 사용합니다. 새로운 GLG_ENABLE_X11_WRAPPER 매크로를 사용하여 GlgWrapperC 클래스를 레거시 버전의 GLG 라이브러리와 함께 사용할 수 있습니다.

 

GLgLocaleType Enum Changes

GlgLocaleType 열거형(enum)의 GLG_XFT_CHAR8_LOCALE 값 이름이 GLG_LATIN1_LOCALE 로 변경되었습니다.

기타 GLG 편집기 인터페이스 개선

Stock과 미리 정의된 다이내믹스 간의 전환(Switching between Stock & Predefined Dynamics)

GLG Graphics Builder의 Professional 및 Enterprise 버전에 있는 Add Dynamics 메뉴 상단의 새로운   버튼은 Stock Dynamics 와 Predefined Dynamics 간의 다이내믹 유형을 전환합니다.  이전에는 사용자가 다이내믹 유형을 전환하는 버튼에 액세스하려면 메뉴 끝까지 스크롤 해야 했습니다.

 

적응형 그리드 색상(Adaptive Grid Color)

이전 버전에서는 그리드가 GLG 구성 파일(Configuration File)의 GridColor 변수로정의된 고정 색상을 사용했고 도면을 다른 배경색으로 편집 시 적합하지 않았습니다.

새로운 버전의 GridColor 변수는 -1., -1., -1로 설정되며 기본적으로 적응형 색상을 사용합니다. 그리드는 도면 배경색에 관계없이 색상을 눈에 띄게 자동으로 조정합니다. GridColor 를 구성 요소 범위가 0에서 1인 RGB 색상 값으로 설정하여 그리드 색상을 미리 정의된 색상으로 설정할 수 있습니다.

런타임 시 그리드 색상은 GlgGridPolygon 리소스를 통해 제어합니다. EdgeColor 가 -1, -1, -1 (기본값)으로 설정된 경우, 그리드는 EdgeColor 속성에 연결된 색상 스케일 변환으로 제어되는 적응형 색상을 사용합니다. 도면 배경색에 따라 적응형 색상을 확실하게 선택하고 제어하기 위해 변환 매개변수(Transformation Parameters)를 변경할 수 있습니다.  

GlgGridPolygon/EdgeColor 리소스를 구성요소 범위가 0~1인 RGB 색상 값으로 설정하여 미리 정의된 색상으로 설정할 수 있습니다.

 

 

 

 

 

 

 

 

 

 

 

 

뷰포트 컨텐트 편집 시 뷰포트 크기 유지(Preserving Viewport Size When Editing Viewport Content)

이전 버전에서 뷰포트와 조명(Light) 뷰포트 객체의 KeepEditRatio 속성은 바이너리 YES 또는 NO 설정으로 제한되었습니다. 새 버전에서는 사용자가 뷰포트의 컨텐츠를 편집하기 위해 계층 구조를 아래로 이동할 때, 뷰포트 영역이 확장되는 방식을 제어하는 다음 세 가지 값을 가질 수 있습니다 :

  • OFF – 너비/높이 비율을 유지하지 않고 뷰포트 확장
  • KEEP RATIO – 너비/높이 비율을 유지하면서 뷰포트 확장
  • KEEP SIZE – 확장 없이 뷰포트 크기 유지

 

 

 

 

 

KEEP RATIO 옵션은 이전 버전의 YES 옵션과 동일하게 동작합니다. 새로운 KEEP SIZE 옵션을 사용하여 뷰포트의 객체를 최상위 수준에 표시된 것과 동일한 뷰포트 크기로 편집할 수 있습니다. 이제는 위젯 팔레트에서 새로 생성된 뷰포트와 모든 뷰포트 기반의 위젯에 기본으로 적용됩니다.

GlgKeepEditRatio 열거형(enum)에는 프로그램에서 사용할 수 있는 속성 값이 포함되어 있습니다

 

Layout Toolbox 개선(Improved Layout Toolbox)

이전 버전에서는 객체가 변경될 대 레이아웃 도구 상자가 객체의 너비와 높이를 업데이트 하지 않았습니다. 따라서, 업데이트된 값을 표시하려면 객체 선택을 취소 했다가 다시 선택해야 했습니다.

새로운 버전에서는 객체를 변경한 후 업데이트된 값을 표시하기 위해 아무 버튼이나 클릭하여 보이는 높이를 전환하거나 전체 또는 스크린(World or Screen) 좌표를 전환하는 것만으로도 충분합니다.

새로운 위젯(New Widets)

경량 컬러 표시기(Light-weight Color Indicator)

새롭고 가벼운 컬러 표시기(Color Indicator) 위젯이 컨트롤 위젯 세트에 추가되었습니다. 새로운 위젯은 원형 마커(Round Marker) 객체를 사용하여 대규모 색상 표시기가 있는 도면의 리소스 사용을 최소화 합니다. 마커의 SizeScaling 속성은 도면의 둥근 모양을 유지하면서 크기를 조정할 때 마커 크기를 변경하도록 설정할 수 있습니다.

 

Tabs 위젯(Tabs Widget)

새로운 Tabs Widgets 을 사용하여 선택한 탭에 따라 표시 영역에 나타나는 도면을 전환하는 탭 인터페이스를 만들 수 있습니다. 가로와 세로 탭을 포함하여 다양한 탭 위젯이 제공됩니다.

Tabs 위젯은 SubWindow 객체와 함께 사용하여 SubWindow 에 표시되는 드로잉을 전환할 수 있습니다. Tabs 위젯에는 GoTo 명령 작업이 연결되어 있습니다.

GoTo 명령이 실행되면 애플리케이션은 인풋 콜백(Input Callback)에서 DrawingFile 리소스의 변환 값을 사용하여 선택된 도면 파일명을 액세스 할 수 있게 되어, “Action/Command/DrawingFile/XfValue” 리소스를 통해 메시지 객체에서 액세스 할 수 있게 됩니다. 

Leave a Reply

Close Menu