Several improvements (#9)

* fix icon filename

* update pp2d to fix preview problem

* several improvements:
- rely on a single header for simple/common headers
- cleaned up main by putting the interface drawing function in its own file
- load previews from .zip themes (may cause some loading times when launching
- only need 1 shuffle image thanks to pp2d's blending abilities

* not needed anymore

* fix preview color and position

* forgot

* add proper icon loading
thanks steveice10 for bannertool which this was pretty much taken from

* only add proper themes to the list

* add slightly more space between the icon and the name

* not monospace, the little movement every blink is annoying

* fix typo
This commit is contained in:
LiquidFenrir
2017-08-31 13:55:00 +02:00
committed by Alex Taber
parent 9beae916b0
commit ebd2a9d6ae
14 changed files with 537 additions and 232 deletions

47
include/common.h Normal file
View File

@@ -0,0 +1,47 @@
/*
* This file is part of Anemone3DS
* Copyright (C) 2016-2017 Alex Taber ("astronautlevel"), Dawid Eckert ("daedreth")
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Additional Terms 7.b and 7.c of GPLv3 apply to this file:
* * Requiring preservation of specified reasonable legal notices or
* author attributions in that material or in the Appropriate Legal
* Notices displayed by works containing it.
* * Prohibiting misrepresentation of the origin of that material,
* or requiring that modified versions of such material be marked in
* reasonable ways as different from the original version.
*/
#ifndef COMMON_H
#define COMMON_H
#include <3ds.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define THEMES_PATH "/Themes/"
static const int THEMES_PER_SCREEN = 4;
enum TextureID {
TEXTURE_FONT_RESERVED = 0, //used by pp2d for the font
TEXTURE_ARROW,
TEXTURE_SHUFFLE,
MAX_TEXTURE,
};
#endif

37
include/draw.h Normal file
View File

@@ -0,0 +1,37 @@
/*
* This file is part of Anemone3DS
* Copyright (C) 2016-2017 Alex Taber ("astronautlevel"), Dawid Eckert ("daedreth")
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*
* Additional Terms 7.b and 7.c of GPLv3 apply to this file:
* * Requiring preservation of specified reasonable legal notices or
* author attributions in that material or in the Appropriate Legal
* Notices displayed by works containing it.
* * Prohibiting misrepresentation of the origin of that material,
* or requiring that modified versions of such material be marked in
* reasonable ways as different from the original version.
*/
#ifndef DRAW_H
#define DRAW_H
#include "themes.h"
void init_screens(void);
void exit_screens(void);
void draw_interface(Theme_s * themes_list, int theme_count, int selected_theme, bool preview_mode);
#endif

View File

@@ -27,7 +27,7 @@
#ifndef FS_H
#define FS_H
#include <3ds.h>
#include "common.h"
FS_Archive ArchiveSD;
FS_Archive ArchiveHomeExt;
@@ -35,9 +35,10 @@ FS_Archive ArchiveThemeExt;
Result open_archives(void);
Result close_archives(void);
int get_number_entries(char*);
u64 file_to_buf(FS_Path path, FS_Archive archive, char** buf);
u32 zip_file_to_buf(char *file_name, u16 *zip_path, char **buf);
u32 buf_to_file(u32 size, char *path, FS_Archive archive, char *buf);
void remake_file(char *path, FS_Archive archive, u32 size);

View File

@@ -27,26 +27,27 @@
#ifndef THEMES_H
#define THEMES_H
#include <3ds.h>
#define TEX_COUNT 3
#include "common.h"
typedef struct {
u16 name[0x40];
u16 desc[0x80];
u16 author[0x40];
char icon_data[0x1200];
u16 name[0x80];
u16 desc[0x100];
u16 author[0x80];
bool has_icon;
ssize_t icon_id;
bool has_preview;
ssize_t preview_id;
u16 path[262];
bool is_zip;
bool selected;
ssize_t preview_id;
bool has_preview;
char preview_path[0x106];
} theme;
bool in_shuffle;
} Theme_s;
void parse_smdh(theme *entry, u16 *path);
int scan_themes(theme **themes, int num_themes);
Result single_install(theme);
Result shuffle_install(theme **themes_list, int num_themes);
Result get_themes(Theme_s **themes_list, int *theme_count);
Result single_install(Theme_s theme);
Result shuffle_install(Theme_s *themes_list, int theme_count);
#endif

View File

@@ -27,7 +27,7 @@
#ifndef UNICODE_H
#define UNICODE_H
#include <3ds.h>
#include "common.h"
ssize_t strulen(u16*, ssize_t);
void struacat(u16 *input, const char *addition);