keymap.c 2.7 KB
/*====================================================================
 * keymap.c
 *
 * Synopsis:
 *
 * Copyright 1993, Silicon Graphics, Inc.
 * All Rights Reserved.
 *
 * This is UNPUBLISHED PROPRIETARY SOURCE CODE of Silicon Graphics,
 * Inc.; the contents of this file may not be disclosed to third
 * parties, copied or duplicated in any form, in whole or in part,
 * without the prior written permission of Silicon Graphics, Inc.
 *
 * RESTRICTED RIGHTS LEGEND:
 * Use, duplication or disclosure by the Government is subject to
 * restrictions as set forth in subdivision (c)(1)(ii) of the Rights
 * in Technical Data and Computer Software clause at DFARS
 * 252.227-7013, and/or in similar or successor clauses in the FAR,
 * DOD or NASA FAR Supplement. Unpublished - rights reserved under the
 * Copyright Laws of the United States.
 *====================================================================*/

#include <assert.h>
#include <stdlib.h>
#include "ic.h"

ICKeyMap        *curKeyMap=0;
int             keyID = 0;

void keyNew(ICKeyMap *km)
{
    km->decl.declclass = ICKEYMAP;
    km->decl.id = objectID++;
    km->decl.offset = (void *)-1;              /* not allocated yet */
    km->decl.size = sizeof(ALKeyMap);
    km->map = 0;
}

void keySetKeyMin(ICKeyMap *k, int min)
{
    k->keyMin = min;
}

void keySetKeyMax(ICKeyMap *k, int max)
{
    k->keyMax = max;
}

void keySetKeyBase(ICKeyMap *k, int base)
{
    k->keyBase = base;
}

void keySetVelMin(ICKeyMap *k, int value)
{
    k->velocityMin = value;
}

void keySetVelMax(ICKeyMap *k, int value)
{
    k->velocityMax = value;
}

void keySetDetune(ICKeyMap *k, int value)
{
    k->detune = value;
}

void keyLayOut(ICKeyMap *ick)
{
    ALKeyMap *k;

    ick->decl.size = declSize((Decl *)ick);
    k = calloc(1, ick->decl.size);
    assert(k);

    k->velocityMin      = ick->velocityMin;
    k->velocityMax      = ick->velocityMax;
    k->keyMin           = ick->keyMin;
    k->keyMax           = ick->keyMax;
    k->keyBase          = ick->keyBase;
    k->detune           = ick->detune;

    ick->map = k;
}

void keyPrint(ICKeyMap *k)
{
    ALKeyMap    *kk = k->map;
    Id          *name;
    
    name = findname((Decl *)k);

    if (name) {
         printf("Key Map: %s\n", name->name);
    } else {
         printf("Key Map: \n");
    }
    
    declPrint((Decl *)k);
    
    printf("\tvelocityMin:\t= %x\n", kk->velocityMin);
    printf("\tvelocityMax:\t= %x\n", kk->velocityMax);
    printf("\tkeyMin:\t\t= %x\n", kk->keyMin);
    printf("\tkeyMax:\t\t= %x\n", kk->keyMax);
    printf("\tkeyBase:\t= %x\n", kk->keyBase);
    printf("\tdetune:\t\t= %x\n", kk->detune);
    printf("\n");
}

void keyWrite(ICKeyMap *k, FILE *file)
{
    fwrite(k->map, k->decl.size, 1, file);
}