summaryrefslogtreecommitdiff
path: root/src/interface
diff options
context:
space:
mode:
authorSimon Robertshaw <simon@hardwired.org.uk>2013-03-12 21:17:19 (GMT)
committer Simon Robertshaw <simon@hardwired.org.uk>2013-03-12 21:17:19 (GMT)
commit86b7a118004c9f9797d4d898dd587000e5178cea (patch)
treed2484bc8120fd6f3ee108cd51e026f1d5ebe860f /src/interface
parente6bca489c9aae88f1c7bbb44c4e2df71f481cbd3 (diff)
downloadpowder-86b7a118004c9f9797d4d898dd587000e5178cea.zip
powder-86b7a118004c9f9797d4d898dd587000e5178cea.tar.gz
Make thumbnailbroker more general purpose, image requests for requestbroker, avatars in previewview
Diffstat (limited to 'src/interface')
-rw-r--r--src/interface/AvatarButton.cpp21
-rw-r--r--src/interface/AvatarButton.h5
-rw-r--r--src/interface/SaveButton.cpp23
-rw-r--r--src/interface/SaveButton.h9
4 files changed, 35 insertions, 23 deletions
diff --git a/src/interface/AvatarButton.cpp b/src/interface/AvatarButton.cpp
index 0343aed..0a55ffa 100644
--- a/src/interface/AvatarButton.cpp
+++ b/src/interface/AvatarButton.cpp
@@ -5,6 +5,7 @@
#include "Format.h"
#include "Engine.h"
#include "client/Client.h"
+#include "client/RequestBroker.h"
#include "graphics/Graphics.h"
#include "ContextMenu.h"
#include "Keys.h"
@@ -23,6 +24,7 @@ AvatarButton::AvatarButton(Point position, Point size, std::string username):
AvatarButton::~AvatarButton()
{
+ RequestBroker::Ref().DetachRequestListener(this);
if(avatar)
delete avatar;
if(actionCallback)
@@ -34,13 +36,18 @@ void AvatarButton::Tick(float dt)
if(!avatar && !tried && name.size() > 0)
{
tried = true;
- avatar = Client::Ref().GetAvatar(name);
- if(avatar) {
- if(avatar->Width != Size.X && avatar->Height != Size.Y)
- {
- avatar->Resize(Size.X, Size.Y, true);
- }
- }
+ RequestBroker::Ref().RetrieveAvatar(name, Size.X, Size.Y, this);
+ }
+}
+
+void AvatarButton::OnResponseReady(void * imagePtr)
+{
+ VideoBuffer * image = (VideoBuffer*)imagePtr;
+ if(image)
+ {
+ if(avatar)
+ delete avatar;
+ avatar = image;
}
}
diff --git a/src/interface/AvatarButton.h b/src/interface/AvatarButton.h
index b336256..d946ddf 100644
--- a/src/interface/AvatarButton.h
+++ b/src/interface/AvatarButton.h
@@ -6,6 +6,7 @@
#include "Component.h"
#include "graphics/Graphics.h"
#include "interface/Colour.h"
+#include "client/RequestListener.h"
namespace ui
{
@@ -17,7 +18,7 @@ public:
virtual ~AvatarButtonAction() {}
};
-class AvatarButton : public Component
+class AvatarButton : public Component, public RequestListener
{
VideoBuffer * avatar;
std::string name;
@@ -37,6 +38,8 @@ public:
virtual void Draw(const Point& screenPos);
virtual void Tick(float dt);
+ virtual void OnResponseReady(void * imagePtr);
+
virtual void DoAction();
void SetUsername(std::string username) { name = username; }
diff --git a/src/interface/SaveButton.cpp b/src/interface/SaveButton.cpp
index 6e42169..87b80a6 100644
--- a/src/interface/SaveButton.cpp
+++ b/src/interface/SaveButton.cpp
@@ -117,7 +117,7 @@ SaveButton::SaveButton(Point position, Point size, SaveFile * file):
SaveButton::~SaveButton()
{
- RequestBroker::Ref().DetachThumbnailListener(this);
+ RequestBroker::Ref().DetachRequestListener(this);
if(thumbnail)
delete thumbnail;
@@ -129,13 +129,14 @@ SaveButton::~SaveButton()
delete file;
}
-void SaveButton::OnThumbnailReady(Thumbnail * thumb)
+void SaveButton::OnResponseReady(void * imagePtr)
{
- if(thumb)
+ VideoBuffer * image = (VideoBuffer*)imagePtr;
+ if(image)
{
if(thumbnail)
delete thumbnail;
- thumbnail = thumb;
+ thumbnail = image;
waitingForThumb = false;
}
}
@@ -144,23 +145,25 @@ void SaveButton::Tick(float dt)
{
if(!thumbnail && !waitingForThumb)
{
+ float scaleFactor = (Size.Y-25)/((float)YRES);
+ ui::Point thumbBoxSize = ui::Point(((float)XRES)*scaleFactor, ((float)YRES)*scaleFactor);
if(save)
{
if(save->GetGameSave())
{
waitingForThumb = true;
- RequestBroker::Ref().RenderThumbnail(save->GetGameSave(), Size.X-3, Size.Y-25, this);
+ RequestBroker::Ref().RenderThumbnail(save->GetGameSave(), thumbBoxSize.X, thumbBoxSize.Y, this);
}
else if(save->GetID())
{
waitingForThumb = true;
- RequestBroker::Ref().RetrieveThumbnail(save->GetID(), save->GetVersion(), Size.X-3, Size.Y-25, this);
+ RequestBroker::Ref().RetrieveThumbnail(save->GetID(), save->GetVersion(), thumbBoxSize.X, thumbBoxSize.Y, this);
}
}
else if(file && file->GetGameSave())
{
waitingForThumb = true;
- RequestBroker::Ref().RenderThumbnail(file->GetGameSave(), Size.X-3, Size.Y-25, this);
+ RequestBroker::Ref().RenderThumbnail(file->GetGameSave(), thumbBoxSize.X, thumbBoxSize.Y, this);
}
}
}
@@ -180,11 +183,11 @@ void SaveButton::Draw(const Point& screenPos)
if(thumbnail)
{
- thumbBoxSize = ui::Point(thumbnail->Size.X, thumbnail->Size.Y);
+ thumbBoxSize = ui::Point(thumbnail->Width, thumbnail->Height);
if(save && save->id)
- g->draw_image(thumbnail->Data, screenPos.X-3+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-21-thumbBoxSize.Y)/2, thumbnail->Size.X, thumbnail->Size.Y, 255);
+ g->draw_image(thumbnail, screenPos.X-3+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-21-thumbBoxSize.Y)/2, 255);
else
- g->draw_image(thumbnail->Data, screenPos.X+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-21-thumbBoxSize.Y)/2, thumbnail->Size.X, thumbnail->Size.Y, 255);
+ g->draw_image(thumbnail, screenPos.X+(Size.X-thumbBoxSize.X)/2, screenPos.Y+(Size.Y-21-thumbBoxSize.Y)/2, 255);
}
else
{
diff --git a/src/interface/SaveButton.h b/src/interface/SaveButton.h
index 7a75973..e03d48a 100644
--- a/src/interface/SaveButton.h
+++ b/src/interface/SaveButton.h
@@ -6,9 +6,8 @@
#include "Component.h"
#include "client/SaveFile.h"
#include "client/SaveInfo.h"
-#include "client/ThumbnailListener.h"
+#include "client/RequestListener.h"
#include "graphics/Graphics.h"
-#include "search/Thumbnail.h"
#include "interface/Colour.h"
namespace ui
@@ -24,11 +23,11 @@ public:
virtual ~SaveButtonAction() {}
};
-class SaveButton : public Component, public ThumbnailListener
+class SaveButton : public Component, public RequestListener
{
SaveFile * file;
SaveInfo * save;
- Thumbnail * thumbnail;
+ VideoBuffer * thumbnail;
std::string name;
std::string votesString;
std::string votesBackground;
@@ -59,7 +58,7 @@ public:
virtual void Draw(const Point& screenPos);
virtual void Tick(float dt);
- virtual void OnThumbnailReady(Thumbnail * thumb);
+ virtual void OnResponseReady(void * imagePtr);
void SetSelected(bool selected_) { selected = selected_; }
bool GetSelected() { return selected; }