Пример #1
0
void CXTColorRef::toHSB(double& h, double& s, double& b) const
{
	int red = getRValue();
	int green = getGValue();
	int blue = getBValue();

	int cmax = __max(red, __max(green, blue));
	int cmin = __min(red, __min(green, blue));

	b = ((double) cmax) / 255.0;
	if (cmax != 0)
		s = ((double) (cmax - cmin)) / ((double) cmax);
	else
		s = 0;
	if (s == 0)
		h = 0;
	else
	{
		double redc = ((double) (cmax - red))   / ((double) (cmax - cmin));
		double greenc = ((double) (cmax - green)) / ((double) (cmax - cmin));
		double bluec = ((double) (cmax - blue))  / ((double) (cmax - cmin));
		if (red == cmax)
			h = bluec - greenc;
		else if (green == cmax)
			h = 2.0 + redc - bluec;
		else
			h = 4.0 + greenc - redc;
		h /= 6.0;
		if (h < 0)
			h = h + 1.0;
	}
}
Пример #2
0
CXTColorRef& CXTColorRef::blend(const CXTColorRef& clr, int opacity)
{
	*this = RGB(BlendColor(clr.getRValue(), getRValue(), opacity),
				BlendColor(clr.getGValue(), getGValue(), opacity),
				BlendColor(clr.getBValue(), getBValue(), opacity));
	return *this;
}
Пример #3
0
CXTColorRef& CXTColorRef::subtract(const CXTColorRef& clr)
{
	*this = RGB(addColorValue(-clr.getRValue(), getRValue()),
				addColorValue(-clr.getGValue(), getGValue()),
				addColorValue(-clr.getBValue(), getBValue()));
	return *this;
}
Пример #4
0
CXTColorRef& CXTColorRef::operator/=(COLORREF cr)
{
	m_ColorRef = SafeRGB(
		getRValue() / GetRValue(cr),
		getGValue() / GetGValue(cr),
		getBValue() / GetBValue(cr));
	return *this;
}
Пример #5
0
//processes a statement 
void processString(char *str){
	Var *tmp = variables, *var1, *var2;
	int varLen, opLen, isNumeric, var3;
	char *lValue, *op, *rValue;

	lValue = getVarName(str);
	varLen = strlen(lValue);

	op = getOp(str, varLen);
	opLen = strlen(op);

	rValue = getRValue(str, varLen, opLen);
	var1 = getVar(lValue);
	isNumeric = isnumeric(rValue);
	if(1 == isNumeric){
		var3 = atoi(rValue);
	}
	else{
		var2 = getVar(rValue);
		var3 = var2->value;
	}

	switch(op[0]){
		case '+':
			var1->value+=var3;
			break;
		case '-':
			var1->value-=var3;
			break;
		case '*':
			var1->value*=var3;
			break;
		case '/':
			var1->value/=var3;
			break;
	}
}