~zodiacsohma/armagetronad/arma_colors_to_html_codes

« back to all changes in this revision

Viewing changes to index.php

  • Committer: zodiacsohma1 at gmail
  • Date: 2013-10-04 03:19:19 UTC
  • Revision ID: zodiacsohma1@gmail.com-20131004031919-kga4c40ocfybyvq1
Update the online code with a IsDark() function like how it functions in the clients if colors are too dark to read.

Show diffs side-by-side

added added

removed removed

Lines of Context:
18
18
if (isset($_POST["convert"]))
19
19
{
20
20
    $text = $_POST["text"];
21
 
    
 
21
 
22
22
    //$text = htmlentities('0xff0000Alpha 0x00ffffProject 0x33ebff<0x78ff29<0xff3c1f<  0xff0000LOVER$BOYs 0xff301eH0xffbf1ee0xb1ff1el0x1eff21l0x14ffacs 0xff301eR0xffb41fa0xcfff1ec0x58ff29i0x28ff76n0x29fff0g  0x33ebff>0x78ff29>0xff3c1f>');
23
23
 
24
24
    //echo "Searching String: Alpha Project <<< LOVER\$BOYs Hells Racing!<br />\n";
25
25
 
26
26
?>
27
 
        <pre style="background: #000000; padding: 10px; font-size:16px; color: #f9f9f9;">
 
27
        <pre style="background: #000000 url(./message_background.png) repeat fixed center; padding: 10px; font-size:16px; color: #f9f9f9;">
28
28
<?php
29
29
 
30
30
    $pos = strpos($text, "0x");
31
31
    $prevpos = 0;
32
 
    $first = true;
33
32
 
34
33
    $line = "";
 
34
 
 
35
    //  if one exists, store the beginning text BEFORE the process
 
36
    if ($pos !== false)
 
37
        $line .= substr($text, $prevpos, $pos - $prevpos);
 
38
 
35
39
    while ($pos !== false)
36
40
    {
37
 
        $str_before_color = "";
38
 
        $length_diff = 0;
39
 
        
40
 
        //  store current positon before color
41
 
        $curpos = $pos;
42
 
        
43
41
        //  get color code from function
44
42
        $color = extractColorCode($text, $pos);
45
 
        
46
 
        //  get string before color code
47
 
        if (($curpos != 0) && ($first))
48
 
        {
49
 
            $length_diff = $curpos - $prevpos;
50
 
            $str_before_color = substr($text, $prevpos, $length_diff);
51
 
            $line .= $str_before_color;
52
 
        }
53
 
        
54
 
        //  begin the color coded span style html format
55
 
        $line .= '<span style="color: #'.$color.';">';
56
 
        
57
 
        //  store previous and continue
 
43
 
 
44
        //  store previous position and continue
58
45
        $prevpos = $pos;
59
 
        
60
 
        //  check for the next occurance
61
 
        $pos = strpos($text, "0x", $pos + 1);
62
 
        if ($pos !== false)
63
 
        {
64
 
            //  get the string between previous color code and next color code
65
 
            $length_diff = $pos - $prevpos;
66
 
            $str_before_color = substr($text, $prevpos, $length_diff);
67
 
            $line .= $str_before_color.'</span>';
68
 
        }
 
46
 
 
47
        //  look up next occurance of color
 
48
        $pos = strpos($text, "0x", $pos);
 
49
 
 
50
        //  checking whether there is anymore to do
 
51
        if ($pos === false)
 
52
            //  if not, then store the rest of the string from previous color code
 
53
            $str = substr($text, $prevpos);
69
54
        else
70
 
        {
71
 
            $line .= substr($text, $prevpos).'</span>';
72
 
        }
73
 
        
74
 
        if ($first)
75
 
            $first = false;
 
55
            $str = substr($text, $prevpos, $pos - $prevpos);
 
56
 
 
57
        //  finally, output the string for each parsing
 
58
        $line .= '<span style="color: #'.$color.';">'.$str.'</span>';
76
59
    }
77
60
 
78
61
    echo $line;
103
86
                    <tr><td><input type="submit" name="convert" value="Convert"></td></tr>
104
87
<?php
105
88
 
 
89
function CTR($x)
 
90
{
 
91
    return ($x / 255.0);
 
92
}
 
93
 
106
94
function extractColorCode($str, &$pos)
107
95
{
108
96
    //  list of valid chars
111
99
    $colorcode = "";
112
100
 
113
101
    //  increment twice to avoid 0x
114
 
    $pos += 2;
115
 
 
116
 
    $done = false;
117
 
    for($i = 0; $i < 6; $i++)
118
 
    {
119
 
        $cs = substr($str, $pos, 1);
120
 
        foreach ($validChars as $char)
121
 
        {
122
 
            if ($cs == $char)
123
 
            {
124
 
                $colorcode .= $char;
125
 
                $pos++;
126
 
            }
127
 
        }
128
 
    }
129
 
    //substr($text, $pos, 8);
 
102
    $colorcode = substr($str, $pos + 2, 6);
 
103
    $pos += 8;
 
104
    
 
105
    if ($colorcode == "RESETT")
 
106
        $colorcode = "f9f9f9";
 
107
 
 
108
    $r = $g = $b = 0;
 
109
 
 
110
    $r_hex = hexdec($colorcode[0]) *16 + hexdec($colorcode[1]);
 
111
    $g_hex = hexdec($colorcode[2]) *16 + hexdec($colorcode[3]);
 
112
    $b_hex = hexdec($colorcode[4]) *16 + hexdec($colorcode[5]);
 
113
 
 
114
    $r = CTR($r_hex);
 
115
    $g = CTR($g_hex);
 
116
    $b = CTR($b_hex);
 
117
 
 
118
    if (isDark($r, $g, $b))
 
119
        $colorcode .= "; background: #f9f9f9";
130
120
 
131
121
    return $colorcode;
132
122
}
 
123
 
 
124
function isDark($r, $g, $b)
 
125
{
 
126
    $minR = $minB = $minG = 0.5;
 
127
    $minTotal = 0.7;
 
128
 
 
129
    return ( $r < $minR && $g < $minG && $b < $minB ) || $r+$g+$b < $minTotal;
 
130
}
133
131
?>
134
132
            </table>
135
133
        </form>