/////////////////////////////////////////////////////////////////////////////// /// \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; }
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); }