Beispiel #1
0
void PropertyWindow::rebuildTabs()
{
    _propertyTabs->blockSignals(true);
    while (_propertyTabs->count()) {
        QWidget *widget = _propertyTabs->widget(0);
        _propertyTabs->removeTab(0);
        delete widget;
    }
    if (_selection.empty())
        return;

    PrimitiveProperties *primProps = new PrimitiveProperties(_propertyTabs, _scene, _selection);
    connect(primProps, SIGNAL(primitiveNameChange(Primitive *)), this, SLOT(changePrimitiveName(Primitive *)));
    connect(primProps, SIGNAL(triggerRedraw()), _parent.previewWindow(), SLOT(update()));
    _propertyTabs->addTab(primProps, "Primitive");

    VerticalScrollArea *scrollArea = new VerticalScrollArea(_propertyTabs);
    BsdfProperties *bsdfProps = new BsdfProperties(scrollArea, _scene, _selection);
    connect(bsdfProps, SIGNAL(triggerRedraw()), _parent.previewWindow(), SLOT(update()));

    scrollArea->setWidget(bsdfProps);
    _propertyTabs->addTab(scrollArea, "Material");
    if (_openTab < _propertyTabs->count())
        _propertyTabs->setCurrentIndex(_openTab);
    else
        _openTab = 0;

    _propertyTabs->blockSignals(false);
}
Beispiel #2
0
void DisplayElement::setBounds(const Common::Rect &r) {
	if (r != _bounds) {
		triggerRedraw();
		_bounds = r;
		triggerRedraw();
	}
}
Beispiel #3
0
void Sprite::removeFrame(const uint32 frameNum) {
	_frameArray[frameNum].frame->_referenceCount--;
	if (_frameArray[frameNum].frame->_referenceCount == 0)
		delete _frameArray[frameNum].frame;

	// Calculate the new bounds
	Common::Rect frameBounds;
	for (uint32 i = 0; i < _numFrames; i++) {
		if (i == frameNum)
			continue;

		Common::Rect r;
		_frameArray[i].frame->getSurfaceBounds(r);
		r.translate(_frameArray[i].frameLeft, _frameArray[i].frameTop);
		frameBounds.extend(r);
	}

	_frameArray.remove_at(frameNum);

	frameBounds.moveTo(_bounds.left, _bounds.top);
	setBounds(frameBounds);

	if (_currentFrameNum == frameNum)
		triggerRedraw();
	else if (_currentFrameNum != 0xffffffff && _currentFrameNum > frameNum)
		--_currentFrameNum;
}
Beispiel #4
0
void FrameSequence::openFrameSequence() {
	if (!_resFork->hasResFork())
		return;

	Common::SeekableReadStream *res = _resFork->getResource(MKTAG('P', 'F', 'r', 'm'), 0x80);

	if (!res)
		return;

	uint32 scale = res->readUint32BE();
	_bounds.top = res->readUint16BE();
	_bounds.left = res->readUint16BE();
	_bounds.bottom = res->readUint16BE();
	_bounds.right = res->readUint16BE();
	_numFrames = res->readUint16BE();
	_duration = 0;

	_frameTimes.clear();
	for (uint32 i = 0; i < _numFrames; i++) {
		TimeValue time = res->readUint32BE();
		_frameTimes.push_back(_duration);
		_duration += time;
	}

	setScale(scale);
	setSegment(0, _duration);
	setTime(0);
	_currentFrameNum = 0;
	newFrame(_currentFrameNum);
	triggerRedraw();

	delete res;
}
Beispiel #5
0
void Movie::redrawMovieWorld() {
	if (_video && _video->needsUpdate()) {
		const Graphics::Surface *frame = _video->decodeNextFrame();

		if (!frame)
			return;

		// Make sure we have a surface in the current pixel format
		Graphics::Surface *convertedFrame = 0;

		if (frame->format != g_system->getScreenFormat()) {
			convertedFrame = frame->convertTo(g_system->getScreenFormat());
			frame = convertedFrame;
		}

		// Copy to the surface using _movieBox
		uint16 width = MIN<int>(frame->w, _movieBox.width());
		uint16 height = MIN<int>(frame->h, _movieBox.height());

		for (uint16 y = 0; y < height; y++)
			memcpy((byte *)_surface->getBasePtr(_movieBox.left, _movieBox.top + y), (const byte *)frame->getBasePtr(0, y), width * frame->format.bytesPerPixel);

		if (convertedFrame) {
			convertedFrame->free();
			delete convertedFrame;
		}

		triggerRedraw();
	}
}
Beispiel #6
0
void Sprite::setCurrentFrameIndex(const int32 frameNum) {
	if (frameNum < 0) {
		if (_currentFrameNum != 0xffffffff) {
			_currentFrameNum = 0xffffffff;
			_currentFrame = 0;
			triggerRedraw();
		}
	} else if (_numFrames > 0) {
		uint32 f = frameNum % _numFrames;
		if (f != _currentFrameNum) {
			_currentFrameNum = f;
			_currentFrame = &_frameArray[f];
			triggerRedraw();
		}
	}
}
Beispiel #7
0
void SoundLevel::setSoundLevel(uint16 level) {
	uint16 newLevel = (level + 21) / 22;

	if (newLevel != _soundLevel) {
		_soundLevel = newLevel;
		triggerRedraw();
	}
}
Beispiel #8
0
void FrameSequence::setFrameNum(const int16 frameNum) {
	int16 f = CLIP<int>(frameNum, 0, _numFrames);

	if (_currentFrameNum != f) {
		_currentFrameNum = f;
		setTime(_frameTimes[f]);
		newFrame(f);
		triggerRedraw();
	}
}
Beispiel #9
0
void DisplayElement::setDisplayOrder(const DisplayOrder order) {
	if (_elementOrder != order) {
		_elementOrder = order;
		if (isDisplaying()) {
			((PegasusEngine *)g_engine)->_gfx->removeDisplayElement(this);
			((PegasusEngine *)g_engine)->_gfx->addDisplayElement(this);
			triggerRedraw();
		}
	}
}
Beispiel #10
0
void ShuttleWeapon::updateWeaponPosition() {
	_weaponTime = (float)_lastTime / _weaponDuration;
	linearInterp(_weaponOrigin, _weaponTarget, _weaponTime, _weaponLocation);

	if (_weaponTime == 1.0) {
		stop();
		hide();
	} else {
		triggerRedraw();
	}
}
Beispiel #11
0
void PanoramaScroll::timeChanged(const TimeValue newTime) {
	CoordType leftPixel = (_totalWidth - _boundsWidth) * newTime / getDuration();

	Common::Rect r;
	_panorama.getViewBounds(r);
	if (leftPixel != r.left) {
		_panorama.getViewBounds(r);
		r.moveTo(leftPixel, 0);
		_panorama.setViewBounds(r);
		triggerRedraw();
	}
}
//!
//! Constructor of the ScratchedFilmNode class.
//!
//! \param name The name for the new node.
//! \param parameterRoot A copy of the parameter tree specific for the type of the node.
//! \param outputImageName The name of the geometry output parameter.
//!
ScratchedFilmNode::ScratchedFilmNode ( const QString &name, ParameterGroup *parameterRoot ) :
    CompositorNode(name, parameterRoot)
{
    // create compositor
    if (m_viewport)
        m_compositor = Ogre::CompositorManager::getSingleton().addCompositor(m_viewport, "ScratchedFilmCompositor", 0);
    
    // add listener
    if (m_compositor) {
        m_compositor->addListener(this);
    }

    addAffection("Input Map", m_outputImageName);
    setProcessingFunction(m_outputImageName, SLOT(processOutputImage()));
    
	setChangeFunction("Speed1", SIGNAL(triggerRedraw()));
	setChangeFunction("Speed2", SIGNAL(triggerRedraw()));
	setChangeFunction("ScratchIntensity", SIGNAL(triggerRedraw()));
	setChangeFunction("IS", SIGNAL(triggerRedraw()));
	
}
Beispiel #13
0
void FrameSequence::timeChanged(const TimeValue time) {
	int16 frameNum = 0;
	for (int16 i = _numFrames - 1; i >= 0; i--) {
		if (_frameTimes[i] < time) {
			frameNum = i;
			break;
		}
	}

	if (frameNum != _currentFrameNum) {
		_currentFrameNum = frameNum;
		newFrame(_currentFrameNum);
		triggerRedraw();
	}
}
Beispiel #14
0
void EnergyMonitor::timeChanged(const TimeValue currentTime) {
	if (currentTime == getStop()) {
		PegasusEngine *vm = (PegasusEngine *)g_engine;
		if (vm->getEnergyDeathReason() != -1)
			vm->die(vm->getEnergyDeathReason());
	} else {
		uint32 currentEnergy = kMaxJMPEnergy - currentTime;

		EnergyStage newStage;
		if (currentEnergy > kWorriedEnergy)
			newStage = kStageCasual;
		else if (currentEnergy > kNervousEnergy)
			newStage = kStageWorried;
		else if (currentEnergy > kPanicStrickenEnergy)
			newStage = kStageNervous;
		else
			newStage = kStagePanicStricken;

		if (_stage != newStage) {
			uint32 newFrame;

			switch (newStage) {
			case kStageCasual:
				_barColor = g_system->getScreenFormat().RGBToColor(0x48, 0xB0, 0xD8);
				newFrame = kFrameLightOff;
				break;
			case kStageWorried:
				_barColor = g_system->getScreenFormat().RGBToColor(0xD8, 0xC0, 0x30);
				newFrame = kFrameLightYellow;
				break;
			case kStageNervous:
				_barColor = g_system->getScreenFormat().RGBToColor(0xD8, 0x78, 0x38);
				newFrame = kFrameLightOrange;
				break;
			case kStagePanicStricken:
				_barColor = g_system->getScreenFormat().RGBToColor(0xD8, 0x40, 0x38);
				newFrame = kFrameLightRed;
				break;
			default:
				error("no stage in energy monitor?");
				break;
			}

			_stage = newStage;
			uint32 oldFrame = _energyLight.getCurrentFrameIndex();

			if (!_calibrating) {
				if (oldFrame > newFrame || oldFrame == 0xffffffff || _dontFlash) {
					_energyLight.setCurrentFrameIndex(newFrame);
					_dontFlash = false;
				} else {
					_lightBlinker.startBlinking(&_energyLight, oldFrame, newFrame, 4, 1, 3);
					triggerRedraw();
				}
			}
		}

		Common::Rect r;
		calcLevelRect(r);
		if (r != _levelRect) {
			_levelRect = r;
			triggerRedraw();
		}
	}
}
Beispiel #15
0
void DisplayElement::hide() {
	if (_elementIsVisible) {
		triggerRedraw();
		_elementIsVisible = false;
	}
}
Beispiel #16
0
void DisplayElement::show() {
	if (!_elementIsVisible) {
		_elementIsVisible = true;
		triggerRedraw();
	}
}
Beispiel #17
0
void DisplayElement::stopDisplaying() {
	if (isDisplaying()) {
		triggerRedraw();
		((PegasusEngine *)g_engine)->_gfx->removeDisplayElement(this);
	}
}
Beispiel #18
0
void DisplayElement::startDisplaying() {
	if (!isDisplaying()) {
		((PegasusEngine *)g_engine)->_gfx->addDisplayElement(this);
		triggerRedraw();
	}
}
Beispiel #19
0
void IdlerAnimation::timeChanged(const TimeValue) {
	triggerRedraw();
}
Beispiel #20
0
void SoundLevel::decrementLevel() {
	if (_soundLevel > 0) {
		_soundLevel--;
		triggerRedraw();
	}
}
Beispiel #21
0
void SoundLevel::incrementLevel() {
	if (_soundLevel < 12) {
		_soundLevel++;
		triggerRedraw();
	}
}