-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathD2PTextureDescriptor.m
More file actions
100 lines (76 loc) · 1.85 KB
/
D2PTextureDescriptor.m
File metadata and controls
100 lines (76 loc) · 1.85 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
92
93
94
95
96
97
98
99
//
// D2PTextureDescriptor.m
// D2Patch
//
// Created by Andrey on 23/02/2017.
//
#import "D2PTextureDescriptor.h"
@implementation D2PTextureDescriptor
@synthesize width = _width;
@synthesize height = _height;
@synthesize format = _format;
@synthesize type = _type;
@synthesize pixels = _pixels;
@synthesize textureHash = _textureHash;
- (instancetype) initWithData:(const GLvoid *)pixels
width:(GLsizei)width
height:(GLsizei)height
format:(GLenum)format
type:(GLenum)type
{
self = [super init];
if (self)
{
_width = width;
_height = height;
_format = format;
_type = type;
_pixels = pixels;
_textureHash = [[D2PTextureHash alloc] initWithData:pixels length:self.size];
}
return self;
}
- (BOOL) isEqual:(id)object
{
if ([object isMemberOfClass:[D2PTextureDescriptor class]])
{
D2PTextureDescriptor *otherDescriptor = (D2PTextureDescriptor *) object;
return _width == otherDescriptor->_width
&& _height == otherDescriptor->_height
&& _format == otherDescriptor->_format
&& _type == otherDescriptor->_type
&& _pixels == otherDescriptor->_pixels;
}
else
{
return NO;
}
}
- (NSUInteger) hash
{
return @(_width).hash
+ @(_height).hash
+ @(_format).hash
+ @(_type).hash
+ ((NSUInteger) _pixels);
}
- (NSUInteger) bytesPerPixel
{
switch (self.type)
{
case GL_UNSIGNED_SHORT_1_5_5_5_REV:
return 2;
default:
[NSException raise:@"Fatal error" format:@"Unknow texture size"];
return 0;
}
}
- (NSUInteger) area
{
return self.width * self.height;
}
- (NSUInteger) size
{
return self.area * self.bytesPerPixel;
}
@end