Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'source/blender/imbuf')
-rw-r--r--source/blender/imbuf/IMB_colormanagement.h1
-rw-r--r--source/blender/imbuf/intern/IMB_allocimbuf.h8
-rw-r--r--source/blender/imbuf/intern/IMB_colormanagement_intern.h8
-rw-r--r--source/blender/imbuf/intern/allocimbuf.c2
-rw-r--r--source/blender/imbuf/intern/anim_movie.c2
-rw-r--r--source/blender/imbuf/intern/cache.c4
-rw-r--r--source/blender/imbuf/intern/cineon/cineonlib.h4
-rw-r--r--source/blender/imbuf/intern/cineon/dpxlib.h4
-rw-r--r--source/blender/imbuf/intern/colormanagement.c17
-rw-r--r--source/blender/imbuf/intern/dds/dds_api.cpp6
-rw-r--r--source/blender/imbuf/intern/dds/dds_api.h4
-rw-r--r--source/blender/imbuf/intern/divers.c2
-rw-r--r--source/blender/imbuf/intern/imageprocess.c25
-rw-r--r--source/blender/imbuf/intern/oiio/openimageio_api.cpp2
-rw-r--r--source/blender/imbuf/intern/oiio/openimageio_api.h4
-rw-r--r--source/blender/imbuf/intern/openexr/openexr_api.cpp20
-rw-r--r--source/blender/imbuf/intern/openexr/openexr_api.h4
-rw-r--r--source/blender/imbuf/intern/png.c54
-rw-r--r--source/blender/imbuf/intern/thumbs.c105
19 files changed, 105 insertions, 171 deletions
diff --git a/source/blender/imbuf/IMB_colormanagement.h b/source/blender/imbuf/IMB_colormanagement.h
index 1639fb4715f..3158e3419b0 100644
--- a/source/blender/imbuf/IMB_colormanagement.h
+++ b/source/blender/imbuf/IMB_colormanagement.h
@@ -56,6 +56,7 @@ void IMB_colormanagement_validate_settings(
const char *IMB_colormanagement_role_colorspace_name_get(int role);
void IMB_colormanagement_check_is_data(struct ImBuf *ibuf, const char *name);
+void IMB_colormanagegent_copy_settings(struct ImBuf *ibuf_src, struct ImBuf *ibuf_dst);
void IMB_colormanagement_assign_float_colorspace(struct ImBuf *ibuf, const char *name);
void IMB_colormanagement_assign_rect_colorspace(struct ImBuf *ibuf, const char *name);
diff --git a/source/blender/imbuf/intern/IMB_allocimbuf.h b/source/blender/imbuf/intern/IMB_allocimbuf.h
index c252a9a63f8..9f89969cf1c 100644
--- a/source/blender/imbuf/intern/IMB_allocimbuf.h
+++ b/source/blender/imbuf/intern/IMB_allocimbuf.h
@@ -24,6 +24,10 @@
#ifndef __IMB_ALLOCIMBUF_H__
#define __IMB_ALLOCIMBUF_H__
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct ImBuf;
void imb_refcounter_lock_init(void);
@@ -44,4 +48,8 @@ void imb_mmap_unlock(void);
bool imb_addencodedbufferImBuf(struct ImBuf *ibuf);
bool imb_enlargeencodedbufferImBuf(struct ImBuf *ibuf);
+#ifdef __cplusplus
+}
+#endif
+
#endif
diff --git a/source/blender/imbuf/intern/IMB_colormanagement_intern.h b/source/blender/imbuf/intern/IMB_colormanagement_intern.h
index f0e599c1375..79abe8472b9 100644
--- a/source/blender/imbuf/intern/IMB_colormanagement_intern.h
+++ b/source/blender/imbuf/intern/IMB_colormanagement_intern.h
@@ -27,6 +27,10 @@
#include "BLI_sys_types.h"
#include "DNA_listBase.h"
+#ifdef __cplusplus
+extern "C" {
+#endif
+
struct ImBuf;
struct OCIO_ConstProcessorRcPtr;
@@ -123,4 +127,8 @@ void colorspace_set_default_role(char *colorspace, int size, int role);
void colormanage_imbuf_set_default_spaces(struct ImBuf *ibuf);
void colormanage_imbuf_make_linear(struct ImBuf *ibuf, const char *from_colorspace);
+#ifdef __cplusplus
+}
+#endif
+
#endif /* __IMB_COLORMANAGEMENT_INTERN_H__ */
diff --git a/source/blender/imbuf/intern/allocimbuf.c b/source/blender/imbuf/intern/allocimbuf.c
index 6c17254e697..4b3858e6d5a 100644
--- a/source/blender/imbuf/intern/allocimbuf.c
+++ b/source/blender/imbuf/intern/allocimbuf.c
@@ -380,7 +380,7 @@ void *imb_alloc_pixels(
}
size_t size = (size_t)x * (size_t)y * (size_t)channels * typesize;
- return MEM_mapallocN(size, name);
+ return MEM_callocN(size, name);
}
bool imb_addrectfloatImBuf(ImBuf *ibuf)
diff --git a/source/blender/imbuf/intern/anim_movie.c b/source/blender/imbuf/intern/anim_movie.c
index e9ac40de442..11b30a24cde 100644
--- a/source/blender/imbuf/intern/anim_movie.c
+++ b/source/blender/imbuf/intern/anim_movie.c
@@ -154,7 +154,7 @@ static int an_stringdec(const char *string, char *head, char *tail, unsigned sho
static void an_stringenc(
char *string, const char *head, const char *tail, unsigned short numlen, int pic)
{
- BLI_stringenc(string, head, tail, numlen, pic);
+ BLI_path_sequence_encode(string, head, tail, numlen, pic);
}
#ifdef WITH_AVI
diff --git a/source/blender/imbuf/intern/cache.c b/source/blender/imbuf/intern/cache.c
index 176b41d2706..23ce9bd7818 100644
--- a/source/blender/imbuf/intern/cache.c
+++ b/source/blender/imbuf/intern/cache.c
@@ -427,8 +427,8 @@ void IMB_tiles_to_rect(ImBuf *ibuf)
/* don't call imb_addrectImBuf, it frees all mipmaps */
if (!mipbuf->rect) {
- if ((mipbuf->rect = MEM_mapallocN(ibuf->x * ibuf->y * sizeof(unsigned int),
- "imb_addrectImBuf"))) {
+ if ((mipbuf->rect = MEM_callocN(ibuf->x * ibuf->y * sizeof(unsigned int),
+ "imb_addrectImBuf"))) {
mipbuf->mall |= IB_rect;
mipbuf->flags |= IB_rect;
}
diff --git a/source/blender/imbuf/intern/cineon/cineonlib.h b/source/blender/imbuf/intern/cineon/cineonlib.h
index 461407fcf25..040435e44ee 100644
--- a/source/blender/imbuf/intern/cineon/cineonlib.h
+++ b/source/blender/imbuf/intern/cineon/cineonlib.h
@@ -26,12 +26,12 @@
#ifndef __CINEONLIB_H__
#define __CINEONLIB_H__
+#include "logImageCore.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-#include "logImageCore.h"
-
#define CINEON_FILE_MAGIC 0x802A5FD7
#define CINEON_UNDEFINED_U8 0xFF
#define CINEON_UNDEFINED_U16 0xFFFF
diff --git a/source/blender/imbuf/intern/cineon/dpxlib.h b/source/blender/imbuf/intern/cineon/dpxlib.h
index bf07b8e329d..3a7ebe9dddf 100644
--- a/source/blender/imbuf/intern/cineon/dpxlib.h
+++ b/source/blender/imbuf/intern/cineon/dpxlib.h
@@ -25,12 +25,12 @@
#ifndef __DPXLIB_H__
#define __DPXLIB_H__
+#include "logImageCore.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-#include "logImageCore.h"
-
#define DPX_FILE_MAGIC 0x53445058
#define DPX_UNDEFINED_U8 0xFF
#define DPX_UNDEFINED_U16 0xFFFF
diff --git a/source/blender/imbuf/intern/colormanagement.c b/source/blender/imbuf/intern/colormanagement.c
index c57ab70f4e6..3f5a0f25cc5 100644
--- a/source/blender/imbuf/intern/colormanagement.c
+++ b/source/blender/imbuf/intern/colormanagement.c
@@ -1349,6 +1349,23 @@ void IMB_colormanagement_check_is_data(ImBuf *ibuf, const char *name)
}
}
+void IMB_colormanagegent_copy_settings(ImBuf *ibuf_src, ImBuf *ibuf_dst)
+{
+ IMB_colormanagement_assign_rect_colorspace(ibuf_dst,
+ IMB_colormanagement_get_rect_colorspace(ibuf_src));
+ IMB_colormanagement_assign_float_colorspace(ibuf_dst,
+ IMB_colormanagement_get_float_colorspace(ibuf_src));
+ if (ibuf_src->flags & IB_alphamode_premul) {
+ ibuf_dst->flags |= IB_alphamode_premul;
+ }
+ else if (ibuf_src->flags & IB_alphamode_channel_packed) {
+ ibuf_dst->flags |= IB_alphamode_channel_packed;
+ }
+ else if (ibuf_src->flags & IB_alphamode_ignore) {
+ ibuf_dst->flags |= IB_alphamode_ignore;
+ }
+}
+
void IMB_colormanagement_assign_float_colorspace(ImBuf *ibuf, const char *name)
{
ColorSpace *colorspace = colormanage_colorspace_get_named(name);
diff --git a/source/blender/imbuf/intern/dds/dds_api.cpp b/source/blender/imbuf/intern/dds/dds_api.cpp
index 832b380bbc2..83d304203a0 100644
--- a/source/blender/imbuf/intern/dds/dds_api.cpp
+++ b/source/blender/imbuf/intern/dds/dds_api.cpp
@@ -18,9 +18,7 @@
* \ingroup imbdds
*/
-extern "C" {
#include "BLI_utildefines.h"
-}
#include <DirectDrawSurface.h>
#include <FlipDXT.h>
@@ -34,8 +32,6 @@ extern "C" {
# include "utfconv.h"
#endif
-extern "C" {
-
#include "IMB_allocimbuf.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
@@ -44,6 +40,8 @@ extern "C" {
#include "IMB_colormanagement.h"
#include "IMB_colormanagement_intern.h"
+extern "C" {
+
int imb_save_dds(struct ImBuf *ibuf, const char *name, int /*flags*/)
{
return (0); /* todo: finish this function */
diff --git a/source/blender/imbuf/intern/dds/dds_api.h b/source/blender/imbuf/intern/dds/dds_api.h
index 12db8aa6416..e6782e217fc 100644
--- a/source/blender/imbuf/intern/dds/dds_api.h
+++ b/source/blender/imbuf/intern/dds/dds_api.h
@@ -21,12 +21,12 @@
#ifndef __DDS_API_H__
#define __DDS_API_H__
+#include "../../IMB_imbuf.h"
+
#ifdef __cplusplus
extern "C" {
#endif
-#include "../../IMB_imbuf.h"
-
int imb_is_a_dds(const unsigned char *mem); /* use only first 32 bytes of mem */
int imb_save_dds(struct ImBuf *ibuf, const char *name, int flags);
struct ImBuf *imb_load_dds(const unsigned char *mem,
diff --git a/source/blender/imbuf/intern/divers.c b/source/blender/imbuf/intern/divers.c
index e068a84aab0..bcc8488089d 100644
--- a/source/blender/imbuf/intern/divers.c
+++ b/source/blender/imbuf/intern/divers.c
@@ -788,7 +788,7 @@ void IMB_float_from_rect(ImBuf *ibuf)
size = size * 4 * sizeof(float);
ibuf->channels = 4;
- rect_float = MEM_mapallocN(size, "IMB_float_from_rect");
+ rect_float = MEM_callocN(size, "IMB_float_from_rect");
if (rect_float == NULL) {
return;
diff --git a/source/blender/imbuf/intern/imageprocess.c b/source/blender/imbuf/intern/imageprocess.c
index 523b57cc162..7ebbd1a7409 100644
--- a/source/blender/imbuf/intern/imageprocess.c
+++ b/source/blender/imbuf/intern/imageprocess.c
@@ -338,9 +338,9 @@ void nearest_interpolation(ImBuf *in, ImBuf *out, float x, float y, int xout, in
/*********************** Threaded image processing *************************/
-static void processor_apply_func(TaskPool *__restrict pool, void *taskdata, int UNUSED(threadid))
+static void processor_apply_func(TaskPool *__restrict pool, void *taskdata)
{
- void (*do_thread)(void *) = (void (*)(void *))BLI_task_pool_userdata(pool);
+ void (*do_thread)(void *) = (void (*)(void *))BLI_task_pool_user_data(pool);
do_thread(taskdata);
}
@@ -353,14 +353,13 @@ void IMB_processor_apply_threaded(
{
const int lines_per_task = 64;
- TaskScheduler *task_scheduler = BLI_task_scheduler_get();
TaskPool *task_pool;
void *handles;
int total_tasks = (buffer_lines + lines_per_task - 1) / lines_per_task;
int i, start_line;
- task_pool = BLI_task_pool_create(task_scheduler, do_thread);
+ task_pool = BLI_task_pool_create(do_thread, TASK_PRIORITY_LOW);
handles = MEM_callocN(handle_size * total_tasks, "processor apply threaded handles");
@@ -379,7 +378,7 @@ void IMB_processor_apply_threaded(
init_handle(handle, start_line, lines_per_current_task, init_customdata);
- BLI_task_pool_push(task_pool, processor_apply_func, handle, false, TASK_PRIORITY_LOW);
+ BLI_task_pool_push(task_pool, processor_apply_func, handle, false, NULL);
start_line += lines_per_task;
}
@@ -399,11 +398,9 @@ typedef struct ScanlineGlobalData {
int total_scanlines;
} ScanlineGlobalData;
-static void processor_apply_scanline_func(TaskPool *__restrict pool,
- void *taskdata,
- int UNUSED(threadid))
+static void processor_apply_scanline_func(TaskPool *__restrict pool, void *taskdata)
{
- ScanlineGlobalData *data = BLI_task_pool_userdata(pool);
+ ScanlineGlobalData *data = BLI_task_pool_user_data(pool);
int start_scanline = POINTER_AS_INT(taskdata);
int num_scanlines = min_ii(data->scanlines_per_task, data->total_scanlines - start_scanline);
data->do_thread(data->custom_data, start_scanline, num_scanlines);
@@ -420,14 +417,10 @@ void IMB_processor_apply_threaded_scanlines(int total_scanlines,
data.scanlines_per_task = scanlines_per_task;
data.total_scanlines = total_scanlines;
const int total_tasks = (total_scanlines + scanlines_per_task - 1) / scanlines_per_task;
- TaskScheduler *task_scheduler = BLI_task_scheduler_get();
- TaskPool *task_pool = BLI_task_pool_create(task_scheduler, &data);
+ TaskPool *task_pool = BLI_task_pool_create(&data, TASK_PRIORITY_LOW);
for (int i = 0, start_line = 0; i < total_tasks; i++) {
- BLI_task_pool_push(task_pool,
- processor_apply_scanline_func,
- POINTER_FROM_INT(start_line),
- false,
- TASK_PRIORITY_LOW);
+ BLI_task_pool_push(
+ task_pool, processor_apply_scanline_func, POINTER_FROM_INT(start_line), false, NULL);
start_line += scanlines_per_task;
}
diff --git a/source/blender/imbuf/intern/oiio/openimageio_api.cpp b/source/blender/imbuf/intern/oiio/openimageio_api.cpp
index 6d3234771e7..df51aada5f0 100644
--- a/source/blender/imbuf/intern/oiio/openimageio_api.cpp
+++ b/source/blender/imbuf/intern/oiio/openimageio_api.cpp
@@ -35,7 +35,6 @@
#include "MEM_guardedalloc.h"
-extern "C" {
#include "BLI_blenlib.h"
#include "IMB_allocimbuf.h"
@@ -43,7 +42,6 @@ extern "C" {
#include "IMB_colormanagement_intern.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
-}
OIIO_NAMESPACE_USING
diff --git a/source/blender/imbuf/intern/oiio/openimageio_api.h b/source/blender/imbuf/intern/oiio/openimageio_api.h
index 520ad0c5da5..3dd089d65cb 100644
--- a/source/blender/imbuf/intern/oiio/openimageio_api.h
+++ b/source/blender/imbuf/intern/oiio/openimageio_api.h
@@ -24,12 +24,12 @@
#ifndef __OPENIMAGEIO_API_H__
#define __OPENIMAGEIO_API_H__
+#include <stdio.h>
+
#ifdef __cplusplus
extern "C" {
#endif
-#include <stdio.h>
-
struct ImBuf;
int imb_is_a_photoshop(const char *name);
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.cpp b/source/blender/imbuf/intern/openexr/openexr_api.cpp
index 8f001c9031f..882808cbc14 100644
--- a/source/blender/imbuf/intern/openexr/openexr_api.cpp
+++ b/source/blender/imbuf/intern/openexr/openexr_api.cpp
@@ -75,7 +75,7 @@ _CRTIMP void __cdecl _invalid_parameter_noinfo(void)
{
}
#endif
-
+}
#include "BLI_blenlib.h"
#include "BLI_math_color.h"
#include "BLI_threads.h"
@@ -84,17 +84,13 @@ _CRTIMP void __cdecl _invalid_parameter_noinfo(void)
#include "BKE_image.h"
#include "IMB_allocimbuf.h"
+#include "IMB_colormanagement.h"
+#include "IMB_colormanagement_intern.h"
#include "IMB_imbuf.h"
#include "IMB_imbuf_types.h"
#include "IMB_metadata.h"
#include "openexr_multi.h"
-}
-
-extern "C" {
-#include "IMB_colormanagement.h"
-#include "IMB_colormanagement_intern.h"
-}
using namespace Imf;
using namespace Imath;
@@ -1602,8 +1598,8 @@ static ExrHandle *imb_exr_begin_read_mem(IStream &file_stream,
for (lay = (ExrLayer *)data->layers.first; lay; lay = lay->next) {
for (pass = (ExrPass *)lay->passes.first; pass; pass = pass->next) {
if (pass->totchan) {
- pass->rect = (float *)MEM_mapallocN(width * height * pass->totchan * sizeof(float),
- "pass rect");
+ pass->rect = (float *)MEM_callocN(width * height * pass->totchan * sizeof(float),
+ "pass rect");
if (pass->totchan == 1) {
echan = pass->chan[0];
echan->rect = pass->rect;
@@ -1938,12 +1934,12 @@ struct ImBuf *imb_load_openexr(const unsigned char *mem,
IMB_metadata_ensure(&ibuf->metadata);
for (iter = header.begin(); iter != header.end(); iter++) {
- const StringAttribute *attrib = file->header(0).findTypedAttribute<StringAttribute>(
+ const StringAttribute *attr = file->header(0).findTypedAttribute<StringAttribute>(
iter.name());
/* not all attributes are string attributes so we might get some NULLs here */
- if (attrib) {
- IMB_metadata_set_field(ibuf->metadata, iter.name(), attrib->value().c_str());
+ if (attr) {
+ IMB_metadata_set_field(ibuf->metadata, iter.name(), attr->value().c_str());
ibuf->flags |= IB_metadata;
}
}
diff --git a/source/blender/imbuf/intern/openexr/openexr_api.h b/source/blender/imbuf/intern/openexr/openexr_api.h
index df03d0d205f..b0835e5082e 100644
--- a/source/blender/imbuf/intern/openexr/openexr_api.h
+++ b/source/blender/imbuf/intern/openexr/openexr_api.h
@@ -24,12 +24,12 @@
#ifndef __OPENEXR_API_H__
#define __OPENEXR_API_H__
+#include <stdio.h>
+
#ifdef __cplusplus
extern "C" {
#endif
-#include <stdio.h>
-
void imb_initopenexr(void);
void imb_exitopenexr(void);
diff --git a/source/blender/imbuf/intern/png.c b/source/blender/imbuf/intern/png.c
index d6d185ef59b..9e600f363c5 100644
--- a/source/blender/imbuf/intern/png.c
+++ b/source/blender/imbuf/intern/png.c
@@ -177,12 +177,6 @@ int imb_savepng(struct ImBuf *ibuf, const char *name, int flags)
return 0;
}
- if (setjmp(png_jmpbuf(png_ptr))) {
- png_destroy_write_struct(&png_ptr, &info_ptr);
- printf("imb_savepng: Cannot setjmp for file: '%s'\n", name);
- return 0;
- }
-
/* copy image data */
num_bytes = ((size_t)ibuf->x) * ibuf->y * bytesperpixel;
if (is_16bit) {
@@ -191,15 +185,39 @@ int imb_savepng(struct ImBuf *ibuf, const char *name, int flags)
else {
pixels = MEM_mallocN(num_bytes * sizeof(unsigned char), "png 8bit pixels");
}
-
if (pixels == NULL && pixels16 == NULL) {
- png_destroy_write_struct(&png_ptr, &info_ptr);
printf(
- "imb_savepng: Cannot allocate pixels array of %dx%d, %d bytes per pixel for file: '%s'\n",
+ "imb_savepng: Cannot allocate pixels array of %dx%d, %d bytes per pixel for file: "
+ "'%s'\n",
ibuf->x,
ibuf->y,
bytesperpixel,
name);
+ }
+
+ /* allocate memory for an array of row-pointers */
+ row_pointers = (png_bytepp)MEM_mallocN(ibuf->y * sizeof(png_bytep), "row_pointers");
+ if (row_pointers == NULL) {
+ printf("imb_savepng: Cannot allocate row-pointers array for file '%s'\n", name);
+ }
+
+ if ((pixels == NULL && pixels16 == NULL) || (row_pointers == NULL) ||
+ setjmp(png_jmpbuf(png_ptr))) {
+ /* On error jump here, and free any resources. */
+ png_destroy_write_struct(&png_ptr, &info_ptr);
+ if (pixels) {
+ MEM_freeN(pixels);
+ }
+ if (pixels16) {
+ MEM_freeN(pixels16);
+ }
+ if (row_pointers) {
+ MEM_freeN(row_pointers);
+ }
+ if (fp) {
+ fflush(fp);
+ fclose(fp);
+ }
return 0;
}
@@ -457,23 +475,6 @@ int imb_savepng(struct ImBuf *ibuf, const char *name, int flags)
png_set_swap(png_ptr);
#endif
- /* allocate memory for an array of row-pointers */
- row_pointers = (png_bytepp)MEM_mallocN(ibuf->y * sizeof(png_bytep), "row_pointers");
- if (row_pointers == NULL) {
- printf("imb_savepng: Cannot allocate row-pointers array for file '%s'\n", name);
- png_destroy_write_struct(&png_ptr, &info_ptr);
- if (pixels) {
- MEM_freeN(pixels);
- }
- if (pixels16) {
- MEM_freeN(pixels16);
- }
- if (fp) {
- fclose(fp);
- }
- return 0;
- }
-
/* set the individual row-pointers to point at the correct offsets */
if (is_16bit) {
for (i = 0; i < ibuf->y; i++) {
@@ -576,6 +577,7 @@ ImBuf *imb_loadpng(const unsigned char *mem, size_t size, int flags, char colors
png_set_read_fn(png_ptr, (void *)&ps, ReadData);
if (setjmp(png_jmpbuf(png_ptr))) {
+ /* On error jump here, and free any resources. */
png_destroy_read_struct(&png_ptr, &info_ptr, (png_infopp)NULL);
if (pixels) {
MEM_freeN(pixels);
diff --git a/source/blender/imbuf/intern/thumbs.c b/source/blender/imbuf/intern/thumbs.c
index 195a2e9fe9c..17b619d451c 100644
--- a/source/blender/imbuf/intern/thumbs.c
+++ b/source/blender/imbuf/intern/thumbs.c
@@ -151,111 +151,24 @@ typedef enum {
UNSAFE_SLASHES = 0x20, /* Allows all characters except for '/' and '%' */
} UnsafeCharacterSet;
+/* Don't loose comment alignment. */
+/* clang-format off */
static const unsigned char acceptable[96] = {
/* A table of the ASCII chars from space (32) to DEL (127) */
/* ! " # $ % & ' ( ) * + , - . / */
- 0x00,
- 0x3F,
- 0x20,
- 0x20,
- 0x28,
- 0x00,
- 0x2C,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x2A,
- 0x28,
- 0x3F,
- 0x3F,
- 0x1C,
+ 0x00,0x3F,0x20,0x20,0x28,0x00,0x2C,0x3F,0x3F,0x3F,0x3F,0x2A,0x28,0x3F,0x3F,0x1C,
/* 0 1 2 3 4 5 6 7 8 9 : ; < = > ? */
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x38,
- 0x20,
- 0x20,
- 0x2C,
- 0x20,
- 0x20,
+ 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x38,0x20,0x20,0x2C,0x20,0x20,
/* @ A B C D E F G H I J K L M N O */
- 0x38,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
+ 0x38,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
/* P Q R S T U V W X Y Z [ \ ] ^ _ */
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x20,
- 0x20,
- 0x20,
- 0x20,
- 0x3F,
+ 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x20,0x3F,
/* ` a b c d e f g h i j k l m n o */
- 0x20,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
+ 0x20,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,
/* p q r s t u v w x y z { | } ~ DEL */
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x3F,
- 0x20,
- 0x20,
- 0x20,
- 0x3F,
- 0x20,
+ 0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x3F,0x20,0x20,0x20,0x3F,0x20,
};
+/* clang-format on */
static const char hex[17] = "0123456789abcdef";