From b58dcc351f3f7ec32ecb0553436ff9ee76e52551 Mon Sep 17 00:00:00 2001 From: John Mark Bell Date: Wed, 12 Jan 2011 20:21:17 +0000 Subject: Cocoa front end (credit: Sven Weidauer) svn path=/trunk/netsurf/; revision=11292 --- cocoa/thumbnail.m | 61 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 61 insertions(+) create mode 100644 cocoa/thumbnail.m (limited to 'cocoa/thumbnail.m') diff --git a/cocoa/thumbnail.m b/cocoa/thumbnail.m new file mode 100644 index 000000000..b6df608eb --- /dev/null +++ b/cocoa/thumbnail.m @@ -0,0 +1,61 @@ +/* + * Copyright 2011 Sven Weidauer + * + * This file is part of NetSurf, http://www.netsurf-browser.org/ + * + * NetSurf is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; version 2 of the License. + * + * NetSurf is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . + */ + +#import "desktop/browser.h" +#import "desktop/plotters.h" +#import "content/urldb.h" +#import "image/bitmap.h" + +#import + +/* In platform specific thumbnail.c. */ +bool thumbnail_create(struct hlcache_handle *content, struct bitmap *bitmap, + const char *url) +{ + CGColorSpaceRef cspace = CGColorSpaceCreateWithName( kCGColorSpaceGenericRGB ); + CGContextRef bitmapContext = CGBitmapContextCreate( bitmap_get_buffer( bitmap ), + bitmap_get_width( bitmap ), bitmap_get_height( bitmap ), + bitmap_get_bpp( bitmap ) / 4, + bitmap_get_rowstride( bitmap ), + cspace, kCGImageAlphaNoneSkipLast ); + CGColorSpaceRelease( cspace ); + + + size_t width = MIN( content_get_width( content ), 1024 ); + size_t height = MIN( content_get_height( content ), 768 ); + + CGContextTranslateCTM( bitmapContext, 0, bitmap_get_height( bitmap ) ); + CGContextScaleCTM( bitmapContext, (CGFloat)bitmap_get_width( bitmap ) / width, -(CGFloat)bitmap_get_height( bitmap ) / height ); + + [NSGraphicsContext setCurrentContext: [NSGraphicsContext graphicsContextWithGraphicsPort: bitmapContext flipped: YES]]; + + content_redraw( content, 0, 0, content_get_width( content ), content_get_height( content ), + 0, 0, content_get_width( content ), content_get_height( content ), + 1.0, 0xFFFFFFFF ); + + [NSGraphicsContext setCurrentContext: nil]; + CGContextRelease( bitmapContext ); + + bitmap_modified( bitmap ); + + if (NULL != url) urldb_set_thumbnail( url, bitmap ); + + return true; + +} + -- cgit v1.2.3