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() {
|
uint EdgePlugin::increaseFactor() {
|
||||||
if (_factor == 2)
|
if (_factor == 2)
|
||||||
++_factor;
|
setFactor(_factor + 1);
|
||||||
return _factor;
|
return _factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint EdgePlugin::decreaseFactor() {
|
uint EdgePlugin::decreaseFactor() {
|
||||||
if (_factor == 3)
|
if (_factor == 3)
|
||||||
--_factor;
|
setFactor(_factor - 1);
|
||||||
return _factor;
|
return _factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -5067,13 +5067,13 @@ void HQPlugin::scaleIntern(const uint8 *srcPtr, uint32 srcPitch,
|
||||||
|
|
||||||
uint HQPlugin::increaseFactor() {
|
uint HQPlugin::increaseFactor() {
|
||||||
if (_factor < 3)
|
if (_factor < 3)
|
||||||
++_factor;
|
setFactor(_factor + 1);
|
||||||
return _factor;
|
return _factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint HQPlugin::decreaseFactor() {
|
uint HQPlugin::decreaseFactor() {
|
||||||
if (_factor > 2)
|
if (_factor > 2)
|
||||||
--_factor;
|
setFactor(_factor - 1);
|
||||||
return _factor;
|
return _factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -205,7 +205,7 @@ void NormalPlugin::scaleIntern(const uint8 *srcPtr, uint32 srcPitch,
|
||||||
uint NormalPlugin::increaseFactor() {
|
uint NormalPlugin::increaseFactor() {
|
||||||
#ifdef USE_SCALERS
|
#ifdef USE_SCALERS
|
||||||
if (_factor < 4)
|
if (_factor < 4)
|
||||||
++_factor;
|
setFactor(_factor + 1);
|
||||||
#endif
|
#endif
|
||||||
return _factor;
|
return _factor;
|
||||||
}
|
}
|
||||||
|
@ -213,7 +213,7 @@ uint NormalPlugin::increaseFactor() {
|
||||||
uint NormalPlugin::decreaseFactor() {
|
uint NormalPlugin::decreaseFactor() {
|
||||||
#ifdef USE_SCALERS
|
#ifdef USE_SCALERS
|
||||||
if (_factor > 1)
|
if (_factor > 1)
|
||||||
--_factor;
|
setFactor(_factor - 1);
|
||||||
#endif
|
#endif
|
||||||
return _factor;
|
return _factor;
|
||||||
}
|
}
|
||||||
|
|
|
@ -369,13 +369,13 @@ void AdvMamePlugin::scaleIntern(const uint8 *srcPtr, uint32 srcPitch,
|
||||||
|
|
||||||
uint AdvMamePlugin::increaseFactor() {
|
uint AdvMamePlugin::increaseFactor() {
|
||||||
if (_factor < 4)
|
if (_factor < 4)
|
||||||
++_factor;
|
setFactor(_factor + 1);
|
||||||
return _factor;
|
return _factor;
|
||||||
}
|
}
|
||||||
|
|
||||||
uint AdvMamePlugin::decreaseFactor() {
|
uint AdvMamePlugin::decreaseFactor() {
|
||||||
if (_factor > 2)
|
if (_factor > 2)
|
||||||
--_factor;
|
setFactor(_factor - 1);
|
||||||
return _factor;
|
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() {
|
SourceScaler::~SourceScaler() {
|
||||||
|
@ -77,13 +77,27 @@ void SourceScaler::setSource(const byte *src, uint pitch, int width, int height,
|
||||||
if (_oldSrc != NULL)
|
if (_oldSrc != NULL)
|
||||||
delete[] _oldSrc;
|
delete[] _oldSrc;
|
||||||
|
|
||||||
|
_width = width;
|
||||||
|
_height = height;
|
||||||
_padding = padding;
|
_padding = padding;
|
||||||
|
|
||||||
// Give _oldSrc same pitch
|
// Give _oldSrc same pitch
|
||||||
int size = (height + padding * 2) * pitch;
|
int size = (height + padding * 2) * pitch;
|
||||||
_oldSrc = new byte[size];
|
_oldSrc = new byte[size];
|
||||||
memset(_oldSrc, 0, 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,
|
void SourceScaler::scaleIntern(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr,
|
||||||
|
|
|
@ -167,6 +167,8 @@ public:
|
||||||
|
|
||||||
virtual void enableSource(bool enable) final { _enable = enable; }
|
virtual void enableSource(bool enable) final { _enable = enable; }
|
||||||
|
|
||||||
|
virtual uint setFactor(uint factor) final;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
|
|
||||||
virtual void scaleIntern(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr,
|
virtual void scaleIntern(const uint8 *srcPtr, uint32 srcPitch, uint8 *dstPtr,
|
||||||
|
@ -186,7 +188,7 @@ protected:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
int _padding;
|
int _width, _height, _padding;
|
||||||
bool _enable;
|
bool _enable;
|
||||||
byte *_oldSrc;
|
byte *_oldSrc;
|
||||||
Graphics::Surface _bufferedOutput;
|
Graphics::Surface _bufferedOutput;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue