이 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 이면 투명, 255 에 가까울수록 불투명 해 집니다. 값을 받아 오는 부분은 get_alpha() 로 가능하도록 했습니다.
주의 점은 이 component 는 실제 PC 용으로 만든 것이 아니므로 parent 객체가 resize 가 가능한 경우 최초 고려 되지 못하게 만든 부분이 있었기에, 추후 추가된 기능으로 resize() 가 있으며, 이를 활성화 하려면 FL_TRANSBOX_SUPPORT_RESIZE 를 선언 해 주어야 합니다. (또는 이 부분을 지우거나)
최초 인터넷에 떠도는 소스를 보고 만든 것이라 GPL 에 따라 저 역시 소스를 공개 하도록 합니다. class header 부분은 참조만 하시고, 첨부된 파일을 사용하시면 됩니다.
⁄*******************************************************************************
** A Transparency box control
** =========================================================================
** (C) Copyright 2013 , rageworx@gmail.com & rage.kim@gmail.com
** License: GPL, LGPL
**
*******************************************************************************⁄
#ifndef __FL_TRANSBOX_H__
#define __FL_TRANSBOX_H__
#include <FL⁄Fl.H>
#include <FL⁄Fl_Box.H>
#include <FL⁄fl_draw.H>
#include <FL⁄Fl_Image.H>
class Fl_TransBox : public Fl_Box
{
public:
Fl_TransBox(int x,int y,int w,int h, char* l = 0);
virtual ~Fl_TransBox();
public:
void color(Fl_Color c);
void set_alpha(unsigned char a);
void set_dragEnabled(bool enabled) { dragEnabled = enabled; }
void set_displayimage(Fl_Image* aimg) { dispimg = aimg; }
public:
unsigned char get_alpha() { return alpha; }
protected:
int handle(int e);
#ifdef FL_TRANSBOX_SUPPORT_RESIZE
void resize(int x, int y, int w, int h);
#endif
void draw();
private:
void fill_buffer();
private:
unsigned char* buffer;
unsigned char r;
unsigned char g;
unsigned char b;
unsigned char alpha;
Fl_RGB_Image* img;
bool dragEnabled;
Fl_Image* dispimg;
char* inLabel;
};
#endif ⁄⁄⁄ __FL_TRANSBOX_H__
이 소스 코드는 재활용, 수정, 재배포 등이 모두 자유 입니다. 변경된 소스 코드 공개도 개인의 의사에 따른 것임을 미리 밝히며, 수정 된 코드는 되도록 공개하도록 하면 좋겠습니다.
이 소스는 MinGW 4.x 에서 사용되었으며, FLTK 는 1.3.0 에서 사용중인 것이라, 이후 버젼 호환성에 대해서는 장담할 수 없음을 고려 해 주시기 바랍니다.