Cleanup: add trailing commas
[blender.git] / source / blender / imbuf / intern / thumbs_font.c
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
4  * This program is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU General Public License
6  * as published by the Free Software Foundation; either version 2
7  * of the License, or (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program; if not, write to the Free Software Foundation,
16  * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17  *
18  * Contributor(s): Thomas Beck.
19  *
20  * ***** END GPL LICENSE BLOCK *****
21  */
22
23 /** \file blender/imbuf/intern/thumbs_font.c
24  *  \ingroup imbuf
25  */
26
27 #include "BLI_utildefines.h"
28 #include "BLI_string.h"
29 #include "BLI_fileops.h"
30 #include "BLI_hash_md5.h"
31
32 #include "IMB_imbuf_types.h"
33 #include "IMB_imbuf.h"
34
35 #include "IMB_thumbs.h"
36
37
38 /* XXX, bad level call */
39 #include "../../blenfont/BLF_api.h"
40 #include "../../blentranslation/BLT_translation.h"
41
42 static const char *thumb_str[] = {
43     N_("AaBbCc"),
44
45     N_("The quick"),
46     N_("brown fox"),
47     N_("jumps over"),
48     N_("the lazy dog"),
49 };
50
51 struct ImBuf *IMB_thumb_load_font(const char *filename, unsigned int x, unsigned int y)
52 {
53         const int font_size = y / 4;
54
55         struct ImBuf *ibuf;
56         float font_color[4];
57
58         /* create a white image (theme color is used for drawing) */
59         font_color[0] = font_color[1] = font_color[2] = 1.0f;
60
61         /* fill with zero alpha */
62         font_color[3] = 0.0f;
63
64         ibuf = IMB_allocImBuf(x, y, 32, IB_rect | IB_metadata);
65         IMB_rectfill(ibuf, font_color);
66
67         /* draw with full alpha */
68         font_color[3] = 1.0f;
69
70         BLF_thumb_preview(
71                 filename, thumb_str, ARRAY_SIZE(thumb_str),
72                 font_color, font_size,
73                 (unsigned char *)ibuf->rect, ibuf->x, ibuf->y, ibuf->channels);
74
75         return ibuf;
76 }
77
78 bool IMB_thumb_load_font_get_hash(char *r_hash)
79 {
80         char buf[1024];
81         char *str = buf;
82         size_t len = 0;
83
84         int draw_str_lines = ARRAY_SIZE(thumb_str);
85         int i;
86
87         unsigned char digest[16];
88
89         len += BLI_strncpy_rlen(str + len, THUMB_DEFAULT_HASH, sizeof(buf) - len);
90
91         for (i = 0; (i < draw_str_lines) && (len < sizeof(buf)); i++) {
92                 len += BLI_strncpy_rlen(str + len, BLT_translate_do(BLT_I18NCONTEXT_DEFAULT, thumb_str[i]), sizeof(buf) - len);
93         }
94
95         BLI_hash_md5_buffer(str, len, digest);
96         r_hash[0] = '\0';
97         BLI_hash_md5_to_hexdigest(digest, r_hash);
98
99         return true;
100 }