示例#1
0
///////////////////////////////////////////////////////////////////////////////
/// \brief  Recalculates the data necessary to draw the label.
void UILabel::calculateTextTransform_()
{
    if (!(view_ && font_))
        return;

    vec2 extra_space(getDimensions());
    extra_space -= vec2(font_->calculateTextWidth(text_) * text_scale_.x, font_->getCapHeight() * text_scale_.y);

    extra_space *= 0.5f;

    I32 bottom_spacing = I32(extra_space.y);
    I32 left_spacing = I32(extra_space.x);

    if (align_ == AlignLeft)
        left_spacing = 0;

    if (align_ == AlignRight)
        left_spacing *= 2;

    vec3 translation(getPosition(), 0);
    translation.y += getDimensions().y - bottom_spacing;
    translation.x += left_spacing;

    text_transform_ = glm::scale(glm::translate(*view_, translation), vec3(text_scale_.x, -text_scale_.y, 1));
    text_transform_valid_ = true;
}
示例#2
0
文件: eval.c 项目: syntheticpp/cpptex
void tex::app_space ()
	{
	ptr	p, q;
	
	if (space_factor >= 2000 && xspace_skip != zero_glue) {
		q = new_param_glue(XSPACE_SKIP_CODE);
		} 
	else {
		if (space_skip != zero_glue) {
			p = space_skip;
			} 
		else {
			p = find_font_glue(cur_font);
			}
		p = new_spec(p);
		if (space_factor >= 2000)
			glue_width(p) += extra_space(cur_font);
		stretch(p) = xn_over_d(stretch(p), space_factor, 1000);
		shrink(p) = xn_over_d(shrink(p), 1000L, space_factor);
		q = new_glue(p);
		glue_ref_count(p) = 0;
		}
	tail_append(q);
	}