/// <summary> /// Writes the given <see cref="Quaternionf"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Quaternionf quaternion) { writer.Write(quaternion.A); writer.Write(quaternion.B); writer.Write(quaternion.C); writer.Write(quaternion.D); }
private long WriteDeveloper(Ibasa.IO.BinaryWriter writer) { if (DeveloperArea.Count == 0) { return(0); } long[] offsets = new long[DeveloperArea.Count]; for (int i = 0; i < DeveloperArea.Count; ++i) { offsets[i] = writer.BaseStream.Position; writer.Write(DeveloperArea[i].Value); } long developerOffset = writer.BaseStream.Position; writer.Write((ushort)DeveloperArea.Count); for (int i = 0; i < DeveloperArea.Count; ++i) { writer.Write((ushort)DeveloperArea[i].Key); writer.Write((uint)offsets[i]); writer.Write((uint)DeveloperArea[i].Value.Length); } return(developerOffset); }
/// <summary> /// Writes the given <see cref="Ellipsei"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Ellipsei ellipse) { writer.Write(ellipse.X); writer.Write(ellipse.Y); writer.Write(ellipse.Width); writer.Write(ellipse.Height); }
/// <summary> /// Writes the given <see cref="Rectangled"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Rectangled rectangle) { writer.Write(rectangle.X); writer.Write(rectangle.Y); writer.Write(rectangle.Width); writer.Write(rectangle.Height); }
private void WriteData24(Ibasa.IO.BinaryWriter writer, Resource resource, bool flip) { byte[] data = resource[0, 0]; for (int i = 0; i < data.Length; i += 3) { byte r, g, b; if (flip) { r = data[i + 0]; g = data[i + 1]; b = data[i + 2]; } else { b = data[i + 0]; g = data[i + 1]; r = data[i + 2]; } writer.Write(b); writer.Write(g); writer.Write(r); } }
/// <summary> /// Writes the given <see cref="Spherel"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Spherel sphere) { writer.Write(sphere.X); writer.Write(sphere.Y); writer.Write(sphere.Z); writer.Write(sphere.Radius); }
private void WriteHeader(Ibasa.IO.BinaryWriter writer) { int depth = 0; int type = 0; if (Image.Format is SharpIL.Formats.B8G8R8UNorm || Image.Format is SharpIL.Formats.R8G8B8UNorm) { depth = 24; type = 2; //uncompressed true color } if (Image.Format is SharpIL.Formats.B8G8R8A8UNorm || Image.Format is SharpIL.Formats.R8G8B8A8UNorm) { depth = 32; type = 2; //uncompressed true color } if (Image.Format is SharpIL.Formats.R8UNorm || Image.Format is SharpIL.Formats.A8UNorm) { depth = 8; type = 3; //uncompressed bw } writer.Write((byte)Header.ImageId.Length); writer.Write((byte)0); //no color map writer.Write((byte)type); writer.Write((ushort)0); //ColourMapOrigin writer.Write((ushort)0); //ColorMapLength writer.Write((byte)0); //ColorMapDepth writer.Write((ushort)0); //XOrigin writer.Write((ushort)0); //YOrigin writer.Write((ushort)ImageData.Size.Width); writer.Write((ushort)ImageData.Size.Height); writer.Write((byte)depth); writer.Write((byte)0); writer.Write(Header.ImageId); }
/// <summary> /// Writes the given <see cref="Planed"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Planed plane) { writer.Write(plane.Normal.X); writer.Write(plane.Normal.Y); writer.Write(plane.Normal.Z); writer.Write(plane.D); }
private void WriteFooter(Ibasa.IO.BinaryWriter writer) { long developerOffset = WriteDeveloper(writer); long extensionOffset = WriteExtension(writer); writer.Write((uint)extensionOffset); writer.Write((uint)developerOffset); writer.Write(System.Text.Encoding.ASCII.GetBytes("TRUEVISION-XFILE.\0")); }
/// <summary> /// Writes the given <see cref="Boxf"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Boxf box) { writer.Write(box.X); writer.Write(box.Y); writer.Write(box.Z); writer.Write(box.Width); writer.Write(box.Height); writer.Write(box.Depth); }
/// <summary> /// Writes the given <see cref="Polygon2i"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Polygon2i polygon) { var array = polygon.ToArray(); writer.Write(array.Length); foreach(var point in array) { writer.Write(point); } }
public void Save(Stream stream) { var writer = new Ibasa.IO.BinaryWriter(stream, System.Text.Encoding.ASCII); WriteHeader(writer); //WriteColorMap(writer); dont use color maps WriteData(writer, ImageData); WriteFooter(writer); }
/// <summary> /// Writes the given <see cref="Vector8l"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Vector8l vector) { writer.Write(vector.V0); writer.Write(vector.V1); writer.Write(vector.V2); writer.Write(vector.V3); writer.Write(vector.V4); writer.Write(vector.V5); writer.Write(vector.V6); writer.Write(vector.V7); }
public void Save(Stream stream) { var writer = new Ibasa.IO.BinaryWriter(stream, System.Text.Encoding.ASCII); writer.Write((int)new FourCC("DDS ")); writer.Write(124); SetInternalState(); WriteHeader(writer); WriteDx10Header(writer); WriteData(writer); }
private void WriteDx10Header(Ibasa.IO.BinaryWriter writer) { if (!IsDX10Mode) { return; } writer.Write((int)DxgiFormat); writer.Write((int)ResourceDimension); writer.Write((int)MiscFlags); writer.Write(ArraySize); writer.Write(new byte[4]); //write padding }
private void WriteData(Ibasa.IO.BinaryWriter writer, Resource resource) { if (Image.Format is SharpIL.Formats.B8G8R8UNorm) { WriteData24(writer, resource, false); } if (Image.Format is SharpIL.Formats.R8G8B8UNorm) { WriteData24(writer, resource, true); } if (Image.Format is SharpIL.Formats.B8G8R8A8UNorm) { WriteData32(writer, resource, false); } if (Image.Format is SharpIL.Formats.R8G8B8A8UNorm) { WriteData32(writer, resource, true); } if (Image.Format is SharpIL.Formats.R8UNorm || Image.Format is SharpIL.Formats.A8UNorm) { WriteData8(writer, resource); } }
private void WriteHeader(Ibasa.IO.BinaryWriter writer) { writer.Write((int)HeaderFlags); writer.Write(Height); writer.Write(Width); writer.Write(Pitch); writer.Write(Depth); writer.Write(MipmapCount); writer.Write(new byte[44]); //write padding writer.Write(32); writer.Write((int)PixelFlags); writer.Write((int)FourCC); writer.Write(RGBBitCount); writer.Write(RBitMask); writer.Write(GBitMask); writer.Write(BBitMask); writer.Write(ABitMask); writer.Write((int)SurfaceFlags); writer.Write((int)CubemapFlags); writer.Write(new byte[12]); //write padding }
private void WriteData(Ibasa.IO.BinaryWriter writer) { if (IsDX10Mode) { for (int arraySlice = 0; arraySlice < Image.ArraySize; ++arraySlice) { for (int mipSlice = 0; mipSlice < Image.MipLevels; ++mipSlice) { byte[] subresource = Image[mipSlice, arraySlice]; writer.Write(subresource); } } } else if (PixelFlags.HasFlag(PixelFlagsEnum.FourCC)) { for (int arraySlice = 0; arraySlice < Image.ArraySize; ++arraySlice) { for (int mipSlice = 0; mipSlice < Image.MipLevels; ++mipSlice) { byte[] subresource = Image[mipSlice, arraySlice]; writer.Write(subresource); } } } else { for (int arraySlice = 0; arraySlice < Image.ArraySize; ++arraySlice) { for (int mipSlice = 0; mipSlice < Image.MipLevels; ++mipSlice) { byte[] subresource = Image[mipSlice, arraySlice]; writer.Write(subresource); } } } }
/// <summary> /// Writes the given <see cref="Vector2sb"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Vector2sb vector) { writer.Write(vector.X); writer.Write(vector.Y); }
private void WriteData8(Ibasa.IO.BinaryWriter writer, Resource resource) { writer.Write(resource[0, 0]); }
public static void Write(this Ibasa.IO.BinaryWriter writer, Half half) { writer.Write(Half.HalfToInt16Bits(half)); }
/// <summary> /// Writes the given <see cref="Rayd"/> to a Ibasa.IO.BinaryWriter. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Rayd ray) { Point.Write(writer, ray.Position); Vector.Write(writer, ray.Direction); }
/// <summary> /// Writes the given <see cref="Linel"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Linel line) { writer.Write(line.Start); writer.Write(line.End); }
private long WriteExtension(Ibasa.IO.BinaryWriter writer) { if (Extension.AllDefault) { return(0); } long colorCorrectionOffset = 0; //write color correction if (Extension.ColorCorrection != null) { colorCorrectionOffset = writer.BaseStream.Position; for (int i = 0; i < 256; ++i) { writer.Write((ushort)Extension.ColorCorrection[i].W); writer.Write((ushort)Extension.ColorCorrection[i].X); writer.Write((ushort)Extension.ColorCorrection[i].Y); writer.Write((ushort)Extension.ColorCorrection[i].Z); } } long scanLineOffset = 0; //read scan lines if (Extension.ScanLines != null) { scanLineOffset = writer.BaseStream.Position; for (int i = 0; i < Extension.ScanLines.Length; ++i) { writer.Write((uint)Extension.ScanLines[i]); } } long postageStampOffset = 0; //read postage stamp if (Extension.PostageStamp != null) { postageStampOffset = writer.BaseStream.Position; writer.Write((byte)Extension.PostageStamp.Size.Width); writer.Write((byte)Extension.PostageStamp.Size.Height); WriteData(writer, Extension.PostageStamp); } long extensionOffset = writer.BaseStream.Position; writer.Write((ushort)495); //extension size writer.Write(Extension.AuthorName ?? new byte[41]); writer.Write(Extension.AuthorComments ?? new byte[324]); writer.Write((ushort)Extension.DateTimeStampMonth); writer.Write((ushort)Extension.DateTimeStampDay); writer.Write((ushort)Extension.DateTimeStampYear); writer.Write((ushort)Extension.DateTimeStampHour); writer.Write((ushort)Extension.DateTimeStampMinute); writer.Write((ushort)Extension.DateTimeStampSecond); writer.Write(Extension.JobId ?? new byte[41]); writer.Write((ushort)Extension.JobTimeHours); writer.Write((ushort)Extension.JobTimeMinutes); writer.Write((ushort)Extension.JobTimeSeconds); writer.Write(Extension.SoftwareId ?? new byte[41]); writer.Write((ushort)Extension.SoftwareVersionNumber); writer.Write((byte)Extension.SoftwareVersionLetter); writer.Write((uint)Extension.KeyColor); writer.Write((ushort)Extension.PixelAspectRatioN); writer.Write((ushort)Extension.PixelAspectRatioD); writer.Write((ushort)Extension.GammaValueN); writer.Write((ushort)Extension.GammaValueD); writer.Write((uint)colorCorrectionOffset); writer.Write((uint)postageStampOffset); writer.Write((uint)scanLineOffset); writer.Write((byte)Extension.Attributes); return(extensionOffset); }
/// <summary> /// Writes the given <see cref="Circlef"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Circlef circle) { writer.Write(circle.X); writer.Write(circle.Y); writer.Write(circle.Radius); }
/// <summary> /// Writes the given <see cref="Point2d"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Point2d point) { writer.Write(point.X); writer.Write(point.Y); }
/// <summary> /// Writes the given <see cref="Size2i"/> to an <see cref="Ibasa.IO.BinaryWriter">. /// </summary> public static void Write(this Ibasa.IO.BinaryWriter writer, Size2i size) { writer.Write(size.Width); writer.Write(size.Height); }