openFrameworksでHSV系を使う方法

こんにちは。お久しぶりです。MacBookPro買って、openFrameworksの勉強に励む今日この頃です。proce55ingで作ったSeq:crossという作品をopenFrameworksに移植中なのですが、openFrameworksにはHSV系で色を表現することができない(少なくとも私の調べた中では)ようなので、HSVを使えるようにopenFrameworksを少し改造しました。


1."ofGraphics.h"の改造
ヘッダファイル"ofGraphics.h"の中のofSetColor(int hexColor)が宣言されている部分のすぐ下に

//h: 0-360 , s: 0-100, v: 0-100, a: 0-255
void ofSetHSVColor(int _h, int _s, int _v, int _a);
void ofSetHSVColor(int _h, int _s, int _v);

を付け足します。


2."ofGraphics.cpp"の改造
 cppファイル"ofGraphics.cpp"の中のofSetColor(int hexColor)が定義されている部分のすぐ下に

void ofSetHSVColor(int _h, int _s, int _v, int _a){

	float s = (float)_s/100, v = (float)_v/100; 
	if (s==0) {
		ofSetColor(255*v, 255*v, 255*v);
		return;
	}
	float r,g,b;
	int hi = (int)(floor((double)_h/60))%6;
	float f = (float)_h/60-(float)hi;
	float p = v*(1-s);
	float q = v*(1-f*s);
	float t = v*(1-(1-f)*s);
	switch (hi) {
		case 0:
			r=v;
			g=t;
			b=p;
			break;
		case 1:
			r=q;
			g=v;
			b=p;
			break;
		case 2:
			r=p;
			g=v;
			b=t;
			break;
		case 3:
			r=p;
			g=q;
			b=v;
			break;
		case 4:
			r=t;
			g=p;
			b=v;
			break;
		case 5:
			r=v;
			g=p;
			b=q;
			break;
		default:
			break;
	}
	ofSetColor(255*r, 255*g, 255*b, _a);
}

void ofSetHSVColor(int _h, int _s, int _v){
	ofSetHSVColor(_h, _s, _v, 255);
}

を付け足します。これでHSV系で色を指定できるofSetHSVColor(int _h, int _s, int _v)が使えるようになります。


 HSV系くらい標準装備されてそうなもんだけど。。。何かほかに方法があれば、コメントなどで教えてもらえれば助かります。