-/*! ========================================================================
-** Sinfg
-** ppm Target Module
-** $Id: mptr_jpeg.cpp,v 1.1.1.1 2005/01/04 01:23:11 darco Exp $
+/* === S Y N F I G ========================================================= */
+/*! \file mptr_jpeg.cpp
+** \brief ppm Target Module
**
-** Copyright (c) 2002 Robert B. Quattlebaum Jr.
+** $Id$
**
-** This software and associated documentation
-** are CONFIDENTIAL and PROPRIETARY property of
-** the above-mentioned copyright holder.
+** \legal
+** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley
**
-** You may not copy, print, publish, or in any
-** other way distribute this software without
-** a prior written agreement with
-** the copyright holder.
+** This package is free software; you can redistribute it and/or
+** modify it under the terms of the GNU General Public License as
+** published by the Free Software Foundation; either version 2 of
+** the License, or (at your option) any later version.
+**
+** This package is distributed in the hope that it will be useful,
+** but WITHOUT ANY WARRANTY; without even the implied warranty of
+** MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+** General Public License for more details.
+** \endlegal
**
** === N O T E S ===========================================================
**
#endif
#include "mptr_jpeg.h"
-#include <sinfg/importer.h>
-#include <sinfg/time.h>
-#include <sinfg/general.h>
+#include <synfig/importer.h>
+#include <synfig/time.h>
+#include <synfig/general.h>
#include <cstdio>
/* === M A C R O S ========================================================= */
-using namespace sinfg;
+using namespace synfig;
using namespace std;
using namespace etl;
/* === G L O B A L S ======================================================= */
-SINFG_IMPORTER_INIT(jpeg_mptr);
-SINFG_IMPORTER_SET_NAME(jpeg_mptr,"jpeg_mptr");
-SINFG_IMPORTER_SET_EXT(jpeg_mptr,"jpg");
-SINFG_IMPORTER_SET_VERSION(jpeg_mptr,"0.1");
-SINFG_IMPORTER_SET_CVS_ID(jpeg_mptr,"$Id: mptr_jpeg.cpp,v 1.1.1.1 2005/01/04 01:23:11 darco Exp $");
+SYNFIG_IMPORTER_INIT(jpeg_mptr);
+SYNFIG_IMPORTER_SET_NAME(jpeg_mptr,"jpeg");
+SYNFIG_IMPORTER_SET_EXT(jpeg_mptr,"jpg");
+SYNFIG_IMPORTER_SET_VERSION(jpeg_mptr,"0.1");
+SYNFIG_IMPORTER_SET_CVS_ID(jpeg_mptr,"$Id$");
/* === M E T H O D S ======================================================= */
{
struct my_error_mgr jerr;
filename=file_name;
-
+
/* Open the file pointer */
FILE *file = fopen(file_name, "rb");
if (!file)
throw String("error on importer construction, *WRITEME*1");
return;
}
-
+
/* Step 1: allocate and initialize JPEG decompression object */
-
+
/* We set up the normal JPEG error routines, then override error_exit. */
cinfo.err = jpeg_std_error(&jerr.pub);
jerr.pub.error_exit = my_error_exit;
}
/* Now we can initialize the JPEG decompression object. */
jpeg_create_decompress(&cinfo);
-
+
/* Step 2: specify data source (eg, a file) */
-
+
jpeg_stdio_src(&cinfo, file);
-
+
/* Step 3: read file parameters with jpeg_read_header() */
-
+
(void) jpeg_read_header(&cinfo, TRUE);
/* We can ignore the return value from jpeg_read_header since
* (a) suspension is not possible with the stdio data source, and
* (b) we passed TRUE to reject a tables-only JPEG file as an error.
* See libjpeg.doc for more info.
*/
-
+
/* Step 4: set parameters for decompression */
-
+
/* In this example, we don't need to change any of the defaults set by
* jpeg_read_header(), so we do nothing here.
*/
-
+
/* Step 5: Start decompressor */
-
+
(void) jpeg_start_decompress(&cinfo);
/* We can ignore the return value since suspension is not possible
* with the stdio data source.
if(!buffer)
{
- sinfg::error("jpeg_mptr: error: alloc of \"buffer\" failed (bug?)");
+ synfig::error("jpeg_mptr: error: alloc of \"buffer\" failed (bug?)");
throw String("alloc of \"buffer\" failed (bug?)");
}
-
+
int x;
int y;
surface_buffer.set_wh(cinfo.output_width,cinfo.output_height);
for(y=0;y<surface_buffer.get_h();y++)
{
int x;
- jpeg_read_scanlines(&cinfo, buffer, 1);
+ jpeg_read_scanlines(&cinfo, buffer, 1);
for(x=0;x<surface_buffer.get_w();x++)
{
float r=gamma().g_U8_to_F32((unsigned char)buffer[0][x*3+0]);
}
}
break;
-
+
case 1:
for(y=0;y<surface_buffer.get_h();y++)
{
- jpeg_read_scanlines(&cinfo, buffer, 1);
+ jpeg_read_scanlines(&cinfo, buffer, 1);
for(x=0;x<surface_buffer.get_w();x++)
{
float gray=gamma().g_U8_to_F32((unsigned char)buffer[0][x]);
break;
default:
- sinfg::error("jpeg_mptr: error: Unsupported color type");
+ synfig::error("jpeg_mptr: error: Unsupported color type");
//! \todo THROW SOMETHING
throw String("error on importer construction, *WRITEME*6");
return;
}
-
+
/* Step 7: Finish decompression */
-
+
(void) jpeg_finish_decompress(&cinfo);
/* We can ignore the return value since suspension is not possible
* with the stdio data source.
*/
-
+
/* Step 8: Release JPEG decompression object */
-
+
/* This is an important step since it will release a good deal of memory. */
jpeg_destroy_decompress(&cinfo);
-
+
/* After finish_decompress, we can close the input file.
* Here we postpone it until after no more JPEG errors are possible,
* so as to simplify the setjmp error logic above. (Actually, I don't
}
bool
-jpeg_mptr::get_frame(sinfg::Surface &surface,Time, sinfg::ProgressCallback *cb)
+jpeg_mptr::get_frame(synfig::Surface &surface,Time, synfig::ProgressCallback */*cb*/)
{
surface.mirror(surface_buffer);
return true;