IGUIImage.h 3.1 KB

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