Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $color = new Colors('FF0000', 'FFFF00', 100);
- var_dump($color->step(10)); // hex
- var_dump($color->step_rgb(10)); // rgb
- class Colors {
- function __construct ($start, $end, $steps){
- // convert hex into rgb arrays
- $this->start = $this->hex_rgb($start);
- $this->end = $this->hex_rgb($end);
- // calculate the step size required the two rgb arrays
- $this->num_steps = $steps;
- $this->step = $this->rgb_step($this->start, $this->end, $this->num_steps);
- }
- // returns the hex color
- public function step ($num){
- if ($num > $this->num_steps) $num = $this->num_steps;
- return str_pad(dechex($this->start['red']+($this->step['red']*$num)),2,'0',STR_PAD_LEFT).
- str_pad(dechex($this->start['green']+($this->step['green']*$num)),2,'0',STR_PAD_LEFT).
- str_pad(dechex($this->start['blue']+($this->step['blue']*$num)),2,'0',STR_PAD_LEFT);
- }
- public function step_rgb ($num){
- if ($num > $this->num_steps) $num = $this->num_steps;
- return intval($this->start['red']+($this->step['red']*$num)).','.
- intval($this->start['green']+($this->step['green']*$num)).','.
- intval($this->start['blue']+($this->step['blue']*$num));
- }
- private function hex_rgb($hex){
- return ['red' => hexdec(substr($hex,0,2)),
- 'green' => hexdec(substr($hex,2,2)),
- 'blue' => hexdec(substr($hex,4,2))];
- }
- private function rgb_step($start, $end, $steps){
- return ['red' => ($end['red']-$start['red'])/$steps,
- 'green' => ($end['green']-$start['green'])/$steps,
- 'blue' => ($end['blue']-$start['blue'])/$steps];
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement