MyGUI
3.4.1
Main Page
Related Pages
Namespaces
Data Structures
Files
Examples
File List
Globals
MyGUIEngine
src
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
13
namespace
MyGUI
14
{
15
16
MaskPickInfo::MaskPickInfo
() :
17
mWidth(0),
18
mHeight(0)
19
{
20
}
21
22
bool
MaskPickInfo::load
(
const
std::string& _file)
23
{
24
if
(!
DataManager::getInstance
().isDataExist(_file))
25
return
false
;
26
27
RenderManager
& render =
RenderManager::getInstance
();
28
ITexture
* texture = render.
createTexture
(_file);
29
texture->
loadFromFile
(_file);
30
31
uint8
* buffer = (
uint8
*)texture->
lock
(
TextureUsage::Read
);
32
if
(buffer ==
nullptr
)
33
{
34
render.
destroyTexture
(texture);
35
return
false
;
36
}
37
38
size_t
pixel_size = texture->
getNumElemBytes
();
39
40
mWidth = texture->
getWidth
();
41
mHeight = texture->
getHeight
();
42
size_t
size = mWidth * mHeight;
43
mData.resize(size);
44
45
size_t
pos = 0;
46
for
(
size_t
pos_pix = 0; pos_pix < size; pos_pix++)
47
{
48
bool
white =
true
;
49
for
(
size_t
in_pix = 0; in_pix < pixel_size; in_pix++)
50
{
51
if
(0xFF != buffer[pos])
52
{
53
white =
false
;
54
}
55
pos++;
56
}
57
58
mData[pos_pix] = white;
59
}
60
61
texture->
unlock
();
62
render.
destroyTexture
(texture);
63
64
return
true
;
65
}
66
67
bool
MaskPickInfo::pick
(
const
IntPoint
& _point,
const
IntCoord
& _coord)
const
68
{
69
if
((0 == _coord.
width
) || (0 == _coord.
height
))
return
false
;
70
71
int
x = ((_point.
left
* mWidth) - 1) / _coord.
width
;
72
int
y = ((_point.
top
* mHeight) - 1) / _coord.
height
;
73
74
return
0 != mData[(size_t)(y * mWidth + x)];
75
}
76
77
bool
MaskPickInfo::empty
()
const
78
{
79
return
mData.empty();
80
}
81
82
}
// 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:77
MyGUI::MaskPickInfo::load
bool load(const std::string &_file)
Definition:
MyGUI_MaskPickInfo.cpp:22
MyGUI::MaskPickInfo::pick
bool pick(const IntPoint &_point, const IntCoord &_coord) const
Definition:
MyGUI_MaskPickInfo.cpp:67
MyGUI::MaskPickInfo::MaskPickInfo
MaskPickInfo()
Definition:
MyGUI_MaskPickInfo.cpp:16
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:45
MyGUI::TextureUsage::Read
@ Read
Definition:
MyGUI_RenderFormat.h:110
MyGUI::types::TCoord< int >
MyGUI::types::TCoord::height
T height
Definition:
MyGUI_TCoord.h:25
MyGUI::types::TCoord::width
T width
Definition:
MyGUI_TCoord.h:24
MyGUI::types::TPoint< int >
MyGUI::types::TPoint::left
T left
Definition:
MyGUI_TPoint.h:20
MyGUI::types::TPoint::top
T top
Definition:
MyGUI_TPoint.h:21
Generated by
1.9.4