mirror of
https://github.com/microsoft/Microsoft-3D-Movie-Maker.git
synced 2024-11-25 03:33:22 +01:00
283 lines
7.0 KiB
C++
283 lines
7.0 KiB
C++
|
/* Copyright (c) Microsoft Corporation.
|
||
|
Licensed under the MIT License. */
|
||
|
|
||
|
/***************************************************************************
|
||
|
|
||
|
esl.h: Easel classes
|
||
|
|
||
|
Primary Author: ******
|
||
|
Review Status: REVIEWED - any changes to this file must be reviewed!
|
||
|
|
||
|
BASE ---> CMH ---> GOB ---> GOK ---> ESL (generic easel)
|
||
|
|
|
||
|
+---> ESLT (text easel)
|
||
|
|
|
||
|
+---> ESLC (costume easel)
|
||
|
|
|
||
|
+---> ESLL (listener easel)
|
||
|
|
|
||
|
+---> ESLR (sound recording easel)
|
||
|
|
||
|
***************************************************************************/
|
||
|
#ifndef ESL_H
|
||
|
#define ESL_H
|
||
|
|
||
|
// Function to build a GCB to construct a child under a parent
|
||
|
bool FBuildGcb(PGCB pgcb, long kidParent, long kidChild);
|
||
|
|
||
|
// Function to set a GOK to a different state
|
||
|
void SetGokState(long kid, long st);
|
||
|
|
||
|
/*****************************
|
||
|
The generic easel class
|
||
|
*****************************/
|
||
|
typedef class ESL *PESL;
|
||
|
#define ESL_PAR GOK
|
||
|
#define kclsESL 'ESL'
|
||
|
class ESL : public ESL_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
CMD_MAP_DEC(ESL)
|
||
|
|
||
|
protected:
|
||
|
ESL(PGCB pgcb) : GOK(pgcb) {}
|
||
|
bool _FInit(PRCA prca, long kidEasel);
|
||
|
virtual bool _FAcceptChanges(bool *pfDismissEasel) { return fTrue; }
|
||
|
|
||
|
public:
|
||
|
static PESL PeslNew(PRCA prca, long kidParent, long hidEasel);
|
||
|
~ESL(void);
|
||
|
|
||
|
bool FCmdDismiss(PCMD pcmd); // Handles both OK and Cancel
|
||
|
};
|
||
|
|
||
|
|
||
|
typedef class ESLT *PESLT; // SNE needs this
|
||
|
/****************************************
|
||
|
Spletter Name Editor class. It's
|
||
|
derived from EDSL, which is a Kauai
|
||
|
single-line edit control
|
||
|
****************************************/
|
||
|
typedef class SNE *PSNE;
|
||
|
#define SNE_PAR EDSL
|
||
|
#define kclsSNE 'SNE'
|
||
|
class SNE : public SNE_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
|
||
|
protected:
|
||
|
PESLT _peslt; // easel to notify when text changes
|
||
|
|
||
|
protected:
|
||
|
SNE(PEDPAR pedpar) : EDSL(pedpar) {}
|
||
|
|
||
|
public:
|
||
|
static PSNE PsneNew(PEDPAR pedpar, PESLT peslt, PSTN pstnInit);
|
||
|
virtual bool FReplace(achar *prgch, long cchIns,
|
||
|
long ich1, long ich2, long gin);
|
||
|
};
|
||
|
|
||
|
|
||
|
/****************************************
|
||
|
The text easel class
|
||
|
****************************************/
|
||
|
typedef class ESLT *PESLT;
|
||
|
#define ESLT_PAR ESL
|
||
|
#define kclsESLT 'ESLT'
|
||
|
class ESLT : public ESLT_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
CMD_MAP_DEC(ESLT)
|
||
|
|
||
|
protected:
|
||
|
PMVIE _pmvie; // Movie that this TDT is in
|
||
|
PACTR _pactr; // Actor of this TDT, or pvNil for new TDT
|
||
|
PAPE _pape; // Actor Preview Entity
|
||
|
PSNE _psne; // Spletter Name Editor
|
||
|
PRCA _prca; // Resource source for cursors
|
||
|
PSFL _psflMtrl;
|
||
|
PBCL _pbclMtrl;
|
||
|
PSFL _psflTdf;
|
||
|
PBCL _pbclTdf;
|
||
|
PSFL _psflTdts;
|
||
|
|
||
|
protected:
|
||
|
ESLT(PGCB pgcb) : ESL(pgcb) {}
|
||
|
bool _FInit(PRCA prca, long kidEasel, PMVIE pmvie, PACTR pactr,
|
||
|
PSTN pstnNew, long tdtsNew, PTAG ptagTdfNew);
|
||
|
virtual bool _FAcceptChanges(bool *pfDismissEasel);
|
||
|
|
||
|
public:
|
||
|
static PESLT PesltNew(PRCA prca, PMVIE pmvie, PACTR pactr,
|
||
|
PSTN pstnNew = pvNil, long tdtsNew = tdtsNil,
|
||
|
PTAG ptagTdfNew = pvNil);
|
||
|
~ESLT(void);
|
||
|
|
||
|
bool FCmdRotate(PCMD pcmd);
|
||
|
bool FCmdTransmogrify(PCMD pcmd);
|
||
|
bool FCmdStartPopup(PCMD pcmd);
|
||
|
bool FCmdSetFont(PCMD pcmd);
|
||
|
bool FCmdSetShape(PCMD pcmd);
|
||
|
bool FCmdSetColor(PCMD pcmd);
|
||
|
|
||
|
bool FTextChanged(PSTN pstn);
|
||
|
};
|
||
|
|
||
|
|
||
|
/********************************************
|
||
|
The actor easel (costume changer) class
|
||
|
********************************************/
|
||
|
typedef class ESLA *PESLA;
|
||
|
#define ESLA_PAR ESL
|
||
|
#define kclsESLA 'ESLA'
|
||
|
class ESLA : public ESLA_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
CMD_MAP_DEC(ESLA)
|
||
|
|
||
|
protected:
|
||
|
PMVIE _pmvie; // Movie that this actor is in
|
||
|
PACTR _pactr; // The actor that is being edited
|
||
|
PAPE _pape; // Actor Preview Entity
|
||
|
PEDSL _pedsl; // Single-line edit control (for actor's name)
|
||
|
|
||
|
protected:
|
||
|
ESLA(PGCB pgcb) : ESL(pgcb) {}
|
||
|
bool _FInit(PRCA prca, long kidEasel, PMVIE pmvie, PACTR pactr);
|
||
|
virtual bool _FAcceptChanges(bool *pfDismissEasel);
|
||
|
|
||
|
public:
|
||
|
static PESLA PeslaNew(PRCA prca, PMVIE pmvie, PACTR pactr);
|
||
|
~ESLA(void);
|
||
|
|
||
|
bool FCmdRotate(PCMD pcmd);
|
||
|
bool FCmdTool(PCMD pcmd);
|
||
|
};
|
||
|
|
||
|
|
||
|
/****************************************
|
||
|
Listener sound class
|
||
|
****************************************/
|
||
|
typedef class LSND *PLSND;
|
||
|
#define LSND_PAR BASE
|
||
|
#define kclsLSND 'LSND'
|
||
|
class LSND : public LSND_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
|
||
|
protected:
|
||
|
PGL _pgltag; // PGL in case of chained sounds
|
||
|
long _vlm; // Initial volume
|
||
|
long _vlmNew; // User can redefine with slider
|
||
|
bool _fLoop; // Looping sound
|
||
|
long _objID; // Owner's object ID
|
||
|
long _sty; // Sound type
|
||
|
long _kidVol; // Kid of volume slider
|
||
|
long _kidIcon; // Kid of sound-type icon
|
||
|
long _kidEditBox; // Kid of sound-name box
|
||
|
bool _fMatcher; // Whether this is a motion-matched sound
|
||
|
|
||
|
public:
|
||
|
LSND(void) { _pgltag = pvNil; }
|
||
|
~LSND(void);
|
||
|
|
||
|
bool FInit(long sty, long kidVol, long kidIcon, long kidEditBox,
|
||
|
PGL *ppgltag, long vlm, bool fLoop, long objID, bool fMatcher);
|
||
|
bool FValidSnd(void);
|
||
|
void SetVlmNew(long vlmNew) { _vlmNew = vlmNew; }
|
||
|
void Play(void);
|
||
|
bool FChanged(long *pvlmNew, bool *pfNuked);
|
||
|
};
|
||
|
|
||
|
|
||
|
/****************************************
|
||
|
The listener easel class
|
||
|
****************************************/
|
||
|
typedef class ESLL *PESLL;
|
||
|
#define ESLL_PAR ESL
|
||
|
#define kclsESLL 'ESLL'
|
||
|
class ESLL : public ESLL_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
CMD_MAP_DEC(ESLL)
|
||
|
|
||
|
protected:
|
||
|
PMVIE _pmvie; // Movie that these sounds are in
|
||
|
PSCEN _pscen; // Scene that these sounds are in
|
||
|
PACTR _pactr; // Actor that sounds are attached to (or pvNil)
|
||
|
LSND _lsndSpeech;
|
||
|
LSND _lsndSfx;
|
||
|
LSND _lsndMidi;
|
||
|
LSND _lsndSpeechMM;
|
||
|
LSND _lsndSfxMM;
|
||
|
|
||
|
protected:
|
||
|
ESLL(PGCB pgcb) : ESL(pgcb) {}
|
||
|
|
||
|
bool _FInit(PRCA prca, long kidEasel, PMVIE pmvie, PACTR pactr);
|
||
|
virtual bool _FAcceptChanges(bool *pfDismissEasel);
|
||
|
|
||
|
public:
|
||
|
static PESLL PesllNew(PRCA prca, PMVIE pmvie, PACTR pactr);
|
||
|
~ESLL(void);
|
||
|
|
||
|
bool FCmdVlm(PCMD pcmd);
|
||
|
bool FCmdPlay(PCMD pcmd);
|
||
|
};
|
||
|
|
||
|
|
||
|
/****************************************
|
||
|
The sound recording easel class
|
||
|
****************************************/
|
||
|
typedef class ESLR *PESLR;
|
||
|
#define ESLR_PAR ESL
|
||
|
#define kclsESLR 'ESLR'
|
||
|
class ESLR : public ESLR_PAR
|
||
|
{
|
||
|
RTCLASS_DEC
|
||
|
ASSERT
|
||
|
MARKMEM
|
||
|
CMD_MAP_DEC(ESLR)
|
||
|
|
||
|
protected:
|
||
|
PMVIE _pmvie; // The movie to insert sound into
|
||
|
bool _fSpeech; // Recording Speech or SFX?
|
||
|
PEDSL _pedsl; // Single-line edit control for sound name
|
||
|
PSREC _psrec; // Sound recording object
|
||
|
CLOK _clok; // Clock to limit sound length
|
||
|
bool _fRecording; // Are we recording right now?
|
||
|
bool _fPlaying; // Are we playing back the recording?
|
||
|
ulong _tsStartRec; // Time at which we started recording
|
||
|
|
||
|
protected:
|
||
|
ESLR(PGCB pgcb) : ESL(pgcb), _clok(HidUnique()) {}
|
||
|
bool _FInit(PRCA prca, long kidEasel, PMVIE pmvie, bool fSpeech,
|
||
|
PSTN pstnNew);
|
||
|
virtual bool _FAcceptChanges(bool *pfDismissEasel);
|
||
|
void _UpdateMeter(void);
|
||
|
|
||
|
public:
|
||
|
static PESLR PeslrNew(PRCA prca, PMVIE pmvie, bool fSpeech,
|
||
|
PSTN pstnNew);
|
||
|
~ESLR(void);
|
||
|
|
||
|
bool FCmdRecord(PCMD pcmd);
|
||
|
bool FCmdPlay(PCMD pcmd);
|
||
|
bool FCmdUpdateMeter(PCMD pcmd);
|
||
|
};
|
||
|
|
||
|
|
||
|
#endif ESL_H
|