diff --git a/BeefTools/ImgCreate/ImgCreate.cpp b/BeefTools/ImgCreate/ImgCreate.cpp index 2efe6dc3..7890ca01 100644 --- a/BeefTools/ImgCreate/ImgCreate.cpp +++ b/BeefTools/ImgCreate/ImgCreate.cpp @@ -2,6 +2,7 @@ #include "BeefySysLib/util/Array.h" #include "BeefySysLib/img/PSDReader.h" #include "BeefySysLib/img/PNGData.h" +#include USING_NS_BF; @@ -134,62 +135,82 @@ int main() fileName = "UI_4.psd"; if (!FileExists(fileName)) - continue; + { + if (!isThemeDir) + continue; + + fileName.RemoveFromEnd(3); + fileName += "png"; + if (!FileExists(fileName)) + continue; + } } - - if (!reader.Init(fileName)) - { - if (size == 0) - { - printf("Failed to open %s - incorrect working directory?", fileName.c_str()); - return 1; - } - - imageData = NULL; - continue; - } - - if ((size == 0) && (pass == 0)) - { - baseWidth = reader.mWidth; - baseHeight = reader.mHeight; - } - - std::vector layerIndices; - for (int layerIdx = 0; layerIdx < (int)reader.mPSDLayerInfoVector.size(); layerIdx++) - { - auto layer = reader.mPSDLayerInfoVector[layerIdx]; - if (layer->mVisible) - layerIndices.insert(layerIndices.begin(), layerIdx); - } - imageData = reader.ReadImageData(); - if (imageData == NULL) + if (fileName.EndsWith(".png")) { - ImageData* rawImageData = reader.MergeLayers(NULL, layerIndices, NULL);; - if ((rawImageData->mX == 0) && (rawImageData->mY == 0) && - (rawImageData->mWidth == reader.mWidth) && - (rawImageData->mHeight == reader.mHeight)) + PNGData* pngData = new PNGData(); + if (pngData->LoadFromFile(fileName)) { - imageData = rawImageData; - } - else - { - imageData = new ImageData(); - imageData->CreateNew(reader.mWidth, reader.mHeight); - imageData->CopyFrom(rawImageData, 0, 0); - delete rawImageData; + imageData = pngData; } } -// else -// { -// PNGData pngData; -// pngData.mWidth = imageData->mWidth; -// pngData.mHeight = imageData->mHeight; -// pngData.mBits = imageData->mBits; -// pngData.WriteToFile("c:\\temp\\test.png"); -// pngData.mBits = NULL; -// } + else + { + if (!reader.Init(fileName)) + { + if (size == 0) + { + printf("Failed to open %s - incorrect working directory?", fileName.c_str()); + return 1; + } + + imageData = NULL; + continue; + } + + if ((size == 0) && (pass == 0)) + { + baseWidth = reader.mWidth; + baseHeight = reader.mHeight; + } + + std::vector layerIndices; + for (int layerIdx = 0; layerIdx < (int)reader.mPSDLayerInfoVector.size(); layerIdx++) + { + auto layer = reader.mPSDLayerInfoVector[layerIdx]; + if (layer->mVisible) + layerIndices.insert(layerIndices.begin(), layerIdx); + } + + imageData = reader.ReadImageData(); + + if (imageData == NULL) + { + ImageData* rawImageData = reader.MergeLayers(NULL, layerIndices, NULL);; + if ((rawImageData->mX == 0) && (rawImageData->mY == 0) && + (rawImageData->mWidth == reader.mWidth) && + (rawImageData->mHeight == reader.mHeight)) + { + imageData = rawImageData; + } + else + { + imageData = new ImageData(); + imageData->CreateNew(reader.mWidth, reader.mHeight); + imageData->CopyFrom(rawImageData, 0, 0); + delete rawImageData; + } + } + // else + // { + // PNGData pngData; + // pngData.mWidth = imageData->mWidth; + // pngData.mHeight = imageData->mHeight; + // pngData.mBits = imageData->mBits; + // pngData.WriteToFile("c:\\temp\\test.png"); + // pngData.mBits = NULL; + // } + } } } @@ -265,6 +286,9 @@ int main() return false; }; + if (isThemeDir) + _mkdir("cache"); + for (int size = 0; size < 3; size++) { int scale = 1 << size; @@ -284,11 +308,11 @@ int main() if (isThemeDir) { if (size == 0) - fileName = "UI.png"; + fileName = "cache/UI.png"; else if (size == 1) - fileName = "UI_2.png"; + fileName = "cache/UI_2.png"; else - fileName = "UI_4.png"; + fileName = "cache/UI_4.png"; } else { diff --git a/BeefTools/ImgCreate/ImgCreate.vcxproj b/BeefTools/ImgCreate/ImgCreate.vcxproj index 4012ab99..f3ecdde8 100644 --- a/BeefTools/ImgCreate/ImgCreate.vcxproj +++ b/BeefTools/ImgCreate/ImgCreate.vcxproj @@ -42,13 +42,13 @@ Application true - v141 + v142 Unicode Application false - v141 + v142 true Unicode diff --git a/IDE/dist/images/ImgCreate.exe b/IDE/dist/images/ImgCreate.exe index 81d729a4..c819e287 100644 Binary files a/IDE/dist/images/ImgCreate.exe and b/IDE/dist/images/ImgCreate.exe differ diff --git a/IDE/src/Settings.bf b/IDE/src/Settings.bf index 728abba0..89dd0f2c 100644 --- a/IDE/src/Settings.bf +++ b/IDE/src/Settings.bf @@ -491,20 +491,24 @@ namespace IDE for (int scale < 3) { String srcImgPath = scope .(absPath); + String srcImgPath2 = scope .(absPath); String destImgPath = scope .(absPath); switch (scale) { case 0: srcImgPath.Append("UI.psd"); - destImgPath.Append("UI.png"); + srcImgPath2.Append("UI.png"); + destImgPath.Append("cache/UI.png"); case 1: srcImgPath.Append("UI_2.psd"); - destImgPath.Append("UI_2.png"); + srcImgPath2.Append("UI_2.png"); + destImgPath.Append("cache/UI_2.png"); case 2: srcImgPath.Append("UI_4.psd"); - destImgPath.Append("UI_2.png"); + srcImgPath2.Append("UI_2.png"); + destImgPath.Append("cache/UI_2.png"); } - maxSrcImgTime = Math.Max(maxSrcImgTime, File.GetLastWriteTime(srcImgPath).GetValueOrDefault()); + maxSrcImgTime = Math.Max(maxSrcImgTime, Math.Max(File.GetLastWriteTime(srcImgPath).GetValueOrDefault(), File.GetLastWriteTime(srcImgPath2).GetValueOrDefault())); let destImageTime = File.GetLastWriteTime(destImgPath).GetValueOrDefault(); if (scale == 0) minDestImgTime = destImageTime; @@ -543,9 +547,9 @@ namespace IDE String imgPath = scope .(absPath); switch (scale) { - case 0: imgPath.Append("UI.png"); - case 1: imgPath.Append("UI_2.png"); - case 2: imgPath.Append("UI_4.png"); + case 0: imgPath.Append("cache/UI.png"); + case 1: imgPath.Append("cache/UI_2.png"); + case 2: imgPath.Append("cache/UI_4.png"); } if (File.Exists(imgPath))