1 // Copyright (C) 2002-2012 Nikolaus Gebhardt
\r
2 // This file is part of the "Irrlicht Engine".
\r
3 // For conditions of distribution and use, see copyright notice in irrlicht.h
\r
5 #ifndef __I_GUI_IMAGE_H_INCLUDED__
\r
6 #define __I_GUI_IMAGE_H_INCLUDED__
\r
8 #include "IGUIElement.h"
\r
18 //! GUI element displaying an image.
\r
19 class IGUIImage : public IGUIElement
\r
24 IGUIImage(IGUIEnvironment* environment, IGUIElement* parent, s32 id, core::rect<s32> rectangle)
\r
25 : IGUIElement(EGUIET_IMAGE, environment, parent, id, rectangle) {}
\r
27 //! Sets an image texture
\r
28 virtual void setImage(video::ITexture* image) = 0;
\r
30 //! Gets the image texture
\r
31 virtual video::ITexture* getImage() const = 0;
\r
33 //! Sets the color of the image
\r
34 /** \param color Color with which the image is drawn. If the color
\r
35 equals Color(255,255,255,255) it is ignored. */
\r
36 virtual void setColor(video::SColor color) = 0;
\r
38 //! Sets if the image should scale to fit the element
\r
39 virtual void setScaleImage(bool scale) = 0;
\r
41 //! Sets if the image should use its alpha channel to draw itself
\r
42 virtual void setUseAlphaChannel(bool use) = 0;
\r
44 //! Gets the color of the image
\r
45 virtual video::SColor getColor() const = 0;
\r
47 //! Returns true if the image is scaled to fit, false if not
\r
48 virtual bool isImageScaled() const = 0;
\r
50 //! Returns true if the image is using the alpha channel, false if not
\r
51 virtual bool isAlphaChannelUsed() const = 0;
\r
53 //! Sets the source rectangle of the image. By default the full image is used.
\r
54 /** \param sourceRect coordinates inside the image or an area with size 0 for using the full image (default). */
\r
55 virtual void setSourceRect(const core::rect<s32>& sourceRect) = 0;
\r
57 //! Returns the customized source rectangle of the image to be used.
\r
58 /** By default an empty rectangle of width and height 0 is returned which means the full image is used. */
\r
59 virtual core::rect<s32> getSourceRect() const = 0;
\r
61 //! Restrict drawing-area.
\r
62 /** This allows for example to use the image as a progress bar.
\r
63 Base for area is the image, which means:
\r
64 - The original clipping area when the texture is scaled or there is no texture.
\r
65 - The source-rect for an unscaled texture (but still restricted afterward by the clipping area)
\r
66 Unlike normal clipping this does not affect the gui-children.
\r
67 \param drawBoundUVs: Coordinates between 0 and 1 where 0 are for left+top and 1 for right+bottom
\r
69 virtual void setDrawBounds(const core::rect<f32>& drawBoundUVs = core::rect<f32>(0.f, 0.f, 1.f, 1.f)) = 0;
\r
71 //! Get drawing-area restrictions.
\r
72 virtual core::rect<f32> getDrawBounds() const = 0;
\r
74 //! Sets whether to draw a background color (EGDC_3D_DARK_SHADOW) when no texture is set
\r
75 /** By default it's enabled */
\r
76 virtual void setDrawBackground(bool draw) = 0;
\r
78 //! Checks if a background is drawn when no texture is set
\r
79 /** \return true if background drawing is enabled, false otherwise */
\r
80 virtual bool isDrawBackgroundEnabled() const = 0;
\r
84 } // end namespace gui
\r
85 } // end namespace irr
\r