1
0
Fork 0
mirror of https://github.com/beefytech/Beef.git synced 2025-06-08 11:38:21 +02:00

Generate theme images in 'cache' directory, allow PNG source images

This commit is contained in:
Brian Fiete 2022-01-11 06:07:43 -05:00
parent f66b91931b
commit 1f0d2dcc82
4 changed files with 90 additions and 62 deletions

View file

@ -2,6 +2,7 @@
#include "BeefySysLib/util/Array.h" #include "BeefySysLib/util/Array.h"
#include "BeefySysLib/img/PSDReader.h" #include "BeefySysLib/img/PSDReader.h"
#include "BeefySysLib/img/PNGData.h" #include "BeefySysLib/img/PNGData.h"
#include <direct.h>
USING_NS_BF; USING_NS_BF;
@ -134,62 +135,82 @@ int main()
fileName = "UI_4.psd"; fileName = "UI_4.psd";
if (!FileExists(fileName)) 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<int> 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 (fileName.EndsWith(".png"))
if (imageData == NULL)
{ {
ImageData* rawImageData = reader.MergeLayers(NULL, layerIndices, NULL);; PNGData* pngData = new PNGData();
if ((rawImageData->mX == 0) && (rawImageData->mY == 0) && if (pngData->LoadFromFile(fileName))
(rawImageData->mWidth == reader.mWidth) &&
(rawImageData->mHeight == reader.mHeight))
{ {
imageData = rawImageData; imageData = pngData;
}
else
{
imageData = new ImageData();
imageData->CreateNew(reader.mWidth, reader.mHeight);
imageData->CopyFrom(rawImageData, 0, 0);
delete rawImageData;
} }
} }
// else else
// { {
// PNGData pngData; if (!reader.Init(fileName))
// pngData.mWidth = imageData->mWidth; {
// pngData.mHeight = imageData->mHeight; if (size == 0)
// pngData.mBits = imageData->mBits; {
// pngData.WriteToFile("c:\\temp\\test.png"); printf("Failed to open %s - incorrect working directory?", fileName.c_str());
// pngData.mBits = NULL; return 1;
// } }
imageData = NULL;
continue;
}
if ((size == 0) && (pass == 0))
{
baseWidth = reader.mWidth;
baseHeight = reader.mHeight;
}
std::vector<int> 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; return false;
}; };
if (isThemeDir)
_mkdir("cache");
for (int size = 0; size < 3; size++) for (int size = 0; size < 3; size++)
{ {
int scale = 1 << size; int scale = 1 << size;
@ -284,11 +308,11 @@ int main()
if (isThemeDir) if (isThemeDir)
{ {
if (size == 0) if (size == 0)
fileName = "UI.png"; fileName = "cache/UI.png";
else if (size == 1) else if (size == 1)
fileName = "UI_2.png"; fileName = "cache/UI_2.png";
else else
fileName = "UI_4.png"; fileName = "cache/UI_4.png";
} }
else else
{ {

View file

@ -42,13 +42,13 @@
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>true</UseDebugLibraries> <UseDebugLibraries>true</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration"> <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
<ConfigurationType>Application</ConfigurationType> <ConfigurationType>Application</ConfigurationType>
<UseDebugLibraries>false</UseDebugLibraries> <UseDebugLibraries>false</UseDebugLibraries>
<PlatformToolset>v141</PlatformToolset> <PlatformToolset>v142</PlatformToolset>
<WholeProgramOptimization>true</WholeProgramOptimization> <WholeProgramOptimization>true</WholeProgramOptimization>
<CharacterSet>Unicode</CharacterSet> <CharacterSet>Unicode</CharacterSet>
</PropertyGroup> </PropertyGroup>

Binary file not shown.

View file

@ -491,20 +491,24 @@ namespace IDE
for (int scale < 3) for (int scale < 3)
{ {
String srcImgPath = scope .(absPath); String srcImgPath = scope .(absPath);
String srcImgPath2 = scope .(absPath);
String destImgPath = scope .(absPath); String destImgPath = scope .(absPath);
switch (scale) switch (scale)
{ {
case 0: case 0:
srcImgPath.Append("UI.psd"); srcImgPath.Append("UI.psd");
destImgPath.Append("UI.png"); srcImgPath2.Append("UI.png");
destImgPath.Append("cache/UI.png");
case 1: case 1:
srcImgPath.Append("UI_2.psd"); srcImgPath.Append("UI_2.psd");
destImgPath.Append("UI_2.png"); srcImgPath2.Append("UI_2.png");
destImgPath.Append("cache/UI_2.png");
case 2: case 2:
srcImgPath.Append("UI_4.psd"); 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(); let destImageTime = File.GetLastWriteTime(destImgPath).GetValueOrDefault();
if (scale == 0) if (scale == 0)
minDestImgTime = destImageTime; minDestImgTime = destImageTime;
@ -543,9 +547,9 @@ namespace IDE
String imgPath = scope .(absPath); String imgPath = scope .(absPath);
switch (scale) switch (scale)
{ {
case 0: imgPath.Append("UI.png"); case 0: imgPath.Append("cache/UI.png");
case 1: imgPath.Append("UI_2.png"); case 1: imgPath.Append("cache/UI_2.png");
case 2: imgPath.Append("UI_4.png"); case 2: imgPath.Append("cache/UI_4.png");
} }
if (File.Exists(imgPath)) if (File.Exists(imgPath))