Une classe GUIImage pour afficher une image

Intro :

4NgHv

Parfois nous avons besoin d’afficher une image pour rendre l’interface utilisateur (GUI) plus jolie.

Prérequis :

– Avoir lu la classe GUIWidget

Contenu :

Voici le fichier GUIImage.h :

#ifndef GUI_IMAGE_H
#define GUI_IMAGE_H

#include "GUIWidget.h"

class GUIImage : public GUIWidget
{
public:
    GUIImage(const std::string& sName, const std::string& sTextureFileName);
    virtual ~GUIImage();

    virtual void SetTextureImage(const std::string& sTextureName);

    virtual void Update(float fTimeSinceLastFrame);

    virtual void SetPosition(unsigned int x, unsigned int y);

    virtual void SetSize(unsigned int iWidth, unsigned int iHeight);

    virtual void SetVisible(bool bVisible);

    Sprite2D* GetImage();

private:
    Sprite2D* m_pImage;
};

#endif

 

Voici le fichier GUIImage.cpp :

#include "GUIImage.h"
#include "Sprite2D.h"
#include "Defines.h"

GUIImage::GUIImage(const std::string& sName, const std::string& sTextureFileName) :
GUIWidget(sName),
m_pImage(nullptr)
{
    m_pImage = new Sprite2D(sTextureFileName);
    m_pImage->Initialize();

    unsigned int iImageWidth = m_pImage->GetWidth();
    unsigned int iImageHeight = m_pImage->GetHeight();

    SetSize(iImageWidth, iImageHeight);
}

GUIImage::~GUIImage()
{
    SAFE_DELETE(m_pImage);
}

void GUIImage::Update(float fTimeSinceLastFrame)
{
    if (IsVisible())
    {
        m_pImage->Render();
    }

    GUIWidget::Update(fTimeSinceLastFrame);
}

void GUIImage::SetTextureImage(const std::string& sTextureName)
{
    m_pImage->SetTextureImage(sTextureName);

    // On restaure les dimensions d'avant
    unsigned int iWidth = 0;
    unsigned int iHeight = 0;

    GetSize(iWidth, iHeight);

    m_pImage->SetImageSize(iWidth, iHeight);
}

void GUIImage::SetPosition(unsigned int x, unsigned int y)
{
    m_pImage->SetPosition(x, y);

    GUIWidget::SetPosition(x, y);
}

void GUIImage::SetSize(unsigned int iWidth, unsigned int iHeight)
{
    m_pImage->SetImageSize(iWidth, iHeight);

    GUIWidget::SetSize(iWidth, iHeight);
}

void GUIImage::SetVisible(bool bVisible)
{
    if (bVisible)
    {
        m_pImage->Show();
    }
    else
    {
        m_pImage->Hide();
    }

    GUIWidget::SetVisible(bVisible);
}

Sprite2D* GUIImage::GetImage()
{
    return m_pImage;
}

Résumé :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *