void onSelect( Gwen::Controls::Base* pControl ) { Gwen::Controls::ComboBox* but = (Gwen::Controls::ComboBox*) pControl; Gwen::String str = Gwen::Utility::UnicodeToString( but->GetSelectedItem()->GetText()); if (m_callback) (*m_callback)(m_buttonId,str.c_str(),m_userPointer); }
void onButtonC(Gwen::Controls::Base* pControl) { Gwen::Controls::Label* label = (Gwen::Controls::Label*) pControl; Gwen::UnicodeString la = label->GetText();// node->GetButton()->GetName();// GetText(); Gwen::String laa = Gwen::Utility::UnicodeToString(la); const char* ha = laa.c_str(); // printf("onButtonC ! %s\n", ha); }
virtual void LoadTexture(Gwen::Texture* pTexture) { Gwen::String namestr = pTexture->name.Get(); const char* n = namestr.c_str(); GLint* texIdPtr = m_hashMap[n]; if (texIdPtr) { pTexture->m_intData = *texIdPtr; } }
void onButtonB(Gwen::Controls::Base* pControl) { Gwen::Controls::Label* label = (Gwen::Controls::Label*) pControl; Gwen::UnicodeString la = label->GetText();// node->GetButton()->GetName();// GetText(); Gwen::String laa = Gwen::Utility::UnicodeToString(la); const char* ha = laa.c_str(); selectDemo(sCurrentHightlighted); saveCurrentDemoEntry(sCurrentDemoIndex, startFileName); }
Gwen::String ColorPicker::GetColorFromName( Gwen::String name ) { if ( name.find("Red") != Gwen::String::npos ) return "Red"; if ( name.find("Green") != Gwen::String::npos ) return "Green"; if ( name.find("Blue") != Gwen::String::npos ) return "Blue"; if ( name.find("Alpha") != Gwen::String::npos ) return "Alpha"; else return ""; }
void onButtonA(Gwen::Controls::Base* pControl) { const Gwen::String& name = pControl->GetName(); Gwen::Controls::TreeNode* node = (Gwen::Controls::TreeNode*)pControl; Gwen::Controls::Label* l = node->GetButton(); Gwen::UnicodeString la = node->GetButton()->GetText();// node->GetButton()->GetName();// GetText(); Gwen::String laa = Gwen::Utility::UnicodeToString(la); const char* ha = laa.c_str(); //printf("selected %s\n", ha); //int dep = but->IsDepressed(); //int tog = but->GetToggleState(); // if (m_data->m_toggleButtonCallback) // (*m_data->m_toggleButtonCallback)(m_buttonId, tog); }
gwen::String ColorPicker::GetColorFromName( gwen::String name ) { if ( name.find( "Red" ) != gwen::String::npos ) { return "Red"; } if ( name.find( "Green" ) != gwen::String::npos ) { return "Green"; } if ( name.find( "Blue" ) != gwen::String::npos ) { return "Blue"; } if ( name.find( "Alpha" ) != gwen::String::npos ) { return "Alpha"; } else { return ""; } }
Gwen::Point Base::MeasureText( Gwen::Font* pFont, const Gwen::String& text ) { Gwen::Point p; p.x = pFont->size * Scale() * (float)text.length() * 0.4; p.y = pFont->size * Scale(); return p; }
bool Gwen::Utility::Strings::To::Bool( const Gwen::String& str ) { if ( str.size() == 0 ) return false; if ( str[0] == 'T' || str[0] == 't' || str[0] == 'y' || str[0] == 'Y' ) return true; if ( str[0] == 'F' || str[0] == 'f' || str[0] == 'n' || str[0] == 'N' ) return false; if ( str[0] == '0' ) return false; return true; }
void SplitWords(const Gwen::String &s, char delim, stl::vector<Gwen::String> &elems) { Gwen::String str; for ( unsigned int i=0; i<s.length(); i++ ) { if ( s[i] == '\n' ) { if ( !str.empty() ) elems.push_back( str ); elems.push_back( "\n" ); str.clear(); continue; } if ( s[i] == ' ' ) { str += s[i]; elems.push_back( str ); str.clear(); continue; } str += s[i]; } if ( !str.empty() ) elems.push_back( str ); }
void SDL2Renderer::RenderText(Gwen::Font* pFont, Gwen::Point pos, const Gwen::String& text) { TTF_Font *tfont = static_cast<TTF_Font*>(pFont->data); Translate(pos.x, pos.y); SDL_Surface *surf = TTF_RenderUTF8_Blended(tfont, text.c_str(), m_color); SDL_Texture *texture = SDL_CreateTextureFromSurface(m_renderer, surf); SDL_FreeSurface(surf); int w, h; SDL_QueryTexture(texture, NULL, NULL, &w, &h); const SDL_Rect dest = { pos.x,pos.y, w,h }; SDL_RenderCopy(m_renderer, texture, NULL, &dest); SDL_DestroyTexture(texture); }
void Base::RenderText( Gwen::Font* pFont, Gwen::Point pos, const Gwen::String& text ) { float fSize = pFont->size * Scale(); for ( float i=0; i<text.length(); i++ ) { char chr = text[i]; if ( chr == ' ' ) continue; Gwen::Rect r( pos.x + i * fSize * 0.4, pos.y, fSize * 0.4 -1, fSize ); /* This isn't important, it's just me messing around changing the shape of the rect based on the letter.. just for fun. */ if ( chr == 'l' || chr == 'i' || chr == '!' || chr == 't' ) { r.w = 1; } else if ( chr >= 'a' && chr <= 'z' ) { r.y += fSize * 0.5f; r.h -= fSize * 0.4f; } else if ( chr == '.' || chr == ',' ) { r.x += 2; r.y += r.h - 2; r.w = 2; r.h = 2; } else if ( chr == '\'' || chr == '`' || chr == '"' ) { r.x += 3; r.w = 2; r.h = 2; } if ( chr == 'o' || chr == 'O' || chr == '0' ) DrawLinedRect( r ); else DrawFilledRect( r ); } }
Gwen::Point SDL2Renderer::MeasureText(Gwen::Font* pFont, const Gwen::String& text) { TTF_Font *tfont = static_cast<TTF_Font*>(pFont->data); // If the font doesn't exist, or the font size should be changed. if (!tfont || pFont->realsize != pFont->size*Scale()) { FreeFont(pFont); LoadFont(pFont); tfont = static_cast<TTF_Font*>(pFont->data); } if (!tfont) return Gwen::Point(0, 0); int w,h; TTF_SizeUTF8(tfont, text.c_str(), &w,&h); return Point(w,h); }
void Gwen::Utility::Strings::Split( const Gwen::String& str, const Gwen::String& seperator, Strings::List& outbits, bool bLeave ) { int iOffset = 0; int iLength = str.length(); int iSepLen = seperator.length(); size_t i = str.find( seperator, 0 ); while ( i != std::string::npos ) { outbits.push_back( str.substr( iOffset, i-iOffset ) ); iOffset = i + iSepLen; i = str.find( seperator, iOffset ); if ( bLeave ) iOffset -= iSepLen; } outbits.push_back( str.substr( iOffset, iLength-iOffset ) ); }
void TextBox::InsertText( const Gwen::String& strInsert ) { // TODO: Make sure fits (implement maxlength) if ( HasSelection() ) { EraseSelection(); } if ( m_iCursorPos > TextLength() ) m_iCursorPos = TextLength(); if ( !IsTextAllowed( strInsert, m_iCursorPos ) ) return; String str = GetText().Get(); str.insert( m_iCursorPos, strInsert ); SetText( str ); m_iCursorPos += (int) strInsert.size(); m_iCursorEnd = m_iCursorPos; m_iCursorLine = 0; RefreshCursorBounds(); }
float Gwen::Utility::Strings::To::Float( const Gwen::String& str ) { if ( str == "" ) return 0.0f; return (float)atof( str.c_str() ); }
int Gwen::Utility::Strings::To::Int( const Gwen::String& str ) { if ( str == "" ) return 0; return atoi( str.c_str() ); }
void Text::RefreshSizeWrap() { RemoveAllChildren(); m_Lines.clear(); stl::vector<Gwen::String> words; SplitWords( GetText().Get(), ' ', words ); // Adding a bullshit word to the end simplifies the code below // which is anything but simple. words.push_back( "" ); if ( !GetFont() ) { Debug::AssertCheck( 0, "Text::RefreshSize() - No Font!!\n" ); return; } Point pFontSize = GetSkin()->GetRender()->MeasureText( GetFont(), " " ); int w = GetParent()->Width(); int x = 0, y = 0; Gwen::String strLine; stl::vector<Gwen::String>::iterator it = words.begin(); for (; it != words.end(); ++it ) { bool bFinishLine = false; //bool bWrapped = false; // If this word is a newline - make a newline (we still add it to the text) if ( (*it).c_str()[0] == '\n' ) bFinishLine = true; // Does adding this word drive us over the width? { strLine += (*it); Gwen::Point p = GetSkin()->GetRender()->MeasureText( GetFont(), strLine ); if ( p.x > Width() ) { bFinishLine = true; /*bWrapped = true;*/ } } // If this is the last word then finish the line // if ( --words.end() == it ) // NOTE: replaced above commented out 'if' statement with this to appease // the GCC compiler that comes with Marmalade SDK 6.0 stl::vector<Gwen::String>::iterator temp = words.end() - 1; if ( temp == it ) { bFinishLine = true; } if ( bFinishLine ) { Text* t = new Text( this ); t->SetFont( GetFont() ); t->SetString( strLine.substr( 0, strLine.length() - (*it).length() ) ); t->RefreshSize(); t->SetPos( x, y ); m_Lines.push_back( t ); // newline should start with the word that was too big strLine = *it; // Position the newline y += pFontSize.y; x = 0; //if ( strLine[0] == ' ' ) x -= pFontSize.x; } } // Size to children height and parent width { Point childsize = ChildrenSize(); SetSize( w, childsize.y ); } InvalidateParent(); Invalidate(); }