bool Lights::doupdate()
	{
		if(_generatorReady)
		{
			Pixel out;
			for(size_t i=0; i<_size; i++)
			{
				_generator(&out, i, _size, _extra);
				_current[i].blue = gamma[out.blue];
				_current[i].green = gamma[out.green];
				_current[i].red = gamma[out.red];
			}
			_extra++;
			update(_current, _size);
			return false;
		}
		else
		{
			bool result = true;
			for(size_t i=0; i<_size; i++)
			{
				result = result & adjustPixel(&_current[i], &_target[i], _fade_speed);
			}
			if(!result)
			{
				update(_current, _size);
			}
			else
			{
				if(_useGenerator)
					_generatorReady = true;
			}
			return result;
		}
	}
Beispiel #2
0
bool ColorTransfer::saveImage() {
    assert(_inputImage);
    assert(_input);
    unsigned int offset = _input->GetWidth() * _input->GetHeight();
    _gradedImage = new KImage(_input->GetWidth(), _input->GetHeight(), _input->GetBPP());
    _gradedImage->BeginDirectAccess();
    for (int i = 0; i < _input->GetHeight(); ++i) {
        for (int j = 0; j < _input->GetWidth(); ++j) {
            BYTE R = (BYTE) adjustPixel((_inputImage[j * _input->GetHeight() + i ]*255.0f));
            BYTE G = (BYTE) adjustPixel((_inputImage[ offset + j *
                                         _input->GetHeight() + i] *255.0f));
            BYTE B = (BYTE) adjustPixel((_inputImage[ 2 * offset + j *
                                         _input->GetHeight() + i ] * 255.0f));
            KRGBColor color(R, G, B);
            _gradedImage->Put24BPPPixel(j, i, &color);
        }
    }

    _gradedImage->EndDirectAccess();
    return true;

}