package org.uva.qls.ast.literal;
import java.awt.Color;
import org.uva.qls.ast.CodePosition;
import org.uva.qls.ast.type.ColorType;
import org.uva.qls.ast.type.Type;
import org.uva.qls.ast.value.ColorValue;
import org.uva.qls.ast.value.Value;
import org.uva.qls.visitor.LiteralVisitor;
public class ColorLiteral extends Literal {
private final ColorValue value;
public ColorLiteral(ColorValue value, CodePosition pos) {
super(pos);
this.value = value;
}
public ColorLiteral(Color color, CodePosition pos) {
super(pos);
this.value = new ColorValue(color);
}
public ColorLiteral(int r, int g, int b, CodePosition pos) {
super(pos);
Color color = new Color(r, g, b);
this.value = new ColorValue(color);
}
@Override
public <T> T accept(LiteralVisitor<T> visitor) {
return visitor.visit(this);
}
@Override
public Value getValue() {
return value;
}
@Override
public Type getType() {
return new ColorType(this.getPosition());
}
@Override
public String toString() {
return super.toString() + "<" + value.toString() + ">";
}
}