slideEvent method

void slideEvent(
  1. RenderBox getBox,
  2. BoxConstraints box,
  3. Offset globalPosition
)

Implementation

void slideEvent(RenderBox getBox, BoxConstraints box, Offset globalPosition) {
  double localDx = getBox.globalToLocal(globalPosition).dx - 15.0;
  double progress =
      localDx.clamp(0.0, box.maxWidth - 30.0) / (box.maxWidth - 30.0);
  switch (trackType) {
    case TrackType.hue:
      // 360 is the same as zero
      // if set to 360, sliding to end goes to zero
      onColorChanged(hsvColor.withHue(progress * 359));
      break;
    case TrackType.saturation:
      onColorChanged(hsvColor.withSaturation(progress));
      break;
    case TrackType.saturationForHSL:
      onColorChanged(hslToHsv(hsvToHsl(hsvColor).withSaturation(progress)));
      break;
    case TrackType.value:
      onColorChanged(hsvColor.withValue(progress));
      break;
    case TrackType.lightness:
      onColorChanged(hslToHsv(hsvToHsl(hsvColor).withLightness(progress)));
      break;
    case TrackType.red:
      onColorChanged(HSVColor.fromColor(
          hsvColor.toColor().withRed((progress * 0xff).round())));
      break;
    case TrackType.green:
      onColorChanged(HSVColor.fromColor(
          hsvColor.toColor().withGreen((progress * 0xff).round())));
      break;
    case TrackType.blue:
      onColorChanged(HSVColor.fromColor(
          hsvColor.toColor().withBlue((progress * 0xff).round())));
      break;
    case TrackType.alpha:
      onColorChanged(hsvColor.withAlpha(
          localDx.clamp(0.0, box.maxWidth - 30.0) / (box.maxWidth - 30.0)));
      break;
  }
}