ludc
2023-08-24 56c45e1f4be85d6bbfb3a03437021c6742b32ad9
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
function hex2RGB(h) {
    var o = h.substr(h[0]==="#"?1:0,6);
    return [parseInt(o.substr(0,2),16),parseInt(o.substr(2,2),16),parseInt(o.substr(4,2),16)];
}
function rgb2Hex(rgb) {
    for(var i=0,o=1; i!=3; ++i) o = o*256 + (rgb[i]>255?255:rgb[i]<0?0:rgb[i]);
    return o.toString(16).toUpperCase().substr(1);
}
 
function rgb2HSL(rgb) {
    var R = rgb[0]/255, G = rgb[1]/255, B=rgb[2]/255;
    var M = Math.max(R, G, B), m = Math.min(R, G, B), C = M - m;
    if(C === 0) return [0, 0, R];
 
    var H6 = 0, S = 0, L2 = (M + m);
    S = C / (L2 > 1 ? 2 - L2 : L2);
    switch(M){
        case R: H6 = ((G - B) / C + 6)%6; break;
        case G: H6 = ((B - R) / C + 2); break;
        case B: H6 = ((R - G) / C + 4); break;
    }
    return [H6 / 6, S, L2 / 2];
}
 
function hsl2RGB(hsl){
    var H = hsl[0], S = hsl[1], L = hsl[2];
    var C = S * 2 * (L < 0.5 ? L : 1 - L), m = L - C/2;
    var rgb = [m,m,m], h6 = 6*H;
 
    var X;
    if(S !== 0) switch(h6|0) {
        case 0: case 6: X = C * h6; rgb[0] += C; rgb[1] += X; break;
        case 1: X = C * (2 - h6);   rgb[0] += X; rgb[1] += C; break;
        case 2: X = C * (h6 - 2);   rgb[1] += C; rgb[2] += X; break;
        case 3: X = C * (4 - h6);   rgb[1] += X; rgb[2] += C; break;
        case 4: X = C * (h6 - 4);   rgb[2] += C; rgb[0] += X; break;
        case 5: X = C * (6 - h6);   rgb[2] += X; rgb[0] += C; break;
    }
    for(var i = 0; i != 3; ++i) rgb[i] = Math.round(rgb[i]*255);
    return rgb;
}
 
/* 18.8.3 bgColor tint algorithm */
function rgb_tint(hex, tint) {
    if(tint == 0) return hex;
    var hsl = rgb2HSL(hex2RGB(hex));
    if (tint < 0) hsl[2] = hsl[2] * (1 + tint);
    else hsl[2] = 1 - (1 - hsl[2]) * (1 - tint);
  var rev =rgb2Hex(hsl2RGB(hsl))
    return rev;
}
 
/* 18.3.1.13 width calculations */
var DEF_MDW = 7, MAX_MDW = 15, MIN_MDW = 1, MDW = DEF_MDW;
function width2px(width) { return (( width + ((128/MDW)|0)/256 )* MDW )|0; }
function px2char(px) { return (((px - 5)/MDW * 100 + 0.5)|0)/100; }
function char2width(chr) { return (((chr * MDW + 5)/MDW*256)|0)/256; }
function cycle_width(collw) { return char2width(px2char(width2px(collw))); }
function find_mdw(collw, coll) {
    if(cycle_width(collw) != collw) {
        for(MDW=DEF_MDW; MDW>MIN_MDW; --MDW) if(cycle_width(collw) === collw) break;
        if(MDW === MIN_MDW) for(MDW=DEF_MDW+1; MDW<MAX_MDW; ++MDW) if(cycle_width(collw) === collw) break;
        if(MDW === MAX_MDW) MDW = DEF_MDW;
    }
}
 
/* [MS-EXSPXML3] 2.4.54 ST_enmPattern */
var XLMLPatternTypeMap = {
    "None": "none",
    "Solid": "solid",
    "Gray50": "mediumGray",
    "Gray75": "darkGray",
    "Gray25": "lightGray",
    "HorzStripe": "darkHorizontal",
    "VertStripe": "darkVertical",
    "ReverseDiagStripe": "darkDown",
    "DiagStripe": "darkUp",
    "DiagCross": "darkGrid",
    "ThickDiagCross": "darkTrellis",
    "ThinHorzStripe": "lightHorizontal",
    "ThinVertStripe": "lightVertical",
    "ThinReverseDiagStripe": "lightDown",
    "ThinHorzCross": "lightGrid"
};