You are here

public static function SassExtentionsCompassFunctionsColourStops::grad_position in Sassy 7

1 call to SassExtentionsCompassFunctionsColourStops::grad_position()
SassExtentionsCompassFunctionsColourStops::grad_end_position in phamlp/sass/extensions/compass/functions/colourStops.php

File

phamlp/sass/extensions/compass/functions/colourStops.php, line 130

Class

SassExtentionsCompassFunctionsColourStops
Compass extension SassScript colour stops functions class. A collection of functions for use in SassSCript. @package PHamlP @subpackage Sass.extensions.compass.functions

Code

public static function grad_position($colourList, $index, $default, $radial = null) {
  SassLiteral::assertType($colourList, 'CompassList');
  if (is_null($radial)) {
    $radial = new SassBoolean(false);
  }
  else {
    SassLiteral::assertType($radial, 'SassBoolean');
  }
  $stop = $colourList->values[$index->value - 1]->stop;
  if ($stop && $radial->value) {
    $orig_stop = $stop;
    if ($stop
      ->isUnitless()) {
      if ($stop->value <= 1) {

        # A unitless number is assumed to be a percentage when it's between 0 and 1
        $stop = $stop
          ->op_times(new SassNumber('100%'));
      }
      else {

        # Otherwise, a unitless number is assumed to be in pixels
        $stop = $stop
          ->op_times(new SassNumber('1px'));
      }
    }
    if ($stop->numeratorUnits === '%' && isset($colourList->values[sizeof($colourList->values) - 1]->stop) && $colourList->values[sizeof($colourList->values) - 1]->stop->numeratorUnits === 'px') {
      $stop = $stop
        ->op_times($colourList->values[sizeof($colourList->values) - 1]->stop)
        ->op_div(new SassNumber('100%'));
    }

    //Compass::Logger.new.record(:warning, "Webkit only supports pixels for the start and end stops for radial gradients. Got: #{orig_stop}") if stop.numerator_units != ["px"];
    return $stop
      ->op_div(new SassNumber('1' . $stop->units));
  }
  elseif ($stop) {
    return $stop;
  }
  else {
    return $default;
  }
}