X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftags%2Fsynfig_0_61_05%2Fsynfig-core%2Fsrc%2Fmodules%2Fmod_openexr%2Fmptr_openexr.cpp;fp=synfig-core%2Ftags%2Fsynfig_0_61_05%2Fsynfig-core%2Fsrc%2Fmodules%2Fmod_openexr%2Fmptr_openexr.cpp;h=14553d7d2248156a20ddaf72ed70583ecadf3e3d;hb=299aecad571ca490ce017004a0d7e555d6df0520;hp=0000000000000000000000000000000000000000;hpb=42861dc634bef4059ca95e5292033315a0b9ce30;p=synfig.git diff --git a/synfig-core/tags/synfig_0_61_05/synfig-core/src/modules/mod_openexr/mptr_openexr.cpp b/synfig-core/tags/synfig_0_61_05/synfig-core/src/modules/mod_openexr/mptr_openexr.cpp new file mode 100644 index 0000000..14553d7 --- /dev/null +++ b/synfig-core/tags/synfig_0_61_05/synfig-core/src/modules/mod_openexr/mptr_openexr.cpp @@ -0,0 +1,118 @@ +/*! ======================================================================== +** Synfig +** ppm Target Module +** $Id: mptr_openexr.cpp,v 1.1.1.1 2005/01/04 01:23:14 darco Exp $ +** +** Copyright (c) 2002-2005 Robert B. Quattlebaum Jr., Adrian Bentley +** +** 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. +** +** === N O T E S =========================================================== +** +** ========================================================================= */ + +/* === H E A D E R S ======================================================= */ + +#ifdef USING_PCH +# include "pch.h" +#else +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "mptr_openexr.h" +#include +#include +#include +#include +#include + +#include +#include +#include + +#endif + +/* === M A C R O S ========================================================= */ + +using namespace synfig; +using namespace std; +using namespace etl; + +/* === G L O B A L S ======================================================= */ + +SYNFIG_IMPORTER_INIT(exr_mptr); +SYNFIG_IMPORTER_SET_NAME(exr_mptr,"exr_mptr"); +SYNFIG_IMPORTER_SET_EXT(exr_mptr,"exr"); +SYNFIG_IMPORTER_SET_VERSION(exr_mptr,"0.1"); +SYNFIG_IMPORTER_SET_CVS_ID(exr_mptr,"$Id: mptr_openexr.cpp,v 1.1.1.1 2005/01/04 01:23:14 darco Exp $"); + +/* === M E T H O D S ======================================================= */ + +exr_mptr::exr_mptr(const char *file) +{ + filename=file; +} + +exr_mptr::~exr_mptr() +{ +} + +bool +exr_mptr::get_frame(synfig::Surface &out_surface,Time, synfig::ProgressCallback *cb) +{ + try + { + + Imf::RgbaInputFile in(filename.c_str()); + + int w = in.dataWindow().max.x - in.dataWindow().min.x + 1; + int h = in.dataWindow().max.y - in.dataWindow().min.y + 1; + //int dx = in.dataWindow().min.x; + //int dy = in.dataWindow().min.y; + +#ifdef USE_HALF_TYPE + out_surface.set_wh(w,h); + in.setFrameBuffer (reinterpret_cast(out_surface[0]), 1, w); + + in.readPixels (in.dataWindow().min.y, in.dataWindow().max.y); + +#else + etl::surface in_surface; + in_surface.set_wh(w,h); + in.setFrameBuffer (reinterpret_cast(in_surface[0]), 1, w); + + in.readPixels (in.dataWindow().min.y, in.dataWindow().max.y); + + int x; + int y; + out_surface.set_wh(w,h); + for(y=0;yerror(e.what()); + else synfig::error(e.what()); + return false; + } + + return true; +}