X-Git-Url: https://git.cweiske.de/enigma2.git/blobdiff_plain/ba99f2a78a438151e49057ebc23b53fce032d731..0fc6d5202a304e9521159340a1fc0fa98b344b37:/lib/gdi/picload.cpp diff --git a/lib/gdi/picload.cpp b/lib/gdi/picload.cpp index 28a89915..43dfe3a0 100644 --- a/lib/gdi/picload.cpp +++ b/lib/gdi/picload.cpp @@ -1,5 +1,6 @@ -#include "picload.h" +#include #include "picexif.h" +#include #include @@ -335,54 +336,60 @@ static int png_load(const char *filename, int *x, int *y) PyObject *getExif(const char *filename) { - PyObject *list = PyList_New(0); - Cexif *m_exif = new Cexif(); - if(m_exif->DecodeExif(filename)) + ePyObject list; + Cexif exif; + if(exif.DecodeExif(filename)) { - - if(m_exif->m_exifinfo->IsExif) + if(exif.m_exifinfo->IsExif) { + int pos=0; char tmp[256]; - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->Version)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->CameraMake)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->CameraModel)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->DateTime)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->Comments)); - PyList_Append(list, PyString_FromFormat("%d x %d", m_exif->m_exifinfo->Width, m_exif->m_exifinfo->Height)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->Orientation)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->MeteringMode)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->ExposureProgram)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->LightSource)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->FlashUsed)); - PyList_Append(list, PyString_FromFormat("%d", m_exif->m_exifinfo->CompressionLevel)); - PyList_Append(list, PyString_FromFormat("%d", m_exif->m_exifinfo->ISOequivalent)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->Xresolution); - PyList_Append(list, PyString_FromString(tmp)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->Yresolution); - PyList_Append(list, PyString_FromString(tmp)); - PyList_Append(list, PyString_FromString(m_exif->m_exifinfo->ResolutionUnit)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->Brightness); - PyList_Append(list, PyString_FromString(tmp)); - sprintf(tmp, "%.5f sec.", m_exif->m_exifinfo->ExposureTime); - PyList_Append(list, PyString_FromString(tmp)); - sprintf(tmp, "%.5f", m_exif->m_exifinfo->ExposureBias); - PyList_Append(list, PyString_FromString(tmp)); - sprintf(tmp, "%.5f", m_exif->m_exifinfo->Distance); - PyList_Append(list, PyString_FromString(tmp)); - sprintf(tmp, "%.5f", m_exif->m_exifinfo->CCDWidth); - PyList_Append(list, PyString_FromString(tmp)); - sprintf(tmp, "%.2f", m_exif->m_exifinfo->ApertureFNumber); - PyList_Append(list, PyString_FromString(tmp)); + list = PyList_New(22); + 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", exif.m_exifinfo->Yresolution); + PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); + 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.", exif.m_exifinfo->ExposureTime); + PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); + sprintf(tmp, "%.5f", exif.m_exifinfo->ExposureBias); + PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); + sprintf(tmp, "%.5f", exif.m_exifinfo->Distance); + PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); + sprintf(tmp, "%.5f", exif.m_exifinfo->CCDWidth); + PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); + sprintf(tmp, "%.2f", exif.m_exifinfo->ApertureFNumber); + PyList_SET_ITEM(list, pos++, PyString_FromString(tmp)); } - else PyList_Append(list, PyString_FromString(m_exif->m_szLastError)); - - m_exif->ClearExif(); + else + { + list = PyList_New(1); + PyList_SET_ITEM(list, 0, PyString_FromString(exif.m_szLastError)); + } + exif.ClearExif(); + } + else + { + list = PyList_New(1); + PyList_SET_ITEM(list, 0, PyString_FromString(exif.m_szLastError)); } - else PyList_Append(list, PyString_FromString(m_exif->m_szLastError)); - delete m_exif; - - return list; + return list ? (PyObject*)list : (PyObject*)PyList_New(0); } //---------------------------------------------------------------------------------------------