static PyObject *
image_save_footer(PyObject *self,PyObject *args)
{
    PyObject *pyimwriter;
    if(!PyArg_ParseTuple(args,"O",&pyimwriter))
    {
	return NULL;
    }

    ImageWriter *i = (ImageWriter *)PyCObject_AsVoidPtr(pyimwriter);

    if(!i || !i->save_footer())
    {
	PyErr_SetString(PyExc_IOError, "Couldn't save image footer");
	return NULL;
    }
    
    Py_INCREF(Py_None);
    return Py_None;
}
int
main()
{
    IFractalSite doNothingSite;

    ListColorMap *cmap = new ListColorMap();
    cmap->init(256);
    for(int i = 0; i < 256; ++i)
    {
	int x = (i % 2) ? 179 : 49;
	cmap->set(i,i/256.0, 255, x, x, 255);
    }
    
    pf_obj *pfo = pf_new();

    s_param *pfoParams = new s_param[7];

    pfoParams[0].gradient = cmap; //gradient
    pfoParams[1].doubleval = 4.0; //bailout
    pfoParams[2].doubleval = 1.0; //cf0 density
    pfoParams[3].doubleval = 1.0; //cf0 offset
    pfoParams[4].doubleval = 4.0; //cf0 bailout
    pfoParams[5].doubleval = 1.0; //cf1 density
    pfoParams[6].doubleval = 1.0; // offset

    double params[] = { 
	0.0, 0.0, 0.0, 0.0,
	4.0,
	0.0, 0.0, 0.0, 0.0, 0.0, 0.0};

    pfo->vtbl->init(
	pfo,2.0e-9,
        params,
	pfoParams,
	7);

    image *im = new image();
    im->set_resolution(1024,1024,-1,-1);

    calc(
	params,
	AA_FAST,
	32767,
	1,
	pfo,
	cmap,
	true,
	false,
	true,
	true,
	DEBUG_QUICK_TRACE | DEBUG_DRAWING_STATS,
	RENDER_TWO_D,
	-1,
	im,
	&doNothingSite);

    FILE *outfile = fopen("prof.tga", "wb");
    ImageWriter *iw = ImageWriter::create(FILE_TYPE_TGA, outfile, im);
    iw->save_header();
    iw->save_tile();
    iw->save_footer();
    fclose(outfile);
}