public void Compile() { ParsedPath stringsFileName = Target.InputFiles.Where(f => f.Extension == ".strings").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); ParsedPath csFileName = Target.OutputFiles.Where(f => f.Extension == ".cs").First(); string className; Target.Properties.GetOptionalValue("ClassName", out className, stringsFileName.File + "Strings"); StringsContent stringsData = CreateStringsData(className, StringsFileReaderV1.ReadFile(stringsFileName)); string[] strings = stringsData.Strings.Select(s => s.Value).ToArray(); if (!Directory.Exists(xnbFileName.VolumeAndDirectory)) { Directory.CreateDirectory(xnbFileName.VolumeAndDirectory); } XnbFileWriterV5.WriteFile(strings, xnbFileName); if (!Directory.Exists(csFileName.VolumeAndDirectory)) { Directory.CreateDirectory(csFileName.VolumeAndDirectory); } using (TextWriter writer = new StreamWriter(csFileName)) { WriteCsOutput(writer, stringsData); } }
public override void Initialize(XnbFileWriterV5 xnbWriter) { if (elementTypeWriter == null) { elementTypeWriter = xnbWriter.GetTypeWriter(typeof(T)); } base.Initialize(xnbWriter); }
public void Compile() { IEnumerable <ParsedPath> svgPaths = Target.InputFiles.Where(f => f.Extension == ".svg"); ParsedPath pdfPath = Target.OutputFiles.Where(f => f.Extension == ".pdf").First(); ParsedPath xnbPath = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); // TODO: Ensure that pdf and xnb have the same root directories (and volumes) int numRows; int numCols; this.Target.Properties.GetOptionalValue("Rows", out numRows, 1); this.Target.Properties.GetOptionalValue("Columns", out numCols, 1); ParsedPath nUpSvgPath = null; try { if (svgPaths.Count() > 1) { nUpSvgPath = pdfPath.WithFileAndExtension( String.Format("{0}_{1}x{2}.svg", pdfPath.File, numRows, numCols)); CreateNupSvg(svgPaths, nUpSvgPath, numRows, numCols); } if (!Directory.Exists(pdfPath.VolumeAndDirectory)) { Directory.CreateDirectory(pdfPath.VolumeAndDirectory); } ImageTools.SvgToPdfWithInkscape(nUpSvgPath == null ? svgPaths.First() : nUpSvgPath, pdfPath); } finally { if (nUpSvgPath != null) { File.Delete(nUpSvgPath); } } List <string> pdfInfo = new List <string>(); pdfInfo.Add(this.Target.Properties.GetRequiredValue("Pinboard")); pdfInfo.Add(this.Target.Properties.GetRequiredValue("Rectangle")); pdfInfo.Add(numRows.ToString()); pdfInfo.Add(numCols.ToString()); if (!Directory.Exists(xnbPath.VolumeAndDirectory)) { Directory.CreateDirectory(xnbPath.VolumeAndDirectory); } XnbFileWriterV5.WriteFile(pdfInfo, xnbPath); }
public void Compile() { ParsedPath pngFileName = Target.InputFiles.Where(f => f.Extension == ".png").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); string compressionType; Texture2DContent textureContent; Target.Properties.GetOptionalValue("CompressionType", out compressionType, "None"); ImageTools.CompressPngToTexture2DContent(pngFileName, compressionType, out textureContent); XnbFileWriterV5.WriteFile(textureContent, xnbFileName); }
public virtual void Initialize(XnbFileWriterV5 xnbWriter) { Type writerType = this.GetType(); if (genericArgumentWriters == null && writerType.IsGenericType) { genericArgumentWriters = new List <ContentTypeWriter>(); foreach (Type type in writerType.GetGenericArguments()) { genericArgumentWriters.Add(xnbWriter.GetTypeWriter(type)); } } }
public void Compile() { ParsedPath wavFileName = Target.InputFiles.Where(f => f.Extension == ".wav").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); WavFile wavFile = WavFileReader.ReadFile(wavFileName); AudioContent ac = new AudioContent(wavFile); if (!Directory.Exists(xnbFileName.VolumeAndDirectory)) { Directory.CreateDirectory(xnbFileName.VolumeAndDirectory); } XnbFileWriterV5.WriteFile(ac, xnbFileName); }
public void Compile() { ParsedPath spriteFontFileName = Target.InputFiles.Where(f => f.Extension == ".spritefont").First(); ParsedPath stringsFileName = Target.InputFiles.Where(f => f.Extension == ".strings").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); SpriteFontFile sff = SpriteFontFileReader.ReadFile(spriteFontFileName); StringsFileV1 sf = StringsFileReaderV1.ReadFile(stringsFileName); HashSet <char> hs = new HashSet <char>(); foreach (var item in sf.Strings) { for (int i = 0; i < item.Value.Length; i++) { hs.Add(item.Value[i]); } } foreach (var region in sff.CharacterRegions) { for (char c = region.Start; c <= region.End; c++) { hs.Add(c); } } List <char> fontChars = hs.OrderBy(c => c).ToList(); FontSlant fontSlant = (sff.Style == SpriteFontFile.FontStyle.Italic ? FontSlant.Italic : FontSlant.Normal); FontWeight fontWeight = (sff.Style == SpriteFontFile.FontStyle.Bold ? FontWeight.Bold : FontWeight.Normal); ParsedPath pngFile = xnbFileName.WithExtension(".png"); SpriteFontContent sfc = CreateSpriteFontContent( sff.FontName, sff.Size, fontSlant, fontWeight, sff.Spacing, sff.DefaultCharacter, fontChars, pngFile); if (!Directory.Exists(xnbFileName.VolumeAndDirectory)) { Directory.CreateDirectory(xnbFileName.VolumeAndDirectory); } XnbFileWriterV5.WriteFile(sfc, xnbFileName); }
public void Compile() { ParsedPath pinboardFileName = Target.InputFiles.Where(f => f.Extension == ".pinboard").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); PinboardFileV1 pinboard = PinboardFileCache.Load(pinboardFileName); Rectangle[] rectangles = new Rectangle[pinboard.RectInfos.Count + 1]; rectangles[0] = new Rectangle(pinboard.ScreenRectInfo.X, pinboard.ScreenRectInfo.Y, pinboard.ScreenRectInfo.Width, pinboard.ScreenRectInfo.Height); for (int i = 0; i < pinboard.RectInfos.Count; i++) { rectangles[i + 1] = new Rectangle(pinboard.RectInfos[i].X, pinboard.RectInfos[i].Y, pinboard.RectInfos[i].Width, pinboard.RectInfos[i].Height); } if (!Directory.Exists(xnbFileName.VolumeAndDirectory)) { Directory.CreateDirectory(xnbFileName.VolumeAndDirectory); } XnbFileWriterV5.WriteFile(rectangles, xnbFileName); }
public void Compile() { IEnumerable <ParsedPath> svgFileNames = Target.InputFiles.Where(f => f.Extension == ".svg"); ParsedPath pinboardFileName = Target.InputFiles.Where(f => f.Extension == ".pinboard").First(); ParsedPath xnbFileName = Target.OutputFiles.Where(f => f.Extension == ".xnb").First(); PinboardFileV1 pinboardFile = PinboardFileCache.Load(pinboardFileName); List <ImagePlacement> placements = new List <ImagePlacement>(); string rectangleName = this.Target.Properties.GetRequiredValue("Rectangle"); PinboardFileV1.RectangleInfo rectInfo = pinboardFile.GetRectangleInfoByName(rectangleName); if (rectInfo == null) { throw new ContentFileException("Rectangle {0} not found in pinboard file {1}".CultureFormat(rectangleName, pinboardFileName)); } string converterName = Target.Properties.GetOptionalValue("Converter", "Inkscape").ToLower(); if (converterName != "inkscape" && converterName != "rsvg") { throw new ContentFileException("Unknown SVG converter '{0}'".CultureFormat(converterName)); } ParsedPath combinedPngPathName = xnbFileName.WithExtension(".png"); try { int row = 0; foreach (var svgFileName in svgFileNames) { int col = 0; if (rectInfo == null) { throw new InvalidOperationException( "Rectangle '{0}' not found in pinboard '{1}'".CultureFormat(rectangleName, pinboardFileName)); } // TODO-johnls: This should probably go in an intermediate file directory ParsedPath pngFile = xnbFileName.WithFileAndExtension(String.Format("{0}_{1}_{2}.png", svgFileName.File, row, col)); placements.Add(new ImagePlacement(pngFile, new Rectangle(col * rectInfo.Width, row * rectInfo.Height, rectInfo.Width, rectInfo.Height))); switch (converterName) { default: case "rsvg": ImageTools.SvgToPngWithRSvg(svgFileName, pngFile, rectInfo.Width, rectInfo.Height); break; case "inkscape": ImageTools.SvgToPngWithInkscape(svgFileName, pngFile, rectInfo.Width, rectInfo.Height); break; } } ImageTools.CombinePngs(placements, combinedPngPathName); Texture2DContent textureContent; ImageTools.CompressPngToTexture2DContent( combinedPngPathName, this.Target.Properties.GetOptionalValue("CompressionType", "None"), out textureContent); XnbFileWriterV5.WriteFile(textureContent, xnbFileName); } finally { foreach (var placement in placements) { if (File.Exists(placement.ImageFile)) { File.Delete(placement.ImageFile); } } if (File.Exists(combinedPngPathName)) { File.Delete(combinedPngPathName); } } }