/[gr2lib]/trunk/gr2lib/core/coretypes/implementation/Texture.cs
ViewVC logotype

Contents of /trunk/gr2lib/core/coretypes/implementation/Texture.cs

Parent Directory Parent Directory | Revision Log Revision Log


Revision 183 - (show annotations) (download)
Fri Jul 23 21:08:46 2010 UTC (9 years, 4 months ago) by william
File size: 10616 byte(s)
Remove:
TextureTypeFormat
EncodingFormat

These have been deprecated

1 using System;
2 using System.Collections.Generic;
3 using System.Text;
4 using gr2lib.core.helpers;
5
6 using gr2lib.core.interfaces;
7 using System.Diagnostics;
8 using gr2lib.core.exceptions;
9 using gr2lib.core.ui.helpers;
10 using System.ComponentModel;
11 using gr2lib.core.typedefs;
12 using gr2lib.core.ui.typeeditors;
13 using System.Drawing.Design;
14
15 namespace gr2lib.core.coretypes.implementation
16 {
17 public class Texture : ITexture
18 {
19 private GrannyRigResource _rigResource;
20
21 private FilePath _FromFileName;
22 private NameValuePair<string, granny_texture_type> _TextureType;
23 private int _Width;
24 private int _Height;
25 private NameValuePair<string, granny_texture_encoding> _Encoding;
26 private NameValuePair<string, granny_pixel_layout> _SubFormat;
27 private Layout _Layout;
28 private List<Image> _Images;
29
30
31 public override string ToString()
32 {
33 return this.FromFileName.Name;
34 }
35
36 //private string _ParentResourceName;
37 protected internal string ParentResourceName { get { return "Textures"; } }
38
39 public Texture()// : base("Textures")
40 {
41 this.FromFileName = "";
42 this.TextureType = new NameValuePair<string, granny_texture_type>(coreapi.GetGrannyEnumTypeString<granny_texture_type>(granny_texture_type.GrannyColorMapTextureType), granny_texture_type.GrannyColorMapTextureType);
43 this.Width = 0;
44 this.Height = 0;
45 this.Encoding = new NameValuePair<string, granny_texture_encoding>(coreapi.GetGrannyEnumTypeString<granny_texture_encoding>(granny_texture_encoding.GrannyBinkTextureEncoding), granny_texture_encoding.GrannyBinkTextureEncoding);
46 this.SubFormat = new NameValuePair<string, granny_pixel_layout>(coreapi.GetGrannyEnumTypeString<granny_pixel_layout>(granny_pixel_layout.GrannyBGRA8888PixelFormat), granny_pixel_layout.GrannyBGRA8888PixelFormat);
47 this.Layout = new Layout();
48 this.Images = new List<Image>();
49 //this.ExtendedData = new IntPtr();
50 //this.NativePointer = IntPtr.Zero;
51 this._rigResource = new GrannyRigResource();
52 }
53 public Texture(int index)
54 {
55 this.FromFileName = "";
56 this.TextureType = new NameValuePair<string, granny_texture_type>(coreapi.GetGrannyEnumTypeString<granny_texture_type>(granny_texture_type.GrannyColorMapTextureType), granny_texture_type.GrannyColorMapTextureType);
57 this.Width = 0;
58 this.Height = 0;
59 this.Encoding = new NameValuePair<string, granny_texture_encoding>(coreapi.GetGrannyEnumTypeString<granny_texture_encoding>(granny_texture_encoding.GrannyBinkTextureEncoding), granny_texture_encoding.GrannyBinkTextureEncoding);
60 this.SubFormat = new NameValuePair<string, granny_pixel_layout>(coreapi.GetGrannyEnumTypeString<granny_pixel_layout>(granny_pixel_layout.GrannyBGRA8888PixelFormat), granny_pixel_layout.GrannyBGRA8888PixelFormat);
61 this.Layout = new Layout();
62 this.Images = new List<Image>();
63 //this.ExtendedData = new IntPtr();
64 //this.NativePointer = IntPtr.Zero;
65 this._rigResource = new GrannyRigResource();
66 this.Index = index;
67 }
68
69 internal static native.Texture AssignToStructure(Texture texture)
70 {
71 native.Texture _texture_struct = new gr2lib.core.coretypes.native.Texture();
72
73 //_texture_struct.Encoding = texture.Encoding;
74 //_texture_struct.ExtendedData = texture.ExtendedData;
75 //_texture_struct.FromFileName = texture.FromFileName.FullPath;
76 //_texture_struct.Height = texture.Height;
77 ////_texture_struct.Images = texture.Images;
78 //_texture_struct.Layout = Layout.AssignToStructure(texture.Layout);
79 //_texture_struct.SubFormat = texture.SubFormat;
80 //_texture_struct.TextureType = texture.TextureType;
81 //_texture_struct.Width = texture.Width;
82
83 return _texture_struct;
84 }
85
86 internal static Texture ReadFromMemory(IntPtr pointer)
87 {
88 try
89 {
90 if (pointer == IntPtr.Zero) return null;
91 native.Texture native = Helpers.ReadFromMemory<native.Texture>(pointer);
92 Texture managed = ReadFromNative(native);
93 managed.NativePointer = pointer;
94 return managed;
95 }
96 catch (Exception ex)
97 {
98 StackTrace st = new StackTrace(true);
99 #if ENABLE_EXCEPTION_OUTPUT_TO_CONSOLE
100 Granny2ExceptionWriter.WriteToConsole(ex,st);
101 #endif
102 return default(Texture);
103 }
104 }
105
106 internal static Texture ReadFromNative(native.Texture native)
107 {
108 try
109 {
110 Texture managed = new Texture();
111 managed.FromFileName = native.FromFileName;
112 managed.TextureType = new NameValuePair<string, granny_texture_type>(coreapi.GetGrannyEnumTypeString<granny_texture_type>((granny_texture_type)native.TextureType), (granny_texture_type)native.TextureType);
113 managed.Width = native.Width;
114 managed.Height = native.Height;
115 managed.Encoding = new NameValuePair<string, granny_texture_encoding>(coreapi.GetGrannyEnumTypeString<granny_texture_encoding>((granny_texture_encoding)native.Encoding), (granny_texture_encoding)native.Encoding);
116 managed.SubFormat = new NameValuePair<string, granny_pixel_layout>(coreapi.GetGrannyEnumTypeString<granny_pixel_layout>((granny_pixel_layout)native.SubFormat), (granny_pixel_layout)native.SubFormat);
117 managed.Layout = Layout.ReadFromNative(native.Layout);
118 IntPtr[] images = Helpers.ReadPtrArrayFromMemory<native.Image>(native.Images);
119 int length = images.Length;
120 managed.Images = new List<Image>(length);
121 foreach (IntPtr ptr in images)
122 {
123 Image _tmp = new Image();
124 _tmp.NativePointer = ptr;
125 managed.Images.Add(_tmp);
126 }
127 for (int i = 0; i < length; i++)
128 {
129 managed.Images[i] = Image.ReadFromMemory(images[i]);
130 }
131
132 for (int i = 0; i < managed.Images.Count; i++)
133 {
134 for (int j = 0; j < managed.Images[i].MIPLevels.Count; j++)
135 {
136 for (int k = 0; k < managed.Images[i].MIPLevels[j].Pixels.Count; k++)
137 {
138 managed.Images[i].MIPLevels[j].Pixels[k].ReferenceTexture = managed;
139 }
140 }
141 }
142
143
144 managed.ExtendedData = native.ExtendedData;
145 return managed;
146 }
147 catch (Exception ex)
148 {
149 StackTrace st = new StackTrace(true);
150 #if ENABLE_EXCEPTION_OUTPUT_TO_CONSOLE
151 Granny2ExceptionWriter.WriteToConsole(ex,st);
152 #endif
153 return default(Texture);
154 }
155 }
156
157 #region ITexture Members
158 [RefreshPropertiesAttribute(RefreshProperties.All)]
159 public FilePath FromFileName { get { return _FromFileName; } set { _FromFileName = value; } }
160 [RefreshPropertiesAttribute(RefreshProperties.All)]
161 [Editor(typeof(UIComboValueSelector<granny_texture_type, int>), typeof(UITypeEditor))]
162 public NameValuePair<string, granny_texture_type> TextureType { get { return _TextureType; } set { _TextureType = value; } }
163 [RefreshPropertiesAttribute(RefreshProperties.All)]
164 public int Width { get { return _Width; } set { _Width = value; } }
165 [RefreshPropertiesAttribute(RefreshProperties.All)]
166 public int Height { get { return _Height; } set { _Height = value; } }
167 [RefreshPropertiesAttribute(RefreshProperties.All)]
168 [Editor(typeof(UIComboValueSelector<granny_texture_encoding, int>), typeof(UITypeEditor))]
169 public NameValuePair<string, granny_texture_encoding> Encoding { get { return _Encoding; } set { _Encoding = value; } }
170 [RefreshPropertiesAttribute(RefreshProperties.All)]
171 [Editor(typeof(UIComboValueSelector<granny_pixel_layout, int>), typeof(UITypeEditor))]
172 public NameValuePair<string, granny_pixel_layout> SubFormat { get { return _SubFormat; } set { _SubFormat = value; } }
173 [RefreshPropertiesAttribute(RefreshProperties.All)]
174 [Browsable(true)]
175 public Layout Layout { get { return _Layout; } set { _Layout = value; } }
176 [RefreshPropertiesAttribute(RefreshProperties.All)]
177 public List<Image> Images { get { return _Images; } set { _Images = value; } }
178 #endregion
179
180 #region INativePointer Members
181 private IntPtr _NativePointer;
182 /// <summary>
183 /// When used in a derived class, gets the native pointer for this instance
184 /// </summary>
185 public IntPtr NativePointer { get { return _NativePointer; } set { _NativePointer = value; } }
186 #endregion
187
188 #region IExtendedData Members
189 private IntPtr _ExtendedData;
190 /// <summary>
191 /// When used in a derived class, gets the ExtendedData pointer for this instance
192 /// </summary>
193 public IntPtr ExtendedData { get { return _ExtendedData; } set { _ExtendedData = value; } }
194 #endregion
195
196 #region IResource Members
197 private int _index;
198 [RefreshPropertiesAttribute(RefreshProperties.All)]
199 internal int Index { get { return _index; } set { _index = value; } }
200 #endregion
201 #region IEmbeddedResource Members
202 [RefreshPropertiesAttribute(RefreshProperties.All)]
203 internal string IndexName { get { return new GrannyRigResource("Texture", this.Index, this.Name).ResourceBlockIndexFormat; } }
204 [RefreshPropertiesAttribute(RefreshProperties.All)]
205 internal string FullName { get { return new GrannyRigResource("Texture", this.Index, this.Name).ResourceBlockFormat; } }
206 [RefreshPropertiesAttribute(RefreshProperties.All)]
207 internal string Name { get { return this.FromFileName; } set { this.FromFileName = value; } }
208 #endregion
209 }
210 }

  ViewVC Help
Powered by ViewVC 1.1.22