From 2d29b4a868272f9e844f12f571148e2d6608abe9 Mon Sep 17 00:00:00 2001 From: Andreas Monzner Date: Thu, 23 Nov 2006 14:11:42 +0000 Subject: [PATCH] use stack for exif object --- lib/gdi/picload.cpp | 58 ++++++++++++++++++++++++++--------------------------- 1 file changed, 28 insertions(+), 30 deletions(-) diff --git a/lib/gdi/picload.cpp b/lib/gdi/picload.cpp index d724bfc..b3ffe2a 100644 --- a/lib/gdi/picload.cpp +++ b/lib/gdi/picload.cpp @@ -336,60 +336,58 @@ static int png_load(const char *filename, int *x, int *y) PyObject *getExif(const char *filename) { PyObject *list = 0; - Cexif *m_exif = new Cexif(); - if(m_exif->DecodeExif(filename)) + Cexif exif; + if(exif.DecodeExif(filename)) { - if(m_exif->m_exifinfo->IsExif) + if(exif.m_exifinfo->IsExif) { int pos=0; char tmp[256]; list = PyList_New(22); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->Version)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->CameraMake)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->CameraModel)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->DateTime)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->Comments)); - PyList_SET_ITEM(list, pos++, PyString_FromFormat("%d x %d", m_exif->m_exifinfo->Width, m_exif->m_exifinfo->Height)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->Orientation)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->MeteringMode)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->ExposureProgram)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->LightSource)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->FlashUsed)); - PyList_SET_ITEM(list, pos++, PyString_FromFormat("%d", m_exif->m_exifinfo->CompressionLevel)); - PyList_SET_ITEM(list, pos++, PyString_FromFormat("%d", m_exif->m_exifinfo->ISOequivalent)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->Xresolution); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->Version)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->CameraMake)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->CameraModel)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->DateTime)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->Comments)); + PyList_SET_ITEM(list, pos++, PyString_FromFormat("%d x %d", exif.m_exifinfo->Width, exif.m_exifinfo->Height)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->Orientation)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->MeteringMode)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->ExposureProgram)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->LightSource)); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->FlashUsed)); + PyList_SET_ITEM(list, pos++, PyString_FromFormat("%d", exif.m_exifinfo->CompressionLevel)); + PyList_SET_ITEM(list, pos++, PyString_FromFormat("%d", exif.m_exifinfo->ISOequivalent)); + sprintf(tmp, "%.2f", exif.m_exifinfo->Xresolution); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->Yresolution); + sprintf(tmp, "%.2f", exif.m_exifinfo->Yresolution); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); - PyList_SET_ITEM(list, pos++, PyString_FromString(m_exif->m_exifinfo->ResolutionUnit)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->Brightness); + PyList_SET_ITEM(list, pos++, PyString_FromString(exif.m_exifinfo->ResolutionUnit)); + sprintf(tmp, "%.2f", exif.m_exifinfo->Brightness); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); - sprintf(tmp, "%.5f sec.", m_exif->m_exifinfo->ExposureTime); + sprintf(tmp, "%.5f sec.", exif.m_exifinfo->ExposureTime); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); - sprintf(tmp, "%.5f", m_exif->m_exifinfo->ExposureBias); + sprintf(tmp, "%.5f", exif.m_exifinfo->ExposureBias); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); - sprintf(tmp, "%.5f", m_exif->m_exifinfo->Distance); + sprintf(tmp, "%.5f", exif.m_exifinfo->Distance); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); - sprintf(tmp, "%.5f", m_exif->m_exifinfo->CCDWidth); + sprintf(tmp, "%.5f", exif.m_exifinfo->CCDWidth); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->ApertureFNumber); + sprintf(tmp, "%.2f", exif.m_exifinfo->ApertureFNumber); PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); } else { list = PyList_New(1); - PyList_SET_ITEM(list, 0, PyString_FromString(m_exif->m_szLastError)); + PyList_SET_ITEM(list, 0, PyString_FromString(exif.m_szLastError)); } - m_exif->ClearExif(); + exif.ClearExif(); } else { list = PyList_New(1); - PyList_SET_ITEM(list, 0, PyString_FromString(m_exif->m_szLastError)); + PyList_SET_ITEM(list, 0, PyString_FromString(exif.m_szLastError)); } - delete m_exif; - return list ? list : PyList_New(0); } -- 2.7.4