69 lines
1.9 KiB
C
69 lines
1.9 KiB
C
#include "recogp.h"
|
|
#include "recog.h"
|
|
|
|
|
|
// converts from new results buffer to the old results buffer,
|
|
// we are assuming that the caller has allocated the buffer to big enough for the
|
|
// bigger buffer (the older in this case)
|
|
void ConvertToOldResults (int cAlt, int cBoxRes, PVOID pData)
|
|
{
|
|
int ii, jj;
|
|
int cFromBytes, cToBytes;
|
|
int cFromSize, cToSize;
|
|
HWXRESULTS *pFrom;
|
|
BOXRESULTS *pTo;
|
|
|
|
// point to the last structure in each buffers
|
|
cFromSize = sizeof(HWXRESULTS) + (cAlt - 1) * sizeof (WCHAR);
|
|
cToSize = sizeof(BOXRESULTS) + (cAlt - 1) * sizeof (SYV);
|
|
|
|
cFromBytes = (cBoxRes - 1) * cFromSize;
|
|
cToBytes = (cBoxRes - 1) * cToSize;
|
|
|
|
for (ii = cBoxRes - 1; ii >=0 ; ii--, cFromBytes -= cFromSize, cToBytes -= cToSize) {
|
|
|
|
pFrom = (HWXRESULTS *)((BYTE *)pData + cFromBytes);
|
|
pTo = (BOXRESULTS *)((BYTE *)pData + cToBytes);
|
|
|
|
for (jj = cAlt - 1; jj >=0 ; jj--) {
|
|
|
|
// No result
|
|
if (pFrom->rgChar[jj] == L'\0')
|
|
pTo->rgSyv[jj] = SYV_NULL;
|
|
else
|
|
pTo->rgSyv[jj] = ((DWORD)pFrom->rgChar[jj] | ((DWORD) SYVHI_UNICODE << 16));
|
|
}
|
|
|
|
pTo->hinksetBox = 0;
|
|
pTo->indxBox = pFrom->indxBox;
|
|
}
|
|
}
|
|
|
|
// converts from old results to new results
|
|
// have to provide both buffers because Dest is smaller than Src
|
|
void ConvertToNewResults (int cAlt, int cBoxRes, HWXRESULTS *pTo, BOXRESULTS *pFrom)
|
|
{
|
|
int ii, jj;
|
|
int cFromSize, cToSize;
|
|
|
|
// point to the last structure in each buffers
|
|
cFromSize = sizeof(BOXRESULTS) + (cAlt - 1) * sizeof (SYV);
|
|
cToSize = sizeof(HWXRESULTS) + (cAlt - 1) * sizeof (WCHAR);
|
|
|
|
for (ii = 0; ii < cBoxRes ; ii++) {
|
|
|
|
for (jj = 0; jj < cAlt ; jj++) {
|
|
|
|
// No result
|
|
if (pFrom->rgSyv[jj] == SYV_NULL)
|
|
pTo->rgChar[jj] = L'\0';
|
|
else
|
|
pTo->rgChar[jj] = (WORD) (pFrom->rgSyv[jj] & 0xFFFF);
|
|
}
|
|
|
|
pTo->indxBox = (USHORT)pFrom->indxBox;
|
|
|
|
pFrom = (BOXRESULTS *)((BYTE *)pFrom + cFromSize);
|
|
pTo = (HWXRESULTS *)((BYTE *)pTo + cToSize);
|
|
}
|
|
} |