Hoa central
Color.php
Go to the documentation of this file.
1 <?php
2 
37 namespace Hoa\Realdom;
38 
39 use Hoa\Math;
40 
49 class Color extends RealdomString
50 {
56  const NAME = 'color';
57 
63  const REGEX = '#^\#[a-f0-9]{3}([a-f0-9]{3})?$#i';
69  protected $_arguments = null;
70 
71 
72 
78  protected function construct()
79  {
80  return;
81  }
82 
89  protected function _predicate($q)
90  {
91  return 0 !== preg_match(static::REGEX, $q, $m);
92  }
93 
100  protected function _sample(Math\Sampler $sampler)
101  {
102  if (0 === $sampler->getInteger(0, 1)) {
103  return '#' . sprintf(
104  '%02' . implode('%02', $this->samplePattern($sampler)),
105  $sampler->getInteger(0, 255),
106  $sampler->getInteger(0, 255),
107  $sampler->getInteger(0, 255)
108  );
109  }
110 
111  return '#' . sprintf(
112  '%' . implode('%', $this->samplePattern($sampler)),
113  $sampler->getInteger(0, 15),
114  $sampler->getInteger(0, 15),
115  $sampler->getInteger(0, 15)
116  );
117  }
118 
125  public function samplePattern(Math\Sampler $sampler)
126  {
127  switch ($sampler->getInteger(0, 2)) {
128  case 0:
129  return ['x', 'x', 'x'];
130 
131  case 1:
132  return ['X', 'X', 'X'];
133 
134  case 2:
135  return [
136  0 === $sampler->getInteger(0, 1) ? 'x' : 'X',
137  0 === $sampler->getInteger(0, 1) ? 'x' : 'X',
138  0 === $sampler->getInteger(0, 1) ? 'x' : 'X',
139  ];
140  }
141  }
142 }
_sample(Math\Sampler $sampler)
Definition: Color.php:100
samplePattern(Math\Sampler $sampler)
Definition: Color.php:125