Microsoft-3D-Movie-Maker/INC/TDT.H

120 lines
3.0 KiB
C++

/* Copyright (c) Microsoft Corporation.
Licensed under the MIT License. */
/***************************************************************************
tdt.h: Three-D Text class
Primary Author: ******
Review Status: REVIEWED - any changes to this file must be reviewed!
BASE ---> BACO ---> TMPL ---> TDT (Three-D Text)
***************************************************************************/
#ifndef TDT_H
#define TDT_H
// 3-D Text Shapes - the positions and orientations of the letters
enum
{
tdtsNil = -1,
tdtsNormal = 0,
tdtsArchPositive,
tdtsCircleY,
tdtsLargeMiddle,
tdtsArchNegative,
tdtsArchZ,
tdtsCircleZ,
tdtsVertical,
tdtsGrowRight,
tdtsGrowLeft,
tdtsLim
};
// 3-D Actions
enum
{
tdaNil = -1,
tdaRest = 0,
tdaLetterRotX, // each letter rotates around its own X axis
tdaLetterRotY,
tdaLetterRotZ,
tdaSwingX, // letters skew right, then left, then back to normal
tdaSwingY,
tdaSwingZ,
tdaPulse, // letters grow 10%, then shrink back to normal
tdaWordRotX, // (rotate entire word around X axis)
tdaWordRotY,
tdaWordRotZ,
tdaWave, // a bump ripples through the letters
tdaReveal, // letters slowly grow from zero height
tdaWalk, // walk (word hops forward as if walking)
tdaHop, // letters hop up and down
tdaStretch, // stretch in X
tdaLim
};
/****************************************
3-D Text class
****************************************/
typedef class TDT *PTDT;
#define TDT_PAR TMPL
#define kclsTDT 'TDT'
class TDT : public TDT_PAR
{
RTCLASS_DEC
ASSERT
MARKMEM
protected:
static PGST _pgstAction; // Action names
long _tdts; // TDT shape
TAG _tagTdf; // Tag to Three-D Font
PMTRL _pmtrlDefault;// MTRL for TDT's default costume
PACTN _pactnCache; // Last-used action
long _tdaCache; // Action in pactnCache
protected:
virtual bool _FInit(PCFL pcfl, CTG ctgTmpl, CNO cnoTmpl);
bool _FInitLists(void);
PGL _PglibactParBuild(void);
PGL _PglibsetBuild(void);
PGG _PggcmidBuild(void);
PGL _Pglbmat34Build(long tda);
PGG _PggcelBuild(long tda);
virtual PACTN _PactnFetch(long tda);
PACTN _PactnBuild(long tda);
virtual PMODL _PmodlFetch(CHID chidModl);
long _CcelOfTda(long tda);
void _ApplyAction(BMAT34 *pbmat34, long tda, long ich, long ccel,
long icel, BRS xrChar, BRS pdxrText);
void _ApplyShape(BMAT34 *pbmat34, long tdts, long cch, long ich,
BRS xrChar, BRS dxrText, BRS yrChar, BRS dyrMax, BRS dyrTotal);
public:
static bool FSetActionNames(PGST pgstAction);
#ifdef DEBUG
static void MarkActionNames(void);
#endif
static PTDT PtdtNew(PSTN pstn, long tdts, PTAG ptagTdf);
~TDT(void);
static PGL PgltagFetch(PCFL pcfl, CTG ctg, CNO cno, bool *pfError);
PTDT PtdtDup(void);
void GetInfo(PSTN pstn, long *ptdts, PTAG ptagTdf);
bool FChange(PSTN pstn, long tdts = tdtsNil, PTAG ptagTdf = pvNil);
bool FWrite(PCFL pcfl, CTG ctg, CNO *pcno);
bool FAdjustBody(PBODY pbody);
virtual bool FSetDefaultCost(PBODY pbody);
virtual PCMTL PcmtlFetch(long cmid);
virtual bool FGetActnName(long anid, PSTN pstn);
};
#endif //TDT_H