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


C++ LLSliderCtrl::setPrecision方法代码示例

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


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

示例1: fromXML

LLView* LLSliderCtrl::fromXML(LLXMLNodePtr node, LLView *parent, LLUICtrlFactory *factory)
{
    std::string name("slider");
    node->getAttributeString("name", name);

    std::string label;
    node->getAttributeString("label", label);

    LLRect rect;
    createRect(node, rect, parent, LLRect());

    LLFontGL* font = LLView::selectFont(node);

    // HACK: Font might not be specified.
    if (!font)
    {
        font = LLFontGL::getFontSansSerifSmall();
    }

    S32 label_width = 0;
    node->getAttributeS32("label_width", label_width);

    BOOL show_text = TRUE;
    node->getAttributeBOOL("show_text", show_text);

    BOOL can_edit_text = FALSE;
    node->getAttributeBOOL("can_edit_text", can_edit_text);

    BOOL volume = FALSE;
    node->getAttributeBOOL("volume", volume);

    F32 initial_value = 0.f;
    node->getAttributeF32("initial_val", initial_value);

    F32 min_value = 0.f;
    node->getAttributeF32("min_val", min_value);

    F32 max_value = 1.f;
    node->getAttributeF32("max_val", max_value);

    F32 increment = 0.1f;
    node->getAttributeF32("increment", increment);

    U32 precision = 3;
    node->getAttributeU32("decimal_digits", precision);

    S32 text_left = 0;
    if (show_text)
    {
        // calculate the size of the text box (log max_value is number of digits - 1 so plus 1)
        if ( max_value )
            text_left = font->getWidth(std::string("0")) * ( static_cast < S32 > ( log10  ( max_value ) ) + precision + 1 );

        if ( increment < 1.0f )
            text_left += font->getWidth(std::string("."));	// (mostly) take account of decimal point in value

        if ( min_value < 0.0f || max_value < 0.0f )
            text_left += font->getWidth(std::string("-"));	// (mostly) take account of minus sign

        // padding to make things look nicer
        text_left += 8;
    }

    LLUICtrlCallback callback = NULL;

    if (label.empty())
    {
        label.assign(node->getTextContents());
    }

    LLSliderCtrl* slider = new LLSliderCtrl(name,
                                            rect,
                                            label,
                                            font,
                                            label_width,
                                            rect.getWidth() - text_left,
                                            show_text,
                                            can_edit_text,
                                            volume,
                                            callback,
                                            NULL,
                                            initial_value,
                                            min_value,
                                            max_value,
                                            increment);

    slider->setPrecision(precision);

    slider->initFromXML(node, parent);

    slider->updateText();

    return slider;
}
开发者ID:wangfeilong321,项目名称:Luna-Viewer,代码行数:94,代码来源:llsliderctrl.cpp


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