98 {
99 static ScrollView *terminator = nullptr;
100 if (terminator == nullptr) {
101 terminator = new ScrollView("XIT", 0, 0, 50, 50, 50, 50, true);
102 }
104
105 auto *popup_menu = new SVMenuNode();
106 popup_menu->AddChild("Choose class to debug", 0, "x", "Class to debug");
107 popup_menu->BuildMenu(debug_win, false);
108
109 const INT_FEATURE_STRUCT *features = sample.features();
110 uint32_t num_features = sample.num_features();
111 for (uint32_t f = 0; f < num_features; ++f) {
113 }
114 debug_win->Update();
115 std::vector<UnicharRating> results;
116
119 do {
120 std::vector<ScrollView *> windows;
121 if (unichar_id >= 0) {
122 tprintf(
"Debugging class %d = %s\n", unichar_id, unicharset.id_to_unichar(unichar_id));
125 } else {
126 tprintf(
"Invalid unichar_id: %d\n", unichar_id);
128 }
129 if (unichar_id >= 0) {
130 tprintf(
"Debugged class %d = %s\n", unichar_id, unicharset.id_to_unichar(unichar_id));
131 }
132 tprintf(
"Right-click in ClassifierDebug window to choose debug class,");
133 tprintf(
" Left-click or close window to quit...\n");
135 do {
136 old_unichar_id = unichar_id;
137 auto ev = debug_win->AwaitEvent(
SVET_ANY);
138 ev_type = ev->type;
140 if (unicharset.contains_unichar(ev->parameter)) {
141 unichar_id = unicharset.unichar_to_id(ev->parameter);
142 } else {
143 tprintf(
"Char class '%s' not found in unicharset", ev->parameter);
144 }
145 }
147 for (auto window : windows) {
148 delete window;
149 }
151 delete debug_win;
152}
void tprintf(const char *format,...)
ScrollView * CreateFeatureSpaceWindow(const char *name, int xpos, int ypos)
void RenderIntFeature(ScrollView *window, const INT_FEATURE_STRUCT *Feature, ScrollView::Color color)
virtual int UnicharClassifySample(const TrainingSample &sample, Image page_pix, int debug, UNICHAR_ID keep_this, std::vector< UnicharRating > *results)
virtual const UNICHARSET & GetUnicharset() const
virtual int DisplayClassifyAs(const TrainingSample &sample, Image page_pix, UNICHAR_ID unichar_id, int index, std::vector< ScrollView * > &windows)