public static void HandleTextLayer( ref List <PSDLayerData> dataLayers, ref PsdLayerExtractor extractor, ref FileStream psdFileStream, PsdLayerExtractor.Layer layer, string prePath, PsdLayerCommandParser.ControlParser pa) { // track the dims and imported asset filepath var layerData = new PSDLayerData(); layerData.type = 1; layerData.dimensions = new Vector4(pa.area.left, pa.area.top, pa.area.width, pa.area.height); layerData.text = layer.text; layerData.name = layer.name; //the data to the referenced list dataLayers.Add(layerData); }
public static void HandleImageLayer( ref List <PSDLayerData> dataLayers, ref PsdLayerExtractor extractor, ref FileStream psdFileStream, PsdLayerExtractor.Layer layer, string prePath, PsdLayerCommandParser.ControlParser pa) { var fileName = pa.fullName; //exit if file name is bad if (extractor.HasUnacceptibleChar(fileName)) { Debug.LogError(fileName + " Contains wrong character '\\ / : * ? \" < > |' not allowed"); return; } //read the image from the file stream var filePath = prePath + "/" + fileName + ".png"; PsdLayerExtractor.ImageFilePath newImageFilePath = null; { try { psdFileStream.Position = 0; var br = new BinaryReader(psdFileStream); { layer.LoadData(br, extractor.Psd.headerInfo.bpp); newImageFilePath = new PsdLayerExtractor.ImageFilePath(filePath, "pass"); } } catch (System.Exception e) { Debug.LogError(e.Message); } } //merge channels and check if successful var data = layer.psdLayer.mergeChannels(); if (data == null) { return; } //create the texture Texture tex = null; if (pa.sliceArea != null) { tex = extractor.MakeSlicedSprites(ref data, layer, pa.sliceArea); } else { tex = extractor.MakeTexture(ref data, layer); } if (tex != null) { if (!System.IO.Directory.Exists(prePath)) { System.IO.Directory.CreateDirectory(prePath); } //import the texture to the asset database System.IO.File.WriteAllBytes(filePath, data); AssetDatabase.Refresh(); TextureImporter importer = AssetImporter.GetAtPath(filePath) as TextureImporter; ProcessTexture2D(importer, ResolutionOptions.NEXT_SMALLEST, true, false, Platform.iPhone_Android); // track the dims and imported asset filepath var layerData = new PSDLayerData(); layerData.type = 0; layerData.dimensions = new Vector4(pa.area.left, pa.area.top, pa.area.width, pa.area.height); layerData.texture_path = filePath; layerData.name = layer.name; //the data to the referenced list dataLayers.Add(layerData); //destroy the temp texture Texture2D.DestroyImmediate(tex); } }