diff --git a/griffin/griffin.c b/griffin/griffin.c index 8a5f02c6c9..58a204298c 100644 --- a/griffin/griffin.c +++ b/griffin/griffin.c @@ -1352,7 +1352,6 @@ XML #include "../deps/miniupnpc/minisoap.c" #endif - /*============================================================ HTTP SERVER ============================================================ */ diff --git a/translation/drivers_ocr/ocr_tesseract.c b/translation/drivers_ocr/ocr_tesseract.c index 7623c6523b..b29f9bb5cd 100644 --- a/translation/drivers_ocr/ocr_tesseract.c +++ b/translation/drivers_ocr/ocr_tesseract.c @@ -5,37 +5,36 @@ static void* ocr_tesseract_init(int game_character_set) { - const char* tess_char_set = NULL; - switch (game_character_set) - { - case RETRO_LANGUAGE_JAPANESE: - tess_char_set = "jpn"; - break; - - case RETRO_LANGUAGE_ENGLISH: - tess_char_set = "eng"; - break; - - case RETRO_LANGUAGE_SPANISH: - tess_char_set = "spa"; - break; - } - - if (!tess_char_set) - return NULL; - - char* lang_data_dir = NULL; - - /* TODO: get lang data from system dir */ - - bool pass = tess_init(lang_data_dir, tess_char_set); - if (pass) - { - /* data is unused by tesseract */ - return (void*)32; - } - - return NULL; + bool pass = false; + char* lang_data_dir = NULL; + const char* tess_char_set = NULL; + + switch (game_character_set) + { + case RETRO_LANGUAGE_JAPANESE: + tess_char_set = "jpn"; + break; + + case RETRO_LANGUAGE_ENGLISH: + tess_char_set = "eng"; + break; + + case RETRO_LANGUAGE_SPANISH: + tess_char_set = "spa"; + break; + } + + if (!tess_char_set) + return NULL; + + /* TODO: get lang data from system dir */ + pass = tess_init(lang_data_dir, tess_char_set); + + /* data is unused by tesseract */ + if (pass) + return (void*)32; + + return NULL; } static void ocr_tesseract_free(void* data) @@ -74,4 +73,4 @@ const ocr_driver_t ocr_tesseract = { ocr_tesseract_free, ocr_tesseract_get_text, "tesseract" -}; \ No newline at end of file +}; diff --git a/translation/drivers_ocr/tesseract/wrapper/tess_get_text.cpp b/translation/drivers_ocr/tesseract/wrapper/tess_get_text.cpp index 9b18083daa..b5469f7dd0 100644 --- a/translation/drivers_ocr/tesseract/wrapper/tess_get_text.cpp +++ b/translation/drivers_ocr/tesseract/wrapper/tess_get_text.cpp @@ -1,3 +1,4 @@ +#include #include #include "tess_get_text.h" @@ -8,38 +9,37 @@ static char* one_time_return_pointer = NULL; char tess_last_error[ERROR_BUFFER_LENGTH]; -bool tess_init(const char* lang_data_dir, const char* language) +bool tess_init(const char* lang_data_dir, const char* language) { - api = new tesseract::TessBaseAPI(); - snprintf(tess_last_error, ERROR_BUFFER_LENGTH, "No errors!\n"); + api = new tesseract::TessBaseAPI(); - if (api->Init(lang_data_dir, language)) { - snprintf(tess_last_error, ERROR_BUFFER_LENGTH, "Could not initialize tesseract.\n"); - return false; - } + snprintf(tess_last_error, ERROR_BUFFER_LENGTH, "No errors!\n"); + + if (api->Init(lang_data_dir, language)) + { + snprintf(tess_last_error, ERROR_BUFFER_LENGTH, "Could not initialize tesseract.\n"); + return false; + } + + return true; } -void tess_deinit() +void tess_deinit(void) { - if (one_time_return_pointer) - { - delete [] one_time_return_pointer; - } - - if (api) - { - api->End(); - } + if (one_time_return_pointer) + delete [] one_time_return_pointer; + + if (api) + api->End(); } char* tess_get_text(tess_image image) { - if (one_time_return_pointer) - { - delete [] one_time_return_pointer; - } - - api->SetImage(image.data, image.width, image.height, image.bytes_per_pixel, image.width * image.bytes_per_pixel/*bytes per line*/); - one_time_return_pointer = api->GetUTF8Text(); - return one_time_return_pointer; -} \ No newline at end of file + if (one_time_return_pointer) + delete [] one_time_return_pointer; + + api->SetImage(image.data, image.width, image.height, + image.bytes_per_pixel, image.width * image.bytes_per_pixel/*bytes per line*/); + one_time_return_pointer = api->GetUTF8Text(); + return one_time_return_pointer; +} diff --git a/translation/drivers_ocr/tesseract/wrapper/tess_get_text.h b/translation/drivers_ocr/tesseract/wrapper/tess_get_text.h index ee2358ff76..22410185ec 100644 --- a/translation/drivers_ocr/tesseract/wrapper/tess_get_text.h +++ b/translation/drivers_ocr/tesseract/wrapper/tess_get_text.h @@ -1,27 +1,26 @@ #ifndef TESS_GET_TEXT #define TESS_GET_TEXT -#ifdef __cplusplus -extern "C" { -#endif +#include +#include -typedef struct { - unsigned width; - unsigned height; - unsigned bytes_per_pixel; - void* data; -}tess_image; +RETRO_BEGIN_DECLS + +typedef struct +{ + unsigned width; + unsigned height; + unsigned bytes_per_pixel; + void* data; +} tess_image; + +/* if running in RetroArch language should be "eng" or "jpn" */ +bool tess_init(const char* lang_data_dir, const char* language); +void tess_deinit(void); +char* tess_get_text(tess_image image); extern char tess_last_error[]; -//if running in RetroArch language should be "eng" or "jpn" -bool tess_init(const char* lang_data_dir, const char* language); -void tess_deinit(); -char* tess_get_text(tess_image image); +RETRO_END_DECLS -#ifdef __cplusplus -} #endif - - -#endif \ No newline at end of file diff --git a/translation/translation_driver.c b/translation/translation_driver.c index 9c46b99b0a..9ab3eb32b1 100644 --- a/translation/translation_driver.c +++ b/translation/translation_driver.c @@ -13,8 +13,8 @@ static const translation_driver_t *translation_backends[] = { static const translation_driver_t *current_translation_backend = NULL; static void *translation_data = NULL; - -static const translation_driver_t *translation_find_backend(const char* ident) +static const translation_driver_t *translation_find_backend( + const char* ident) { unsigned i; @@ -30,7 +30,12 @@ static const translation_driver_t *translation_find_backend(const char* ident) bool translation_driver_init(void) { settings_t *settings = config_get_ptr(); - current_translation_backend = translation_find_backend(settings->arrays.translation_driver); + + if (!settings) + return false; + + current_translation_backend = translation_find_backend( + settings->arrays.translation_driver); translation_data = NULL; if (current_translation_backend) @@ -40,19 +45,23 @@ bool translation_driver_init(void) void translation_driver_free(void) { - if (current_translation_backend && translation_data) - (*current_translation_backend->free)(translation_data); + if (current_translation_backend && translation_data) + (*current_translation_backend->free)(translation_data); } char* translation_driver_translate_image(struct ocr_image_info image) { - char* translated_text = NULL; - if (current_translation_backend && translation_data) - { - if (current_translation_backend->translate_image) - translated_text = (*current_translation_backend->translate_image)(translation_data, image); - else - translated_text = (*current_translation_backend->translate_text)(translation_data, ocr_driver_get_text(image)); - } - return translated_text; -} \ No newline at end of file + char* translated_text = NULL; + + if (current_translation_backend && translation_data) + { + if (current_translation_backend->translate_image) + translated_text = (*current_translation_backend->translate_image) + (translation_data, image); + else + translated_text = (*current_translation_backend->translate_text) + (translation_data, ocr_driver_get_text(image)); + } + + return translated_text; +}