1<?php
2
3namespace Mpdf\Tag;
4
5use Mpdf\Strict;
6
7use Mpdf\Cache;
8use Mpdf\Color\ColorConverter;
9use Mpdf\CssManager;
10use Mpdf\Form;
11use \dokuwiki\plugin\dw2pdf\DokuImageProcessorDecorator as ImageProcessor;
12use Mpdf\Language\LanguageToFontInterface;
13use Mpdf\Mpdf;
14use Mpdf\Otl;
15use Mpdf\SizeConverter;
16use Mpdf\TableOfContents;
17
18abstract class Tag
19{
20
21	use Strict;
22
23	/**
24	 * @var \Mpdf\Mpdf
25	 */
26	protected $mpdf;
27
28	/**
29	 * @var \Mpdf\Cache
30	 */
31	protected $cache;
32
33	/**
34	 * @var \Mpdf\CssManager
35	 */
36	protected $cssManager;
37
38	/**
39	 * @var \Mpdf\Form
40	 */
41	protected $form;
42
43	/**
44	 * @var \Mpdf\Otl
45	 */
46	protected $otl;
47
48	/**
49	 * @var \Mpdf\TableOfContents
50	 */
51	protected $tableOfContents;
52
53	/**
54	 * @var \Mpdf\SizeConverter
55	 */
56	protected $sizeConverter;
57
58	/**
59	 * @var \Mpdf\Color\ColorConverter
60	 */
61	protected $colorConverter;
62
63	/**
64	 * @var ImageProcessor
65	 */
66	protected $imageProcessor;
67
68	/**
69	 * @var \Mpdf\Language\LanguageToFontInterface
70	 */
71	protected $languageToFont;
72
73	const ALIGN = [
74		'left' => 'L',
75		'center' => 'C',
76		'right' => 'R',
77		'top' => 'T',
78		'text-top' => 'TT',
79		'middle' => 'M',
80		'baseline' => 'BS',
81		'bottom' => 'B',
82		'text-bottom' => 'TB',
83		'justify' => 'J'
84	];
85
86	public function __construct(
87		Mpdf $mpdf,
88		Cache $cache,
89		CssManager $cssManager,
90		Form $form,
91		Otl $otl,
92		TableOfContents $tableOfContents,
93		SizeConverter $sizeConverter,
94		ColorConverter $colorConverter,
95		ImageProcessor $imageProcessor,
96		LanguageToFontInterface $languageToFont
97	) {
98
99		$this->mpdf = $mpdf;
100		$this->cache = $cache;
101		$this->cssManager = $cssManager;
102		$this->form = $form;
103		$this->otl = $otl;
104		$this->tableOfContents = $tableOfContents;
105		$this->sizeConverter = $sizeConverter;
106		$this->colorConverter = $colorConverter;
107		$this->imageProcessor = $imageProcessor;
108		$this->languageToFont = $languageToFont;
109	}
110
111	public function getTagName()
112	{
113		$tag = get_class($this);
114		return strtoupper(str_replace('Mpdf\Tag\\', '', $tag));
115	}
116
117	protected function getAlign($property)
118	{
119		$property = strtolower($property);
120		return array_key_exists($property, self::ALIGN) ? self::ALIGN[$property] : '';
121	}
122
123	abstract public function open($attr, &$ahtml, &$ihtml);
124
125	abstract public function close(&$ahtml, &$ihtml);
126
127}
128