본문 바로가기

FLTK

(45)
[FLTK] Win32/X11 에서 FLTK 고속 rednering (또는 redraw) FLTK 에서는 사실상 Fl::check(); 나 Fl::wait(); 등으로 화면을 갱신 하는 방법이 있습니다. 하지만 이 방법을 사용할 경우 잘못된 화면 출력이나 프로그램 자체가 멈추는 문제가 발생되는 단점이 있습니다. 실질적으로 FLTK 는 강제적인 redraw 를 할수 있는 조건을 FLTK 자체가 결정 하는 구조이며, Windows 에서는 비활성화 된 Window 에서는 1초에 한번 그리는 경악적인 상태로 바뀝니다. 문제는 활성화 된 상태 이더라도 Fl_Window 객체를 아무리 redraw(); 하더라도 갱신은 "니 맘대로 되는것이 아니란다" 라는 단점이 있습니다. 이를 해결 하기 위해 여러 방법을 찾다가 문듯, 활성화된 FLTK Window 위에서 마우스를 계속 움직이면 고속으로 화면이 갱신 ..
[FLTK] Fl_RGB_Image 로 부터 회전된 이미지 얻기. FLTK 는 여러 플랫폼에서 간단하면서 깔끔한 UI 를 만들기에 매우 좋은 GUI library 입니다만, 기본 기능에만 기준을 두고 있다 보니 이미지 처리 ( 리사이즈나 회전 등 ) 는 없는 것이 아쉬운 부분 입니다. 이번의 경우는 이미지를 회전 시켜 표시 해야 하는 경우 (위 이미지 처럼 뭔가 열심히 일 하고 있으니 기다려 주십사~ 하는) 기본으로 그리는 수준으로는 깔끔한 이미지를 얻기 힘듭니다. 이를 개선 하기 위해 구글링 중 CodeGuru 에서 이미지 회전에 관한 글 을 찾았습니다. 그리고 이를 응용하여 다음과 같은 API 를 만들어 보았습니다. #include #ifndef M_PI #define M_PI 3.141592654 #endif ⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄⁄..
FLTK 1.3.x 를 위한 smooth image scaler: fl_smimg FLTK 1.3.x 버젼을 쓰면서 부족한 부분이 있다면 바로 Fl_Image 의 copy() 함수를 통한 scale 기능이라 하겠습니다. 실제 내부에서 이 scale 엔진은 GraphicDriver의 resize 를 호출 하는데 이 부분은 실제 nearest resize 가 수행 되므로 뭔가 부드럽게 연산이 처리된 형태의 이미지를 얻을수가 없게 됩니다. 이를 해결하기 위해 만든 것이 fl_smimg 이며, 이 소슨는 FreeImage Library 3 의 resize 부분을 추출 해서 FLTK 에 맞게 변경 하였으며, 그 적용은 아래 처럼 됩니다. 이미지는 인터넷에 도는 것을 임의로 사용하였는 상태 입니다. (우주선 이미지는 Mass Effect 의 Normandy 호 입니다 ) 먼저 Fl_Window ..
FLTK 연재. 지금 부터 소개하는 FLTK 는 1998 년 부터 시작되어 온 GPL-V2 기반의 라이센스를 가진 GUI 라이브러리 입니다.각 OS 마다 구비되어 있는 GCC 를 이용해서 build 할수 있음은 물론, Windows 에서는 MSVC 를 통해서 개발을 이어 나갈 수 있기도 합니다. 대표 싸이트 : http://www.fltk.org/index.php FLTK 의 경우는 C++ 의 상속 개념을 통해 여러 종류의 Fl_Widget 이라 불리는 Component 를 유기적으로 만들 수 있으며, 각 platform마다 빌드시, 거의 모든 동작환경이나 형태가 동일한 GUI 를 만들수 있는 좋은 라이브러리 입니다. 특히 OpenGL 을 일부 사용하는 GUI 에서 거의 완벽한 대부분의 component 들을 사용할 수..
FLTK 1.3.x 용 Fl_TransBox component 이 component 는 투명한 Dimming 처리된 배경을 가진 Overlay 화면을 만들기 위해 만든 custom component class source code 로서, Fl_Box 를 상속받아 만들었습니다. 사용은 간단 합니다. 일반 Window 또는 Group 등 위에 이 Fl_TransBox 로 만든 component 를 생성 후, invisible 처리 해 놓고. 만들어진 component 를 보이도록 처리하면 되는데, 이때 Fl_Group 으로 묶어서 처리 하면 좀 더 효과적인 visual 을 만들수 있게 됩니다. 투명도는 set_alpha( unsgined char a ); 로 지정할 수 있으며, 0 부터 255 사이의 값으로 조절 됩니다. param 으로 넘어 가는 값이 0 이면 투명,..