<?php
/**
 * Copyright 2005-2017 de Solis Soluções Livres Ltda.
 *
 * Este arquivo é parte do programa Gnuteca.
 *
 * O Gnuteca é um software de propriedade da SOLIS, sendo desenvolvido
 * e mantido exclusivamente por esta empresa.
 *
 * A licença de uso está disponível mediante aquisição exclusiva junto à
 * SOLIS. A licença é concedida sem caráter de exclusividade ao licenciado.
 * Os direitos de uso são perpétuos.
 *
 * Embora os códigos fontes sejam fornecidos, o software é de propriedade
 * da SOLIS, não sendo permitido ao adquirente da licença a sua revenda,
 * empréstimo ou cessão (onerosa ou não) à terceiros. Também não é permitido,
 * a qualquer título e tempo, promover no software qualquer tipo de alienação,
 * reprodução, distribuição, divulgação, registro, licenciamento, transferência
 * ou qualquer outro ato que prejudique ou comprometa os direitos de propriedade
 * de software, o nome e a imagem da sua proprietária e do próprio software,
 * além de configurar concorrência à SOLIS.
 *
 * O licenciado, com o acesso ao código fonte do software, terá o direito de
 * promover mudanças no respectivo código. No entanto, nas situações em que ele
 * contar com o suporte oficial prestado pela SOLIS, não poderá promover mudanças
 * no código fonte, sob pena de perda do referido suporte.
 *
 * Para conhecer em detalhes o Termo de Licenciamento do Software Gnuteca
 * leia o arquivo “LICENCA.txt” disponível junto ao código deste software.
 * 
 * 
 * Class
 *
 *
 *
 *
 *
 **/
$MIOLO->uses('classes/GPDF.class.php','gnuteca3');

class GPDFLabel extends GPDF
{
    public $x, $y, $column, $line, $labelLayout;

    public function __construct($labelLayout)
    {
        $this->labelLayout = $labelLayout;
        $this->column      = 0;
        $this->line        = 0;

        $pFormat = $this->labelLayout->pageFormat;
        
        if (strtolower($pFormat) == 'automatic')
        {
        	$pFormat = 'A4';
        }
        
        parent::__construct(null, $this->labelLayout->pageOrientation, 'cm', $pFormat);
        //Ajusta a margem esquerda e direita
        $this->setMargins($this->labelLayout->leftMargin, $this->labelLayout->topMargin, 0);
        $this->setAutoPageBreak(false, 0);
        $this->addPage();
    }


    public function checkBreakLine()
    {
        if ($this->column >= $this->labelLayout->columns)
        {
            $this->addBreakLine();
            return true;
        }
        
        return false;
    }


    public function addBreakLine()
    {
        $this->column = 0;
        $this->line++;
    }


    public function checkBreakPage()
    {
        if ($this->line >= $this->labelLayout->lines)
        {
            $this->line = 0;
            $this->column = 0;
            $this->addPage();
            return true;
        }
        return false;
    }

    public function setBeginPositionOfTheLabel()
    {
        $this->x = $this->labelLayout->leftMargin+($this->labelLayout->horizontalSpacing*$this->column);
        $this->y = $this->labelLayout->topMargin+($this->labelLayout->verticalSpacing*$this->line);
        $this->setXY($this->x, $this->y);

        $this->column++;
    }

    public function setBeginLabel($beginLabel)
    {
        $this->column = (int) ($beginLabel%($this->labelLayout->columns))-1;
        $this->line   = (int) ($beginLabel/($this->labelLayout->columns));
        if ($this->column < 0)
        {
            $this->column = $this->labelLayout->columns-1;
            $this->line--;
        }
    }

    public function lengthLabel()
    {
        $w = $this->labelLayout->labelWidth;
        $h = $this->labelLayout->labelHeight;

        return array($w, $h);
    }
}
?>