MyGUI
3.2.1
Main Page
Related Pages
Namespaces
Data Structures
Files
Examples
File List
Globals
mygui
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 == 0)
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
Generated on Wed Aug 20 2014 00:03:33 for MyGUI by
1.8.3.1