RepData

typedef struct RepData_tag {
  ReInit    init;             
  ReParm    parm;
  ReImage   image;           
  long      busy;              
  INT_PTR   hWND_rep_finished; 
  INT_PTR   hWND_line_message; 
  long      filler1;           
  KADMOS_ERROR (KADMOS_API *rec_hook)(RecData *);  
  KADMOS_ERROR (KADMOS_API *rel_hook)(RelData *);  
  short     rep_deskew;
  short     rep_result_len;    
  RepResult *rep_result;   
} RepData;        
      

Elemente:

init
Aktiviert einen Klassifikators und ist vor rep_init() zu setzen.
parm
Die Arbeit des Moduls REP kann mit einer Vielzahl von Parametern gesteuert werden. Diese Parameter sind in einer Struktur ReParm zusammengefasst. Eine solche Struktur ist nun Bestandteil der für den Aufruf des Moduls benötigten Datenstruktur RepData.
image
Unter dieser Struktur ReImage wird das zu erkennende oder anderweitig zu bearbeitende Bild erwartet oder geliefert.
busy
Hier wird angezeigt, ob die Erkennung noch in Arbeit (1) oder bereits abgeschlossen ist (0). Dies ist insbesondere bei Parallelrechnern oder bei simultan arbeitenden Zusatzkarten für die Erkennung von Bedeutung.
hWND_rep_finished
Dieser Parameter hat nur für Windows Bedeutung. Ist er besetzt, so sendet rep_do() Messages an jenes Window, dessen Handle durch diesen Wert beschrieben ist. Sobald die Vorverarbeitung einer Zeile abgeschlossen ist, setzt rep_do() folgenden Aufruf ab: SendMessage((HWND) rep->hWND_rep_finished, WM_USER,
(WPARAM)(REP_MESSAGE | REX_IMGREADY), (LPARAM) rep);

Dadurch kann vor der Erkennung auf das Resultat der Bildvorverarbeitung (rep->image) zugegriffen werden. Der Pointer wird für diesen Aufruf auf das interne vorverarbeitete Bild umgesetzt. Sobald die Erkennung einer Textseite abgeschlossen ist, setzt rep_do() folgenden Aufruf ab: SendMessage((HWND) rep->hWND_rep_finished,WM_USER,
(WPARAM)(REP_MESSAGE | REX_FINISHED), (LPARAM) rep);

Im Fehlerfall enthält wParm noch das Bit REX_ERROR.
hWND_line_message
Dieser Parameter hat nur für Windows Bedeutung. Ist er besetzt, so sendet rep_do() Messages an jenes Window, dessen Handle durch diesen Wert beschrieben ist. Sobald die Textzeilen isoliert sind, setzt rep_do() folgenden Aufruf ab: SendMessage((HWND) rep->hWND_line_message, WM_USER,
(WPARAM) REP_LINE_CNT,(LPARAM) zeilenanzahl);

Nach der Erkennung jeder einzelnen Textzeile wird folgender Aufruf abgesetzt: SendMessage((HWND) rep->hWND_line_message, WM_USER,
(WPARAM) REP_RESULT,(LPARAM) &rep_result);

Unter der in lParam übergebenen Adresse können alle Einzelresultate dieser Textzeile abgeholt werden. Die Adresse zeigt als Pointer auf eine Struktur Rep_Result. REP_LINE_CNT und REP_RESULT sind wie folgt vereinbart: #define REP_LINE_CNT 1
#define REP_RESULT 2
filler1
8 Byte Alignment.
rec_hook
Hier kann eine eigene Funktion angegeben werden die der vorgeschriebenen Deklaration genügt. Die Module REP und REL rufen nach erfolgter Zeilen- und Zeichensegmentierung letztendlich stets die Funktion rec_do() des Moduls REC mit einer zugehörigen Struktur RecData auf. Ist bei rec_hook eine Funktion eingetragen, so wird diese unmittelbar nach jedem dieser rec_do()-Aufrufe mit der zugehörigen RecData-Struktur ausgeführt. Man hat dadurch eine ganze Reihe von Möglichkeiten zur Verfolgung und sogar Steuerung der Einzelzeichen-Erkennung, zur Sammlung der segmentierten Rasterbilder oder auch zum Abbruch der Erkennung. Es wird nämlich der Rückgabewert der Funktion rec_hook derart ausgewertet, dass bei einem Wert verschieden von RE_SUCCESS das Modul rel_do() seine Arbeit beendet und ebenfalls mit diesem Rückgabewert zurückkehrt. Dadurch wird auch gegebenenfalls das Modul rep_do() seine Arbeit beenden und mit diesem Wert zurückkehren. Will man eine derartige hook-Funktion mit eigenen Parametern versorgen, so ist hierfür der Pointer hookparm in der Struktur ReParm vorgesehen. Hinterlegt man etwa vor einem Aufruf von rel_do() bei hookparm eine Adresse (z.B. auf private Daten), so wird diese Adresse von rel_do() vor jedem Aufruf von rec_do() in die zugehörige Struktur RecData auf hookparm kopiert, wo sie von der hook-Funktion abgerufen werden kann.
rel_hook
Sofern hier eine eigene Funktion angegeben wurde, wird diese analog zu rec_hook bei jedem Aufruf des Moduls rec_do() mit einer zugehörigen Struktur RelData aufgerufen. Auch diese Funktion kann wie rec_hook zum Abbruch der Erkennung verwendet werden. rel_hook muss der vorgeschriebenen Deklaration genügen.
rep_deskew
Korrigierte Drehung des Bildes.
rep_result_len, rep_result
rep_result_len enthält nach dem Aufruf von rep_do() die Anzahl der ermittelten Textzeilen des übergebenen Bildes. rep_result enthält einen Pointer auf ein Feld von Strukturen RepResult. Diese Ergebnisstrukturen beinhalten für jede Textzeile Pointer auf die Ergebnis von Grid, Graph, Result. Sind Grid-Elemente erkannt worden, so verweist rep_result[0] auf eine entsprechende Datenstruktur, rep_result_len ist um 1 grösser als die Zahl der erkannten Zeilen.

Verweise: