Skip to content

Commit

Permalink
Merge remote-tracking branch 'refs/remotes/Exter-N/feature/texture-st…
Browse files Browse the repository at this point in the history
…uff'

# Conflicts:
#	Penumbra/UI/AdvancedWindow/ModEditWindow.Textures.cs
  • Loading branch information
Ottermandias committed Aug 25, 2023
2 parents 87c5164 + 781bbb3 commit 4f71065
Show file tree
Hide file tree
Showing 2 changed files with 28 additions and 23 deletions.
8 changes: 3 additions & 5 deletions Penumbra/Import/Textures/CombinedTexture.Manipulation.cs
Original file line number Diff line number Diff line change
Expand Up @@ -15,12 +15,12 @@ public partial class CombinedTexture
{
private enum CombineOp
{
LeftMultiply = -4,
LeftCopy = -3,
RightCopy = -2,
Invalid = -1,
Over = 0,
Under = 1,
LeftMultiply = 2,
RightMultiply = 3,
CopyChannels = 4,
}
Expand All @@ -47,17 +47,15 @@ private enum Channels
{
"Overlay over Input",
"Input over Overlay",
"Ignore Overlay",
"Replace Input",
"Copy Channels",
};

private static readonly IReadOnlyList<string> CombineOpTooltips = new string[]
{
"Standard composition.\nApply the overlay over the input.",
"Standard composition, reversed.\nApply the input over the overlay.",
"Use only the input, and ignore the overlay.",
"Completely replace the input with the overlay.",
"Standard composition, reversed.\nApply the input over the overlay ; can be used to fix some wrong imports.",
"Completely replace the input with the overlay.\nCan be used to select the destination file as input and the source file as overlay.",
"Replace some input channels with those from the overlay.\nUseful for Multi maps.",
};

Expand Down
43 changes: 25 additions & 18 deletions Penumbra/UI/AdvancedWindow/ModEditWindow.Textures.cs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@
using System.Linq;
using System.Numerics;
using System.Threading.Tasks;
using Dalamud.Interface;
using ImGuiNET;
using OtterGui;
using OtterGui.Raii;
Expand Down Expand Up @@ -127,23 +126,14 @@ private void DrawOutputChild(Vector2 size, Vector2 imageSize)
}

ImGui.SameLine();
if (ImGui.Button("Save as TEX, DDS or PNG", buttonSize2))
{
var fileName = Path.GetFileNameWithoutExtension(_left.Path.Length > 0 ? _left.Path : _right.Path);
_fileDialog.OpenSavePicker("Save Texture as TEX, DDS or PNG...", "Textures{.png,.dds,.tex},.tex,.dds,.png", fileName, ".tex",
(a, b) =>
{
if (a)
{
_center.SaveAs(null, _textures, b, (CombinedTexture.TextureSaveType)_currentSaveAs, _addMipMaps);
if (b == _left.Path)
AddReloadTask(_left.Path, false);
else if (b == _right.Path)
AddReloadTask(_right.Path, true);
}
}, _mod!.ModPath.FullName, _forceTextureStartPath);
_forceTextureStartPath = false;
}
if (ImGui.Button("Save as TEX", buttonSize2))
OpenSaveAsDialog(".tex");

if (ImGui.Button("Export as PNG", buttonSize2))
OpenSaveAsDialog(".png");
ImGui.SameLine();
if (ImGui.Button("Export as DDS", buttonSize2))
OpenSaveAsDialog(".dds");

ImGui.NewLine();

Expand Down Expand Up @@ -206,6 +196,23 @@ private void DrawOutputChild(Vector2 size, Vector2 imageSize)
_center.Draw(_textures, imageSize);
}

private void OpenSaveAsDialog(string defaultExtension)
{
var fileName = Path.GetFileNameWithoutExtension(_left.Path.Length > 0 ? _left.Path : _right.Path);
_fileDialog.OpenSavePicker("Save Texture as TEX, DDS or PNG...", "Textures{.png,.dds,.tex},.tex,.dds,.png", fileName, defaultExtension, (a, b) =>
{
if (a)
{
_center.SaveAs(null, _textures, b, (CombinedTexture.TextureSaveType)_currentSaveAs, _addMipMaps);
if (b == _left.Path)
AddReloadTask(_left.Path, false);
else if (b == _right.Path)
AddReloadTask(_right.Path, true);
}
}, _mod!.ModPath.FullName, _forceTextureStartPath);
_forceTextureStartPath = false;
}

private void AddReloadTask(string path, bool right)
{
_center.SaveTask.ContinueWith(t =>
Expand Down

0 comments on commit 4f71065

Please sign in to comment.