📄 sdl_gui.h
字号:
{ protected: GUI_Surface *background; GUI_Surface *knob; GUI_Callback *moved_callback; int position; int tracking_on; int tracking_start; int tracking_pos; int page_step; public: GUI_ScrollBar(const char *aname, int x, int y, int w, int h); virtual ~GUI_ScrollBar(void); void SetKnobImage(GUI_Surface *image); void SetBackgroundImage(GUI_Surface *image); int GetPosition(void); void SetPosition(int value); void SetPageStep(int value); void SetMovedCallback(GUI_Callback *callback); virtual void Update(int force); virtual void Erase(const SDL_Rect *rp); virtual int Event(const SDL_Event *event, int xoffset, int yoffset);};class DLLIMPORT GUI_Container : public GUI_Widget{ protected: int n_widgets; int s_widgets; GUI_Widget **widgets; int x_offset; int y_offset; GUI_Surface *background; SDL_Color bgcolor; virtual void UpdateLayout(void); public: GUI_Container(const char *name, int x, int y, int w, int h); virtual ~GUI_Container(void); int ContainsWidget(GUI_Widget *widget); void AddWidget(GUI_Widget *widget); virtual void RemoveWidget(GUI_Widget *widget); int GetWidgetCount(void); GUI_Widget *GetWidget(int index); void SetBackground(GUI_Surface *image); void SetBackgroundColor(SDL_Color c); void SetXOffset(int value); void SetYOffset(int value); virtual void Draw(GUI_Surface *image, const SDL_Rect *sr, const SDL_Rect *dr); virtual void Fill(const SDL_Rect *dr, SDL_Color c); virtual void Erase(const SDL_Rect *rp);};class DLLIMPORT GUI_Panel : public GUI_Container{ protected: GUI_Layout *layout; virtual void Update(int force); virtual void UpdateLayout(void); public: GUI_Panel(const char *name, int x, int y, int w, int h); virtual ~GUI_Panel(void); void SetLayout(GUI_Layout *a_layout); virtual int Event(const SDL_Event *event, int xoffset, int yoffset);};class DLLIMPORT GUI_CardStack : public GUI_Container{ protected: int visible_index; virtual void Update(int force); public: GUI_CardStack(const char *name, int x, int y, int w, int h); virtual ~GUI_CardStack(void); void Next(void); void Prev(void); int GetIndex(void); void ShowIndex(int index); void Show(const char *aname); virtual int Event(const SDL_Event *event, int xoffset, int yoffset);};class DLLIMPORT GUI_Screen : public GUI_Drawable{ protected: GUI_Surface *screen_surface; GUI_Surface *background; GUI_Widget *contents; GUI_Widget *focus_widget; Uint32 background_color; virtual void FlushUpdates(void); virtual void UpdateRect(const SDL_Rect *r); virtual void Update(int force); public: GUI_Screen(const char *aname, SDL_Surface *surface); virtual ~GUI_Screen(void); virtual void Draw(GUI_Surface *image, const SDL_Rect *sr, const SDL_Rect *dr); virtual void Erase(const SDL_Rect *dr); virtual void Fill(const SDL_Rect *dr, SDL_Color c); virtual int Event(const SDL_Event *event, int xoffset, int yoffset); virtual void RemoveWidget(GUI_Widget *widget); void SetContents(GUI_Widget *widget); void SetBackground(GUI_Surface *image); void SetFocusWidget(GUI_Widget *item); void ClearFocusWidget(void); void SetBackgroundColor(SDL_Color c); GUI_Widget *GetFocusWidget(void); GUI_Surface *GetSurface(void);};class DLLIMPORT GUI_RealScreen : public GUI_Screen{ protected: int n_updates; SDL_Rect *updates; virtual void FlushUpdates(void); virtual void UpdateRect(const SDL_Rect *r); virtual void Update(int force); public: GUI_RealScreen(const char *aname, SDL_Surface *surface); virtual ~GUI_RealScreen(void);};#elsetypedef void GUI_Object;typedef struct guiSurface GUI_Surface;typedef struct guiScreen GUI_Screen;typedef struct guiFont GUI_Font;typedef struct guiWidget GUI_Widget;typedef struct guiCallback GUI_Callback;typedef struct guiLayout GUI_Layout;#endif/* flags */#define WIDGET_PRESSED 0x00000001#define WIDGET_INSIDE 0x00000002#define WIDGET_HIDDEN 0x00000004#define WIDGET_CHANGED 0x00000008#define WIDGET_TRANSPARENT 0x00000010#define WIDGET_HAS_FOCUS 0x00000020#define WIDGET_WANTS_FOCUS 0x00000040#define WIDGET_TURNED_ON 0x00000080#define WIDGET_ALIGN_MASK 0x00000F00#define WIDGET_HORIZ_MASK 0x00000300#define WIDGET_HORIZ_CENTER 0x00000000#define WIDGET_HORIZ_RIGHT 0x00000100#define WIDGET_HORIZ_LEFT 0x00000200#define WIDGET_HORIZ_STRETCH 0x00000300#define WIDGET_VERT_MASK 0x00000C00#define WIDGET_VERT_CENTER 0x00000000#define WIDGET_VERT_TOP 0x00000400#define WIDGET_VERT_BOTTOM 0x00000800#define WIDGET_VERT_STRETCH 0x00000C00#define WIDGET_DISABLED 0x00001000#define SCREEN_DEBUG_BLIT 0x10000000#define SCREEN_DEBUG_UPDATE 0x20000000#ifdef __cplusplusextern "C" {#endiftypedef void GUI_CallbackFunction(void *);/* GUI API */DLLIMPORT int GUI_Init(void);DLLIMPORT void GUI_SetScreen(GUI_Screen *);DLLIMPORT GUI_Screen *GUI_GetScreen(void);DLLIMPORT void GUI_Run(void);DLLIMPORT void GUI_Quit(void);DLLIMPORT int GUI_MustLock(void);DLLIMPORT int GUI_Lock(void);DLLIMPORT int GUI_Unlock(void);DLLIMPORT void GUI_SetThread(Uint32 id);DLLIMPORT int GUI_GetRunning(void);DLLIMPORT void GUI_SetRunning(int value);DLLIMPORT int GUI_ClipRect(SDL_Rect *sr, SDL_Rect *dr, SDL_Rect *clip);DLLIMPORT void GUI_TriggerUpdate(void);/* Object API */DLLIMPORT GUI_Object *GUI_ObjectCreate(const char *s);DLLIMPORT const char *GUI_ObjectGetName(GUI_Object *object);DLLIMPORT void GUI_ObjectSetName(GUI_Object *object, const char *s);DLLIMPORT void GUI_ObjectIncRef(GUI_Object *object);DLLIMPORT int GUI_ObjectDecRef(GUI_Object *object);DLLIMPORT int GUI_ObjectKeep(GUI_Object **target, GUI_Object *source);/* Surface API */DLLIMPORT GUI_Surface *GUI_SurfaceLoad(const char *fn);DLLIMPORT GUI_Surface *GUI_SurfaceCreate(const char *aname, int f, int w, int h, int d, int rm, int gm, int bm, int am);DLLIMPORT void GUI_SurfaceBlit(GUI_Surface *src, SDL_Rect *src_r, GUI_Surface *dst, SDL_Rect *dst_r);DLLIMPORT void GUI_SurfaceUpdateRects(GUI_Surface *surface, int n, SDL_Rect *rects);DLLIMPORT void GUI_SurfaceUpdateRect(GUI_Surface *surface, int x, int y, int w, int h);DLLIMPORT void GUI_SurfaceFill(GUI_Surface *surface, SDL_Rect *r, Uint32 c);DLLIMPORT int GUI_SurfaceGetWidth(GUI_Surface *surface);DLLIMPORT int GUI_SurfaceGetHeight(GUI_Surface *surface);DLLIMPORT Uint32 GUI_SurfaceMapRGB(GUI_Surface *surface, int r, int g, int b);/* Font API */DLLIMPORT GUI_Surface *GUI_FontRenderFast(GUI_Font *font, const char *s, SDL_Color fg);DLLIMPORT GUI_Surface *GUI_FontRenderQuality(GUI_Font *font, const char *s, SDL_Color fg);DLLIMPORT void GUI_FontDrawText(GUI_Font *font, GUI_Surface *surface, const char *s, int x, int y);DLLIMPORT SDL_Rect GUI_FontGetTextSize(GUI_Font *font, const char *s);/* Widget API */DLLIMPORT void GUI_WidgetUpdate(GUI_Widget *widget, int force);DLLIMPORT void GUI_WidgetDraw(GUI_Widget *widget, GUI_Surface *image, const SDL_Rect *sr, const SDL_Rect *dr);DLLIMPORT void GUI_WidgetErase(GUI_Widget *widget, const SDL_Rect *dr);DLLIMPORT void GUI_WidgetFill(GUI_Widget *widget, const SDL_Rect *dr, SDL_Color c);DLLIMPORT int GUI_WidgetEvent(GUI_Widget *widget, const SDL_Event *event, int xoffset, int yoffset);DLLIMPORT void GUI_WidgetClicked(GUI_Widget *widget, int x, int y);DLLIMPORT void GUI_WidgetSetAlign(GUI_Widget *widget, int align);DLLIMPORT void GUI_WidgetMarkChanged(GUI_Widget *widget);DLLIMPORT void GUI_WidgetSetTransparent(GUI_Widget *widget, int trans);DLLIMPORT void GUI_WidgetSetEnabled(GUI_Widget *widget, int flag);DLLIMPORT void GUI_WidgetTileImage(GUI_Widget *widget, GUI_Surface *surface, const SDL_Rect *area, int x_offset, int y_offset);DLLIMPORT void GUI_WidgetSetFlags(GUI_Widget *widget, int mask);DLLIMPORT void GUI_WidgetClearFlags(GUI_Widget *widget, int mask);DLLIMPORT void GUI_WidgetSetState(GUI_Widget *widget, int state);DLLIMPORT int GUI_WidgetGetState(GUI_Widget *widget);DLLIMPORT SDL_Rect GUI_WidgetGetArea(GUI_Widget *widget);DLLIMPORT void GUI_WidgetSetPosition(GUI_Widget *widget, int x, int y);/* Container API */DLLIMPORT int GUI_ContainerContains(GUI_Widget *container, GUI_Widget *widget);DLLIMPORT void GUI_ContainerAdd(GUI_Widget *container, GUI_Widget *widget);DLLIMPORT void GUI_ContainerRemove(GUI_Widget *container, GUI_Widget *widget);DLLIMPORT int GUI_ContainerGetCount(GUI_Widget *container);DLLIMPORT GUI_Widget *GUI_ContainerGetChild(GUI_Widget *container, int index);/* Screen API */DLLIMPORT GUI_Screen *GUI_ScreenCreate(int w, int h, int d, int f);DLLIMPORT void GUI_ScreenSetContents(GUI_Screen *screen, GUI_Widget *contents);DLLIMPORT void GUI_ScreenSetBackground(GUI_Screen *screen, GUI_Surface *surface);DLLIMPORT void GUI_ScreenSetFocusWidget(GUI_Screen *screen, GUI_Widget *item);DLLIMPORT void GUI_ScreenClearFocusWidget(GUI_Screen *screen);DLLIMPORT void GUI_ScreenSetBackgroundColor(GUI_Screen *screen, SDL_Color c);DLLIMPORT GUI_Widget *GUI_ScreenGetFocusWidget(GUI_Screen *screen);/* Button Widget */DLLIMPORT GUI_Widget *GUI_ButtonCreate(const char *name, int x, int y, int w, int h);DLLIMPORT int GUI_ButtonCheck(GUI_Widget *widget);DLLIMPORT void GUI_ButtonSetNormalImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ButtonSetHighlightImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ButtonSetPressedImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ButtonSetDisabledImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ButtonSetCaption(GUI_Widget *widget, GUI_Widget *caption);DLLIMPORT void GUI_ButtonSetClick(GUI_Widget *widget, GUI_Callback *callback);/* Callback API */DLLIMPORT GUI_Callback *GUI_CallbackCreate(GUI_CallbackFunction *function, GUI_CallbackFunction *freefunc, void *data);DLLIMPORT void GUI_CallbackCall(GUI_Callback *callback);/* FastFont object */DLLIMPORT GUI_Font *GUI_FontLoadBitmap(char *fn);/* TTF Font object */DLLIMPORT GUI_Font *GUI_FontLoadTrueType(char *fn, int size);/* Panel Widget API */DLLIMPORT GUI_Widget *GUI_PanelCreate(const char *name, int x, int y, int w, int h);DLLIMPORT int GUI_PanelCheck(GUI_Widget *widget);DLLIMPORT void GUI_PanelSetBackground(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_PanelSetBackgroundColor(GUI_Widget *widget, SDL_Color c);DLLIMPORT void GUI_PanelSetXOffset(GUI_Widget *widget, int value);DLLIMPORT void GUI_PanelSetYOffset(GUI_Widget *widget, int value);DLLIMPORT void GUI_PanelSetLayout(GUI_Widget *widget, GUI_Layout *layout);/* VBox Layout object */DLLIMPORT GUI_Layout *GUI_VBoxLayoutCreate(void);/* ToggleButton Widget API */DLLIMPORT GUI_Widget *GUI_ToggleButtonCreate(const char *name, int x, int y, int w, int h);DLLIMPORT int GUI_ToggleButtonCheck(GUI_Widget *widget);DLLIMPORT void GUI_ToggleButtonSetOnNormalImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ToggleButtonSetOnHighlightImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ToggleButtonSetOffNormalImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ToggleButtonSetOffHighlightImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_ToggleButtonSetCaption(GUI_Widget *widget, GUI_Widget *caption);DLLIMPORT void GUI_ToggleButtonSetClick(GUI_Widget *widget, GUI_Callback *callback);/* Label Widget API */DLLIMPORT GUI_Widget *GUI_LabelCreate(const char *name, int x, int y, int w, int h, GUI_Font *font, const char *text);DLLIMPORT int GUI_LabelCheck(GUI_Widget *widget);DLLIMPORT void GUI_LabelSetFont(GUI_Widget *widget, GUI_Font *font);DLLIMPORT void GUI_LabelSetTextColor(GUI_Widget *widget, int r, int g, int b);DLLIMPORT void GUI_LabelSetText(GUI_Widget *widget, const char *text);/* Picture Widget API */DLLIMPORT GUI_Widget *GUI_PictureCreate(const char *name, int x, int y, int w, int h, GUI_Surface *image);DLLIMPORT int GUI_PictureCheck(GUI_Widget *widget);DLLIMPORT void GUI_PictureSetImage(GUI_Widget *widget, GUI_Surface *image);DLLIMPORT void GUI_PictureSetCaption(GUI_Widget *widget, GUI_Widget *caption);/* ProgressBar widget API */DLLIMPORT GUI_Widget *GUI_ProgressBarCreate(const char *name, int x, int y, int w, int h);DLLIMPORT int GUI_ProgressBarCheck(GUI_Widget *widget);DLLIMPORT void GUI_ProgressBarSetImage1(GUI_Widget *widget, GUI_Surface *image);DLLIMPORT void GUI_ProgressBarSetImage2(GUI_Widget *widget, GUI_Surface *image);DLLIMPORT void GUI_ProgressBarSetPosition(GUI_Widget *widget, double value);/* ScrollBar widget API */DLLIMPORT GUI_Widget *GUI_ScrollBarCreate(const char *name, int x, int y, int w, int h);DLLIMPORT int GUI_ScrollBarCheck(GUI_Widget *widget);DLLIMPORT void GUI_ScrollBarSetKnobImage(GUI_Widget *widget, GUI_Surface *image);DLLIMPORT void GUI_ScrollBarSetBackgroundImage(GUI_Widget *widget, GUI_Surface *image);DLLIMPORT void GUI_ScrollBarSetPosition(GUI_Widget *widget, int value);DLLIMPORT void GUI_ScrollBarSetPageStep(GUI_Widget *widget, int value);DLLIMPORT void GUI_ScrollBarSetMovedCallback(GUI_Widget *widget, GUI_Callback *callback);DLLIMPORT int GUI_ScrollBarGetPosition(GUI_Widget *widget);/* CardStack widget API */DLLIMPORT GUI_Widget *GUI_CardStackCreate(const char *name, int x, int y, int w, int h);DLLIMPORT int GUI_CardStackCheck(GUI_Widget *widget);DLLIMPORT void GUI_CardStackSetBackground(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_CardStackSetBackgroundColor(GUI_Widget *widget, SDL_Color c);DLLIMPORT void GUI_CardStackNext(GUI_Widget *widget);DLLIMPORT void GUI_CardStackPrev(GUI_Widget *widget);DLLIMPORT void GUI_CardStackShowIndex(GUI_Widget *widget, int index);DLLIMPORT void GUI_CardStackShow(GUI_Widget *widget, const char *name);DLLIMPORT int GUI_CardStackGetIndex(GUI_Widget *widget);/* TextEntry widget API */DLLIMPORT GUI_Widget *GUI_TextEntryCreate(const char *name, int x, int y, int w, int h, GUI_Font *font, int size);DLLIMPORT int GUI_TextEntryCheck(GUI_Widget *widget);DLLIMPORT void GUI_TextEntrySetFont(GUI_Widget *widget, GUI_Font *font);DLLIMPORT void GUI_TextEntrySetTextColor(GUI_Widget *widget, int r, int g, int b);DLLIMPORT void GUI_TextEntrySetText(GUI_Widget *widget, const char *text);DLLIMPORT const char *GUI_TextEntryGetText(GUI_Widget *widget);DLLIMPORT void GUI_TextEntrySetNormalImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_TextEntrySetHighlightImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_TextEntrySetFocusImage(GUI_Widget *widget, GUI_Surface *surface);DLLIMPORT void GUI_TextEntrySetFocusCallback(GUI_Widget *widget, GUI_Callback *callback);DLLIMPORT void GUI_TextEntrySetUnfocusCallback(GUI_Widget *widget, GUI_Callback *callback);#ifdef __cplusplus};#endif#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -