view minijss/jss.c @ 1896:f80b2dc77c30

Work begins on IFF ILBM/PBM image writer. It is pretty broken, some things will not work and some things are hardcoded. The ByteRun1 compression implementation is somewhat inefficient. Interleaved files do not work yet.
author Matti Hamalainen <ccr@tnsp.org>
date Tue, 26 Jun 2018 03:13:38 +0300
parents aa3738b121d1
children 9807ae37ad69
line wrap: on
line source

/*
 * miniJSS - General functions
 * Programmed and designed by Matti 'ccr' Hamalainen
 * (C) Copyright 2006-2015 Tecnic Software productions (TNSP)
 */
#include "jss.h"
#include <stdarg.h>


/* Memory and error handling functions
 */

BOOL jssWarningIsFatal, jssErrorIsFatal;

#ifndef JSS_LIGHT

void (*jssError) (int code, const char *filename, int linen, const char *fmt, ...);
void (*jssWarning) (int code, const char *filename, int linen, const char *fmt, ...);


void jssDefaultPrint(int code, const char *filename, int linen, const char *fmt)
{
    fprintf(stderr, "JSS");
    if (filename)
        fprintf(stderr, "[%s:%i]", filename, linen);
    fprintf(stderr, "%s", fmt);
    if (code > 0)
        fprintf(stderr, "(%i)", code);
    fprintf(stderr, ": ");
}


void jssDefaultError(int code, const char *filename, int linen, const char *fmt, ...)
{
    va_list ap;
    jssDefaultPrint(code, filename, linen, "E");

    va_start(ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
}


void jssDefaultWarning(int code, const char *filename, int linen, const char *fmt, ...)
{
    va_list ap;
    jssDefaultPrint(code, filename, linen, "W");

    va_start(ap, fmt);
    vfprintf(stderr, fmt, ap);
    va_end(ap);
}

#endif


/* System initialization
 */
int jssInit(void)
{
    // Error handling
#ifndef JSS_LIGHT
    jssWarningIsFatal = FALSE;
    jssErrorIsFatal = TRUE;

    jssError = jssDefaultError;
    jssWarning = jssDefaultWarning;
#endif

    // Allocate global tables

    return DMERR_OK;
}


/* System shutdown
 */
int jssClose(void)
{
    return DMERR_OK;
}