Skip to content

Commit

Permalink
VOXELFORMAT: ASE: added support for reading aseprite files
Browse files Browse the repository at this point in the history
using the wonderful cute_aseprite lib
  • Loading branch information
mgerhardy committed Jun 15, 2024
1 parent b27dfa0 commit 6c7230b
Show file tree
Hide file tree
Showing 14 changed files with 1,563 additions and 2 deletions.
4 changes: 4 additions & 0 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -389,6 +389,10 @@ update-ufbx:
$(call UPDATE_GIT,ufbx,https://github.com/bqqbarbhg/ufbx.git)
cp $(UPDATEDIR)/ufbx.sync/ufbx.h $(UPDATEDIR)/ufbx.sync/ufbx.c src/modules/voxelformat/external

update-cute:
$(call UPDATE_GIT,cute_headers,https://github.com/RandyGaul/cute_headers)
cp $(UPDATEDIR)/cute_headers.sync/cute_aseprite.h src/modules/voxelformat/external

update-icons:
$(call UPDATE_GIT,iconfontcppheaders,https://github.com/juliettef/IconFontCppHeaders)
cp $(UPDATEDIR)/iconfontcppheaders.sync/IconsLucide.h src/modules/ui/
Expand Down
2 changes: 1 addition & 1 deletion contrib/installer/linux/thumbnailer.thumbnailer.in
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
[Thumbnailer Entry]
TryExec=@CMAKE_PROJECT_NAME@-@NAME@
Exec=@CMAKE_PROJECT_NAME@-@NAME@ --use-scene-camera -s %s --input %i --output %o
MimeType=application/x-aceofspades;application/x-aceofspades-vxl;application/x-animatoon;application/x-binvox;application/x-build-engine;application/x-chronovox;application/x-cubeworld;application/x-cubzh;application/x-cubzh-world;application/x-fbx;application/x-gl-transmission-format;application/x-goxel;application/x-magicavoxel;application/x-magicavoxel-xraw;application/x-minecraft-level-dat;application/x-minecraft-region;application/x-minecraft-schematic;application/x-minetest;application/x-nicks-voxel-model;application/x-particubes;application/x-polygon-file-format;application/x-quake-1;application/x-quake-2-model;application/x-qubicle-binary;application/x-qubicle-binary-tree;application/x-qubicle-exchange;application/x-qubicle-project;application/x-rooms-xyz-thing;application/x-sandbox-voxedit-collection;application/x-sandbox-voxedit-hierarchy;application/x-sandbox-voxedit-model;application/x-sandbox-voxedit-tilemap;application/x-slab6-vox;application/x-sproxel-csv;application/x-standard-triangle-language;application/x-starmade-blueprint;application/x-starmade-template;application/x-tiberian-sun;application/x-ufo-alien-invasion;application/x-vengi;application/x-voxel3d;application/x-voxelbuilder;application/x-voxelmax;application/x-wavefront-object
MimeType=application/x-aceofspades;application/x-aceofspades-vxl;application/x-animatoon;application/x-aseprite;application/x-binvox;application/x-build-engine;application/x-chronovox;application/x-cubeworld;application/x-cubzh;application/x-cubzh-world;application/x-fbx;application/x-gl-transmission-format;application/x-goxel;application/x-magicavoxel;application/x-magicavoxel-xraw;application/x-minecraft-level-dat;application/x-minecraft-region;application/x-minecraft-schematic;application/x-minetest;application/x-nicks-voxel-model;application/x-particubes;application/x-polygon-file-format;application/x-quake-1;application/x-quake-2-model;application/x-qubicle-binary;application/x-qubicle-binary-tree;application/x-qubicle-exchange;application/x-qubicle-project;application/x-rooms-xyz-thing;application/x-sandbox-voxedit-collection;application/x-sandbox-voxedit-hierarchy;application/x-sandbox-voxedit-model;application/x-sandbox-voxedit-tilemap;application/x-slab6-vox;application/x-sproxel-csv;application/x-standard-triangle-language;application/x-starmade-blueprint;application/x-starmade-template;application/x-tiberian-sun;application/x-ufo-alien-invasion;application/x-vengi;application/x-voxel3d;application/x-voxelbuilder;application/x-voxelmax;application/x-wavefront-object
2 changes: 1 addition & 1 deletion contrib/installer/linux/voxedit.desktop.in
Original file line number Diff line number Diff line change
Expand Up @@ -10,4 +10,4 @@ Type=Application
Keywords=3D;modeling;voxel;engine;pixel;art
Categories=Graphics;2DGraphics;3DGraphics;RasterGraphics;
StartupNotify=true
MimeType=application/x-aceofspades;application/x-aceofspades-vxl;application/x-animatoon;application/x-binvox;application/x-build-engine;application/x-chronovox;application/x-cubeworld;application/x-cubzh;application/x-cubzh-world;application/x-fbx;application/x-gl-transmission-format;application/x-goxel;application/x-magicavoxel;application/x-magicavoxel-xraw;application/x-minecraft-level-dat;application/x-minecraft-region;application/x-minecraft-schematic;application/x-minetest;application/x-nicks-voxel-model;application/x-particubes;application/x-polygon-file-format;application/x-quake-1;application/x-quake-2-model;application/x-qubicle-binary;application/x-qubicle-binary-tree;application/x-qubicle-exchange;application/x-qubicle-project;application/x-rooms-xyz-thing;application/x-sandbox-voxedit-collection;application/x-sandbox-voxedit-hierarchy;application/x-sandbox-voxedit-model;application/x-sandbox-voxedit-tilemap;application/x-slab6-vox;application/x-sproxel-csv;application/x-standard-triangle-language;application/x-starmade-blueprint;application/x-starmade-template;application/x-tiberian-sun;application/x-ufo-alien-invasion;application/x-vengi;application/x-voxel3d;application/x-voxelbuilder;application/x-voxelmax;application/x-wavefront-object
MimeType=application/x-aceofspades;application/x-aceofspades-vxl;application/x-animatoon;application/x-aseprite;application/x-binvox;application/x-build-engine;application/x-chronovox;application/x-cubeworld;application/x-cubzh;application/x-cubzh-world;application/x-fbx;application/x-gl-transmission-format;application/x-goxel;application/x-magicavoxel;application/x-magicavoxel-xraw;application/x-minecraft-level-dat;application/x-minecraft-region;application/x-minecraft-schematic;application/x-minetest;application/x-nicks-voxel-model;application/x-particubes;application/x-polygon-file-format;application/x-quake-1;application/x-quake-2-model;application/x-qubicle-binary;application/x-qubicle-binary-tree;application/x-qubicle-exchange;application/x-qubicle-project;application/x-rooms-xyz-thing;application/x-sandbox-voxedit-collection;application/x-sandbox-voxedit-hierarchy;application/x-sandbox-voxedit-model;application/x-sandbox-voxedit-tilemap;application/x-slab6-vox;application/x-sproxel-csv;application/x-standard-triangle-language;application/x-starmade-blueprint;application/x-starmade-template;application/x-tiberian-sun;application/x-ufo-alien-invasion;application/x-vengi;application/x-voxel3d;application/x-voxelbuilder;application/x-voxelmax;application/x-wavefront-object
5 changes: 5 additions & 0 deletions contrib/installer/linux/x-voxel.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,11 @@
<match type="string" offset="0" value="VENG"/>
</magic>
</mime-type>
<mime-type type="application/x-aseprite">
<comment>aseprite</comment>
<glob pattern="*.aseprite"/>
<glob pattern="*.ase"/>
</mime-type>
<mime-type type="application/x-qubicle-binary">
<comment>Qubicle Binary</comment>
<glob pattern="*.qb"/>
Expand Down
24 changes: 24 additions & 0 deletions contrib/installer/windows/wixpatch.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,12 @@
<RegistryKey Root="HKCR" Key=".vengi">
<RegistryValue Key="ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}" Type="string" Value="{CD1F0EA0-283C-4D90-A41D-DEBD9207D91F}" />
</RegistryKey>
<RegistryKey Root="HKCR" Key=".aseprite">
<RegistryValue Key="ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}" Type="string" Value="{CD1F0EA0-283C-4D90-A41D-DEBD9207D91F}" />
</RegistryKey>
<RegistryKey Root="HKCR" Key=".ase">
<RegistryValue Key="ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}" Type="string" Value="{CD1F0EA0-283C-4D90-A41D-DEBD9207D91F}" />
</RegistryKey>
<RegistryKey Root="HKCR" Key=".qb">
<RegistryValue Key="ShellEx\{E357FCCD-A995-4576-B01F-234630154E96}" Type="string" Value="{CD1F0EA0-283C-4D90-A41D-DEBD9207D91F}" />
</RegistryKey>
Expand Down Expand Up @@ -196,6 +202,24 @@
</Extension>
</ProgId>

<RegistryValue Root="HKLM" Key="Software\vengi-voxedit\Capabilities\FileAssociations" Name=".aseprite" Value="vengi-voxedit.aseprite" Type="string" />
<RegistryValue Root="HKCR" Key="Applications\vengi_voxedit.exe\SupportedTypes" Name=".aseprite" Value="" Type="string" />
<RegistryValue Root="HKCR" Key=".aseprite\OpenWithProgids" Name="vengi-voxedit.aseprite" Value="" Type="string" />
<ProgId Id="vengi-voxedit.aseprite" Description="aseprite" Icon="CM_FP_voxedit.voxedit.vengi_voxedit.exe">
<Extension Id="aseprite" ContentType="application/x-aseprite">
<Verb Id="open" TargetFile="CM_FP_voxedit.voxedit.vengi_voxedit.exe" Argument="&quot;%1&quot;" />
</Extension>
</ProgId>

<RegistryValue Root="HKLM" Key="Software\vengi-voxedit\Capabilities\FileAssociations" Name=".ase" Value="vengi-voxedit.ase" Type="string" />
<RegistryValue Root="HKCR" Key="Applications\vengi_voxedit.exe\SupportedTypes" Name=".ase" Value="" Type="string" />
<RegistryValue Root="HKCR" Key=".ase\OpenWithProgids" Name="vengi-voxedit.ase" Value="" Type="string" />
<ProgId Id="vengi-voxedit.ase" Description="aseprite" Icon="CM_FP_voxedit.voxedit.vengi_voxedit.exe">
<Extension Id="ase" ContentType="application/x-aseprite-aseprite">
<Verb Id="open" TargetFile="CM_FP_voxedit.voxedit.vengi_voxedit.exe" Argument="&quot;%1&quot;" />
</Extension>
</ProgId>

<RegistryValue Root="HKLM" Key="Software\vengi-voxedit\Capabilities\FileAssociations" Name=".qb" Value="vengi-voxedit.qb" Type="string" />
<RegistryValue Root="HKCR" Key="Applications\vengi_voxedit.exe\SupportedTypes" Name=".qb" Value="" Type="string" />
<RegistryValue Root="HKCR" Key=".qb\OpenWithProgids" Name="vengi-voxedit.qb" Value="" Type="string" />
Expand Down
1 change: 1 addition & 0 deletions docs/CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ General:
- Fixed invalid log levels
- Added a new node type for named points
- Improved `3zh` format support
- Added support for `ase` and `aseprite` format

VoxConvert:

Expand Down
1 change: 1 addition & 0 deletions docs/Formats.md
Original file line number Diff line number Diff line change
Expand Up @@ -42,6 +42,7 @@
| Voxel3D | v3a | X | X | | | |
| VoxelBuilder | vbx | X | | | | |
| VoxelMax | vmax.zip | X | | X | X | |
| aseprite | aseprite | X | | | X | |

## Mesh formats

Expand Down
2 changes: 2 additions & 0 deletions src/modules/palette/private/GimpPalette.h
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,8 @@ namespace palette {
/**
* Gimp format with Aseprite extension for alpha channels
*
* https://github.com/LibreSprite/LibreSprite/tree/master/data/palettes
*
* @ingroup Formats
*/
class GimpPalette : public PaletteFormat {
Expand Down
1 change: 1 addition & 0 deletions src/modules/voxelformat/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ set(SRCS

private/aceofspades/AoSVXLFormat.h private/aceofspades/AoSVXLFormat.cpp
private/animatoon/AnimaToonFormat.h private/animatoon/AnimaToonFormat.cpp
private/aseprite/AsepriteFormat.h private/aseprite/AsepriteFormat.cpp
private/binvox/BinVoxFormat.h private/binvox/BinVoxFormat.cpp
private/chronovox/CSMFormat.h private/chronovox/CSMFormat.cpp
private/commandconquer/HVAFormat.h private/commandconquer/HVAFormat.cpp
Expand Down
12 changes: 12 additions & 0 deletions src/modules/voxelformat/VolumeFormat.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,7 @@
#include "scenegraph/SceneGraphNode.h"
#include "video/Texture.h"
#include "voxelformat/Format.h"
#include "voxelformat/private/aseprite/AsepriteFormat.h"
#include "voxelformat/private/rooms/ThingFormat.h"
#include "voxelformat/private/aceofspades/AoSVXLFormat.h"
#include "voxelformat/private/animatoon/AnimaToonFormat.h"
Expand Down Expand Up @@ -103,6 +104,14 @@ const io::FormatDescription &vengi() {
return f;
}

static const io::FormatDescription &aseprite() {
static io::FormatDescription f{"aseprite",
{"aseprite", "ase"},
{},
VOX_FORMAT_FLAG_PALETTE_EMBEDDED};
return f;
}

static const io::FormatDescription &roomsThing() {
static io::FormatDescription f{"Rooms.xyz Thing",
{"thing"},
Expand Down Expand Up @@ -335,6 +344,7 @@ const io::FormatDescription *voxelLoad() {
// this is the list of supported voxel volume formats that are
// have importers implemented
static const io::FormatDescription desc[] = {vengi(),
aseprite(),
qubicleBinary(),
magicaVoxel(),
qubicleBinaryTree(),
Expand Down Expand Up @@ -479,6 +489,8 @@ static core::SharedPtr<Format> getFormat(const io::FormatDescription &desc, uint
return core::make_shared<CubzhFormat>();
} else if (ext == cubzhB64().mainExtension()) {
return core::make_shared<CubzhB64Format>();
} else if (ext == aseprite().mainExtension()) {
return core::make_shared<AsepriteFormat>();
} else if (ext == roomsThing().mainExtension()) {
return core::make_shared<ThingFormat>();
} else if (gltf().matchesExtension(ext)) {
Expand Down
Loading

0 comments on commit 6c7230b

Please sign in to comment.