-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathImageManager.cpp
More file actions
91 lines (67 loc) · 1.99 KB
/
ImageManager.cpp
File metadata and controls
91 lines (67 loc) · 1.99 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
#include "ImageManager.h"
#include "Image.h"
void ImageManager::Init()
{
}
void ImageManager::Release()
{
map<string, Image*> ::iterator iter;
for (iter = mapImages.begin(); iter != mapImages.end(); iter++)
{
if (iter->second)
{
iter->second->Release();
delete iter->second;
iter->second = nullptr;
}
}
mapImages.clear();
ReleaseInstance();
}
Image* ImageManager::AddImage(string key, const wchar_t* filePath, int width, int height, bool isTransparent, COLORREF transColor)
{
Image* image = nullptr;
image = FindImage(key);
if (image) return image;
image = new Image();
if (FAILED(image->Init(filePath, width, height, isTransparent, transColor)))
{
image->Release();
delete image;
return nullptr;
}
mapImages.insert(make_pair(key, image)); // mapImages에 데이터 추가
return image;
}
Image* ImageManager::AddImage(string key, const wchar_t* filePath, int width, int height, int maxFrameX, int maxFrameY, bool isTransparent, COLORREF transColor)
{
Image* image = nullptr;
image = FindImage(key);
if (image) return image;
image = new Image();
if (FAILED(image->Init(filePath, width, height, maxFrameX, maxFrameY, isTransparent, transColor)))
{
image->Release();
delete image;
return nullptr;
}
mapImages.insert(make_pair(key, image)); // mapImages에 데이터 추가
return image;
}
void ImageManager::DeleteImage(string key)
{
map<string, Image*>::iterator iter;
iter = mapImages.find(key);
if (iter == mapImages.end()) return;
iter->second->Release();
delete(iter->second);
(iter->second) = nullptr; // iter : 페어의 주소 &pair // first는 key, second는 image
mapImages.erase(iter);
}
Image* ImageManager::FindImage(string key)
{
map<string, Image*>::iterator iter;
iter = mapImages.find(key);
if (iter == mapImages.end()) return nullptr;
return iter->second;
}