package rpn.graphics;

import rpn.basic.Item;
import rpn.Calculator;
import rpn.basic.DoubleValue;
import rpn.basic.CalcErr;
import rpn.basic.ComplexValue;

public class SetColorItem extends Item {
	
	public SetColorItem(Calculator ca) {
		super(ca);
		ca.systemInstall(this);
	}
	
	public void exec() {
		if (ca instanceof GraphicsCalculator) {
			CalculatorCanvas c = ((GraphicsCalculator) ca).getCanvas();
			if (c != null) {
				if (ca.check(3)) {
					Item a = ca.peek(2);
					Item b = ca.peek(1);
					Item C = ca.peek(0);
					if (a instanceof DoubleValue
						&& b instanceof DoubleValue
						&& C instanceof DoubleValue) {
				 		double x = ((DoubleValue) a).doubleValue();
				 		double y = ((DoubleValue) b).doubleValue();
				 		double z = ((DoubleValue) C).doubleValue();
				 		c.setColor((float) x, (float) y, (float) z);
				 		ca.pop(3);
					} else {
						ca.error(this, CalcErr.Type);
					}
				} else {
					ca.error(this, CalcErr.Underflow);
				}
			} else if (ca.check(3)) {
				ca.pop(3);
			} else {
				ca.error(this, CalcErr.Underflow);
			}
		} else if (ca.check(3)) {
			ca.pop(3);
		} else {
			ca.error(this, CalcErr.Underflow);
		}
	}
	
	public String toString() {
		return("setcolor");
	}
}
