diff options
| author | Simon 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) |
| commit | 86b7a118004c9f9797d4d898dd587000e5178cea (patch) | |
| tree | d2484bc8120fd6f3ee108cd51e026f1d5ebe860f /src/interface | |
| parent | e6bca489c9aae88f1c7bbb44c4e2df71f481cbd3 (diff) | |
| download | powder-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.cpp | 21 | ||||
| -rw-r--r-- | src/interface/AvatarButton.h | 5 | ||||
| -rw-r--r-- | src/interface/SaveButton.cpp | 23 | ||||
| -rw-r--r-- | src/interface/SaveButton.h | 9 |
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; } |
