return !sig.compare(0, sizeof(jpeg_sig), jpeg_sig, sizeof(jpeg_sig));
}
-void JpegLoader::load(Image::Data &data)
+void JpegLoader::load_headers_(Image::Data &data)
{
if(setjmp(priv->err_mgr.jmp))
throw bad_image_data(priv->err_mgr.message);
data.height = priv->jpeg.output_height;
data.stride = priv->jpeg.output_width*priv->jpeg.output_components;
data.fmt = RGB;
+}
- data.data = new char[data.stride*data.height];
+void JpegLoader::load_pixels_(Image::Data &data)
+{
JSAMPROW rows[8];
while(priv->jpeg.output_scanline<data.height)
{
unsigned y = data.height-priv->jpeg.output_scanline;
unsigned count = min(y, 8U);
for(unsigned i=0; i<count; ++i)
- rows[i] = reinterpret_cast<JSAMPROW>(data.data+(y-i-1)*data.stride);
+ rows[i] = reinterpret_cast<JSAMPROW>(data.pixels+(y-i-1)*data.stride);
jpeg_read_scanlines(&priv->jpeg, rows, count);
}