windows-nt/Source/XPSP1/NT/drivers/tpg/hwx/volcano/dll/volcanop.h
2020-09-26 16:20:57 +08:00

125 lines
3.6 KiB
C

//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
//
// Copyright (c) 2001 Microsoft Corporation. All rights reserved.
//
// Module:
// volcano/dll/volcanop.h
//
// Description:
// Private header for volcano project.
// This should include all the internal data types
// as well as including all recognizers used by TSUNAMI class products
//
// Author:
// hrowley
//
//$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
#pragma once
// Sort out which 2 stroke recognizer we're using.
#if !defined(USE_FUGU) && !defined(USE_OTTER) && !defined(USE_OTTERFUGU)
# define USE_OTTER
#endif
// Sort out which 3 and up stroke recognizer we're using.
#if !defined(USE_HOUND) && !defined(USE_ZILLA) && !defined(USE_ZILLAHOUND)
# define USE_ZILLA
#endif
// When training Hound-Zilla combiner, set this.
//#define TRAIN_ZILLA_HOUND_COMBINER 1
#include "common.h"
#include "zilla.h"
#include "otter.h"
#include "jaws.h"
#include "sole.h"
#include "fugu.h"
#ifdef USE_OLD_DATABASES
# include "crane.h"
#else
# include "hawk.h"
#endif
#include "bboxfeat.h"
#include "ttune.h"
#include "centipede.h"
#include "inkbox.h"
#include "score.h"
#include "vtune.h"
#include "lattice.h"
// Max alternates we can return for one character.
#define MAX_ALTERNATES 20
// Flag to mark VRCRESULT as the full top one string.
#define ALL_TOP_ONE 0xFFFF
// Structure to hold free input results. Predeclare the VRC pointer
// since it froms a loop, we have to break it.
typedef struct tagVRC *PVRC;
typedef struct tagVRCRESULT {
PVRC pVRC; // We need the XRC object to get all top1.
wchar_t wch; // Results charater, FFFF -> return all top1.
short iChar; // The position of this alternate in the current path
} VRCRESULT;
// Struct to hold InkSet information.
typedef struct tagVINKSET {
PVRC pVRC; // We need the XRC object to get all top1.
UINT iChar; // Index of first char.
UINT cChar; // Count of chars.
UINT cIntervals; // How many intervals in inkset
} VINKSET;
// Internal structure matching up to the HRC passed to most interface
// calls. To avoid accidental confusion and problems with the
// Tsunami name of XRC, it will be called VRC (for Volcano RC).
typedef struct tagVRC {
// Status flags.
BOOL fBoxedInput;// Being called by boxed API.
BOOL fHaveInput; // Have recieved at least one stroke.
BOOL fEndInput; // End input has been called.
BOOL fBeginProcess; // If a process input call has been made (to disallow further config calls)
// The lattice used to build up and process the ink.
LATTICE *pLattice;
// The final results.
LATTICE_PATH *pLatticePath;
} VRC;
// Global data loaded by LoadCharRec.
extern LOCRUN_INFO g_locRunInfo;
#ifdef __cplusplus
extern "C" {
#endif
// The language ("JPN", "KOR", "CHS", or "CHT") we are recognizing
extern wchar_t *g_szRecognizerLanguage;
// Other APIs and calls used by wispapis.c
BOOL SetHwxCorrectionContext(HRC hrc, wchar_t *wszBefore, wchar_t *wszAfter);
BOOL HwxUnconfig(BOOL bCanUnloadIFELang3);
BOOL SetHwxFlags(HRC hrc, DWORD dwFlags);
BOOL SetHwxFactoid(HRC hrc, wchar_t *wszFactoid);
BOOL IsWStringSupportedHRC(HRC hrc, wchar_t *pwcString);
// Factoid related functions private to the recognizer
BOOL FactoidTableConfig(LOCRUN_INFO *pLocRunInfo, wchar_t *wszRecognizerLanguage);
BOOL FactoidTableUnconfig();
BOOL SetFactoidDefaultInternal(LATTICE *pLattice);
BOOL SetFactoidInternal(LOCRUN_INFO *pLocRunInfo, LATTICE *pLattice, DWORD dwFactoid);
BOOL IsSupportedFactoid(DWORD dwFactoid);
// Stroke utils functions
POINT *DupPoints(POINT *pOldPoints, int nPoints);
GLYPH *GlyphFromStrokes(UINT cStrokes, STROKE *pStrokes);
#ifdef __cplusplus
}
#endif