MyGUI  3.4.1
MyGUI_TextureUtility.cpp
Go to the documentation of this file.
1 /*
2  * This source file is part of MyGUI. For the latest info, see http://mygui.info/
3  * Distributed under the MIT License
4  * (See accompanying file COPYING.MIT or copy at http://opensource.org/licenses/MIT)
5  */
6 
7 #include "MyGUI_Precompiled.h"
8 #include "MyGUI_TextureUtility.h"
9 #include "MyGUI_RenderManager.h"
10 #include "MyGUI_DataManager.h"
11 #include "MyGUI_Bitwise.h"
12 #include "MyGUI_Constants.h"
13 
14 namespace MyGUI
15 {
16 
17  namespace texture_utility
18  {
19 
20  const IntSize& getTextureSize(const std::string& _texture, bool _cache)
21  {
22  static std::string prevTexture;
23  static IntSize prevSize;
24 
25  if (prevTexture == _texture && _cache)
26  return prevSize;
27 
28  prevTexture.clear();
29  prevSize.clear();
30 
31  if (_texture.empty())
33 
35 
36  ITexture* texture = render.getTexture(_texture);
37  if (texture == nullptr)
38  {
39  if (!DataManager::getInstance().isDataExist(_texture))
40  {
41  MYGUI_LOG(Error, "Texture '" + _texture + "' not found");
43  }
44  else
45  {
46  texture = render.createTexture(_texture);
47  if (texture == nullptr)
48  {
49  MYGUI_LOG(Error, "Texture '" + _texture + "' cannot be created");
51  }
52  texture->loadFromFile(_texture);
53 #if MYGUI_DEBUG_MODE == 1
54  if (!Bitwise::isPO2(prevSize.width) || !Bitwise::isPO2(prevSize.height))
55  {
56  MYGUI_LOG(Warning, "Texture '" + _texture + "' have non power of two size");
57  }
58 #endif
59  }
60  }
61 
62  prevSize = IntSize(texture->getWidth(), texture->getHeight());
63  prevTexture = _texture;
64 
65  return prevSize;
66  }
67 
68  uint32 toColourARGB(const Colour& _colour)
69  {
70  uint32 val32 = uint8(_colour.alpha * 255);
71  val32 <<= 8;
72  val32 += uint8(_colour.red * 255);
73  val32 <<= 8;
74  val32 += uint8(_colour.green * 255);
75  val32 <<= 8;
76  val32 += uint8(_colour.blue * 255);
77  return val32;
78  }
79 
80  } // namespace texture_utility
81 
82 } // namespace MyGUI
#define MYGUI_LOG(level, text)
static bool isPO2(Type _value)
Definition: MyGUI_Bitwise.h:35
static const IntSize & getZeroIntSize()
static DataManager & getInstance()
virtual int getWidth() const =0
virtual void loadFromFile(const std::string &_filename)=0
virtual int getHeight() const =0
virtual ITexture * createTexture(const std::string &_name)=0
static RenderManager & getInstance()
virtual ITexture * getTexture(const std::string &_name)=0
uint32 toColourARGB(const Colour &_colour)
const IntSize & getTextureSize(const std::string &_texture, bool _cache=true)
uint8_t uint8
Definition: MyGUI_Types.h:45
types::TSize< int > IntSize
Definition: MyGUI_Types.h:29
uint32_t uint32
Definition: MyGUI_Types.h:47