请输入您要查询的百科知识:

 

词条 Module:Gradient
释义

g = {};

convert = require( "Module:BaseConvert" );

math_mod = require( "Module:Math" );

function hexToDec( val )

end

function decToHex( val )

end

function getTriplet( hex_code )

    local v1, v2, v3;        v1 = hexToDec( hex_code:sub(1,2) );    v2 = hexToDec( hex_code:sub(3,4) );    v3 = hexToDec( hex_code:sub(5,6) );        return v1, v2, v3;

end

function makeTriplet( v1, v2, v3 )

    local val = {        decToHex( v1 ),        decToHex( v2 ),        decToHex( v3 )        }        return table.concat( val );

end

function g.export_gradient( frame )

    local result = {};    local index = 1;    local pos, color;    local v1,v2,v3;        while true do        pos = frame.args[index];        color = frame.args[index + 1];        index = index + 2;                if color == nil or pos == nil then            break;        end        pos = tonumber( pos );        color = color:match( "^%s*(.-)%s*$" );                if color:sub(1,1) == '#' then            color = color:sub(2);        end        v1, v2, v3 = getTriplet( color );                table.insert( result, pos .. ': ' .. v1 .. ', ' .. v2 .. ', ' .. v3 .. '; ' );    end        return table.concat( result );

end

function importGradient( gradientString )

    local pattern_table = {};        gradientString = gradientString:gsub( ' ', '' );    for pos, v1, v2, v3 in string.gmatch( gradientString , "([-%d%.]*):(%d+),(%d+),(%d+);") do            table.insert( pattern_table, { tonumber(pos), tonumber(v1), tonumber(v2), tonumber(v3) } );    end        comp = function( a, b ) return a[1] < b[1]; end    table.sort( pattern_table, comp );        return pattern_table;

end

function getGradientValue( value, gradient_table )

    local last_pos = nil;    local last_item = nil;        for _, v in ipairs( gradient_table ) do        if v[1] >= value then            if last_item == nil then                return v[2], v[3], v[4];            else                local shift = (value - last_item[1]) / (v[1] - last_item[1]);                return shift*v[2] + (1-shift)*last_item[2],                     shift*v[3] + (1-shift)*last_item[3],                     shift*v[4] + (1-shift)*last_item[4]            end        end        last_item = v;    end        return last_item[2], last_item[3], last_item[4];

end

function g.gradient_value( frame )

    local gradient = frame.args.gradient;    local value = tonumber( frame.args[1] or frame.args.value );    local v1, v2, v3;        if gradient == nil then         return '';    end        gradient = importGradient( gradient );    v1, v2, v3 = getGradientValue( value, gradient );        return makeTriplet( v1, v2, v3 );

end

function g.gradient_test( frame )

    local gradient = frame.args.gradient;       local step = frame.args.step;    local row_break = tonumber( frame.args.cells_per_row or 20 );        if gradient == nil then         return '';    end        gradient = importGradient( gradient );
    local min_value = nil;    local max_value = nil;    for _, v in ipairs( gradient ) do        if min_value == nil or min_value > v[1] then            min_value = v[1];        end        if max_value == nil or max_value < v[1] then            max_value = v[1];        end     end            if step == nil then         step = (max_value - min_value)/30;        step = math_mod._round( step, math.max( math_mod._precision( max_value ), math_mod._precision( min_value ) ) + 1 );    end                local result = "{| class=wikitable \";    local v1, v2, v3, color;    local count = 0;    for i = min_value,max_value+step/2,step do        v1, v2, v3 = getGradientValue( i, gradient );        color = makeTriplet( v1, v2, v3 );        result = result .. '| style="background-color:#' .. color .. '; width:2em; text-align:center;" | ' .. i ..            '
' .. i .. '\'; count = count + 1; if count == row_break then result = result .. '|- \'; count = 0; end end result = result .. "|}" return result;

end

return g;

随便看

 

开放百科全书收录14589846条英语、德语、日语等多语种百科知识,基本涵盖了大多数领域的百科知识,是一部内容自由、开放的电子版国际百科全书。

 

Copyright © 2023 OENC.NET All Rights Reserved
京ICP备2021023879号 更新时间:2024/9/21 19:07:55