mirror of
https://github.com/microsoft/Microsoft-3D-Movie-Maker.git
synced 2024-11-25 11:42:35 +01:00
120 lines
3.0 KiB
C++
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
|