Exemplo n.º 1
0
    // extended label method for option lines
    // the purpose is to provide a little more visual context to the various options,
    // and make config-ui interface more human friendly
    void option_label(const int2& p, const color& c, rs::device& dev, rs::option opt, double max_width, bool enabled, double* value = nullptr)
    {
        auto name = find_and_replace(rs_option_to_string((rs_option)opt), "_", " "); // replacing _ with ' ' to reduce visual clutter
        std::string s(name);

        auto size = name.size(); // align the string to max. allowed width
        while (size > 0 && stb_easy_font_width((char*)s.c_str()) > max_width)
        {
            s = name.substr(0, size--) + "...";
        }

        // remove option prefixes converting them to visual hints through color:
        color newC = c;
#define STRING_CASE(S, C) std::string S = #S; if (s.compare(0, S.length(), S) == 0) { newC = C; s = find_and_replace(s, S + " ", ""); }
        color color1 = { 0.6f, 1.0f, 1.0f };
        color color2 = { 1.0f, 0.6f, 1.0f };
        color color3 = { 1.0f, 1.0f, 0.6f };
        color color4 = { 1.0f, 0.6f, 0.6f };
        color color5 = { 0.6f, 0.6f, 1.0f };
        color color6 = { 0.6f, 1.0f, 0.6f };
        STRING_CASE(ZR300, color1)
        STRING_CASE(F200, color2)
        STRING_CASE(SR300, color3)
        STRING_CASE(R200, color4)
        STRING_CASE(FISHEYE, color5)
        STRING_CASE(COLOR, color6)
        if (!enabled) newC = { 0.5f, 0.5f, 0.5f };

        auto w = stb_easy_font_width((char*)s.c_str());
        label(p, newC, s.c_str());
        // if value is required, append it at the end of the string
        if (value)
        {
            std::stringstream sstream;
            sstream << ": " << *value;
            int2 newP{ p.x + w, p.y };
            label(newP, c, sstream.str().c_str());
        }

        rect bbox{ p.x - 15, p.y - 10, p.x + w + 10, p.y + 5 };
        if (bbox.contains(cursor))
        {
            std::string hint = dev.get_option_description(opt);
            auto hint_w = stb_easy_font_width((char*)hint.c_str());
            fill_rect({ cursor.x - hint_w - 7, cursor.y + 5, cursor.x + 7, cursor.y - 17 }, { 1.0f, 1.0f, 1.0f });
            fill_rect({ cursor.x - hint_w - 6, cursor.y + 4, cursor.x + 6, cursor.y - 16 }, { 0.0f, 0.0f, 0.0f });
            label({ cursor.x - hint_w, cursor.y - 2 }, { 1.f, 1.f, 1.f }, hint.c_str());
        }
    }
Exemplo n.º 2
0
void LuaMatTexture::Print(const string& indent) const
{
    const char* typeName = "Unknown";

    switch (type) {
#define STRING_CASE(ptr, x) case x: ptr = #x; break;
        STRING_CASE(typeName, LUATEX_NONE);
        STRING_CASE(typeName, LUATEX_NAMED);
        STRING_CASE(typeName, LUATEX_LUATEXTURE);
        STRING_CASE(typeName, LUATEX_UNITTEXTURE1);
        STRING_CASE(typeName, LUATEX_UNITTEXTURE2);
        STRING_CASE(typeName, LUATEX_3DOTEXTURE);
        STRING_CASE(typeName, LUATEX_UNITBUILDPIC);
        STRING_CASE(typeName, LUATEX_UNITRADARICON);
        STRING_CASE(typeName, LUATEX_SHADOWMAP);
        STRING_CASE(typeName, LUATEX_REFLECTION);
        STRING_CASE(typeName, LUATEX_SPECULAR);
        STRING_CASE(typeName, LUATEX_HEIGHTMAP);
        STRING_CASE(typeName, LUATEX_SHADING);
        STRING_CASE(typeName, LUATEX_GRASS);
        STRING_CASE(typeName, LUATEX_FONT);
        STRING_CASE(typeName, LUATEX_FONTSMALL);
        STRING_CASE(typeName, LUATEX_MINIMAP);

        STRING_CASE(typeName, LUATEX_INFOTEX);
        STRING_CASE(typeName, LUATEX_INFOTEX_ACTIVE);
        STRING_CASE(typeName, LUATEX_INFOTEX_LOSMAP);
        STRING_CASE(typeName, LUATEX_INFOTEX_MTLMAP);
        STRING_CASE(typeName, LUATEX_INFOTEX_HGTMAP);
        STRING_CASE(typeName, LUATEX_INFOTEX_BLKMAP);

        STRING_CASE(typeName, LUATEX_MAP_GBUFFER_NORMTEX);
        STRING_CASE(typeName, LUATEX_MAP_GBUFFER_DIFFTEX);
        STRING_CASE(typeName, LUATEX_MAP_GBUFFER_SPECTEX);
        STRING_CASE(typeName, LUATEX_MAP_GBUFFER_EMITTEX);
        STRING_CASE(typeName, LUATEX_MAP_GBUFFER_MISCTEX);
        STRING_CASE(typeName, LUATEX_MAP_GBUFFER_ZVALTEX);

        STRING_CASE(typeName, LUATEX_MODEL_GBUFFER_NORMTEX);
        STRING_CASE(typeName, LUATEX_MODEL_GBUFFER_DIFFTEX);
        STRING_CASE(typeName, LUATEX_MODEL_GBUFFER_SPECTEX);
        STRING_CASE(typeName, LUATEX_MODEL_GBUFFER_EMITTEX);
        STRING_CASE(typeName, LUATEX_MODEL_GBUFFER_MISCTEX);
        STRING_CASE(typeName, LUATEX_MODEL_GBUFFER_ZVALTEX);
#undef STRING_CASE
    }

    LOG("%s%s %i %s", indent.c_str(), typeName, *reinterpret_cast<const GLuint*>(&data), (enable ? "true" : "false"));
}