Вход Регистрация
Файл: vendor/intervention/gif/src/Decoders/AbstractPackedBitDecoder.php
Строк: 46
<?php

declare(strict_types=1);

namespace 
InterventionGifDecoders;

use 
InterventionGifExceptionsDecoderException;

abstract class 
AbstractPackedBitDecoder extends AbstractDecoder
{
    
/**
     * Decode packed byte.
     *
     * @throws DecoderException
     */
    
protected function decodePackedByte(string $byte): int
    
{
        
$unpacked unpack('C'$byte);

        if (
$unpacked === false || !array_key_exists(1$unpacked)) {
            throw new 
DecoderException('Failed to decode packed info block size');
        }

        return 
intval($unpacked[1]);
    }

    
/**
     * Determine if packed bit is set.
     *
     * @throws DecoderException
     */
    
protected function hasPackedBit(string $byteint $num): bool
    
{
        return (bool) 
$this->packedBits($byte)[$num];
    }

    
/**
     * Get packed bits.
     *
     * @throws DecoderException
     */
    
protected function packedBits(string $byteint $start 0int $length 8): string
    
{
        
$bits str_pad(decbin($this->decodePackedByte($byte)), 8'0'STR_PAD_LEFT);

        return 
substr($bits$start$length);
    }
}
Онлайн: 0
Реклама