tesseract 3.04.01

api/capi.cpp

Go to the documentation of this file.
00001 #ifndef TESS_CAPI_INCLUDE_BASEAPI
00002 #   define TESS_CAPI_INCLUDE_BASEAPI
00003 #endif
00004 #include "capi.h"
00005 #include "genericvector.h"
00006 #include "strngs.h"
00007 
00008 TESS_API const char* TESS_CALL TessVersion()
00009 {
00010     return TessBaseAPI::Version();
00011 }
00012 
00013 TESS_API void TESS_CALL TessDeleteText(char* text)
00014 {
00015     delete [] text;
00016 }
00017 
00018 TESS_API void TESS_CALL TessDeleteTextArray(char** arr)
00019 {
00020     for (char** pos = arr; *pos != NULL; ++pos)
00021         delete [] *pos;
00022     delete [] arr;
00023 }
00024 
00025 TESS_API void TESS_CALL TessDeleteIntArray(int* arr)
00026 {
00027     delete [] arr;
00028 }
00029 
00030 TESS_API void TESS_CALL TessDeleteBlockList(BLOCK_LIST* block_list)
00031 {
00032     TessBaseAPI::DeleteBlockList(block_list);
00033 }
00034 
00035 TESS_API TessResultRenderer* TESS_CALL TessTextRendererCreate(const char* outputbase)
00036 {
00037     return new TessTextRenderer(outputbase);
00038 }
00039 
00040 TESS_API TessResultRenderer* TESS_CALL TessHOcrRendererCreate(const char* outputbase)
00041 {
00042     return new TessHOcrRenderer(outputbase);
00043 }
00044 
00045 TESS_API TessResultRenderer* TESS_CALL TessHOcrRendererCreate2(const char* outputbase, BOOL font_info)
00046 {
00047     return new TessHOcrRenderer(outputbase, font_info);
00048 }
00049 
00050 TESS_API TessResultRenderer* TESS_CALL TessPDFRendererCreate(const char* outputbase, const char* datadir)
00051 {
00052     return new TessPDFRenderer(outputbase, datadir);
00053 }
00054 
00055 TESS_API TessResultRenderer* TESS_CALL TessUnlvRendererCreate(const char* outputbase)
00056 {
00057     return new TessUnlvRenderer(outputbase);
00058 }
00059 
00060 TESS_API TessResultRenderer* TESS_CALL TessBoxTextRendererCreate(const char* outputbase)
00061 {
00062     return new TessBoxTextRenderer(outputbase);
00063 }
00064 
00065 TESS_API void TESS_CALL TessDeleteResultRenderer(TessResultRenderer* renderer)
00066 {
00067     delete renderer;
00068 }
00069 
00070 TESS_API void TESS_CALL TessResultRendererInsert(TessResultRenderer* renderer, TessResultRenderer* next)
00071 {
00072     renderer->insert(next);
00073 }
00074 
00075 TESS_API TessResultRenderer* TESS_CALL TessResultRendererNext(TessResultRenderer* renderer)
00076 {
00077     return renderer->next();
00078 }
00079 
00080 TESS_API BOOL TESS_CALL TessResultRendererBeginDocument(TessResultRenderer* renderer, const char* title)
00081 {
00082     return renderer->BeginDocument(title);
00083 }
00084 
00085 TESS_API BOOL TESS_CALL TessResultRendererAddImage(TessResultRenderer* renderer, TessBaseAPI* api)
00086 {
00087     return renderer->AddImage(api);
00088 }
00089 
00090 TESS_API BOOL TESS_CALL TessResultRendererEndDocument(TessResultRenderer* renderer)
00091 {
00092     return renderer->EndDocument();
00093 }
00094 
00095 TESS_API const char* TESS_CALL TessResultRendererExtention(TessResultRenderer* renderer)
00096 {
00097     return renderer->file_extension();
00098 }
00099 
00100 TESS_API const char* TESS_CALL TessResultRendererTitle(TessResultRenderer* renderer)
00101 {
00102     return renderer->title();
00103 }
00104 
00105 TESS_API int TESS_CALL TessResultRendererImageNum(TessResultRenderer* renderer)
00106 {
00107     return renderer->imagenum();
00108 }
00109 
00110 TESS_API TessBaseAPI* TESS_CALL TessBaseAPICreate()
00111 {
00112     return new TessBaseAPI;
00113 }
00114 
00115 TESS_API void TESS_CALL TessBaseAPIDelete(TessBaseAPI* handle)
00116 {
00117     delete handle;
00118 }
00119 
00120 TESS_API size_t TESS_CALL TessBaseAPIGetOpenCLDevice(TessBaseAPI* handle, void **device)
00121 {
00122     return handle->getOpenCLDevice(device);
00123 }
00124 
00125 TESS_API void TESS_CALL TessBaseAPISetInputName(TessBaseAPI* handle, const char* name)
00126 {
00127     handle->SetInputName(name);
00128 }
00129 
00130 TESS_API const char* TESS_CALL TessBaseAPIGetInputName(TessBaseAPI* handle)
00131 {
00132     return handle->GetInputName();
00133 }
00134 
00135 TESS_API void TESS_CALL TessBaseAPISetInputImage(TessBaseAPI* handle, Pix* pix)
00136 {
00137     handle->SetInputImage(pix);
00138 }
00139 
00140 TESS_API Pix* TESS_CALL TessBaseAPIGetInputImage(TessBaseAPI* handle)
00141 {
00142     return handle->GetInputImage();
00143 }
00144 
00145 TESS_API int TESS_CALL TessBaseAPIGetSourceYResolution(TessBaseAPI* handle)
00146 {
00147     return handle->GetSourceYResolution();
00148 }
00149 
00150 TESS_API const char* TESS_CALL TessBaseAPIGetDatapath(TessBaseAPI* handle)
00151 {
00152     return handle->GetDatapath();
00153 }
00154 
00155 TESS_API void TESS_CALL TessBaseAPISetOutputName(TessBaseAPI* handle, const char* name)
00156 {
00157     handle->SetOutputName(name);
00158 }
00159 
00160 TESS_API BOOL TESS_CALL TessBaseAPISetVariable(TessBaseAPI* handle, const char* name, const char* value)
00161 {
00162     return handle->SetVariable(name, value) ? TRUE : FALSE;
00163 }
00164 
00165 TESS_API BOOL TESS_CALL TessBaseAPISetDebugVariable(TessBaseAPI* handle, const char* name, const char* value)
00166 {
00167     return handle->SetVariable(name, value) ? TRUE : FALSE;
00168 }
00169 
00170 TESS_API BOOL TESS_CALL TessBaseAPIGetIntVariable(const TessBaseAPI* handle, const char* name, int* value)
00171 {
00172     return handle->GetIntVariable(name, value) ? TRUE : FALSE;
00173 }
00174 
00175 TESS_API BOOL TESS_CALL TessBaseAPIGetBoolVariable(const TessBaseAPI* handle, const char* name, BOOL* value)
00176 {
00177     bool boolValue;
00178     if (handle->GetBoolVariable(name, &boolValue))
00179     {
00180         *value = boolValue ? TRUE : FALSE;
00181         return TRUE;
00182     }
00183     else
00184     {
00185         return FALSE;
00186     }
00187 }
00188 
00189 TESS_API BOOL TESS_CALL TessBaseAPIGetDoubleVariable(const TessBaseAPI* handle, const char* name, double* value)
00190 {
00191     return handle->GetDoubleVariable(name, value) ? TRUE : FALSE;
00192 }
00193 
00194 TESS_API const char* TESS_CALL TessBaseAPIGetStringVariable(const TessBaseAPI* handle, const char* name)
00195 {
00196     return handle->GetStringVariable(name);
00197 }
00198 
00199 TESS_API void TESS_CALL TessBaseAPIPrintVariables(const TessBaseAPI* handle, FILE* fp)
00200 {
00201     handle->PrintVariables(fp);
00202 }
00203 
00204 TESS_API BOOL TESS_CALL TessBaseAPIPrintVariablesToFile(const TessBaseAPI* handle, const char* filename)
00205 {
00206     FILE* fp = fopen(filename, "w");
00207     if (fp != NULL)
00208     {
00209         handle->PrintVariables(fp);
00210         fclose(fp);
00211         return TRUE;
00212     }
00213     return FALSE;
00214 }
00215 
00216 TESS_API BOOL TESS_CALL TessBaseAPIGetVariableAsString(TessBaseAPI* handle, const char* name, STRING* val)
00217 {
00218     return handle->GetVariableAsString(name, val) ? TRUE : FALSE;
00219 }
00220 
00221 TESS_API int TESS_CALL TessBaseAPIInit4(TessBaseAPI* handle, const char* datapath, const char* language,
00222     TessOcrEngineMode mode, char** configs, int configs_size,
00223     char** vars_vec, char** vars_values, size_t vars_vec_size,
00224     BOOL set_only_non_debug_params)
00225 {
00226     GenericVector<STRING> varNames;
00227     GenericVector<STRING> varValues;
00228     if (vars_vec != NULL && vars_values != NULL) {
00229         for (size_t i = 0; i < vars_vec_size; i++) {
00230             varNames.push_back(STRING(vars_vec[i]));
00231             varValues.push_back(STRING(vars_values[i]));
00232         }
00233     }
00234 
00235     return handle->Init(datapath, language, mode, configs, configs_size, &varNames, &varValues, set_only_non_debug_params);
00236 }
00237 
00238 
00239 TESS_API int TESS_CALL TessBaseAPIInit1(TessBaseAPI* handle, const char* datapath, const char* language, TessOcrEngineMode oem,
00240                                         char** configs, int configs_size)
00241 {
00242     return handle->Init(datapath, language, oem, configs, configs_size, NULL, NULL, false);
00243 }
00244 
00245 TESS_API int TESS_CALL TessBaseAPIInit2(TessBaseAPI* handle, const char* datapath, const char* language, TessOcrEngineMode oem)
00246 {
00247     return handle->Init(datapath, language, oem);
00248 }
00249 
00250 TESS_API int TESS_CALL TessBaseAPIInit3(TessBaseAPI* handle, const char* datapath, const char* language)
00251 {
00252     return handle->Init(datapath, language);
00253 }
00254 
00255 TESS_API const char* TESS_CALL TessBaseAPIGetInitLanguagesAsString(const TessBaseAPI* handle)
00256 {
00257     return handle->GetInitLanguagesAsString();
00258 }
00259 
00260 TESS_API char** TESS_CALL TessBaseAPIGetLoadedLanguagesAsVector(const TessBaseAPI* handle)
00261 {
00262     GenericVector<STRING> languages;
00263     handle->GetLoadedLanguagesAsVector(&languages);
00264     char** arr = new char*[languages.size() + 1];
00265     for (int index = 0; index < languages.size(); ++index)
00266         arr[index] = languages[index].strdup();
00267     arr[languages.size()] = NULL;
00268     return arr;
00269 }
00270 
00271 TESS_API char** TESS_CALL TessBaseAPIGetAvailableLanguagesAsVector(const TessBaseAPI* handle)
00272 {
00273     GenericVector<STRING> languages;
00274     handle->GetAvailableLanguagesAsVector(&languages);
00275     char** arr = new char*[languages.size() + 1];
00276     for (int index = 0; index < languages.size(); ++index)
00277         arr[index] = languages[index].strdup();
00278     arr[languages.size()] = NULL;
00279     return arr;
00280 }
00281 
00282 TESS_API int TESS_CALL TessBaseAPIInitLangMod(TessBaseAPI* handle, const char* datapath, const char* language)
00283 {
00284     return handle->InitLangMod(datapath, language);
00285 }
00286 
00287 TESS_API void TESS_CALL TessBaseAPIInitForAnalysePage(TessBaseAPI* handle)
00288 {
00289     handle->InitForAnalysePage();
00290 }
00291 
00292 TESS_API void TESS_CALL TessBaseAPIReadConfigFile(TessBaseAPI* handle, const char* filename)
00293 {
00294     handle->ReadConfigFile(filename);
00295 }
00296 
00297 TESS_API void TESS_CALL TessBaseAPIReadDebugConfigFile(TessBaseAPI* handle, const char* filename)
00298 {
00299     handle->ReadDebugConfigFile(filename);
00300 }
00301 
00302 TESS_API void TESS_CALL TessBaseAPISetPageSegMode(TessBaseAPI* handle, TessPageSegMode mode)
00303 {
00304     handle->SetPageSegMode(mode);
00305 }
00306 
00307 TESS_API TessPageSegMode TESS_CALL TessBaseAPIGetPageSegMode(const TessBaseAPI* handle)
00308 {
00309     return handle->GetPageSegMode();
00310 }
00311 
00312 TESS_API char* TESS_CALL TessBaseAPIRect(TessBaseAPI* handle, const unsigned char* imagedata,
00313                                                int bytes_per_pixel, int bytes_per_line,
00314                                                int left, int top, int width, int height)
00315 {
00316     return handle->TesseractRect(imagedata, bytes_per_pixel, bytes_per_line, left, top, width, height);
00317 }
00318 
00319 TESS_API void TESS_CALL TessBaseAPIClearAdaptiveClassifier(TessBaseAPI* handle)
00320 {
00321     handle->ClearAdaptiveClassifier();
00322 }
00323 
00324 TESS_API void TESS_CALL TessBaseAPISetImage(TessBaseAPI* handle, const unsigned char* imagedata, int width, int height,
00325                                                   int bytes_per_pixel, int bytes_per_line)
00326 {
00327     handle->SetImage(imagedata, width, height, bytes_per_pixel, bytes_per_line);
00328 }
00329 
00330 TESS_API void TESS_CALL TessBaseAPISetImage2(TessBaseAPI* handle, struct Pix* pix)
00331 {
00332     return handle->SetImage(pix);
00333 }
00334 
00335 TESS_API void TESS_CALL TessBaseAPISetSourceResolution(TessBaseAPI* handle, int ppi)
00336 {
00337     handle->SetSourceResolution(ppi);
00338 }
00339 
00340 TESS_API void TESS_CALL TessBaseAPISetRectangle(TessBaseAPI* handle, int left, int top, int width, int height)
00341 {
00342     handle->SetRectangle(left, top, width, height);
00343 }
00344 
00345 TESS_API void TESS_CALL TessBaseAPISetThresholder(TessBaseAPI* handle, TessImageThresholder* thresholder)
00346 {
00347     handle->SetThresholder(thresholder);
00348 }
00349 
00350 TESS_API struct Pix* TESS_CALL TessBaseAPIGetThresholdedImage(TessBaseAPI* handle)
00351 {
00352     return handle->GetThresholdedImage();
00353 }
00354 
00355 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetRegions(TessBaseAPI* handle, struct Pixa** pixa)
00356 {
00357     return handle->GetRegions(pixa);
00358 }
00359 
00360 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetTextlines(TessBaseAPI* handle, struct Pixa** pixa, int** blockids)
00361 {
00362     return handle->GetTextlines(pixa, blockids);
00363 }
00364 
00365 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetTextlines1(TessBaseAPI* handle, const BOOL raw_image, const int raw_padding,
00366                                                                   struct Pixa** pixa, int** blockids, int** paraids)
00367 {
00368     return handle->GetTextlines(raw_image, raw_padding, pixa, blockids, paraids);
00369 }
00370 
00371 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetStrips(TessBaseAPI* handle, struct Pixa** pixa, int** blockids)
00372 {
00373     return handle->GetStrips(pixa, blockids);
00374 }
00375 
00376 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetWords(TessBaseAPI* handle, struct Pixa** pixa)
00377 {
00378     return handle->GetWords(pixa);
00379 }
00380 
00381 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetConnectedComponents(TessBaseAPI* handle, struct Pixa** cc)
00382 {
00383     return handle->GetConnectedComponents(cc);
00384 }
00385 
00386 TESS_API struct Boxa* TESS_CALL TessBaseAPIGetComponentImages(TessBaseAPI* handle, TessPageIteratorLevel level, BOOL text_only, struct Pixa** pixa, int** blockids)
00387 {
00388     return handle->GetComponentImages(level, text_only != FALSE, pixa, blockids);
00389 }
00390 
00391 TESS_API struct Boxa*
00392                TESS_CALL TessBaseAPIGetComponentImages1(   TessBaseAPI* handle, const TessPageIteratorLevel level, const BOOL text_only,
00393                                                            const BOOL raw_image, const int raw_padding,
00394                                                            struct Pixa** pixa, int** blockids, int** paraids)
00395 {
00396     return handle->GetComponentImages(level, text_only != FALSE, raw_image, raw_padding, pixa, blockids, paraids);
00397 }
00398 
00399 TESS_API int TESS_CALL TessBaseAPIGetThresholdedImageScaleFactor(const TessBaseAPI* handle)
00400 {
00401     return handle->GetThresholdedImageScaleFactor();
00402 }
00403 
00404 TESS_API void TESS_CALL TessBaseAPIDumpPGM(TessBaseAPI* handle, const char* filename)
00405 {
00406     handle->DumpPGM(filename);
00407 }
00408 
00409 TESS_API TessPageIterator* TESS_CALL TessBaseAPIAnalyseLayout(TessBaseAPI* handle)
00410 {
00411     return handle->AnalyseLayout();
00412 }
00413 
00414 TESS_API int TESS_CALL TessBaseAPIRecognize(TessBaseAPI* handle, ETEXT_DESC* monitor)
00415 {
00416     return handle->Recognize(monitor);
00417 }
00418 
00419 TESS_API int TESS_CALL TessBaseAPIRecognizeForChopTest(TessBaseAPI* handle, ETEXT_DESC* monitor)
00420 {
00421     return handle->RecognizeForChopTest(monitor);
00422 }
00423 
00424 TESS_API BOOL TESS_CALL TessBaseAPIProcessPages(TessBaseAPI* handle, const char* filename, const char* retry_config,
00425                                                 int timeout_millisec, TessResultRenderer* renderer)
00426 {
00427     if (handle->ProcessPages(filename, retry_config, timeout_millisec, renderer))
00428         return TRUE;
00429     else
00430         return FALSE;
00431 }
00432 
00433 TESS_API BOOL TESS_CALL TessBaseAPIProcessPage(TessBaseAPI* handle, struct Pix* pix, int page_index, const char* filename,
00434                                                const char* retry_config, int timeout_millisec, TessResultRenderer* renderer)
00435 {
00436     if (handle->ProcessPage(pix, page_index, filename, retry_config, timeout_millisec, renderer))
00437         return TRUE;
00438     else
00439         return FALSE;
00440 }
00441 
00442 TESS_API TessResultIterator* TESS_CALL TessBaseAPIGetIterator(TessBaseAPI* handle)
00443 {
00444     return handle->GetIterator();
00445 }
00446 
00447 TESS_API TessMutableIterator* TESS_CALL TessBaseAPIGetMutableIterator(TessBaseAPI* handle)
00448 {
00449     return handle->GetMutableIterator();
00450 }
00451 
00452 TESS_API char* TESS_CALL TessBaseAPIGetUTF8Text(TessBaseAPI* handle)
00453 {
00454     return handle->GetUTF8Text();
00455 }
00456 
00457 TESS_API char* TESS_CALL TessBaseAPIGetHOCRText(TessBaseAPI* handle, int page_number)
00458 {
00459     return handle->GetHOCRText(page_number);
00460 }
00461 
00462 TESS_API char* TESS_CALL TessBaseAPIGetBoxText(TessBaseAPI* handle, int page_number)
00463 {
00464     return handle->GetBoxText(page_number);
00465 }
00466 
00467 TESS_API char* TESS_CALL TessBaseAPIGetUNLVText(TessBaseAPI* handle)
00468 {
00469     return handle->GetUNLVText();
00470 }
00471 
00472 TESS_API int TESS_CALL TessBaseAPIMeanTextConf(TessBaseAPI* handle)
00473 {
00474     return handle->MeanTextConf();
00475 }
00476 
00477 TESS_API int* TESS_CALL TessBaseAPIAllWordConfidences(TessBaseAPI* handle)
00478 {
00479     return handle->AllWordConfidences();
00480 }
00481 
00482 TESS_API BOOL TESS_CALL TessBaseAPIAdaptToWordStr(TessBaseAPI* handle, TessPageSegMode mode, const char* wordstr)
00483 {
00484     return handle->AdaptToWordStr(mode, wordstr) ? TRUE : FALSE;
00485 }
00486 
00487 TESS_API void TESS_CALL TessBaseAPIClear(TessBaseAPI* handle)
00488 {
00489     handle->Clear();
00490 }
00491 
00492 TESS_API void TESS_CALL TessBaseAPIEnd(TessBaseAPI* handle)
00493 {
00494     handle->End();
00495 }
00496 
00497 TESS_API int TESS_CALL TessBaseAPIIsValidWord(TessBaseAPI* handle, const char* word)
00498 {
00499     return handle->IsValidWord(word);
00500 }
00501 
00502 TESS_API BOOL TESS_CALL TessBaseAPIGetTextDirection(TessBaseAPI* handle, int* out_offset, float* out_slope)
00503 {
00504     return handle->GetTextDirection(out_offset, out_slope) ? TRUE : FALSE;
00505 }
00506 
00507 TESS_API void TESS_CALL TessBaseAPISetDictFunc(TessBaseAPI* handle, TessDictFunc f)
00508 {
00509     handle->SetDictFunc(f);
00510 }
00511 
00512 TESS_API void  TESS_CALL TessBaseAPIClearPersistentCache(TessBaseAPI* handle)
00513 {
00514     handle->ClearPersistentCache();
00515 }
00516 
00517 TESS_API void TESS_CALL TessBaseAPISetProbabilityInContextFunc(TessBaseAPI* handle, TessProbabilityInContextFunc f)
00518 {
00519     handle->SetProbabilityInContextFunc(f);
00520 }
00521 
00522 TESS_API BOOL TESS_CALL TessBaseAPIDetectOS(TessBaseAPI* handle, OSResults* results)
00523 {
00524     return handle->DetectOS(results) ? TRUE : FALSE;
00525 }
00526 
00527 TESS_API void TESS_CALL TessBaseAPIGetFeaturesForBlob(TessBaseAPI* handle, TBLOB* blob, INT_FEATURE_STRUCT* int_features,
00528                                                             int* num_features, int* FeatureOutlineIndex)
00529 {
00530     handle->GetFeaturesForBlob(blob, int_features, num_features, FeatureOutlineIndex);
00531 }
00532 
00533 TESS_API ROW* TESS_CALL TessFindRowForBox(BLOCK_LIST* blocks, int left, int top, int right, int bottom)
00534 {
00535     return TessBaseAPI::FindRowForBox(blocks, left, top, right, bottom);
00536 }
00537 
00538 TESS_API void TESS_CALL TessBaseAPIRunAdaptiveClassifier(TessBaseAPI* handle, TBLOB* blob, int num_max_matches,
00539                                                                int* unichar_ids, float* ratings, int* num_matches_returned)
00540 {
00541     handle->RunAdaptiveClassifier(blob, num_max_matches, unichar_ids, ratings, num_matches_returned);
00542 }
00543 
00544 TESS_API const char* TESS_CALL TessBaseAPIGetUnichar(TessBaseAPI* handle, int unichar_id)
00545 {
00546     return handle->GetUnichar(unichar_id);
00547 }
00548 
00549 TESS_API const TessDawg* TESS_CALL TessBaseAPIGetDawg(const TessBaseAPI* handle, int i)
00550 {
00551     return handle->GetDawg(i);
00552 }
00553 
00554 TESS_API int TESS_CALL TessBaseAPINumDawgs(const TessBaseAPI* handle)
00555 {
00556     return handle->NumDawgs();
00557 }
00558 
00559 TESS_API ROW* TESS_CALL TessMakeTessOCRRow(float baseline, float xheight, float descender, float ascender)
00560 {
00561     return TessBaseAPI::MakeTessOCRRow(baseline, xheight, descender, ascender);
00562 }
00563 
00564 TESS_API TBLOB* TESS_CALL TessMakeTBLOB(struct Pix* pix)
00565 {
00566     return TessBaseAPI::MakeTBLOB(pix);
00567 }
00568 
00569 TESS_API void TESS_CALL TessNormalizeTBLOB(TBLOB* tblob, ROW* row, BOOL numeric_mode)
00570 {
00571     TessBaseAPI::NormalizeTBLOB(tblob, row, numeric_mode != FALSE);
00572 }
00573 
00574 TESS_API TessOcrEngineMode TESS_CALL TessBaseAPIOem(const TessBaseAPI* handle)
00575 {
00576     return handle->oem();
00577 }
00578 
00579 TESS_API void TESS_CALL TessBaseAPIInitTruthCallback(TessBaseAPI* handle, TessTruthCallback* cb)
00580 {
00581     handle->InitTruthCallback(cb);
00582 }
00583 
00584 #ifndef NO_CUBE_BUILD
00585 TESS_API TessCubeRecoContext* TESS_CALL TessBaseAPIGetCubeRecoContext(const TessBaseAPI* handle)
00586 {
00587     return handle->GetCubeRecoContext();
00588 }
00589 #endif  // NO_CUBE_BUILD
00590 
00591 TESS_API void TESS_CALL TessBaseAPISetMinOrientationMargin(TessBaseAPI* handle, double margin)
00592 {
00593     handle->set_min_orientation_margin(margin);
00594 }
00595 
00596 TESS_API void TESS_CALL TessBaseGetBlockTextOrientations(TessBaseAPI* handle, int** block_orientation, bool** vertical_writing)
00597 {
00598     handle->GetBlockTextOrientations(block_orientation, vertical_writing);
00599 }
00600 
00601 TESS_API BLOCK_LIST* TESS_CALL TessBaseAPIFindLinesCreateBlockList(TessBaseAPI* handle)
00602 {
00603     return handle->FindLinesCreateBlockList();
00604 }
00605 
00606 TESS_API void  TESS_CALL TessPageIteratorDelete(TessPageIterator* handle)
00607 {
00608     delete handle;
00609 }
00610 
00611 TESS_API TessPageIterator* TESS_CALL TessPageIteratorCopy(const TessPageIterator* handle)
00612 {
00613     return new TessPageIterator(*handle);
00614 }
00615 
00616 TESS_API void TESS_CALL TessPageIteratorBegin(TessPageIterator* handle)
00617 {
00618     handle->Begin();
00619 }
00620 
00621 TESS_API BOOL TESS_CALL TessPageIteratorNext(TessPageIterator* handle, TessPageIteratorLevel level)
00622 {
00623     return handle->Next(level) ? TRUE : FALSE;
00624 }
00625 
00626 TESS_API BOOL TESS_CALL TessPageIteratorIsAtBeginningOf(const TessPageIterator* handle, TessPageIteratorLevel level)
00627 {
00628     return handle->IsAtBeginningOf(level) ? TRUE : FALSE;
00629 }
00630 
00631 TESS_API BOOL TESS_CALL TessPageIteratorIsAtFinalElement(const TessPageIterator* handle, TessPageIteratorLevel level,
00632                                                                TessPageIteratorLevel element)
00633 {
00634     return handle->IsAtFinalElement(level, element) ? TRUE : FALSE;
00635 }
00636 
00637 TESS_API BOOL TESS_CALL TessPageIteratorBoundingBox(const TessPageIterator* handle, TessPageIteratorLevel level,
00638                                                           int* left, int* top, int* right, int* bottom)
00639 {
00640     return handle->BoundingBox(level, left, top, right, bottom) ? TRUE : FALSE;
00641 }
00642 
00643 TESS_API TessPolyBlockType TESS_CALL TessPageIteratorBlockType(const TessPageIterator* handle)
00644 {
00645     return handle->BlockType();
00646 }
00647 
00648 TESS_API struct Pix* TESS_CALL TessPageIteratorGetBinaryImage(const TessPageIterator* handle, TessPageIteratorLevel level)
00649 {
00650     return handle->GetBinaryImage(level);
00651 }
00652 
00653 TESS_API struct Pix* TESS_CALL TessPageIteratorGetImage(const TessPageIterator* handle, TessPageIteratorLevel level, int padding,
00654                                                         struct Pix* original_image, int* left, int* top)
00655 {
00656     return handle->GetImage(level, padding, original_image, left, top);
00657 }
00658 
00659 TESS_API BOOL TESS_CALL TessPageIteratorBaseline(const TessPageIterator* handle, TessPageIteratorLevel level,
00660                                                        int* x1, int* y1, int* x2, int* y2)
00661 {
00662     return handle->Baseline(level, x1, y1, x2, y2) ? TRUE : FALSE;
00663 }
00664 
00665 TESS_API void TESS_CALL TessPageIteratorOrientation(TessPageIterator* handle, TessOrientation* orientation,
00666                                                           TessWritingDirection* writing_direction, TessTextlineOrder* textline_order,
00667                                                           float* deskew_angle)
00668 {
00669     handle->Orientation(orientation, writing_direction, textline_order, deskew_angle);
00670 }
00671 
00672 TESS_API void  TESS_CALL TessPageIteratorParagraphInfo(TessPageIterator* handle, TessParagraphJustification* justification,
00673                                                        BOOL *is_list_item, BOOL *is_crown, int *first_line_indent)
00674 {
00675     bool bool_is_list_item, bool_is_crown;
00676     handle->ParagraphInfo(justification, &bool_is_list_item, &bool_is_crown, first_line_indent);
00677     if (is_list_item)
00678         *is_list_item = bool_is_list_item ? TRUE : FALSE;
00679     if (is_crown)
00680         *is_crown = bool_is_crown ? TRUE : FALSE;
00681 }
00682 
00683 
00684 TESS_API void TESS_CALL TessResultIteratorDelete(TessResultIterator* handle)
00685 {
00686     delete handle;
00687 }
00688 
00689 TESS_API TessResultIterator* TESS_CALL TessResultIteratorCopy(const TessResultIterator* handle)
00690 {
00691     return new TessResultIterator(*handle);
00692 }
00693 
00694 TESS_API TessPageIterator* TESS_CALL TessResultIteratorGetPageIterator(TessResultIterator* handle)
00695 {
00696     return handle;
00697 }
00698 
00699 TESS_API const TessPageIterator* TESS_CALL TessResultIteratorGetPageIteratorConst(const TessResultIterator* handle)
00700 {
00701     return handle;
00702 }
00703 
00704 TESS_API TessChoiceIterator* TESS_CALL TessResultIteratorGetChoiceIterator(const TessResultIterator* handle)
00705 {
00706     return new TessChoiceIterator(*handle);
00707 }
00708 
00709 TESS_API BOOL  TESS_CALL TessResultIteratorNext(TessResultIterator* handle, TessPageIteratorLevel level)
00710 {
00711     return handle->Next(level);
00712 }
00713 
00714 TESS_API char* TESS_CALL TessResultIteratorGetUTF8Text(const TessResultIterator* handle, TessPageIteratorLevel level)
00715 {
00716     return handle->GetUTF8Text(level);
00717 }
00718 
00719 TESS_API float TESS_CALL TessResultIteratorConfidence(const TessResultIterator* handle, TessPageIteratorLevel level)
00720 {
00721     return handle->Confidence(level);
00722 }
00723 
00724 TESS_API const char* TESS_CALL TessResultIteratorWordRecognitionLanguage(const TessResultIterator* handle)
00725 {
00726     return handle->WordRecognitionLanguage();
00727 }
00728 
00729 TESS_API const char* TESS_CALL TessResultIteratorWordFontAttributes(const TessResultIterator* handle, BOOL* is_bold, BOOL* is_italic,
00730                                                                           BOOL* is_underlined, BOOL* is_monospace, BOOL* is_serif,
00731                                                                           BOOL* is_smallcaps, int* pointsize, int* font_id)
00732 {
00733     bool bool_is_bold, bool_is_italic, bool_is_underlined, bool_is_monospace, bool_is_serif, bool_is_smallcaps;
00734     const char* ret = handle->WordFontAttributes(&bool_is_bold, &bool_is_italic, &bool_is_underlined, &bool_is_monospace, &bool_is_serif,
00735                                                  &bool_is_smallcaps, pointsize, font_id);
00736     if (is_bold)
00737         *is_bold = bool_is_bold ? TRUE : FALSE;
00738     if (is_italic)
00739         *is_italic = bool_is_italic ? TRUE : FALSE;
00740     if (is_underlined)
00741         *is_underlined = bool_is_underlined ? TRUE : FALSE;
00742     if (is_monospace)
00743         *is_monospace = bool_is_monospace ? TRUE : FALSE;
00744     if (is_serif)
00745         *is_serif = bool_is_serif ? TRUE : FALSE;
00746     if (is_smallcaps)
00747         *is_smallcaps = bool_is_smallcaps ? TRUE : FALSE;
00748     return ret;
00749 }
00750 
00751 TESS_API BOOL TESS_CALL TessResultIteratorWordIsFromDictionary(const TessResultIterator* handle)
00752 {
00753     return handle->WordIsFromDictionary() ? TRUE : FALSE;
00754 }
00755 
00756 TESS_API BOOL TESS_CALL TessResultIteratorWordIsNumeric(const TessResultIterator* handle)
00757 {
00758     return handle->WordIsNumeric() ? TRUE : FALSE;
00759 }
00760 
00761 TESS_API BOOL TESS_CALL TessResultIteratorSymbolIsSuperscript(const TessResultIterator* handle)
00762 {
00763     return handle->SymbolIsSuperscript() ? TRUE : FALSE;
00764 }
00765 
00766 TESS_API BOOL TESS_CALL TessResultIteratorSymbolIsSubscript(const TessResultIterator* handle)
00767 {
00768     return handle->SymbolIsSubscript() ? TRUE : FALSE;
00769 }
00770 
00771 TESS_API BOOL TESS_CALL TessResultIteratorSymbolIsDropcap(const TessResultIterator* handle)
00772 {
00773     return handle->SymbolIsDropcap() ? TRUE : FALSE;
00774 }
00775 
00776 TESS_API void TESS_CALL TessChoiceIteratorDelete(TessChoiceIterator* handle)
00777 {
00778     delete handle;
00779 }
00780 
00781 TESS_API BOOL  TESS_CALL TessChoiceIteratorNext(TessChoiceIterator* handle)
00782 {
00783     return handle->Next();
00784 }
00785 
00786 TESS_API const char* TESS_CALL TessChoiceIteratorGetUTF8Text(const TessChoiceIterator* handle)
00787 {
00788     return handle->GetUTF8Text();
00789 }
00790 
00791 TESS_API float TESS_CALL TessChoiceIteratorConfidence(const TessChoiceIterator* handle)
00792 {
00793     return handle->Confidence();
00794 }
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines