当前位置: 首页>>代码示例>>C++>>正文


C++ Text::findCharacterPos方法代码示例

本文整理汇总了C++中sf::Text::findCharacterPos方法的典型用法代码示例。如果您正苦于以下问题:C++ Text::findCharacterPos方法的具体用法?C++ Text::findCharacterPos怎么用?C++ Text::findCharacterPos使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在sf::Text的用法示例。


在下文中一共展示了Text::findCharacterPos方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: breakTextLines

void breakTextLines(sf::Text& t, float maxX)
{
    sf::String s = t.getString();
    std::size_t lastBreakCharIdx = s.getSize();
    static sf::String const breakBeforeChars("([{\"'`'");
    static auto const isBreakBeforeChar = [] (sf::Uint32 c) {
        return breakBeforeChars.find(c) != sf::String::InvalidPos;
    };
    for (std::size_t i = 0; i < s.getSize(); ++i) {
        if (t.findCharacterPos(i).x > maxX) {
            if (lastBreakCharIdx > i)
                lastBreakCharIdx = i;
            if (s.getSize() > lastBreakCharIdx &&
                !std::iswgraph(static_cast<std::wint_t>(s[lastBreakCharIdx + 1]))
            ) {
                s[lastBreakCharIdx + 1] = '\n';
            } else {
                s.insert(lastBreakCharIdx + 1, '\n');
            }
            t.setString(s);
            i += 1;
        }
        if (!std::iswalnum(static_cast<std::wint_t>(s[i]))) {
            lastBreakCharIdx = i;
            if (i > 0 && isBreakBeforeChar(s[i]))
                lastBreakCharIdx -= 1;
        }
    }
}
开发者ID:Oberon00,项目名称:jd,代码行数:29,代码来源:sfUtil.cpp

示例2: wordwrap

	void wordwrap(){
		//divide the sentence into words
		vector< string > words = explode( ' ', log_text );
		vector< bool > newline( words.size() );

		int limit_right = log_x + log_background -> width() - log_padding_x * 2;

		for( unsigned index = 0; index < words.size(); ++index ){

			log_text.clear();

			for( unsigned i = 0; i <= index; i++ ){
				log_text += words[i] + ( newline[ i ] ? '\n' : ' ' );
			}

			log_text_display.setString( log_text );

			if( log_text_display.findCharacterPos( log_text.size() ).x >= limit_right ){
				newline[ index - 1 ] = true;
			}
		}

		log_text.clear();

		for( unsigned i = 0; i < words.size(); i++ ){
			log_text += words[i] + ( newline[ i ] ? '\n' : ' ' );
		}
	}
开发者ID:rmxhaha,项目名称:phantasia,代码行数:28,代码来源:VisualNovel.cpp

示例3: init_char_width

	void init_char_width(){
		if (!PTSANS.loadFromFile("PTN57F.ttf" )) return;
		PTSANS_loaded = true;

		string tq;
		
		int tmp = log_string.getPosition().x;
		
		for( int i = 255; i--; ){
			tq = (char) i;
			log_string.setString( tq );
			char_width[i] = log_string.findCharacterPos( 1 ).x - tmp;
		}


	}
开发者ID:rmxhaha,项目名称:phantasia,代码行数:16,代码来源:VN_1.0.cpp


注:本文中的sf::Text::findCharacterPos方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。