wordrec/render.cpp

Go to the documentation of this file.
00001 
00020 #include "render.h"
00021 #include "blobs.h"
00022 
00023 #ifdef __UNIX__
00024 #include <assert.h>
00025 #endif
00026 #include <math.h>
00027 
00028 #include "vecfuncs.h"
00029 #include "debug.h"
00030 
00031 /*----------------------------------------------------------------------
00032               V a r i a b l e s
00033 ----------------------------------------------------------------------*/
00034 void *blob_window = NULL;
00035 
00036 C_COL color_list[] = {
00037   Red, Cyan, Yellow, Blue, Green, White
00038 };
00039 
00042 make_toggle_var (display_all_blobs, 0, make_disp_all_blobs,
00043 5, 1, toggle_blobs, "Display Blobs");
00044 
00045 make_toggle_var (display_all_words, 0, make_disp_all_words,
00046 5, 2, toggle_wdisp, "Display Words");
00047 
00048 make_toggle_var (blob_pause, 0, make_blob_pause,
00049 5, 6, toggle_pause, "Blob pause");
00052 /*----------------------------------------------------------------------
00053               F u n c t i o n s
00054 ----------------------------------------------------------------------*/
00055 /* ================== */
00059 void display_blob(TBLOB *blob, C_COL color) { 
00060   void *window;
00061   TPOINT origin;
00062   /* Size of drawable */
00063   if (blob_window == NULL) {
00064     blob_window = c_create_window ("Blobs", 520, 10,
00065       500, 128, -1000.0, 1000.0, 0.0, 256.0);
00066   }
00067   else {
00068     c_clear_window(blob_window); 
00069   }
00070 
00071   window = blob_window;
00072   /* Render blob */
00073   blob_origin(blob, &origin); 
00074 
00075   render_blob(window, blob, origin, color); 
00076   /* Default zoom */
00077   c_make_current(window); 
00078 }
00079 
00080 
00081 /* ================== */
00085 void init_render_vars() { 
00086   make_disp_all_blobs(); 
00087   make_disp_all_words(); 
00088   make_blob_pause(); 
00089 }
00090 
00091 
00092 /* ================== */
00097 void render_blob(void *window, TBLOB *blob, TPOINT origin, C_COL color) { 
00098   /* No outline */
00099   if (!blob)
00100     return;
00101 
00102   render_outline (window, blob->outlines, origin, color);
00103 }
00104 
00105 
00106 /* ================== */
00111 void render_edgepts(void *window, EDGEPT *edgept, C_COL color) { 
00112   float x = edgept->pos.x;
00113   float y = edgept->pos.y;
00114   EDGEPT *this_edge = edgept;
00115 
00116   if (!edgept)
00117     return;
00118 
00119   c_line_color_index(window, color); 
00120   c_move(window, x, y); 
00121   do {
00122     this_edge = this_edge->next;
00123     x = this_edge->pos.x;
00124     y = this_edge->pos.y;
00125     c_draw(window, x, y); 
00126   }
00127   while (edgept != this_edge);
00128 }
00129 
00130 
00131 /* ================== */
00136 void render_outline(void *window,
00137                     TESSLINE *outline,
00138                     TPOINT origin,
00139                     C_COL color) {
00140   /* No outline */
00141   if (!outline)
00142     return;
00143   /* Draw Compact outline */
00144   if (outline->loop)
00145     render_edgepts (window, outline->loop, color);
00146   /* Add on next outlines */
00147   render_outline (window, outline->next, origin, color);
00148 
00149   /* Add on child outlines */
00150   render_outline (window, outline->child, origin, Grey);
00151 }

Generated on Wed Feb 28 19:49:13 2007 for Tesseract by  doxygen 1.5.1