1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/mfxt-lib-vn

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
label.cpp 2.1 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
魔凤啸天 Отправлено 13.08.2021 16:23 ca28d78
#include "label.hpp"
const char* Label::text(){return _text;}
SDL_Color Label::color(){return _color;}
Font* Label::font(){return _font;}
void Label::SetText(const char* new_text,Font* font,SDL_Color color,int size,SDL_Color outline_color){
auto s1=font->RenderUTF8(new_text,color,size);
auto o=font->SetOutline(4);
auto s2=font->RenderUTF8(new_text,outline_color,size);
SDL_Rect rect = {2, 2, s1->w, s1->h};
SDL_SetSurfaceBlendMode(s1, SDL_BLENDMODE_BLEND);
SDL_BlitSurface(s1, NULL, s2, &rect);
SDL_FreeSurface(s1);
_t=SDL_CreateTextureFromSurface(_belong->renderer->render,s2);
SDL_QueryTexture(_t,0,0,&_area.w,&_area.h);
SDL_FreeSurface(s2);
font->SetOutline(o);
}
Label::Label(Window* window,SDL_Rect& rect,const char* text,SDL_Color color,Font* font):Control(window){
_area=rect;
follow=false;
this->_text=text;
this->_font=font;
this->_color=color;
_t=window->renderer->RenderText(font,text,color);
SDL_QueryTexture(_t,NULL,NULL,&text_wh.x,&text_wh.y);
}
Label::Label(Window* window,SDL_Point pos,const char* text,SDL_Color color,Font* font):Control(window){
_area.x=pos.x,_area.y=pos.y;
follow=true;
this->_text=text;
this->_font=font;
this->_color=color;
_t=window->renderer->RenderText(font,text,color);
SDL_QueryTexture(_t,NULL,NULL,&text_wh.x,&text_wh.y);
_area.w=text_wh.x,_area.h=text_wh.y;
}
Label::Label(Window* window):Control(window){
_text="";
_font=default_font;
follow=true;
_color=Color::Black;
_t=window->renderer->CreateTexture(0,0);
}
void Label::SetText(const char* new_text,Font* font,SDL_Color color){
SDL_DestroyTexture(_t);
_t=_belong->renderer->RenderText(font,new_text,color);
_text=new_text,_color=color,_font=font;
SDL_QueryTexture(_t,NULL,NULL,&text_wh.x,&text_wh.y);
if(follow){
_area.w=text_wh.x,_area.h=text_wh.y;
}
}
void Label::_draw(){
_belong->renderer->DrawTexture(NULL,&_area,_t);
}
void Label::_mouse_move(int x,int y){}
void Label::_press(int x,int y,int clicks,unsigned char key){}
void Label::_release(int x,int y,int clicks,unsigned char key){}
Label::~Label(){SDL_DestroyTexture(_t);}

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/mfxt-lib-vn.git
git@api.gitlife.ru:oschina-mirror/mfxt-lib-vn.git
oschina-mirror
mfxt-lib-vn
mfxt-lib-vn
master