export interface BasicFilters {
  brightness: number;
  contrast: number;
  exposure: number;
  saturation: number;
  temperature: number;
  tint: number;
  highlights: number;
  shadows: number;
}

export interface CurvePoint {
  x: number;
  y: number;
}

export type CurveChannel = "rgb" | "r" | "g" | "b";

export interface CurvesState {
  rgb: CurvePoint[];
  r: CurvePoint[];
  g: CurvePoint[];
  b: CurvePoint[];
}

export interface FilterState {
  basic: BasicFilters;
  curves: CurvesState;
}

export const DEFAULT_BASIC: BasicFilters = {
  brightness: 100,
  contrast: 100,
  exposure: 0,
  saturation: 100,
  temperature: 0,
  tint: 0,
  highlights: 0,
  shadows: 0,
};

export const DEFAULT_CURVE: CurvePoint[] = [
  { x: 0, y: 0 },
  { x: 255, y: 255 },
];

export const DEFAULT_CURVES: CurvesState = {
  rgb: [...DEFAULT_CURVE],
  r: [...DEFAULT_CURVE],
  g: [...DEFAULT_CURVE],
  b: [...DEFAULT_CURVE],
};

export const DEFAULT_FILTER_STATE: FilterState = {
  basic: { ...DEFAULT_BASIC },
  curves: {
    rgb: [...DEFAULT_CURVE],
    r: [...DEFAULT_CURVE],
    g: [...DEFAULT_CURVE],
    b: [...DEFAULT_CURVE],
  },
};
