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:
      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(
        HSVColour.fromColor(
          hsvColor.toColor().withRed((progress * 0xff).round()),
        ),
      );
      break;
    case TrackType.green:
      onColorChanged(
        HSVColour.fromColor(
          hsvColor.toColor().withGreen((progress * 0xff).round()),
        ),
      );
      break;
    case TrackType.blue:
      onColorChanged(
        HSVColour.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),
            )
            .toHSVColour,
      );
      break;
  }
}