MyGUI: MyGUI_MaskPickInfo.cpp Source File

MyGUI 3.4.3

MyGUI_MaskPickInfo.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_MaskPickInfo.h"
9#include "MyGUI_ResourceManager.h"
10#include "MyGUI_RenderManager.h"
11#include "MyGUI_DataManager.h"
12
13namespace MyGUI
14{
15
16 bool MaskPickInfo::load(const std::string& _file)
17 {
18 if (!DataManager::getInstance().isDataExist(_file))
19 return false;
20
21 RenderManager& render = RenderManager::getInstance();
22 ITexture* texture = render.createTexture(_file);
23 texture->loadFromFile(_file);
24
25 uint8* buffer = (uint8*)texture->lock(TextureUsage::Read);
26 if (buffer == nullptr)
27 {
28 render.destroyTexture(texture);
29 return false;
30 }
31
32 size_t pixel_size = texture->getNumElemBytes();
33
34 mWidth = texture->getWidth();
35 mHeight = texture->getHeight();
36 size_t size = mWidth * mHeight;
37 mData.resize(size);
38
39 size_t pos = 0;
40 for (size_t pos_pix = 0; pos_pix < size; pos_pix++)
41 {
42 bool white = true;
43 for (size_t in_pix = 0; in_pix < pixel_size; in_pix++)
44 {
45 if (0xFF != buffer[pos])
46 {
47 white = false;
48 }
49 pos++;
50 }
51
52 mData[pos_pix] = white;
53 }
54
55 texture->unlock();
56 render.destroyTexture(texture);
57
58 return true;
59 }
60
61 bool MaskPickInfo::pick(const IntPoint& _point, const IntCoord& _coord) const
62 {
63 if ((0 == _coord.width) || (0 == _coord.height))
64 return false;
65
66 int x = ((_point.left * mWidth) - 1) / _coord.width;
67 int y = ((_point.top * mHeight) - 1) / _coord.height;
68
69 return 0 != mData[(size_t)(y * mWidth + x)];
70 }
71
72 bool MaskPickInfo::empty() const
73 {
74 return mData.empty();
75 }
76
77} // namespace MyGUI
MyGUI_DataManager.h
MyGUI_MaskPickInfo.h
MyGUI_Precompiled.h
MyGUI_RenderManager.h
MyGUI_ResourceManager.h
MyGUI::DataManager::getInstance
static DataManager & getInstance()
MyGUI::ITexture
Definition MyGUI_ITexture.h:28
MyGUI::ITexture::getWidth
virtual int getWidth() const =0
MyGUI::ITexture::loadFromFile
virtual void loadFromFile(const std::string &_filename)=0
MyGUI::ITexture::getNumElemBytes
virtual size_t getNumElemBytes() const =0
MyGUI::ITexture::unlock
virtual void unlock()=0
MyGUI::ITexture::getHeight
virtual int getHeight() const =0
MyGUI::ITexture::lock
virtual void * lock(TextureUsage _access)=0
MyGUI::MaskPickInfo::empty
bool empty() const
Definition MyGUI_MaskPickInfo.cpp:72
MyGUI::MaskPickInfo::load
bool load(const std::string &_file)
Definition MyGUI_MaskPickInfo.cpp:16
MyGUI::MaskPickInfo::pick
bool pick(const IntPoint &_point, const IntCoord &_coord) const
Definition MyGUI_MaskPickInfo.cpp:61
MyGUI::RenderManager
Definition MyGUI_RenderManager.h:21
MyGUI::RenderManager::createTexture
virtual ITexture * createTexture(const std::string &_name)=0
MyGUI::RenderManager::destroyTexture
virtual void destroyTexture(ITexture *_texture)=0
MyGUI::RenderManager::getInstance
static RenderManager & getInstance()
MyGUI
Definition MyGUI_ActionController.h:15
MyGUI::uint8
uint8_t uint8
Definition MyGUI_Types.h:46
MyGUI::IntPoint
types::TPoint< int > IntPoint
Definition MyGUI_Types.h:27
MyGUI::IntCoord
types::TCoord< int > IntCoord
Definition MyGUI_Types.h:36
MyGUI::TextureUsage::Read
@ Read
Definition MyGUI_RenderFormat.h:105
MyGUI::types::TCoord::height
T height
Definition MyGUI_TCoord.h:23
MyGUI::types::TCoord::width
T width
Definition MyGUI_TCoord.h:22
MyGUI::types::TPoint::left
T left
Definition MyGUI_TPoint.h:19
MyGUI::types::TPoint::top
T top
Definition MyGUI_TPoint.h:20