#include    <exec/types.h>
#include    <exec/lists.h>
#include    <devices/load.h>
#include    "execdef.h"
#include    "loadrecord.h"
#include    "windowinfo.h"

#include    "NewScale.proto"

extern loadrequest *loadRequest;
extern long maxTicks;
extern long maxChip;
extern long maxFast;
extern long maxMem;

Bool
NewScale(window_info, record, data_value)
    WindowInfo *window_info;
    LoadRecord *record;
    LoadDataValue data_value;
{
    short new_scale;
    long  max_value;

    switch(record->type)
    {
    case CPU:
    case BLITTER:
	max_value = maxTicks;
	break;
    case CHIPMEM:
	max_value = maxChip;
	break;
    case FASTMEM:
	max_value = maxFast;
	break;
    case ALLMEM:
	max_value = maxMem;
	break;
    }
    new_scale = data_value / max_value + 1;
    if (new_scale != record->scale)
    {
	record->scale = new_scale;
	record->scaled_ticks = new_scale * max_value;
	record->deltay = window_info->height / new_scale;
	record->moduloy = window_info->height % new_scale;
	return TRUE;
    }
    return FALSE;
}
