Initial Commit
This commit is contained in:
28
include/d7rc.hpp
Normal file
28
include/d7rc.hpp
Normal file
@@ -0,0 +1,28 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <d7rc/atlas.hpp>
|
||||
#include <d7rc/file.hpp>
|
||||
68
include/d7rc/atlas.hpp
Normal file
68
include/d7rc/atlas.hpp
Normal file
@@ -0,0 +1,68 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <palladium>
|
||||
|
||||
namespace D7RC {
|
||||
class Atlas {
|
||||
public:
|
||||
Atlas(int size = 1024);
|
||||
~Atlas() {}
|
||||
|
||||
/**
|
||||
* Function that tries to find a free place and if found
|
||||
* it will place the Image there and create a UV Entry
|
||||
*
|
||||
* @param img Uses Palladium Image Ref
|
||||
*/
|
||||
bool AppendImage(PD::Image::Ref img, const std::string& name);
|
||||
void Pack();
|
||||
void LoadTextures();
|
||||
/**
|
||||
* Get a Texture from the Atlas
|
||||
* Warning: Palladium Backend needs to be init!!!
|
||||
*/
|
||||
PD::Li::Texture::Ref Get(const std::string& name);
|
||||
|
||||
void pSplit(int i, PD::ivec4 pos);
|
||||
|
||||
struct Entry {
|
||||
PD::Li::Rect UV;
|
||||
PD::ivec2 Size;
|
||||
std::string Name;
|
||||
PD::ivec2 iPos; // data that does not get written
|
||||
PD::Image::Ref iImg; // Temp ref
|
||||
PD::Li::Texture::Ref iTex; // tmp (on load)
|
||||
};
|
||||
|
||||
std::vector<Entry> Entries;
|
||||
PD::ivec2 Size;
|
||||
PD::ivec2 Max;
|
||||
std::vector<PD::ivec4> Space;
|
||||
std::vector<PD::u8> Img;
|
||||
PD::Li::Texture::Ref pTex;
|
||||
};
|
||||
} // namespace D7RC
|
||||
59
include/d7rc/file.hpp
Normal file
59
include/d7rc/file.hpp
Normal file
@@ -0,0 +1,59 @@
|
||||
/*
|
||||
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.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <d7rc/atlas.hpp>
|
||||
#include <palladium>
|
||||
|
||||
namespace D7RC {
|
||||
class File {
|
||||
public:
|
||||
File() {}
|
||||
~File() {}
|
||||
|
||||
void Write(Atlas& atlas, const std::string& path);
|
||||
void pWriteTab(std::ofstream& off, Atlas& atlas);
|
||||
size_t pCalcTabLen(Atlas& atlas);
|
||||
void Read(Atlas& atlas, const std::string& path);
|
||||
void pReadTab(std::ifstream& off, Atlas& atlas);
|
||||
|
||||
struct Header {
|
||||
PD::u32 Magic;
|
||||
PD::u16 Width;
|
||||
PD::u16 Height;
|
||||
PD::u32 DataSize;
|
||||
PD::u32 TabLen;
|
||||
PD::u8 Format;
|
||||
PD::u8 pUnk;
|
||||
PD::u16 NumEntries;
|
||||
|
||||
static Header New();
|
||||
void Write(std::ofstream& off);
|
||||
void Read(std::ifstream& iff);
|
||||
};
|
||||
|
||||
Header hdr;
|
||||
};
|
||||
} // namespace D7RC
|
||||
Reference in New Issue
Block a user