mirror of
https://github.com/microsoft/Microsoft-3D-Movie-Maker.git
synced 2024-11-22 10:22:40 +01:00
212 lines
5.4 KiB
C++
212 lines
5.4 KiB
C++
|
/* Copyright (c) Microsoft Corporation.
|
||
|
Licensed under the MIT License. */
|
||
|
|
||
|
/* Copyright (c) Microsoft Corporation.
|
||
|
Licensed under the MIT License. */
|
||
|
|
||
|
/***************************************************************************
|
||
|
Author: ShonK
|
||
|
Project: Kauai
|
||
|
Reviewed:
|
||
|
Copyright (c) Microsoft Corporation
|
||
|
|
||
|
Code for implementing help balloons in kidspace.
|
||
|
|
||
|
***************************************************************************/
|
||
|
#ifndef KIDHELP_H
|
||
|
#define KIDHELP_H
|
||
|
|
||
|
|
||
|
/***************************************************************************
|
||
|
Help topic construction information.
|
||
|
***************************************************************************/
|
||
|
struct HTOP
|
||
|
{
|
||
|
CNO cnoBalloon;
|
||
|
long hidThis;
|
||
|
long hidTarget;
|
||
|
CNO cnoScript;
|
||
|
long dxp;
|
||
|
long dyp;
|
||
|
CKI ckiSnd;
|
||
|
};
|
||
|
typedef HTOP *PHTOP;
|
||
|
const BOM kbomHtop = 0xFFF00000;
|
||
|
|
||
|
|
||
|
// help topic on file
|
||
|
struct HTOPF
|
||
|
{
|
||
|
short bo;
|
||
|
short osk;
|
||
|
HTOP htop;
|
||
|
};
|
||
|
|
||
|
|
||
|
// edit control object
|
||
|
struct ECOS
|
||
|
{
|
||
|
CTG ctg; // kctgEditControl
|
||
|
long dxp; // width
|
||
|
};
|
||
|
|
||
|
|
||
|
/***************************************************************************
|
||
|
Help text document
|
||
|
***************************************************************************/
|
||
|
enum
|
||
|
{
|
||
|
ftxhdNil = 0,
|
||
|
ftxhdCopyText = 1,
|
||
|
ftxhdExpandStrings = 2,
|
||
|
};
|
||
|
|
||
|
typedef class TXHD *PTXHD;
|
||
|
#define TXHD_PAR TXRD
|
||
|
#define kclsTXHD 'TXHD'
|
||
|
class TXHD : public TXHD_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
|
||
|
protected:
|
||
|
enum
|
||
|
{
|
||
|
sprmGroup = 64, // grouped (hot) text - uses the AG
|
||
|
};
|
||
|
|
||
|
PRCA _prca; // source of pictures and buttons
|
||
|
HTOP _htop; // our gob creation information
|
||
|
bool _fHideButtons; // whether to draw buttons
|
||
|
|
||
|
TXHD(PRCA prca, PDOCB pdocb = pvNil, ulong grfdoc = fdocNil);
|
||
|
~TXHD(void);
|
||
|
|
||
|
virtual bool _FReadChunk(PCFL pcfl, CTG ctg, CNO cno, PSTRG pstrg = pvNil,
|
||
|
ulong grftxhd = ftxhdNil);
|
||
|
virtual bool _FOpenArg(long icact, byte sprm, short bo, short osk);
|
||
|
virtual bool _FGetObjectRc(long icact, byte sprm, PGNV pgnv, PCHP pchp,
|
||
|
RC *prc);
|
||
|
virtual bool _FDrawObject(long icact, byte sprm, PGNV pgnv,
|
||
|
long *pxp, long yp, PCHP pchp, RC *prcClip);
|
||
|
|
||
|
public:
|
||
|
static PTXHD PtxhdReadChunk(PRCA prca, PCFL pcfl, CTG ctg, CNO cno,
|
||
|
PSTRG pstrg = pvNil, ulong grftxhd = ftxhdExpandStrings);
|
||
|
|
||
|
virtual bool FSaveToChunk(PCFL pcfl, CKI *pcki, bool fRedirectText = fFalse);
|
||
|
|
||
|
bool FInsertPicture(CNO cno, void *pvExtra, long cbExtra,
|
||
|
long cp, long ccpDel, PCHP pchp = pvNil, ulong grfdoc = fdocUpdate);
|
||
|
bool FInsertButton(CNO cno, CNO cnoTopic, void *pvExtra, long cbExtra,
|
||
|
long cp, long ccpDel, PCHP pchp = pvNil, ulong grfdoc = fdocUpdate);
|
||
|
PRCA Prca(void)
|
||
|
{ return _prca; }
|
||
|
bool FGroupText(long cp1, long cp2, byte bGroup,
|
||
|
CNO cnoTopic = cnoNil, PSTN pstnTopic = pvNil);
|
||
|
bool FGrouped(long cp, long *pcpMin = pvNil, long *pcpLim = pvNil,
|
||
|
byte *pbGroup = pvNil, CNO *pcnoTopic = pvNil, PSTN pstnTopic = pvNil);
|
||
|
|
||
|
void GetHtop(PHTOP phtop);
|
||
|
void SetHtop(PHTOP phtop);
|
||
|
void HideButtons(bool fHide = fTrue)
|
||
|
{ _fHideButtons = FPure(fHide); }
|
||
|
};
|
||
|
|
||
|
|
||
|
/***************************************************************************
|
||
|
A runtime DDG for a help topic.
|
||
|
***************************************************************************/
|
||
|
typedef class TXHG *PTXHG;
|
||
|
#define TXHG_PAR TXRG
|
||
|
#define kclsTXHG 'TXHG'
|
||
|
class TXHG : public TXHG_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
CMD_MAP_DEC(TXHG)
|
||
|
|
||
|
protected:
|
||
|
byte _bTrack;
|
||
|
CNO _cnoTrack;
|
||
|
long _hidBase;
|
||
|
ulong _grfcust;
|
||
|
PWOKS _pwoks;
|
||
|
|
||
|
TXHG(PWOKS pwoks, PTXHD ptxhd, PGCB pgcb);
|
||
|
virtual bool _FInit(void);
|
||
|
virtual bool _FRunScript(byte bGroup, ulong grfcust, long hidHit, achar ch,
|
||
|
CNO cnoTopic = cnoNil, long *plwRet = pvNil);
|
||
|
|
||
|
public:
|
||
|
static PTXHG PtxhgNew(PWOKS pwoks, PTXHD ptxhd, PGCB pgcb);
|
||
|
|
||
|
PTXHD Ptxhd(void)
|
||
|
{ return (PTXHD)_ptxtb; }
|
||
|
virtual bool FPtIn(long xp, long yp);
|
||
|
virtual bool FCmdTrackMouse(PCMD_MOUSE pcmd);
|
||
|
virtual bool FCmdMouseMove(PCMD_MOUSE pcmd);
|
||
|
virtual bool FCmdBadKey(PCMD_BADKEY pcmd);
|
||
|
virtual bool FGroupFromPt(long xp, long yp, byte *pbGroup = pvNil,
|
||
|
CNO *pcnoTopic = pvNil);
|
||
|
virtual void DoHit(byte bGroup, CNO cnoTopic, ulong grfcust, long hidHit);
|
||
|
virtual void SetCursor(ulong grfcust);
|
||
|
};
|
||
|
|
||
|
|
||
|
/***************************************************************************
|
||
|
Help balloon.
|
||
|
***************************************************************************/
|
||
|
typedef class HBAL *PHBAL;
|
||
|
#define HBAL_PAR GOK
|
||
|
#define kclsHBAL 'HBAL'
|
||
|
class HBAL : public HBAL_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
|
||
|
protected:
|
||
|
PTXHG _ptxhg;
|
||
|
|
||
|
HBAL(GCB *pgcb);
|
||
|
virtual void _SetGorp(PGORP pgorp, long dxp, long dyp);
|
||
|
virtual bool _FInit(PWOKS pwoks, PTXHD ptxhd, HTOP *phtop, PRCA prca);
|
||
|
virtual bool _FSetTopic(PTXHD ptxhd, PHTOP phtop, PRCA prca);
|
||
|
|
||
|
public:
|
||
|
static PHBAL PhbalCreate(PWOKS pwoks, PGOB pgobPar, PRCA prca,
|
||
|
CNO cnoTopic, PHTOP phtop = pvNil);
|
||
|
static PHBAL PhbalNew(PWOKS pwoks, PGOB pgobPar, PRCA prca,
|
||
|
PTXHD ptxhd, PHTOP phtop = pvNil);
|
||
|
|
||
|
virtual bool FSetTopic(PTXHD ptxhd, PHTOP phtop, PRCA prca);
|
||
|
};
|
||
|
|
||
|
|
||
|
/***************************************************************************
|
||
|
Help balloon button.
|
||
|
***************************************************************************/
|
||
|
typedef class HBTN *PHBTN;
|
||
|
#define HBTN_PAR GOK
|
||
|
#define kclsHBTN 'HBTN'
|
||
|
class HBTN : public HBTN_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
|
||
|
protected:
|
||
|
HBTN(GCB *pgcb);
|
||
|
|
||
|
byte _bGroup;
|
||
|
CNO _cnoTopic;
|
||
|
|
||
|
public:
|
||
|
static PHBTN PhbtnNew(PWOKS pwoks, PGOB pgobPar, long hid, CNO cno,
|
||
|
PRCA prca, byte bGroup, CNO cnoTopic, long xpLeft, long ypBottom);
|
||
|
|
||
|
virtual bool FPtIn(long xp, long yp);
|
||
|
virtual bool FCmdClicked(PCMD_MOUSE pcmd);
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif //!KIDHELP_H
|
||
|
|