/*
* #%L
* ACS AEM Commons Bundle
* %%
* Copyright (C) 2016 Adobe
* %%
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
* #L%
*/
package com.adobe.acs.commons.dam;
import aQute.bnd.annotation.ProviderType;
/**
* Service interface for performing color space conversion operations.
*/
@ProviderType
public interface ColorConversion {
/**
* Convert a color in the CYMK color space to RGB.
*
* @param cymk a CYMK color
* @return an RGB color
*/
RGB toRGB(CMYK cymk);
/**
* Convert a color in the LAB color space to RGB.
*
* @param lab a LAB color
* @return an RGB color
*/
RGB toRGB(LAB lab);
@ProviderType
final class RGB {
public final int red;
public final int green;
public final int blue;
public RGB(int red, int green, int blue) {
this.red = red;
this.green = green;
this.blue = blue;
}
@Override
public String toString() {
return "RGB{" +
"red=" + red +
", green=" + green +
", blue=" + blue +
'}';
}
}
@ProviderType
final class LAB {
public final float lightness;
public final int a;
public final int b;
public LAB(float lightness, int a, int b) {
this.lightness = lightness;
this.a = a;
this.b = b;
}
@Override
public String toString() {
return "LAB{" +
"lightness=" + lightness +
", a=" + a +
", b=" + b +
'}';
}
}
@ProviderType
final class CMYK {
public final int cyan;
public final int magenta;
public final int yellow;
public final int black;
public CMYK(int cyan, int magenta, int yellow, int black) {
this.cyan = cyan;
this.magenta = magenta;
this.yellow = yellow;
this.black = black;
}
@Override
public String toString() {
return "CYMK{" +
"cyan=" + cyan +
", magenta=" + magenta +
", yellow=" + yellow +
", black=" + black +
'}';
}
}
}