[SCM] WebKit Debian packaging branch, debian/unstable, updated. debian/1.1.15-1-40151-g37bb677
rjw
rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc
Sat Sep 26 06:16:45 UTC 2009
The following commit has been merged in the debian/unstable branch:
commit 15300d5e0995a7aee8968a8d31ed1e7ca86e67bd
Author: rjw <rjw at 268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date: Tue Jun 4 18:55:37 2002 +0000
Changes to support progressive image loading. Currently disabled
until 2945218 is fixed.
git-svn-id: http://svn.webkit.org/repository/webkit/trunk@1268 268f45cc-cd09-0410-ab3c-d52691b4dbfc
diff --git a/WebCore/ChangeLog-2002-12-03 b/WebCore/ChangeLog-2002-12-03
index 46e6cfe..0131f47 100644
--- a/WebCore/ChangeLog-2002-12-03
+++ b/WebCore/ChangeLog-2002-12-03
@@ -1,3 +1,16 @@
+2002-06-04 Richard Williamson <rjw at apple.com>
+
+ Changes to support progressive image loading. Currently disabled
+ until 2945218 is fixed.
+
+ * khtml/misc/loader.cpp:
+ * kwq/KWQKloader.mm:
+ * kwq/KWQPixmap.mm:
+ * kwq/WebCoreImageRenderer.h:
+ * kwq/WebCoreImageRendererFactory.h:
+ * kwq/WebCoreImageRendererFactory.m:
+ * kwq/qt/qpixmap.h:
+
2002-06-04 Darin Adler <darin at apple.com>
- fixed 2943897 -- Initial uncached load of amazon.com renders partial page.
diff --git a/WebCore/ChangeLog-2003-10-25 b/WebCore/ChangeLog-2003-10-25
index 46e6cfe..0131f47 100644
--- a/WebCore/ChangeLog-2003-10-25
+++ b/WebCore/ChangeLog-2003-10-25
@@ -1,3 +1,16 @@
+2002-06-04 Richard Williamson <rjw at apple.com>
+
+ Changes to support progressive image loading. Currently disabled
+ until 2945218 is fixed.
+
+ * khtml/misc/loader.cpp:
+ * kwq/KWQKloader.mm:
+ * kwq/KWQPixmap.mm:
+ * kwq/WebCoreImageRenderer.h:
+ * kwq/WebCoreImageRendererFactory.h:
+ * kwq/WebCoreImageRendererFactory.m:
+ * kwq/qt/qpixmap.h:
+
2002-06-04 Darin Adler <darin at apple.com>
- fixed 2943897 -- Initial uncached load of amazon.com renders partial page.
diff --git a/WebCore/ChangeLog-2005-08-23 b/WebCore/ChangeLog-2005-08-23
index 46e6cfe..0131f47 100644
--- a/WebCore/ChangeLog-2005-08-23
+++ b/WebCore/ChangeLog-2005-08-23
@@ -1,3 +1,16 @@
+2002-06-04 Richard Williamson <rjw at apple.com>
+
+ Changes to support progressive image loading. Currently disabled
+ until 2945218 is fixed.
+
+ * khtml/misc/loader.cpp:
+ * kwq/KWQKloader.mm:
+ * kwq/KWQPixmap.mm:
+ * kwq/WebCoreImageRenderer.h:
+ * kwq/WebCoreImageRendererFactory.h:
+ * kwq/WebCoreImageRendererFactory.m:
+ * kwq/qt/qpixmap.h:
+
2002-06-04 Darin Adler <darin at apple.com>
- fixed 2943897 -- Initial uncached load of amazon.com renders partial page.
diff --git a/WebCore/khtml/misc/loader.cpp b/WebCore/khtml/misc/loader.cpp
index 4786639..9fb3b73 100644
--- a/WebCore/khtml/misc/loader.cpp
+++ b/WebCore/khtml/misc/loader.cpp
@@ -452,7 +452,9 @@ CachedImage::CachedImage(DocLoader* dl, const DOMString &url, bool reload, int _
pixPart = 0;
bg = 0;
bgColor = qRgba( 0, 0, 0, 0xFF );
+#ifndef APPLE_CHANGES
typeChecked = false;
+#endif
isFullyTransparent = false;
errorOccured = false;
monochrome = false;
@@ -786,7 +788,9 @@ void CachedImage::clear()
formatType = 0;
+#ifndef APPLE_CHANGES
typeChecked = false;
+#endif
m_size = 0;
// No need to delete imageSource - QMovie does it for us
@@ -794,18 +798,18 @@ void CachedImage::clear()
}
void CachedImage::data ( QBuffer &_buffer, bool eof )
-{
+{
#ifdef CACHE_DEBUG
kdDebug( 6060 ) << this << "in CachedImage::data(buffersize " << _buffer.buffer().size() <<", eof=" << eof << endl;
#endif
+
+#ifndef APPLE_CHANGES
if ( !typeChecked )
{
-#ifndef APPLE_CHANGES
formatType = QImageDecoder::formatName( (const uchar*)_buffer.buffer().data(), _buffer.size());
-#endif
+
typeChecked = true;
-#ifndef APPLE_CHANGES
if ( formatType ) // movie format exists
{
imgSource = new ImageSource( _buffer.buffer());
@@ -814,16 +818,13 @@ void CachedImage::data ( QBuffer &_buffer, bool eof )
m->connectStatus( this, SLOT( movieStatus(int)));
m->connectResize( this, SLOT( movieResize( const QSize& ) ) );
}
-#endif
}
-#ifndef APPLE_CHANGES
if ( imgSource )
{
imgSource->setEOF(eof);
imgSource->maybeReady();
}
-#endif
if(eof)
{
@@ -852,6 +853,48 @@ void CachedImage::data ( QBuffer &_buffer, bool eof )
QSize s = pixmap_size();
m_size = s.width() * s.height() * 2;
}
+#endif // !APPLE_CHANGES
+
+#ifdef APPLE_CHANGES
+
+ bool canDraw = false;
+#ifdef APPLE_PROGRESSIVE_LOADING_WORKS
+ if (!eof) {
+ // If we didn't get all the data for the image we will always
+ // attempt to load the image incrementally. If the AppKit is
+ // unable to decode incrementally this pixmap will not be
+ // renderable until all the data has been received.
+ if (!p)
+ p = new QPixmap();
+ }
+
+ if (p)
+ canDraw = p->receivedData (_buffer.buffer(), eof);
+
+#endif
+
+ // If we're at eof and don't have a pixmap yet, the data
+ // must have arrived in one chunk. This avoids the attempt
+ // to perform incremental decoding.
+ if (eof && !p){
+ p = new QPixmap( _buffer.buffer() );
+ canDraw = true;
+ }
+
+ if (canDraw || eof){
+ if(p->isNull())
+ {
+ errorOccured = true;
+ do_notify(pixmap(), QRect(0, 0, 16, 16)); // load "broken image" icon
+ }
+ else {
+ // May schedule a redraw.
+ do_notify(*p, p->rect());
+ }
+ QSize s = pixmap_size();
+ m_size = s.width() * s.height() * 2;
+ }
+#endif // APPLE_CHANGES
}
void CachedImage::error( int /*err*/, const char */*text*/ )
@@ -861,7 +904,9 @@ void CachedImage::error( int /*err*/, const char */*text*/ )
#endif
clear();
+#ifndef APPLE_CHANGES
typeChecked = true;
+#endif
errorOccured = true;
do_notify(pixmap(), QRect(0, 0, 16, 16));
}
diff --git a/WebCore/kwq/KWQKloader.mm b/WebCore/kwq/KWQKloader.mm
index c583164..f317341 100644
--- a/WebCore/kwq/KWQKloader.mm
+++ b/WebCore/kwq/KWQKloader.mm
@@ -151,7 +151,7 @@ void WCSetIFLoadProgressMakeFunc(WCIFLoadProgressMakeFunc func)
KIO::TransferJob *job = static_cast<KIO::TransferJob *>(userData);
- KWQDEBUGLEVEL (KWQ_LOG_LOADING, "dataSource = %p for URL %s data at %p, length %d\n", m_dataSource, DEBUG_OBJECT(job->url()), data, [data length]);
+ KWQDEBUGLEVEL (KWQ_LOG_LOADING, "dataSource = %p for URL %s data at %p, length %d, contentLength %d, contentLengthReceived %d\n", m_dataSource, DEBUG_OBJECT(job->url()), data, [data length], contentLength, contentLengthReceived);
m_loader->slotData(job, (const char *)[data bytes], [data length]);
diff --git a/WebCore/kwq/KWQLoader.mm b/WebCore/kwq/KWQLoader.mm
index c583164..f317341 100644
--- a/WebCore/kwq/KWQLoader.mm
+++ b/WebCore/kwq/KWQLoader.mm
@@ -151,7 +151,7 @@ void WCSetIFLoadProgressMakeFunc(WCIFLoadProgressMakeFunc func)
KIO::TransferJob *job = static_cast<KIO::TransferJob *>(userData);
- KWQDEBUGLEVEL (KWQ_LOG_LOADING, "dataSource = %p for URL %s data at %p, length %d\n", m_dataSource, DEBUG_OBJECT(job->url()), data, [data length]);
+ KWQDEBUGLEVEL (KWQ_LOG_LOADING, "dataSource = %p for URL %s data at %p, length %d, contentLength %d, contentLengthReceived %d\n", m_dataSource, DEBUG_OBJECT(job->url()), data, [data length], contentLength, contentLengthReceived);
m_loader->slotData(job, (const char *)[data bytes], [data length]);
diff --git a/WebCore/kwq/KWQLoaderImpl.mm b/WebCore/kwq/KWQLoaderImpl.mm
index c583164..f317341 100644
--- a/WebCore/kwq/KWQLoaderImpl.mm
+++ b/WebCore/kwq/KWQLoaderImpl.mm
@@ -151,7 +151,7 @@ void WCSetIFLoadProgressMakeFunc(WCIFLoadProgressMakeFunc func)
KIO::TransferJob *job = static_cast<KIO::TransferJob *>(userData);
- KWQDEBUGLEVEL (KWQ_LOG_LOADING, "dataSource = %p for URL %s data at %p, length %d\n", m_dataSource, DEBUG_OBJECT(job->url()), data, [data length]);
+ KWQDEBUGLEVEL (KWQ_LOG_LOADING, "dataSource = %p for URL %s data at %p, length %d, contentLength %d, contentLengthReceived %d\n", m_dataSource, DEBUG_OBJECT(job->url()), data, [data length], contentLength, contentLengthReceived);
m_loader->slotData(job, (const char *)[data bytes], [data length]);
diff --git a/WebCore/kwq/KWQPixmap.h b/WebCore/kwq/KWQPixmap.h
index 9d0853c..9b91cde 100644
--- a/WebCore/kwq/KWQPixmap.h
+++ b/WebCore/kwq/KWQPixmap.h
@@ -71,6 +71,7 @@ public:
QPixmap &operator=(const QPixmap &);
WebCoreImageRendererPtr getImageRenderer() const { return imageRenderer; }
+ bool receivedData(const QByteArray &bytes, bool isComplete);
private:
WebCoreImageRendererPtr imageRenderer;
diff --git a/WebCore/kwq/KWQPixmap.mm b/WebCore/kwq/KWQPixmap.mm
index d0239e1..fec54fa 100644
--- a/WebCore/kwq/KWQPixmap.mm
+++ b/WebCore/kwq/KWQPixmap.mm
@@ -32,7 +32,7 @@
QPixmap::QPixmap()
{
- imageRenderer = nil;
+ imageRenderer = [[[WebCoreImageRendererFactory sharedFactory] imageRenderer] retain];
needCopyOnWrite = false;
}
@@ -67,6 +67,11 @@ QPixmap::~QPixmap()
[imageRenderer release];
}
+bool QPixmap::receivedData(const QByteArray &bytes, bool isComplete)
+{
+ return [imageRenderer incrementalLoadWithBytes: bytes.data() length: bytes.size() complete: isComplete];
+}
+
bool QPixmap::mask() const
{
return false;
diff --git a/WebCore/kwq/WebCoreImageRenderer.h b/WebCore/kwq/WebCoreImageRenderer.h
index e71a27a..b17e3d3 100644
--- a/WebCore/kwq/WebCoreImageRenderer.h
+++ b/WebCore/kwq/WebCoreImageRenderer.h
@@ -27,6 +27,8 @@
@protocol WebCoreImageRenderer <NSObject, NSCopying>
+- (BOOL)incrementalLoadWithBytes: (const void *)bytes length:(unsigned)length complete:(BOOL)isComplete;
+
- (NSSize)size;
- (void)resize: (NSSize)s;
- (void)beginAnimationInView:(NSView *)view inRect:(NSRect)ir fromRect:(NSRect)fr;
diff --git a/WebCore/kwq/WebCoreImageRendererFactory.h b/WebCore/kwq/WebCoreImageRendererFactory.h
index 8980801..1fa8377 100644
--- a/WebCore/kwq/WebCoreImageRendererFactory.h
+++ b/WebCore/kwq/WebCoreImageRendererFactory.h
@@ -33,6 +33,8 @@
+ (WebCoreImageRendererFactory *)sharedFactory;
- init;
+
+- (id <WebCoreImageRenderer>)imageRenderer;
- (id <WebCoreImageRenderer>)imageRendererWithBytes: (const void *)bytes length:(unsigned)length;
- (id <WebCoreImageRenderer>)imageRendererWithSize: (NSSize)s;
diff --git a/WebCore/kwq/WebCoreImageRendererFactory.m b/WebCore/kwq/WebCoreImageRendererFactory.m
index 1afff2e..4764066 100644
--- a/WebCore/kwq/WebCoreImageRendererFactory.m
+++ b/WebCore/kwq/WebCoreImageRendererFactory.m
@@ -55,4 +55,9 @@ static WebCoreImageRendererFactory *sharedFactory;
return nil;
}
+- (id <WebCoreImageRenderer>)imageRenderer
+{
+ return nil;
+}
+
@end
diff --git a/WebCore/kwq/qt/qpixmap.h b/WebCore/kwq/qt/qpixmap.h
index 9d0853c..9b91cde 100644
--- a/WebCore/kwq/qt/qpixmap.h
+++ b/WebCore/kwq/qt/qpixmap.h
@@ -71,6 +71,7 @@ public:
QPixmap &operator=(const QPixmap &);
WebCoreImageRendererPtr getImageRenderer() const { return imageRenderer; }
+ bool receivedData(const QByteArray &bytes, bool isComplete);
private:
WebCoreImageRendererPtr imageRenderer;
diff --git a/WebKit/ChangeLog b/WebKit/ChangeLog
index 695e7c4..db053a2 100644
--- a/WebKit/ChangeLog
+++ b/WebKit/ChangeLog
@@ -1,3 +1,12 @@
+2002-06-04 Richard Williamson <rjw at apple.com>
+
+ Changes to support progressive image loading. Currently disabled
+ until 2945218 is fixed.
+
+ * WebCoreSupport.subproj/IFImageRenderer.h:
+ * WebCoreSupport.subproj/IFImageRenderer.m:
+ * WebCoreSupport.subproj/IFImageRendererFactory.m:
+
ut 2002-06-04 Darin Adler <darin at apple.com>
- fixed 2932862 -- exception -[NSCFArray getObjects:range:]: index (137)
diff --git a/WebKit/ChangeLog-2002-12-03 b/WebKit/ChangeLog-2002-12-03
index 695e7c4..db053a2 100644
--- a/WebKit/ChangeLog-2002-12-03
+++ b/WebKit/ChangeLog-2002-12-03
@@ -1,3 +1,12 @@
+2002-06-04 Richard Williamson <rjw at apple.com>
+
+ Changes to support progressive image loading. Currently disabled
+ until 2945218 is fixed.
+
+ * WebCoreSupport.subproj/IFImageRenderer.h:
+ * WebCoreSupport.subproj/IFImageRenderer.m:
+ * WebCoreSupport.subproj/IFImageRendererFactory.m:
+
ut 2002-06-04 Darin Adler <darin at apple.com>
- fixed 2932862 -- exception -[NSCFArray getObjects:range:]: index (137)
diff --git a/WebKit/WebCoreSupport.subproj/IFImageRenderer.h b/WebKit/WebCoreSupport.subproj/IFImageRenderer.h
index aedb361..c5c26b0 100644
--- a/WebKit/WebCoreSupport.subproj/IFImageRenderer.h
+++ b/WebKit/WebCoreSupport.subproj/IFImageRenderer.h
@@ -11,5 +11,8 @@
NSView *frameView;
NSRect imageRect;
NSRect targetRect;
+ int lastStatus;
+ unsigned lastLength;
+ BOOL lastReturn;
}
@end
diff --git a/WebKit/WebCoreSupport.subproj/IFImageRenderer.m b/WebKit/WebCoreSupport.subproj/IFImageRenderer.m
index 16e163e..76b643b 100644
--- a/WebKit/WebCoreSupport.subproj/IFImageRenderer.m
+++ b/WebKit/WebCoreSupport.subproj/IFImageRenderer.m
@@ -3,11 +3,57 @@
*/
#import <WebKit/IFImageRenderer.h>
-
+#import <WebKit/IFException.h>
#import <WebKit/WebKitDebug.h>
@implementation IFImageRenderer
+- init
+{
+ lastStatus = -9999;
+ lastLength = 0;
+ return [super init];
+}
+
+
+- (BOOL)incrementalLoadWithBytes: (const void *)bytes length:(unsigned)length complete:(BOOL)isComplete
+{
+ NSBitmapImageRep* imageRep = [[self representations] objectAtIndex:0];
+ //NSData *data = [[NSData alloc] initWithBytesNoCopy: (void *)bytes length: length freeWhenDone: NO];
+ NSData *data = [[NSData alloc] initWithBytes: (void *)bytes length: length];
+ int status;
+
+ lastLength = length;
+ lastStatus = status = [imageRep incrementalLoadFromData:data complete:isComplete];
+ [data release];
+ switch (status){
+ case NSImageRepLoadStatusUnknownType: // not enough data to determine image format. please feed me more data
+ printf ("NSImageRepLoadStatusUnknownType size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusReadingHeader: // image format known, reading header. not yet valid. more data needed
+ printf ("NSImageRepLoadStatusReadingHeader size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusWillNeedAllData: // can't read incrementally. will wait for complete data to become avail.
+ printf ("NSImageRepLoadStatusWillNeedAllData size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusInvalidData: // image decompression encountered error.
+ printf ("NSImageRepLoadStatusInvalidData size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusUnexpectedEOF: // ran out of data before full image was decompressed.
+ printf ("NSImageRepLoadStatusUnexpectedEOF size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusCompleted: // all is well, the full pixelsHigh image is valid.
+ printf ("NSImageRepLoadStatusUnexpectedEOF size %d, isComplete %d\n", length, isComplete);
+ // Force the image to use the pixel size and ignore the dpi.
+ [imageRep setSize:NSMakeSize([imageRep pixelsWide], [imageRep pixelsHigh])];
+ return (lastReturn = YES);
+ default:
+ printf ("incrementalLoadFromData:complete: returned %d, size %d, isComplete %d (wide %d, hight %d)\n", status, length, isComplete, [imageRep pixelsWide], [imageRep pixelsHigh]);
+ return (lastReturn = YES);
+ }
+ return (lastReturn = NO);
+}
+
- (void)dealloc
{
[self stopAnimation];
@@ -80,6 +126,7 @@
- (void)beginAnimationInView: (NSView *)view inRect: (NSRect)ir fromRect: (NSRect)fr
{
+ // The previous, if any, frameView, is released in stopAnimations.
[self stopAnimation];
if ([self frameCount] > 1) {
diff --git a/WebKit/WebCoreSupport.subproj/IFImageRendererFactory.m b/WebKit/WebCoreSupport.subproj/IFImageRendererFactory.m
index 091fbb3..8573655 100644
--- a/WebKit/WebCoreSupport.subproj/IFImageRendererFactory.m
+++ b/WebKit/WebCoreSupport.subproj/IFImageRendererFactory.m
@@ -22,11 +22,10 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#import <Cocoa/Cocoa.h>
#import <WebKit/IFImageRendererFactory.h>
-
#import <WebKit/IFImageRenderer.h>
-
#import <WebKit/WebKitDebug.h>
@implementation IFImageRendererFactory
@@ -44,9 +43,21 @@
return (IFImageRendererFactory *)[super sharedFactory];
}
+- (id <WebCoreImageRenderer>)imageRenderer
+{
+ NSImage *imageRenderer = [[IFImageRenderer alloc] init];
+ NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initForIncrementalLoad];
+ [imageRenderer addRepresentation: rep];
+ [imageRenderer setFlipped: YES];
+ return [imageRenderer autorelease];
+}
+
+
- (id <WebCoreImageRenderer>)imageRendererWithBytes: (const void *)bytes length:(unsigned)length
{
- NSData *data = [[NSData alloc] initWithBytes: bytes length: length];
+ // FIXME: Why must we copy the data here?
+ //NSData *data = [[NSData alloc] initWithBytesNoCopy: (void *)bytes length: length freeWhenDone: NO];
+ NSData *data = [[NSData alloc] initWithBytes: (void *)bytes length: length];
IFImageRenderer *imageRenderer = [[IFImageRenderer alloc] initWithData: data];
NSArray *reps = [imageRenderer representations];
NSImageRep *rep = [reps objectAtIndex: 0];
diff --git a/WebKit/WebCoreSupport.subproj/WebImageRenderer.h b/WebKit/WebCoreSupport.subproj/WebImageRenderer.h
index aedb361..c5c26b0 100644
--- a/WebKit/WebCoreSupport.subproj/WebImageRenderer.h
+++ b/WebKit/WebCoreSupport.subproj/WebImageRenderer.h
@@ -11,5 +11,8 @@
NSView *frameView;
NSRect imageRect;
NSRect targetRect;
+ int lastStatus;
+ unsigned lastLength;
+ BOOL lastReturn;
}
@end
diff --git a/WebKit/WebCoreSupport.subproj/WebImageRenderer.m b/WebKit/WebCoreSupport.subproj/WebImageRenderer.m
index 16e163e..76b643b 100644
--- a/WebKit/WebCoreSupport.subproj/WebImageRenderer.m
+++ b/WebKit/WebCoreSupport.subproj/WebImageRenderer.m
@@ -3,11 +3,57 @@
*/
#import <WebKit/IFImageRenderer.h>
-
+#import <WebKit/IFException.h>
#import <WebKit/WebKitDebug.h>
@implementation IFImageRenderer
+- init
+{
+ lastStatus = -9999;
+ lastLength = 0;
+ return [super init];
+}
+
+
+- (BOOL)incrementalLoadWithBytes: (const void *)bytes length:(unsigned)length complete:(BOOL)isComplete
+{
+ NSBitmapImageRep* imageRep = [[self representations] objectAtIndex:0];
+ //NSData *data = [[NSData alloc] initWithBytesNoCopy: (void *)bytes length: length freeWhenDone: NO];
+ NSData *data = [[NSData alloc] initWithBytes: (void *)bytes length: length];
+ int status;
+
+ lastLength = length;
+ lastStatus = status = [imageRep incrementalLoadFromData:data complete:isComplete];
+ [data release];
+ switch (status){
+ case NSImageRepLoadStatusUnknownType: // not enough data to determine image format. please feed me more data
+ printf ("NSImageRepLoadStatusUnknownType size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusReadingHeader: // image format known, reading header. not yet valid. more data needed
+ printf ("NSImageRepLoadStatusReadingHeader size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusWillNeedAllData: // can't read incrementally. will wait for complete data to become avail.
+ printf ("NSImageRepLoadStatusWillNeedAllData size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusInvalidData: // image decompression encountered error.
+ printf ("NSImageRepLoadStatusInvalidData size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusUnexpectedEOF: // ran out of data before full image was decompressed.
+ printf ("NSImageRepLoadStatusUnexpectedEOF size %d, isComplete %d\n", length, isComplete);
+ return (lastReturn = NO);
+ case NSImageRepLoadStatusCompleted: // all is well, the full pixelsHigh image is valid.
+ printf ("NSImageRepLoadStatusUnexpectedEOF size %d, isComplete %d\n", length, isComplete);
+ // Force the image to use the pixel size and ignore the dpi.
+ [imageRep setSize:NSMakeSize([imageRep pixelsWide], [imageRep pixelsHigh])];
+ return (lastReturn = YES);
+ default:
+ printf ("incrementalLoadFromData:complete: returned %d, size %d, isComplete %d (wide %d, hight %d)\n", status, length, isComplete, [imageRep pixelsWide], [imageRep pixelsHigh]);
+ return (lastReturn = YES);
+ }
+ return (lastReturn = NO);
+}
+
- (void)dealloc
{
[self stopAnimation];
@@ -80,6 +126,7 @@
- (void)beginAnimationInView: (NSView *)view inRect: (NSRect)ir fromRect: (NSRect)fr
{
+ // The previous, if any, frameView, is released in stopAnimations.
[self stopAnimation];
if ([self frameCount] > 1) {
diff --git a/WebKit/WebCoreSupport.subproj/WebImageRendererFactory.m b/WebKit/WebCoreSupport.subproj/WebImageRendererFactory.m
index 091fbb3..8573655 100644
--- a/WebKit/WebCoreSupport.subproj/WebImageRendererFactory.m
+++ b/WebKit/WebCoreSupport.subproj/WebImageRendererFactory.m
@@ -22,11 +22,10 @@
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
+#import <Cocoa/Cocoa.h>
#import <WebKit/IFImageRendererFactory.h>
-
#import <WebKit/IFImageRenderer.h>
-
#import <WebKit/WebKitDebug.h>
@implementation IFImageRendererFactory
@@ -44,9 +43,21 @@
return (IFImageRendererFactory *)[super sharedFactory];
}
+- (id <WebCoreImageRenderer>)imageRenderer
+{
+ NSImage *imageRenderer = [[IFImageRenderer alloc] init];
+ NSBitmapImageRep *rep = [[NSBitmapImageRep alloc] initForIncrementalLoad];
+ [imageRenderer addRepresentation: rep];
+ [imageRenderer setFlipped: YES];
+ return [imageRenderer autorelease];
+}
+
+
- (id <WebCoreImageRenderer>)imageRendererWithBytes: (const void *)bytes length:(unsigned)length
{
- NSData *data = [[NSData alloc] initWithBytes: bytes length: length];
+ // FIXME: Why must we copy the data here?
+ //NSData *data = [[NSData alloc] initWithBytesNoCopy: (void *)bytes length: length freeWhenDone: NO];
+ NSData *data = [[NSData alloc] initWithBytes: (void *)bytes length: length];
IFImageRenderer *imageRenderer = [[IFImageRenderer alloc] initWithData: data];
NSArray *reps = [imageRenderer representations];
NSImageRep *rep = [reps objectAtIndex: 0];
--
WebKit Debian packaging
More information about the Pkg-webkit-commits
mailing list