<?php

namespace DynamicOOOS\Mpdf\Gif;

/**
 * GIF Util - (C) 2003 Yamasoft (S/C)
 *
 * All Rights Reserved
 *
 * This file can be freely copied, distributed, modified, updated by anyone under the only
 * condition to leave the original address (Yamasoft, http://www.yamasoft.com) and this header.
 *
 * @link http://www.yamasoft.com
 */
class ColorTable
{
    var $m_nColors;
    var $m_arColors;
    public function __construct()
    {
        unset($this->m_nColors);
        unset($this->m_arColors);
    }
    function load($lpData, $num)
    {
        $this->m_nColors = 0;
        $this->m_arColors = [];
        for ($i = 0; $i < $num; $i++) {
            $rgb = \substr($lpData, $i * 3, 3);
            if (\strlen($rgb) < 3) {
                return \false;
            }
            $this->m_arColors[] = (\ord($rgb[2]) << 16) + (\ord($rgb[1]) << 8) + \ord($rgb[0]);
            $this->m_nColors++;
        }
        return \true;
    }
    function toString()
    {
        $ret = "";
        for ($i = 0; $i < $this->m_nColors; $i++) {
            $ret .= \chr($this->m_arColors[$i] & 0xff) . \chr(($this->m_arColors[$i] & 0xff00) >> 8) . \chr(($this->m_arColors[$i] & 0xff0000) >> 16);
            // B
        }
        return $ret;
    }
    function colorIndex($rgb)
    {
        $rgb = \intval($rgb) & 0xffffff;
        $r1 = $rgb & 0xff;
        $g1 = ($rgb & 0xff00) >> 8;
        $b1 = ($rgb & 0xff0000) >> 16;
        $idx = -1;
        for ($i = 0; $i < $this->m_nColors; $i++) {
            $r2 = $this->m_arColors[$i] & 0xff;
            $g2 = ($this->m_arColors[$i] & 0xff00) >> 8;
            $b2 = ($this->m_arColors[$i] & 0xff0000) >> 16;
            $d = \abs($r2 - $r1) + \abs($g2 - $g1) + \abs($b2 - $b1);
            if ($idx == -1 || $d < $dif) {
                $idx = $i;
                $dif = $d;
            }
        }
        return $idx;
    }
}
