220 lines
6.4 KiB
C
220 lines
6.4 KiB
C
|
#ifndef WARICHU_DEFINED
|
||
|
#define WARICHU_DEFINED
|
||
|
|
||
|
#include "lsimeth.h"
|
||
|
|
||
|
/* Character location for pfnFetchWarichuWidthAdjust callback */
|
||
|
enum warichucharloc {
|
||
|
warichuBegin, /* Character preceeds Warichu object */
|
||
|
warichuEnd /* Character follows Warichu object */
|
||
|
};
|
||
|
|
||
|
/*
|
||
|
*
|
||
|
* Warichu Object Callbacks to Client
|
||
|
*
|
||
|
*/
|
||
|
typedef struct WARICHUCBK
|
||
|
{
|
||
|
LSERR (WINAPI* pfnGetWarichuInfo)(
|
||
|
POLS pols,
|
||
|
LSCP cp,
|
||
|
LSTFLOW lstflow,
|
||
|
PCOBJDIM pcobjdimFirst,
|
||
|
PCOBJDIM pcobjdimSecond,
|
||
|
PHEIGHTS pheightsRef,
|
||
|
PHEIGHTS pheightsPres,
|
||
|
long *pdvpDescentReservedForClient);
|
||
|
|
||
|
/* GetWarichuInfo
|
||
|
* pols (IN): The client context for the request.
|
||
|
*
|
||
|
* cp (IN): the cp of the Warichu object.
|
||
|
*
|
||
|
* lstflow (IN): the lstflow of Warichu parent subline
|
||
|
*
|
||
|
* pcobjdimFirst (IN): dimensions of first line of Warichu.
|
||
|
*
|
||
|
* pcobjdimSecond (IN): dimensions of second line of Warichu.
|
||
|
*
|
||
|
* pheightsRef (OUT): specifies heights for Warichu object in reference
|
||
|
* device units.
|
||
|
*
|
||
|
* pheightsPres (OUT): specifies heights for Warichu object in presentation
|
||
|
* device units.
|
||
|
*
|
||
|
* pdvpDescentReservedForClient (OUT): specifies the part of the descent area
|
||
|
* that the client is reserving for its own use (usually for the purpose
|
||
|
* of underlining) in presentation device units. The object will begin its
|
||
|
* display area below the baseline at the difference between
|
||
|
* pheightsRef->dvDescent and *pdvpDescentReservedForClient.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
LSERR (WINAPI* pfnFetchWarichuWidthAdjust)(
|
||
|
POLS pols,
|
||
|
LSCP cp,
|
||
|
enum warichucharloc wcl,
|
||
|
PLSRUN plsrunForChar,
|
||
|
WCHAR wch,
|
||
|
MWCLS mwclsForChar,
|
||
|
PLSRUN plsrunWarichuBracket,
|
||
|
long *pdurAdjustChar,
|
||
|
long *pdurAdjustBracket);
|
||
|
|
||
|
/* FetchWarichuWidthAdjust
|
||
|
* pols (IN): The client context for the request.
|
||
|
*
|
||
|
* cp (IN): the cp of the Warichu object.
|
||
|
*
|
||
|
* wcl (IN): specifies the location of the character and bracket.
|
||
|
*
|
||
|
* plsrunForChar (IN): the run of the character that is either previous or
|
||
|
* following the Warichu object. Whether preceeding or following is
|
||
|
* determined by value of the wcl parameter above.
|
||
|
*
|
||
|
* wch (IN): character that is either preceeding or following the Warichu
|
||
|
* object.
|
||
|
*
|
||
|
* mwclsForChar (IN): mod width class for the wch parameter.
|
||
|
*
|
||
|
* plsrunWarichuBracket (IN): plsrun for leading or following bracket of
|
||
|
* the Warichu.
|
||
|
*
|
||
|
* pdurAdjustChar (OUT): the amount that the width of the input character
|
||
|
* should be adjusted. A negative value means the width of the input
|
||
|
* character should be made smaller.
|
||
|
*
|
||
|
* pdurAdjustBracket (OUT): the amount that the width of the Warichu bracket
|
||
|
* should be adjusted. A negative value means the width of the Warichu
|
||
|
* bracket should be made smaller.
|
||
|
*/
|
||
|
|
||
|
LSERR (WINAPI* pfnWarichuEnum)(
|
||
|
POLS pols,
|
||
|
PLSRUN plsrun,
|
||
|
PCLSCHP plschp,
|
||
|
LSCP cp,
|
||
|
LSDCP dcp,
|
||
|
LSTFLOW lstflow,
|
||
|
BOOL fReverse,
|
||
|
BOOL fGeometryNeeded,
|
||
|
const POINT* pt,
|
||
|
PCHEIGHTS pcheights,
|
||
|
long dupRun,
|
||
|
const POINT *ptLeadBracket,
|
||
|
PCHEIGHTS pcheightsLeadBracket,
|
||
|
long dupLeadBracket,
|
||
|
const POINT *ptTrailBracket,
|
||
|
PCHEIGHTS pcheightsTrailBracket,
|
||
|
long dupTrailBracket,
|
||
|
const POINT *ptFirst,
|
||
|
PCHEIGHTS pcheightsFirst,
|
||
|
long dupFirst,
|
||
|
const POINT *ptSecond,
|
||
|
PCHEIGHTS pcheightsSecond,
|
||
|
long dupSecond,
|
||
|
PLSSUBL plssublLeadBracket,
|
||
|
PLSSUBL plssublTrailBracket,
|
||
|
PLSSUBL plssublFirst,
|
||
|
PLSSUBL plssublSecond);
|
||
|
|
||
|
/* WarichuEnum
|
||
|
*
|
||
|
* pols (IN): client context.
|
||
|
*
|
||
|
* plsrun (IN): plsrun for the entire Warichu Object.
|
||
|
*
|
||
|
* plschp (IN): is lschp for lead character of Warichu Object.
|
||
|
*
|
||
|
* cp (IN): is cp of first character of Warichu Object.
|
||
|
*
|
||
|
* dcp (IN): is number of characters in Warichu Object
|
||
|
*
|
||
|
* lstflow (IN): is text flow at Warichu Object.
|
||
|
*
|
||
|
* fReverse (IN): is whether text should be reversed for visual order.
|
||
|
*
|
||
|
* fGeometryNeeded (IN): is whether Geometry should be returned.
|
||
|
*
|
||
|
* pt (IN): is starting position , iff fGeometryNeeded .
|
||
|
*
|
||
|
* pcheights (IN): is height of Warichu object, iff fGeometryNeeded.
|
||
|
*
|
||
|
* dupRun (IN): is length of Warichu Object, iff fGeometryNeeded.
|
||
|
*
|
||
|
* ptLeadBracket (IN): is point for second line iff fGeometryNeeded and
|
||
|
* plssublLeadBracket not NULL.
|
||
|
*
|
||
|
* pcheightsLeadBracket (IN): is height for Warichu line iff fGeometryNeeded
|
||
|
* and plssublLeadBracket not NULL.
|
||
|
*
|
||
|
* dupLeadBracket (IN): is length of Warichu line iff fGeometryNeeded and
|
||
|
* plssublLeadBracket not NULL.
|
||
|
*
|
||
|
* ptTrailBracket (IN): is point for second line iff fGeometryNeeded and
|
||
|
* plssublLeadBracket not NULL.
|
||
|
*
|
||
|
* pcheightsTrailBracket (IN): is height for Warichu line iff fGeometryNeeded
|
||
|
* and plssublTrailBracket not NULL.
|
||
|
*
|
||
|
* dupTrailBracket (IN): is length of Warichu line iff fGeometryNeeded and
|
||
|
* plssublTrailBracket not NULL.
|
||
|
*
|
||
|
* ptFirst (IN): is starting point for main line iff fGeometryNeeded
|
||
|
*
|
||
|
* pcheightsFirst (IN): is height of main line iff fGeometryNeeded
|
||
|
*
|
||
|
* dupFirst (IN): is length of main line iff fGeometryNeeded
|
||
|
*
|
||
|
* ptSecond (IN): is point for second line iff fGeometryNeeded and
|
||
|
* plssublSecond not NULL.
|
||
|
*
|
||
|
* pcheightsSecond (IN): is height for Warichu line iff fGeometryNeeded
|
||
|
* and plssublSecond not NULL.
|
||
|
*
|
||
|
* dupSecond (IN): is length of Warichu line iff fGeometryNeeded and
|
||
|
* plssublSecond not NULL.
|
||
|
*
|
||
|
* plssublLeadBracket (IN): is subline for lead bracket.
|
||
|
*
|
||
|
* plssublTrailBracket (IN): is subline for trail bracket.
|
||
|
*
|
||
|
* plssublFirst (IN): is first subline in Warichu object.
|
||
|
*
|
||
|
* plssublSecond (IN): is second subline in Warichu object.
|
||
|
*
|
||
|
*/
|
||
|
|
||
|
} WARICHUCBK;
|
||
|
|
||
|
#define WARICHU_VERSION 0x300
|
||
|
|
||
|
/*
|
||
|
*
|
||
|
* Warichi object initialization data that the client application must return
|
||
|
* when the Warichu object handler calls the GetObjectHandlerInfo callback.
|
||
|
*/
|
||
|
typedef struct WARICHUINIT
|
||
|
{
|
||
|
DWORD dwVersion; /* Version must be WARICHU_VERSION */
|
||
|
WCHAR wchEndFirstBracket; /* Escape char to end first bracket */
|
||
|
WCHAR wchEndText; /* Escape char to end text */
|
||
|
WCHAR wchEndWarichu; /* Escape char to end object */
|
||
|
WCHAR wchUnused; /* For alignment */
|
||
|
WARICHUCBK warichcbk; /* Callbacks */
|
||
|
BOOL fContiguousFetch; /* Always refetch whole subline & closing brace
|
||
|
after reformatting inside warichu */
|
||
|
} WARICHUINIT;
|
||
|
|
||
|
LSERR WINAPI LsGetWarichuLsimethods(
|
||
|
LSIMETHODS *plsim);
|
||
|
|
||
|
/* GetWarichuLsimethods
|
||
|
*
|
||
|
* plsim (OUT): Warichu object callbacks.
|
||
|
*/
|
||
|
|
||
|
#endif /* WARICHU_DEFINED */
|
||
|
|