<?php

/**
 * JPGraph v4.0.3
 */

namespace Amenadiel\JpGraph\Graph;

/**
 * @class HeaderProperty
 * // Description: Data encapsulating class to hold property
 * // for each type of the scale headers
 */
class HeaderProperty
{
    public $grid;
    public $iShowLabels             = true;
    public $iShowGrid               = true;
    public $iTitleVertMargin        = 3;
    public $iFFamily                = FF_FONT0;
    public $iFStyle                 = FS_NORMAL;
    public $iFSize                  = 8;
    public $iStyle                  = 0;
    public $iFrameColor             = 'black';
    public $iFrameWeight            = 1;
    public $iBackgroundColor        = 'white';
    public $iWeekendBackgroundColor = 'lightgray';
    public $iSundayTextColor        = 'red'; // these are only used with day scale
    public $iTextColor              = 'black';
    public $iLabelFormStr           = '%d';
    public $iIntervall              = 1;

    /**
     * CONSTRUCTOR.
     */
    public function __construct()
    {
        $this->grid = new LineProperty();
    }

    /**
     * PUBLIC METHODS.
     *
     * @param mixed $aShow
     */
    public function Show($aShow = true)
    {
        $this->iShowLabels = $aShow;
    }

    public function SetIntervall($aInt)
    {
        $this->iIntervall = $aInt;
    }

    public function SetInterval($aInt)
    {
        $this->iIntervall = $aInt;
    }

    public function GetIntervall()
    {
        return $this->iIntervall;
    }

    public function SetFont($aFFamily, $aFStyle = FS_NORMAL, $aFSize = 10)
    {
        $this->iFFamily = $aFFamily;
        $this->iFStyle  = $aFStyle;
        $this->iFSize   = $aFSize;
    }

    public function SetFontColor($aColor)
    {
        $this->iTextColor = $aColor;
    }

    public function GetFontHeight($aImg)
    {
        $aImg->SetFont($this->iFFamily, $this->iFStyle, $this->iFSize);

        return $aImg->GetFontHeight();
    }

    public function GetFontWidth($aImg)
    {
        $aImg->SetFont($this->iFFamily, $this->iFStyle, $this->iFSize);

        return $aImg->GetFontWidth();
    }

    public function GetStrWidth($aImg, $aStr)
    {
        $aImg->SetFont($this->iFFamily, $this->iFStyle, $this->iFSize);

        return $aImg->GetTextWidth($aStr);
    }

    public function SetStyle($aStyle)
    {
        $this->iStyle = $aStyle;
    }

    public function SetBackgroundColor($aColor)
    {
        $this->iBackgroundColor = $aColor;
    }

    public function SetFrameWeight($aWeight)
    {
        $this->iFrameWeight = $aWeight;
    }

    public function SetFrameColor($aColor)
    {
        $this->iFrameColor = $aColor;
    }

    // Only used by day scale
    public function SetWeekendColor($aColor)
    {
        $this->iWeekendBackgroundColor = $aColor;
    }

    // Only used by day scale
    public function SetSundayFontColor($aColor)
    {
        $this->iSundayTextColor = $aColor;
    }

    public function SetTitleVertMargin($aMargin)
    {
        $this->iTitleVertMargin = $aMargin;
    }

    public function SetLabelFormatString($aStr)
    {
        $this->iLabelFormStr = $aStr;
    }

    public function SetFormatString($aStr)
    {
        $this->SetLabelFormatString($aStr);
    }
}
