예제 #1
0
void expand(char *s1, char *s2) {
	int i, j;

	for (i = j = 0; s1[i] != '\0'; ++i) {
		if (s1[i] == '-') {
			if (i == 0 || s1[i+1] == '\0') {
				s2[j++] = s1[i];
			}
            else {
				if (checkrange(s1[i-1], s1[i+1])) {
					while (s2[j-1] < s1[i+1]) {
						s2[j] = s2[j-1] + 1;
						j++;
					}
					++i;
				}
				else
					s2[j++] = s1[i];
			}
		}
		else
			s2[j++] = s1[i];
	}
	s2[j] = '\0';
}
예제 #2
0
Void CVOPU8YUVBA::vdlDump (const Char* pchFileName, const CRct& rct) const
{
	CRct rctROI = (!rct.valid ()) ? m_rctY : rct;
	assert (rctROI <= m_rctY);
	CVideoObjectPlane vop (rctROI, opaquePixel);
	Int offset = (rctROI == m_rctY)? 0 : m_rctY.width - rct.width;
	CU8Image* puciZoomedU = m_puciU -> zoomup (2, 2);
	CU8Image* puciZoomedV = m_puciV -> zoomup (2, 2);
	PixelC* ppxlucY = (PixelC*) m_puciY -> pixels ();
	PixelC* ppxlucU = (PixelC*) puciZoomedU -> pixels ();
	PixelC* ppxlucV = (PixelC*) puciZoomedV -> pixels ();
	PixelC* ppxlucA = NULL;
	if (m_fAUsage == EIGHT_BIT)
		ppxlucA = (PixelC*) m_ppuciA[0] -> pixels ();
	else if (m_fAUsage == ONE_BIT)
		ppxlucA = (PixelC*) m_puciBY -> pixels ();
	CPixel* ppxl = (CPixel*) vop.pixels ();
	for (CoordI y = rctROI.top; y < rctROI.bottom; y++) {
		for (CoordI x = rctROI.left; x < rctROI.right; x++, ppxlucY++, ppxlucU++, ppxlucV++, ppxlucA++) {
			Double var = 1.164 * (*ppxlucY - 16);
			Int r = (Int) ((Double) (var + 1.596 * (*ppxlucV - 128)) + .5);
			Int g = (Int) ((Double) (var - 0.813 * (*ppxlucV - 128) - 0.391 * (*ppxlucU - 128)) + .5);
			Int b = (Int) ((Double) (var + 2.018 * (*ppxlucU - 128)) + .5);
			Int a = (m_fAUsage == RECTANGLE)? opaqueValue : *ppxlucA;	
			ppxl -> pxlU.rgb.r = (U8) checkrange (r, 0, 255);
			ppxl -> pxlU.rgb.g = (U8) checkrange (g, 0, 255);
			ppxl -> pxlU.rgb.b = (U8) checkrange (b, 0, 255);
			ppxl -> pxlU.rgb.a = (U8) checkrange (a, 0, 255);
			ppxl++;
		}
		ppxlucY += offset; ppxlucU += offset; ppxlucV += offset; ppxlucA += offset;
	}
	delete puciZoomedU;
	delete puciZoomedV;
	vop.vdlDump (pchFileName);
}
예제 #3
0
파일: 3DControls.cpp 프로젝트: pvaut/Z-Flux
void T3DControl_Scalar::paramchanged(StrPtr iname)
{
	checkrange();
}
예제 #4
0
파일: 3DControls.cpp 프로젝트: pvaut/Z-Flux
void T3DControl_Scalar::addstep(double stepcount)
{
	value->copyfrom(value->G_val()+stepcount*vstep->G_val());
	checkrange();
	Set_wasmodified();
}