]> Chaos Git - corbenik/ctrulib.git/commitdiff
Automate graphics conversion
authorDave Murphy <davem@devkitpro.org>
Mon, 15 Dec 2014 12:35:03 +0000 (12:35 +0000)
committerDave Murphy <davem@devkitpro.org>
Mon, 15 Dec 2014 12:35:03 +0000 (12:35 +0000)
Makefile:

- Don't set DATA, we're no longer embedding files from there directly

- Add folders from GRAPHICS to VPATH. This is how make finds the source files

- Add PNGFILES variable containing all png files from GRAPHICS folders

- Add png files to OFILES with extension changed to rgb.o

- Add rule to create .rgb.o fromn .rgb using normal bin2o macro

- Add rule to create .rgb from .png using imagemagick

source/main.c

- the extension has changed to .rgb so the header is now <filename>_rgb.h and the variables end in _rgb

examples/graphics/bitmap/24bit-color/Makefile
examples/graphics/bitmap/24bit-color/source/main.c

index c4c758ea3af42dd7efb4854ae74447f04a5370cc..2f1f54ab816f106ac81fd76beb4373042a573c56 100755 (executable)
@@ -29,8 +29,9 @@ include $(DEVKITARM)/3ds_rules
 TARGET         :=      $(notdir $(CURDIR))
 BUILD          :=      build
 SOURCES                :=      source
-DATA           :=      data
+DATA           :=
 INCLUDES       :=      include
+GRAPHICS       :=      gfx
 
 #---------------------------------------------------------------------------------
 # options for code generation
@@ -68,7 +69,8 @@ export OUTPUT :=      $(CURDIR)/$(TARGET)
 export TOPDIR  :=      $(CURDIR)
 
 export VPATH   :=      $(foreach dir,$(SOURCES),$(CURDIR)/$(dir)) \
-                       $(foreach dir,$(DATA),$(CURDIR)/$(dir))
+                       $(foreach dir,$(DATA),$(CURDIR)/$(dir)) \
+                       $(foreach dir,$(GRAPHICS),$(CURDIR)/$(dir))
 
 export DEPSDIR :=      $(CURDIR)/$(BUILD)
 
@@ -76,6 +78,7 @@ CFILES                :=      $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.c)))
 CPPFILES       :=      $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.cpp)))
 SFILES         :=      $(foreach dir,$(SOURCES),$(notdir $(wildcard $(dir)/*.s)))
 BINFILES       :=      $(foreach dir,$(DATA),$(notdir $(wildcard $(dir)/*.*)))
+PNGFILES       :=      $(foreach dir,$(GRAPHICS),$(notdir $(wildcard $(dir)/*.png)))
 
 #---------------------------------------------------------------------------------
 # use CXX for linking C++ projects, CC for standard C
@@ -92,7 +95,8 @@ endif
 #---------------------------------------------------------------------------------
 
 export OFILES  :=      $(addsuffix .o,$(BINFILES)) \
-                       $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o)
+                       $(PNGFILES:.png=.rgb.o) \
+                       $(CPPFILES:.cpp=.o) $(CFILES:.c=.o) $(SFILES:.s=.o) \
 
 export INCLUDE :=      $(foreach dir,$(INCLUDES),-I$(CURDIR)/$(dir)) \
                        $(foreach dir,$(LIBDIRS),-I$(dir)/include) \
@@ -151,17 +155,19 @@ $(OUTPUT).elf     :       $(OFILES)
        @echo $(notdir $<)
        @$(bin2o)
 
-# WARNING: This is not the right way to do this! TODO: Do it right!
+
+
+#---------------------------------------------------------------------------------
+%.rgb.o: %.rgb
+#---------------------------------------------------------------------------------
+       @echo $(notdir $<)
+       @$(bin2o)
+
 #---------------------------------------------------------------------------------
-%.vsh.o        :       %.vsh
+%.rgb: %.png
 #---------------------------------------------------------------------------------
        @echo $(notdir $<)
-       @python $(AEMSTRO)/aemstro_as.py $< ../$(notdir $<).shbin
-       @bin2s ../$(notdir $<).shbin | $(PREFIX)as -o $@
-       @echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"_end[];" > `(echo $(notdir $<).shbin | tr . _)`.h
-       @echo "extern const u8" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`"[];" >> `(echo $(notdir $<).shbin | tr . _)`.h
-       @echo "extern const u32" `(echo $(notdir $<).shbin | sed -e 's/^\([0-9]\)/_\1/' | tr . _)`_size";" >> `(echo $(notdir $<).shbin | tr . _)`.h
-       @rm ../$(notdir $<).shbin
+       @convert $< -channel B -separate $< -channel G -separate $< -channel R -separate -channel RGB -combine -rotate 90 $@
 
 -include $(DEPENDS)
 
index 9a3fc09b48f98174392da8aa21b83b50d9de4c66..bc9b28f2514d442dada0088d6d593f4000b1f5f0 100644 (file)
@@ -17,7 +17,7 @@
 #include <string.h>
 
 //This include a header containing definitions of our image
-#include "drunkenlogo_bin.h"
+#include "drunkenlogo_rgb.h"
 
 int main(int argc, char **argv)
 {
@@ -41,7 +41,7 @@ int main(int argc, char **argv)
        u8* fb = gfxGetFramebuffer(GFX_BOTTOM, GFX_LEFT, NULL, NULL);
        
        //Copy our image in the bottom screen's frame buffer
-       memcpy(fb, drunkenlogo_bin, drunkenlogo_bin_size);
+       memcpy(fb, drunkenlogo_rgb, drunkenlogo_rgb_size);
 
        // Main loop
        while (aptMainLoop())