/********************************************************************** * render_outline * * Create a list of line segments that represent the expanded outline * that was supplied as input. **********************************************************************/ void render_outline(void *window, TESSLINE *outline, C_COL color) { /* No outline */ if (!outline) return; /* Draw Compact outline */ if (outline->loop) render_edgepts (window, outline->loop, color); /* Add on next outlines */ render_outline (window, outline->next, color); /* Add on child outlines */ render_outline(window, outline->child, Grey); }
/********************************************************************** * render_segmentation * * Create a list of line segments that represent the list of chunks * using the correct segmentation that was supplied as input. **********************************************************************/ void render_segmentation(ScrollView *window, TBLOB *chunks, SEARCH_STATE segmentation) { TBLOB *blob; C_COL color = Black; int char_num = -1; int chunks_left = 0; TBOX bbox; if (chunks) bbox = chunks->bounding_box(); for (blob = chunks; blob != NULL; blob = blob->next) { bbox += blob->bounding_box(); if (chunks_left-- == 0) { color = color_list[++char_num % NUM_COLORS]; if (char_num < segmentation[0]) chunks_left = segmentation[char_num + 1]; else chunks_left = MAX_INT32; } render_outline(window, blob->outlines, color); } window->ZoomToRectangle(bbox.left(), bbox.top(), bbox.right(), bbox.bottom()); }
/********************************************************************** * render_blob * * Create a list of line segments that represent the expanded outline * that was supplied as input. **********************************************************************/ void render_blob(void *window, TBLOB *blob, C_COL color) { /* No outline */ if (!blob) return; render_outline (window, blob->outlines, color); }