public void SaveLayer(PhotonLayer photonLayer) { this.packedLayerImage = photonLayer.PackLayerImage(); this.imageData = photonLayer.PackImageData(); this.dataSize = imageData.Length; islandRows = new List <BitArray>(); isLandsCount = photonLayer.SetIslands(islandRows); }
public static void CalculateLayers(PhotonFileHeader photonFileHeader, List <PhotonFileLayer> layers, int margin, Action <string> reportProgress) { var photonLayer = new PhotonLayer(photonFileHeader.GetResolutionX(), photonFileHeader.GetResolutionY()); List <BitArray> previousUnpackedImage = null; for (int i = 0; i < layers.Count; i++) { var layer = layers[i]; List <BitArray> unpackedImage = layer.UnpackImage(photonFileHeader.GetResolutionX(), photonFileHeader.GetResolutionY()); reportProgress?.Invoke("Calculating photon file layer " + i + "/" + photonFileHeader.GetNumberOfLayers()); if (margin > 0) { layer.extendsMargin = layer.CheckMargin(unpackedImage, margin); } layer.UnknownPixels(unpackedImage, photonLayer); layer.Calculate(unpackedImage, previousUnpackedImage, photonLayer); if (previousUnpackedImage != null) { previousUnpackedImage.Clear(); } previousUnpackedImage = unpackedImage; layer.packedLayerImage = photonLayer.PackLayerImage(); layer.isCalculated = true; if (photonFileHeader.GetVersion() > 1) { foreach (var aaFileLayer in layer.antiAliasLayers) { List <BitArray> aaUnpackedImage = aaFileLayer.UnpackImage(photonFileHeader.GetResolutionX(), photonFileHeader.GetResolutionY()); var aaPhotonLayer = new PhotonLayer(photonFileHeader.GetResolutionX(), photonFileHeader.GetResolutionY()); aaFileLayer.UnknownPixels(aaUnpackedImage, aaPhotonLayer); aaFileLayer.packedLayerImage = aaPhotonLayer.PackLayerImage(); aaFileLayer.isCalculated = false; } } } photonLayer.UnLink(); }
public static void CalculateLayers(PhotonFileHeader photonFileHeader, List <PhotonFileLayer> layers, int margin, int layerIndex) { var photonLayer = new PhotonLayer(photonFileHeader.GetResolutionX(), photonFileHeader.GetResolutionY()); List <BitArray> previousUnpackedImage = null; if (layerIndex > 0) { previousUnpackedImage = layers[layerIndex - 1].UnpackImage(photonFileHeader.GetResolutionX(), photonFileHeader.GetResolutionY()); } for (int i = 0; i < 2; i++) { PhotonFileLayer layer = layers[layerIndex + i]; List <BitArray> unpackedImage = layer.UnpackImage(photonFileHeader.GetResolutionX(), photonFileHeader.GetResolutionY()); if (margin > 0) { layer.extendsMargin = layer.CheckMargin(unpackedImage, margin); } layer.UnknownPixels(unpackedImage, photonLayer); layer.Calculate(unpackedImage, previousUnpackedImage, photonLayer); if (previousUnpackedImage != null) { previousUnpackedImage.Clear(); } previousUnpackedImage = unpackedImage; layer.packedLayerImage = photonLayer.PackLayerImage(); layer.isCalculated = true; i++; } photonLayer.UnLink(); }