/// <summary> /// Swaps two slices of a texture array. /// </summary> /// <param name="image">The image.</param> /// <param name="firstIndex">The index of the first sub-image.</param> /// <param name="secondIndex">The index of the second sub-image</param> public void Swap(TexImage image, int firstIndex, int secondIndex) { var request = new SwappingRequest(firstIndex, secondIndex); ExecuteRequest(image, request); }
/// <summary> /// Swaps two sub-images. /// </summary> /// <param name="image">The image.</param> /// <param name="libraryData">The library data.</param> /// <param name="swap">The swap request.</param> private void Swap(TexImage image, FreeImageTextureLibraryData libraryData, SwappingRequest swap) { Log.Info("Swapping image : sub-image " + swap.FirstSubImageIndex + " and " + swap.SecondSubImageIndex + " ..."); if (swap.FirstSubImageIndex >= 0 && swap.FirstSubImageIndex < libraryData.Bitmaps.Length && swap.SecondSubImageIndex >= 0 && swap.SecondSubImageIndex < libraryData.Bitmaps.Length) { // copy first image var firstImage = FreeImage.Copy(libraryData.Bitmaps[swap.FirstSubImageIndex], 0, 0, image.Width, image.Height); FreeImage.Paste(libraryData.Bitmaps[swap.FirstSubImageIndex], libraryData.Bitmaps[swap.SecondSubImageIndex], 0, 0, 256); FreeImage.Paste(libraryData.Bitmaps[swap.SecondSubImageIndex], firstImage, 0, 0, 256); // TODO: free firstImage? } else { Log.Warning("Cannot swap the sub-images " + swap.FirstSubImageIndex + " and " + swap.SecondSubImageIndex + " because there is only " + libraryData.Bitmaps.Length + " sub-images."); } // TODO: texture atlas update? }