Слияние кода завершено, страница обновится автоматически
#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 )