GRAPHICS: Ensure that _bufferedOutput is resized when the scale factor changes
This commit is contained in:
parent
99acdb00f9
commit
b68dbf9eec
6 changed files with 27 additions and 11 deletions
|
@ -3604,13 +3604,13 @@ void EdgePlugin::internScale(const uint8 *srcPtr, uint32 srcPitch,
|
|||
|
||||
uint EdgePlugin::increaseFactor() {
|
||||
if (_factor == 2)
|
||||
++_factor;
|
||||
setFactor(_factor + 1);
|
||||
return _factor;
|
||||
}
|
||||
|
||||
uint EdgePlugin::decreaseFactor() {
|
||||
if (_factor == 3)
|
||||
--_factor;
|
||||
setFactor(_factor - 1);
|
||||
return _factor;
|
||||
}
|
||||
|
||||
|
|
|
@ -5067,13 +5067,13 @@ void HQPlugin::scaleIntern(const uint8 *srcPtr, uint32 srcPitch,
|
|||
|
||||
uint HQPlugin::increaseFactor() {
|
||||
if (_factor < 3)
|
||||
++_factor;
|
||||
setFactor(_factor + 1);
|
||||
return _factor;
|
||||
}
|
||||
|
||||
uint HQPlugin::decreaseFactor() {
|
||||
if (_factor > 2)
|
||||
--_factor;
|
||||
setFactor(_factor - 1);
|
||||
return _factor;
|
||||
}
|
||||
|
||||
|
|
|
@ -205,7 +205,7 @@ void NormalPlugin::scaleIntern(const uint8 *srcPtr, uint32 srcPitch,
|
|||
uint NormalPlugin::increaseFactor() {
|
||||
#ifdef USE_SCALERS
|
||||
if (_factor < 4)
|
||||
++_factor;
|
||||
setFactor(_factor + 1);
|
||||
#endif
|
||||
return _factor;
|
||||
}
|
||||
|
@ -213,7 +213,7 @@ uint NormalPlugin::increaseFactor() {
|
|||
uint NormalPlugin::decreaseFactor() {
|
||||
#ifdef USE_SCALERS
|
||||
if (_factor > 1)
|
||||
--_factor;
|
||||
setFactor(_factor - 1);
|
||||
#endif
|
||||
return _factor;
|
||||
}
|
||||
|
|
|
@ -369,13 +369,13 @@ void AdvMamePlugin::scaleIntern(const uint8 *srcPtr, uint32 srcPitch,
|
|||
|
||||
uint AdvMamePlugin::increaseFactor() {
|
||||
if (_factor < 4)
|
||||
++_factor;
|
||||
setFactor(_factor + 1);
|
||||
return _factor;
|
||||
}
|
||||
|
||||
uint AdvMamePlugin::decreaseFactor() {
|
||||
if (_factor > 2)
|
||||
--_factor;
|
||||
setFactor(_factor - 1);
|
||||
return _factor;
|
||||
}
|
||||
|
||||
|
|
|
@ -60,7 +60,7 @@ void ScalerPluginObject::scale(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstP
|
|||
}
|
||||
}
|
||||
|
||||
SourceScaler::SourceScaler() : _oldSrc(NULL), _enable(false) {
|
||||
SourceScaler::SourceScaler() : _width(0), _height(0), _oldSrc(NULL), _enable(false) {
|
||||
}
|
||||
|
||||
SourceScaler::~SourceScaler() {
|
||||
|
@ -77,13 +77,27 @@ void SourceScaler::setSource(const byte *src, uint pitch, int width, int height,
|
|||
if (_oldSrc != NULL)
|
||||
delete[] _oldSrc;
|
||||
|
||||
_width = width;
|
||||
_height = height;
|
||||
_padding = padding;
|
||||
|
||||
// Give _oldSrc same pitch
|
||||
int size = (height + padding * 2) * pitch;
|
||||
_oldSrc = new byte[size];
|
||||
memset(_oldSrc, 0, size);
|
||||
|
||||
_bufferedOutput.create(width * _factor, height * _factor, _format);
|
||||
_bufferedOutput.create(_width * _factor, _height * _factor, _format);
|
||||
}
|
||||
|
||||
uint SourceScaler::setFactor(uint factor) {
|
||||
uint oldFactor = _factor;
|
||||
_factor = factor;
|
||||
|
||||
if (factor != oldFactor && _width != 0 && _height != 0) {
|
||||
_bufferedOutput.create(_width * _factor, _height * _factor, _format);
|
||||
}
|
||||
|
||||
return oldFactor;
|
||||
}
|
||||
|
||||
void SourceScaler::scaleIntern(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr,
|
||||
|
|
|
@ -167,6 +167,8 @@ public:
|
|||
|
||||
virtual void enableSource(bool enable) final { _enable = enable; }
|
||||
|
||||
virtual uint setFactor(uint factor) final;
|
||||
|
||||
protected:
|
||||
|
||||
virtual void scaleIntern(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr,
|
||||
|
@ -186,7 +188,7 @@ protected:
|
|||
|
||||
private:
|
||||
|
||||
int _padding;
|
||||
int _width, _height, _padding;
|
||||
bool _enable;
|
||||
byte *_oldSrc;
|
||||
Graphics::Surface _bufferedOutput;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue