1 |
using System; |
2 |
using System.Collections.Generic; |
3 |
using System.Text; |
4 |
using gr2lib.core.helpers; |
5 |
|
6 |
using gr2lib.core.interfaces; |
7 |
|
8 |
namespace gr2lib.core.coretypes.implementation |
9 |
{ |
10 |
public class Texture : ITexture |
11 |
{ |
12 |
private FilePath _FromFileName; |
13 |
private int _TextureType; |
14 |
private int _Width; |
15 |
private int _Height; |
16 |
private int _Encoding; |
17 |
private int _SubFormat; |
18 |
private Layout _Layout; |
19 |
private List<Image> _Images; |
20 |
|
21 |
|
22 |
|
23 |
|
24 |
public Texture() |
25 |
{ |
26 |
this.FromFileName = ""; |
27 |
this.TextureType = 0; |
28 |
this.Width = 0; |
29 |
this.Height = 0; |
30 |
this.Encoding = 0; |
31 |
this.SubFormat = 0; |
32 |
this.Layout = new Layout(); |
33 |
this.Images = new List<Image>(); |
34 |
this.ExtendedData = IntPtr.Zero; |
35 |
this.NativePointer = IntPtr.Zero; |
36 |
} |
37 |
|
38 |
internal static Texture ReadFromMemory(IntPtr pointer) |
39 |
{ |
40 |
if (pointer == IntPtr.Zero) return null; |
41 |
native.Texture native = Helpers.ReadFromMemory<native.Texture>(pointer); |
42 |
Texture managed = ReadFromNative(native); |
43 |
managed.NativePointer = pointer; |
44 |
return managed; |
45 |
} |
46 |
|
47 |
internal static Texture ReadFromNative(native.Texture native) |
48 |
{ |
49 |
Texture managed = new Texture(); |
50 |
managed.FromFileName = native.FromFileName; |
51 |
managed.TextureType = native.TextureType; |
52 |
managed.Width = native.Width; |
53 |
managed.Height = native.Height; |
54 |
managed.Encoding = native.Encoding; |
55 |
managed.SubFormat = native.SubFormat; |
56 |
managed.Layout = Layout.ReadFromNative(native.Layout); |
57 |
IntPtr[] images = Helpers.ReadPtrArrayFromMemory<native.Image>(native.Images); |
58 |
int length = images.Length; |
59 |
managed.Images = new List<Image>(length); |
60 |
foreach (IntPtr ptr in images) |
61 |
{ |
62 |
managed.Images.Add(new Image()); |
63 |
} |
64 |
for (int i = 0; i < length; i++) |
65 |
{ |
66 |
managed.Images[i] = Image.ReadFromMemory(images[i]); |
67 |
} |
68 |
managed.ExtendedData = native.ExtendedData; |
69 |
return managed; |
70 |
} |
71 |
|
72 |
#region ITexture Members |
73 |
public FilePath FromFileName { get { return _FromFileName; } set { _FromFileName = value; } } |
74 |
public int TextureType { get { return _TextureType; } set { _TextureType = value; } } |
75 |
public int Width { get { return _Width; } set { _Width = value; } } |
76 |
public int Height { get { return _Height; } set { _Height = value; } } |
77 |
public int Encoding { get { return _Encoding; } set { _Encoding = value; } } |
78 |
public int SubFormat { get { return _SubFormat; } set { _SubFormat = value; } } |
79 |
public Layout Layout { get { return _Layout; } set { _Layout = value; } } |
80 |
public List<Image> Images { get { return _Images; } set { _Images = value; } } |
81 |
#endregion |
82 |
|
83 |
#region INativePointer Members |
84 |
private IntPtr _NativePointer; |
85 |
public IntPtr NativePointer { get { return _NativePointer; } set { _NativePointer = value; } } |
86 |
#endregion |
87 |
|
88 |
#region IExtendedData Members |
89 |
private IntPtr _ExtendedData; |
90 |
public IntPtr ExtendedData { get { return _ExtendedData; } set { _ExtendedData = value; } } |
91 |
#endregion |
92 |
} |
93 |
} |