2025-10-24 09:15:00 +02:00
|
|
|
/*
|
|
|
|
|
MIT License
|
|
|
|
|
|
|
|
|
|
Copyright (c) 2025 tobid7
|
|
|
|
|
|
|
|
|
|
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
|
|
|
of this software and associated documentation files (the "Software"), to deal
|
|
|
|
|
in the Software without restriction, including without limitation the rights
|
|
|
|
|
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
|
|
|
copies of the Software, and to permit persons to whom the Software is
|
|
|
|
|
furnished to do so, subject to the following conditions:
|
|
|
|
|
|
|
|
|
|
The above copyright notice and this permission notice shall be included in all
|
|
|
|
|
copies or substantial portions of the Software.
|
|
|
|
|
|
|
|
|
|
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
|
|
|
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
|
|
|
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
|
|
|
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
|
|
|
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
|
|
|
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
|
|
|
SOFTWARE.
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|
|
#include <d7rc.hpp>
|
|
|
|
|
|
|
|
|
|
#ifndef VERSION
|
|
|
|
|
#define VERSION ""
|
|
|
|
|
#endif
|
|
|
|
|
|
2025-10-25 17:37:04 +02:00
|
|
|
int main(int argc, char** argv) {
|
|
|
|
|
if (argc > 1) {
|
|
|
|
|
if (std::string(argv[1]) == "version") {
|
|
|
|
|
std::cout << "d7rc-make v" << VERSION << std::endl;
|
|
|
|
|
return 0;
|
|
|
|
|
} else if (std::string(argv[1]) == "help") {
|
|
|
|
|
std::cout << "d7rc-make v" << VERSION << std::endl;
|
|
|
|
|
std::cout << "Usage: d7rc-make [cmd]" << std::endl;
|
|
|
|
|
std::cout << "Commands:" << std::endl;
|
|
|
|
|
std::cout << " version Show version" << std::endl;
|
|
|
|
|
std::cout << " help Show this help message"
|
|
|
|
|
<< std::endl;
|
|
|
|
|
std::cout << " tex paths out Create Texture Atlas" << std::endl;
|
|
|
|
|
std::cout << " check path Show D7RC file info" << std::endl;
|
|
|
|
|
return 0;
|
|
|
|
|
} else if (std::string(argv[1]) == "tex") {
|
|
|
|
|
if (argc < 4) {
|
|
|
|
|
std::cout << "Not paths given for 'tex'." << std::endl;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
int szs = 1024;
|
|
|
|
|
D7RC::Atlas a(szs);
|
|
|
|
|
std::map<PD::Image::Ref, std::string> imgs;
|
|
|
|
|
for (int i = 2; i < argc - 1; i++) {
|
|
|
|
|
for (auto& it : std::filesystem::directory_iterator(argv[i])) {
|
|
|
|
|
auto img = PD::Image::New(it.path().string());
|
|
|
|
|
PD::Image::Convert(img, PD::Image::RGBA);
|
|
|
|
|
imgs[img] = it.path().filename().string();
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
for (auto& it : imgs) {
|
|
|
|
|
a.AppendImage(it.first, it.second);
|
|
|
|
|
}
|
|
|
|
|
a.Pack();
|
|
|
|
|
D7RC::File f;
|
|
|
|
|
f.Write(a, std::string(argv[argc - 1]));
|
|
|
|
|
return 0;
|
|
|
|
|
} else if (std::string(argv[1]) == "check") {
|
|
|
|
|
if (argc < 3) {
|
|
|
|
|
std::cout << "No path to .d7rc file was specified!" << std::endl;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
D7RC::Atlas a;
|
|
|
|
|
D7RC::File f;
|
|
|
|
|
f.Read(a, argv[2]);
|
|
|
|
|
// Probably not the way how you should output it... but my favourite
|
|
|
|
|
std::cout << std::format("Magic: {}", std::string((char*)&f.hdr.Magic, 4))
|
|
|
|
|
<< std::endl;
|
|
|
|
|
std::cout << std::format("Size: {}", PD::ivec2(f.hdr.Width, f.hdr.Height))
|
|
|
|
|
<< std::endl;
|
|
|
|
|
std::cout << "Data Size: " << PD::Strings::FormatBytes(f.hdr.DataSize)
|
|
|
|
|
<< std::endl;
|
|
|
|
|
std::cout << "Images: " << f.hdr.NumEntries << std::endl;
|
|
|
|
|
std::cout << std::format(
|
|
|
|
|
"Atlas Info:\n {} Entries\n {} bytes\nEntries:\n", a.Entries.size(),
|
|
|
|
|
a.Img.size());
|
|
|
|
|
for (auto& it : a.Entries) {
|
|
|
|
|
std::cout << std::format(" {} {}\n", it.Name, it.Size);
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
std::cout << "Unknown command: " << argv[1] << std::endl;
|
|
|
|
|
return 0;
|
|
|
|
|
}
|
|
|
|
|
} else {
|
|
|
|
|
std::cout << "d7rc-make v" << VERSION << std::endl;
|
|
|
|
|
std::cout << "Use 'd7rc-make help' for more information." << std::endl;
|
2025-10-24 09:15:00 +02:00
|
|
|
}
|
|
|
|
|
return 0;
|
|
|
|
|
}
|