Nicer resize method for VideoBuffer, fix Local and Server save previews
This commit is contained in:
parent
ca9ea8bb8a
commit
0646b7fe41
@ -50,20 +50,30 @@ void VideoBuffer::Resize(float factor, bool resample)
|
||||
Resize(newWidth, newHeight);
|
||||
}
|
||||
|
||||
void VideoBuffer::Resize(int width, int height, bool resample)
|
||||
void VideoBuffer::Resize(int width, int height, bool resample, bool fixedRatio)
|
||||
{
|
||||
int newWidth = width;
|
||||
int newHeight = height;
|
||||
pixel * newBuffer;
|
||||
if(newHeight == -1 && newWidth == -1)
|
||||
return;
|
||||
if(newHeight == -1)
|
||||
if(newHeight == -1 || newWidth == -1)
|
||||
{
|
||||
newHeight = ((float)Height)*((float)newWidth/(float)Width);
|
||||
if(newHeight == -1)
|
||||
newHeight = ((float)Height)*((float)newWidth/(float)Width);
|
||||
if(newWidth == -1)
|
||||
newWidth = ((float)Width)*((float)newHeight/(float)Height);
|
||||
}
|
||||
if(newWidth == -1)
|
||||
else if(fixedRatio)
|
||||
{
|
||||
newWidth = ((float)Width)*((float)newHeight/(float)Height);
|
||||
//Force proportions
|
||||
float scaleFactor = 1.0f;
|
||||
if(Height > newHeight)
|
||||
scaleFactor = ((float)newHeight)/((float)Height);
|
||||
if(Width > newWidth)
|
||||
scaleFactor = ((float)newWidth)/((float)Width);
|
||||
newWidth = ((float)Width)*scaleFactor;
|
||||
newHeight = ((float)Height)*scaleFactor;
|
||||
}
|
||||
if(resample)
|
||||
newBuffer = Graphics::resample_img(Buffer, Width, Height, newWidth, newHeight);
|
||||
|
@ -113,7 +113,7 @@ public:
|
||||
VideoBuffer(pixel * buffer, int width, int height);
|
||||
VideoBuffer(int width, int height);
|
||||
void Resize(float factor, bool resample = false);
|
||||
void Resize(int width, int height, bool resample = false);
|
||||
void Resize(int width, int height, bool resample = false, bool fixedRatio = true);
|
||||
TPT_INLINE void BlendPixel(int x, int y, int r, int g, int b, int a)
|
||||
{
|
||||
#ifdef PIX32OGL
|
||||
|
@ -128,12 +128,18 @@ void LocalSaveActivity::OnDraw()
|
||||
}
|
||||
}
|
||||
|
||||
void LocalSaveActivity::OnRequestReady(void * imagePtr)
|
||||
void LocalSaveActivity::OnResponseReady(void * imagePtr)
|
||||
{
|
||||
this->thumbnail = (VideoBuffer*)imagePtr;
|
||||
if(thumbnail)
|
||||
delete thumbnail;
|
||||
thumbnail = (VideoBuffer*)imagePtr;
|
||||
}
|
||||
|
||||
LocalSaveActivity::~LocalSaveActivity()
|
||||
{
|
||||
|
||||
RequestBroker::Ref().DetachRequestListener(this);
|
||||
if(thumbnail)
|
||||
delete thumbnail;
|
||||
if(callback)
|
||||
delete callback;
|
||||
}
|
@ -34,6 +34,6 @@ public:
|
||||
void saveWrite(std::string finalFilename);
|
||||
virtual void Save();
|
||||
virtual void OnDraw();
|
||||
virtual void OnRequestReady(void * imagePtr);
|
||||
virtual void OnResponseReady(void * imagePtr);
|
||||
virtual ~LocalSaveActivity();
|
||||
};
|
@ -249,15 +249,20 @@ void ServerSaveActivity::OnDraw()
|
||||
}
|
||||
}
|
||||
|
||||
void ServerSaveActivity::OnRequestReady(void * imagePtr)
|
||||
void ServerSaveActivity::OnResponseReady(void * imagePtr)
|
||||
{
|
||||
this->thumbnail = (VideoBuffer *)imagePtr;
|
||||
if(thumbnail)
|
||||
delete thumbnail;
|
||||
thumbnail = (VideoBuffer *)imagePtr;
|
||||
}
|
||||
|
||||
ServerSaveActivity::~ServerSaveActivity()
|
||||
{
|
||||
RequestBroker::Ref().DetachRequestListener(this);
|
||||
if(saveUploadTask)
|
||||
delete saveUploadTask;
|
||||
if(callback)
|
||||
delete callback;
|
||||
if(thumbnail)
|
||||
delete thumbnail;
|
||||
}
|
@ -29,7 +29,7 @@ public:
|
||||
virtual void Save();
|
||||
virtual void Exit();
|
||||
virtual void OnDraw();
|
||||
virtual void OnRequestReady(void * imagePtr);
|
||||
virtual void OnResponseReady(void * imagePtr);
|
||||
virtual void OnTick(float dt);
|
||||
virtual ~ServerSaveActivity();
|
||||
protected:
|
||||
|
Loading…
Reference in New Issue
Block a user