⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 picture.cc

📁 基于SDL实现的GUI
💻 CC
字号:
#include <assert.h>#include <string.h>#include <stdlib.h>#include "SDL_gui.h"GUI_Picture::GUI_Picture(const char *aname, int x, int y, int w, int h, GUI_Surface *an_image): GUI_Widget(aname, x, y, w, h), image(an_image){	SetTransparent(1);	image->IncRef();	caption = 0;}GUI_Picture::~GUI_Picture(){	image->DecRef();	if (caption) caption->DecRef();}void GUI_Picture::Update(int force){	if (parent == 0)		return;		if (force)	{		if (flags & WIDGET_TRANSPARENT)			parent->Erase(&area);		if (image)		{			SDL_Rect r;							r.w = image->GetWidth();			r.h = image->GetHeight();			r.x = area.x + (area.w - r.w) / 2;			r.y = area.y + (area.h - r.h) / 2;			parent->Draw(image, NULL, &r);		}	}	if (caption)		caption->DoUpdate(force);}void GUI_Picture::Erase(const SDL_Rect *rp){	SDL_Rect dest = Adjust(rp);		if (flags & WIDGET_TRANSPARENT)		parent->Erase(&dest);			if (image)	{		SDL_Rect sr, dr;		sr.w = dr.w = image->GetWidth();		sr.h = dr.h = image->GetHeight();		dr.x = area.x + (area.w - dr.w) / 2;		dr.y = area.y + (area.h - dr.h) / 2;		sr.x = sr.y = 0;				if (GUI_ClipRect(&sr, &dr, &dest))			parent->Draw(image, &sr, &dr);	}}int GUI_Picture::Event(const SDL_Event *event, int xoffset, int yoffset){	if (caption)	{		if (caption->Event(event, xoffset + area.x, yoffset + area.y))			return 1;	}	return GUI_Widget::Event(event, xoffset, yoffset);}void GUI_Picture::SetImage(GUI_Surface *an_image){	if (GUI_ObjectKeep((GUI_Object **) &image, an_image))		MarkChanged();}void GUI_Picture::SetCaption(GUI_Widget *a_caption){	Keep(&caption, a_caption);}extern "C"{GUI_Widget *GUI_PictureCreate(const char *name, int x, int y, int w, int h, GUI_Surface *image){	return new GUI_Picture(name, x, y, w, h, image);}int GUI_PictureCheck(GUI_Widget *widget){	// FIXME not implemented	return 0;}void GUI_PictureSetImage(GUI_Widget *widget, GUI_Surface *image){	((GUI_Picture *) widget)->SetImage(image);}void GUI_PictureSetCaption(GUI_Widget *widget, GUI_Widget *caption){	((GUI_Picture *) widget)->SetCaption(caption);}}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -