| 214 | |
| 215 | |
| 216 | object |
| 217 | ImageInputWrap::read_scanline (int y, int z, TypeDesc format) |
| 218 | { |
| 219 | // Allocate our own temp buffer and try to read the scanline into it. |
| 220 | // If the read fails, return None. |
| 221 | const ImageSpec &spec = m_input->spec(); |
| 222 | size_t size = (size_t) spec.width * spec.nchannels * format.size(); |
| 223 | char *data = new char[size]; |
| 224 | if (!m_input->read_scanline (y, z, format, data)) { |
| 225 | delete [] data; // never mind |
| 226 | return object(handle<>(Py_None)); |
| 227 | } |
| 228 | |
| 229 | object array = C_array_to_Python_array (data, format, size); |
| 230 | |
| 231 | // clean up and return the array handle |
| 232 | delete [] data; |
| 233 | return array; |
| 234 | } |
| 235 | |
| 236 | |
| 237 | object |