AeEnvAsset.c++ 2.79 KB
/*****************************************************************************
 *  File:  AeEnvAsset.c++ 
 *
 *  AeEnvAsset Class Implementations
 *
 ****************************************************************************/
#include <assert.h>
#include <Vk/VkApp.h>

#include "AeAsset.h"
#include "GList.h"
#include "envIcon.xbm"


Pixmap AeEnvAsset::fIcon = NULL;


AeEnvAsset::AeEnvAsset(const char * name,
		       int attTime, int attLevel,
		       int decTime, int decLevel,
		       int relTime) : AeAsset (name, kEnvType)
{
    fAttackTime = attTime;
    fAttackLevel = attLevel;
    fDecayTime = decTime;
    fDecayLevel = decLevel;
    fReleaseTime = relTime;

    if (!fIcon)
    {
	fIcon = XCreateBitmapFromData (theApplication->display (),
				       DefaultRootWindow (theApplication->display ()),
				       (char *)envIcon_bits,
				       envIcon_width,
				       envIcon_height);
    }
}

AeEnvAsset::~AeEnvAsset()
{
    if (fParentList)
    {
	AeAsset *	parent;
	int		i;

	// nullify any references to this asset
	fParentList->Start (i, kReverse);
	while (fParentList->Prev (i, parent))
	{
	    if (((AeSoundAsset *)parent)->GetEnvelope () == this)
		((AeSoundAsset *)parent)->SetEnvelope (NULL);
	}
    }
}


void
AeEnvAsset::GetClassName (char * name)
{
    strcpy (name, "env");
}

Boolean
AeEnvAsset::IsParent (AeAsset * parent)
{
    assert (parent);
    return (((AeSoundAsset *)parent)->GetEnvelope () == this);
}

void AeEnvAsset::SetAttackTimeProc(AeAsset * asset, int time)
{
    assert (asset != NULL);
    ((AeEnvAsset *)asset)->SetAttackTime (time);
}

void AeEnvAsset::SetAttackLevelProc(AeAsset * asset, int level)
{
    assert (asset != NULL);
    ((AeEnvAsset *)asset)->SetAttackLevel (level);
}

void AeEnvAsset::SetDecayTimeProc(AeAsset * asset, int time)
{
    assert (asset != NULL);
    ((AeEnvAsset *)asset)->SetDecayTime (time);
}

void AeEnvAsset::SetDecayLevelProc(AeAsset * asset, int level)
{
    assert (asset != NULL);
    ((AeEnvAsset *)asset)->SetDecayLevel (level);
}

void AeEnvAsset::SetReleaseTimeProc(AeAsset * asset, int time)
{
    assert (asset != NULL);
    ((AeEnvAsset *)asset)->SetReleaseTime (time);
}

int AeEnvAsset::GetAttackTimeProc(AeAsset * asset)
{
    assert (asset != NULL);
    return ((AeEnvAsset *)asset)->GetAttackTime ();
}

int AeEnvAsset::GetAttackLevelProc(AeAsset * asset)
{
    assert (asset != NULL);
    return ((AeEnvAsset *)asset)->GetAttackLevel ();
}

int AeEnvAsset::GetDecayTimeProc(AeAsset * asset)
{
    assert (asset != NULL);
    return ((AeEnvAsset *)asset)->GetDecayTime ();
}

int AeEnvAsset::GetDecayLevelProc(AeAsset * asset)
{
    assert (asset != NULL);
    return ((AeEnvAsset *)asset)->GetDecayLevel ();
}

int AeEnvAsset::GetReleaseTimeProc(AeAsset * asset)
{
    assert (asset != NULL);
    return ((AeEnvAsset *)asset)->GetReleaseTime ();
}