From 3371a27391e828c6417e6d805572cf261b138785 Mon Sep 17 00:00:00 2001 From: James Bursa Date: Fri, 3 Sep 2004 22:44:48 +0000 Subject: [project @ 2004-09-03 22:44:47 by bursa] Add generic bitmap functions. Move jpeg and mng code from riscos/ to image/ and update to use bitmap. Note: background tiling and drawfile export for jpeg and mng/png are broken. svn path=/import/netsurf/; revision=1265 --- riscos/gui.h | 3 - riscos/htmlredraw.c | 14 +- riscos/jpeg.c | 252 ---------------------------- riscos/jpeg.h | 27 --- riscos/mng.c | 463 ---------------------------------------------------- riscos/mng.h | 33 ---- riscos/save.c | 8 +- riscos/save_draw.c | 13 +- 8 files changed, 18 insertions(+), 795 deletions(-) delete mode 100644 riscos/jpeg.c delete mode 100644 riscos/jpeg.h delete mode 100644 riscos/mng.c delete mode 100644 riscos/mng.h (limited to 'riscos') diff --git a/riscos/gui.h b/riscos/gui.h index 5c9c0c653..f3457ce8f 100644 --- a/riscos/gui.h +++ b/riscos/gui.h @@ -230,9 +230,6 @@ int ro_content_filetype(struct content *content); /* in schedule.c */ extern bool sched_active; extern os_t sched_time; -void schedule(int t, void (*callback)(void *p), void *p); -void schedule_remove(void (*callback)(void *p), void *p); -void schedule_run(void); /* in debugwin.c */ void ro_gui_debugwin_open(void); diff --git a/riscos/htmlredraw.c b/riscos/htmlredraw.c index 2a29d8eca..20d50fb5f 100644 --- a/riscos/htmlredraw.c +++ b/riscos/htmlredraw.c @@ -1010,30 +1010,30 @@ bool html_redraw_background(int xi, int yi, int width, int height, /* and plot the image */ switch (box->background->type) { #ifdef WITH_PNG - case CONTENT_PNG: + case CONTENT_PNG:/* image_redraw(box->background->data.png.sprite_area, x, y, image_width, image_height, box->background->width * 2, box->background->height * 2, background_colour, repeat_x, repeat_y, - IMAGE_PLOT_TINCT_ALPHA); - break; + IMAGE_PLOT_TINCT_ALPHA);*/ + break; #endif #ifdef WITH_MNG case CONTENT_JNG: case CONTENT_MNG: - image_redraw(box->background->data.mng.sprite_area, + /*image_redraw(box->background->data.mng.sprite_area, x, y, image_width, image_height, box->background->width * 2, box->background->height * 2, background_colour, repeat_x, repeat_y, - IMAGE_PLOT_TINCT_ALPHA); + IMAGE_PLOT_TINCT_ALPHA);*/ break; #endif #ifdef WITH_JPEG - case CONTENT_JPEG: + case CONTENT_JPEG:/* image_redraw(box->background->data.jpeg.sprite_area, x, y, image_width, image_height, box->background->width * 2, @@ -1041,7 +1041,7 @@ bool html_redraw_background(int xi, int yi, int width, int height, background_colour, repeat_x, repeat_y, IMAGE_PLOT_TINCT_OPAQUE); - break; + */break; #endif #ifdef WITH_GIF case CONTENT_GIF: diff --git a/riscos/jpeg.c b/riscos/jpeg.c deleted file mode 100644 index b355be37b..000000000 --- a/riscos/jpeg.c +++ /dev/null @@ -1,252 +0,0 @@ -/* - * This file is part of NetSurf, http://netsurf.sourceforge.net/ - * Licensed under the GNU General Public License, - * http://www.opensource.org/licenses/gpl-license - * Copyright 2004 James Bursa - * Copyright 2004 John M Bell - */ - -/** \file - * Content for image/jpeg (implementation). - * - * This implementation uses the IJG JPEG library. - */ - -#include -#include -#include -#include -#define JPEG_INTERNAL_OPTIONS -#include "libjpeg/jpeglib.h" -#include "oslib/osspriteop.h" -#include "netsurf/utils/config.h" -#include "netsurf/content/content.h" -#include "netsurf/riscos/gui.h" -#include "netsurf/riscos/image.h" -#include "netsurf/riscos/jpeg.h" -#include "netsurf/riscos/options.h" -#include "netsurf/utils/log.h" -#include "netsurf/utils/messages.h" -#include "netsurf/utils/utils.h" - - -/* We require a the library to be configured with these options to save - * copying data during decoding. */ -#if RGB_RED != 0 || RGB_GREEN != 1 || RGB_BLUE != 2 || RGB_PIXELSIZE != 4 -#error JPEG library incorrectly configured. -#endif - - -static char nsjpeg_error_buffer[JMSG_LENGTH_MAX]; - - -struct nsjpeg_error_mgr { - struct jpeg_error_mgr pub; - jmp_buf setjmp_buffer; -}; - - -static void nsjpeg_error_exit(j_common_ptr cinfo); -static void nsjpeg_init_source(j_decompress_ptr cinfo); -static boolean nsjpeg_fill_input_buffer(j_decompress_ptr cinfo); -static void nsjpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes); -static void nsjpeg_term_source(j_decompress_ptr cinfo); - - -/** - * Create a CONTENT_JPEG. - */ - -bool nsjpeg_create(struct content *c, const char *params[]) -{ - c->data.jpeg.sprite_area = 0; - return true; -} - - -/** - * Convert a CONTENT_JPEG for display. - */ - -bool nsjpeg_convert(struct content *c, int w, int h) -{ - struct jpeg_decompress_struct cinfo; - struct nsjpeg_error_mgr jerr; - struct jpeg_source_mgr source_mgr = { 0, 0, - nsjpeg_init_source, nsjpeg_fill_input_buffer, - nsjpeg_skip_input_data, jpeg_resync_to_restart, - nsjpeg_term_source }; - unsigned int height; - unsigned int width; - unsigned int area_size; - osspriteop_area *sprite_area = 0; - osspriteop_header *sprite; - union content_msg_data msg_data; - - cinfo.err = jpeg_std_error(&jerr.pub); - jerr.pub.error_exit = nsjpeg_error_exit; - if (setjmp(jerr.setjmp_buffer)) { - jpeg_destroy_decompress(&cinfo); - free(sprite_area); - - msg_data.error = nsjpeg_error_buffer; - content_broadcast(c, CONTENT_MSG_ERROR, msg_data); - return false; - } - jpeg_create_decompress(&cinfo); - source_mgr.next_input_byte = c->source_data; - source_mgr.bytes_in_buffer = c->source_size; - cinfo.src = &source_mgr; - jpeg_read_header(&cinfo, TRUE); - cinfo.out_color_space = JCS_RGB; - cinfo.dct_method = JDCT_ISLOW; - jpeg_start_decompress(&cinfo); - - width = cinfo.output_width; - height = cinfo.output_height; - - area_size = 16 + 44 + width * height * 4; - sprite_area = malloc(area_size); - if (!sprite_area) { - LOG(("malloc failed")); - jpeg_destroy_decompress(&cinfo); - - msg_data.error = messages_get("NoMemory"); - content_broadcast(c, CONTENT_MSG_ERROR, msg_data); - warn_user("NoMemory", 0); - return false; - } - - /* area control block */ - sprite_area->size = area_size; - sprite_area->sprite_count = 1; - sprite_area->first = 16; - sprite_area->used = area_size; - - /* sprite control block */ - sprite = (osspriteop_header *) (sprite_area + 1); - sprite->size = area_size - 16; - memset(sprite->name, 0x00, 12); - strncpy(sprite->name, "jpeg", 12); - sprite->width = width - 1; - sprite->height = height - 1; - sprite->left_bit = 0; - sprite->right_bit = 31; - sprite->image = sprite->mask = 44; - sprite->mode = (os_mode) 0x301680b5; - - do { - JSAMPROW scanlines[1]; - scanlines[0] = (JSAMPROW) ((char *) sprite + 44 + - width * cinfo.output_scanline * 4); - jpeg_read_scanlines(&cinfo, scanlines, 1); - } while (cinfo.output_scanline != cinfo.output_height); - - jpeg_finish_decompress(&cinfo); - jpeg_destroy_decompress(&cinfo); - - /*xosspriteop_save_sprite_file(osspriteop_USER_AREA, - sprite_area, "jpeg");*/ - - c->width = width; - c->height = height; - c->data.jpeg.sprite_area = sprite_area; - c->title = malloc(100); - if (c->title) - snprintf(c->title, 100, messages_get("JPEGTitle"), - width, height, c->source_size); - c->size += area_size + 100; - c->status = CONTENT_STATUS_DONE; - return true; -} - - -/** - * Fatal error handler for JPEG library. - * - * This prevents jpeglib calling exit() on a fatal error. - */ - -void nsjpeg_error_exit(j_common_ptr cinfo) -{ - struct nsjpeg_error_mgr *err = (struct nsjpeg_error_mgr *) cinfo->err; - err->pub.format_message(cinfo, nsjpeg_error_buffer); - longjmp(err->setjmp_buffer, 1); -} - - -/** - * JPEG data source manager: initialize source. - */ - -void nsjpeg_init_source(j_decompress_ptr cinfo) -{ -} - - -static char nsjpeg_eoi[] = { 0xff, JPEG_EOI }; - -/** - * JPEG data source manager: fill the input buffer. - * - * This can only occur if the JPEG data was truncated or corrupted. Insert a - * fake EOI marker to allow the decompressor to output as much as possible. - */ - -boolean nsjpeg_fill_input_buffer(j_decompress_ptr cinfo) -{ - cinfo->src->next_input_byte = nsjpeg_eoi; - cinfo->src->bytes_in_buffer = 2; - return TRUE; -} - - -/** - * JPEG data source manager: skip num_bytes worth of data. - */ - -void nsjpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes) -{ - if ((long) cinfo->src->bytes_in_buffer < num_bytes) { - cinfo->src->next_input_byte = 0; - cinfo->src->bytes_in_buffer = 0; - } else { - cinfo->src->next_input_byte += num_bytes; - cinfo->src->bytes_in_buffer -= num_bytes; - } -} - - -/** - * JPEG data source manager: terminate source. - */ - -void nsjpeg_term_source(j_decompress_ptr cinfo) -{ -} - - -/** - * Destroy a CONTENT_JPEG and free all resources it owns. - */ - -void nsjpeg_destroy(struct content *c) -{ - free(c->data.jpeg.sprite_area); - free(c->title); -} - - -/** - * Redraw a CONTENT_JPEG. - */ - -bool nsjpeg_redraw(struct content *c, int x, int y, - int width, int height, - int clip_x0, int clip_y0, int clip_x1, int clip_y1, - float scale, unsigned long background_colour) -{ - return image_redraw(c->data.jpeg.sprite_area, x, y, width, height, - c->width * 2, c->height *2, background_colour, - false, false, IMAGE_PLOT_TINCT_OPAQUE); -} diff --git a/riscos/jpeg.h b/riscos/jpeg.h deleted file mode 100644 index 90c7492a5..000000000 --- a/riscos/jpeg.h +++ /dev/null @@ -1,27 +0,0 @@ -/* - * This file is part of NetSurf, http://netsurf.sourceforge.net/ - * Licensed under the GNU General Public License, - * http://www.opensource.org/licenses/gpl-license - * Copyright 2004 James Bursa - */ - -#ifndef _NETSURF_RISCOS_JPEG_H_ -#define _NETSURF_RISCOS_JPEG_H_ - -#include "oslib/osspriteop.h" - -struct content; - -struct content_jpeg_data { - osspriteop_area *sprite_area; -}; - -bool nsjpeg_create(struct content *c, const char *params[]); -bool nsjpeg_convert(struct content *c, int width, int height); -void nsjpeg_destroy(struct content *c); -bool nsjpeg_redraw(struct content *c, int x, int y, - int width, int height, - int clip_x0, int clip_y0, int clip_x1, int clip_y1, - float scale, unsigned long background_colour); - -#endif diff --git a/riscos/mng.c b/riscos/mng.c deleted file mode 100644 index 9326c7da6..000000000 --- a/riscos/mng.c +++ /dev/null @@ -1,463 +0,0 @@ -/* - * This file is part of NetSurf, http://netsurf.sourceforge.net/ - * Licensed under the GNU General Public License, - * http://www.opensource.org/licenses/gpl-license - * Copyright 2004 Richard Wilson - */ - -#include -#include -#include -#include -#include "libmng/libmng.h" -#include "oslib/os.h" -#include "oslib/osspriteop.h" -#include "netsurf/utils/config.h" -#include "netsurf/content/content.h" -#include "netsurf/riscos/gui.h" -#include "netsurf/riscos/image.h" -#include "netsurf/riscos/mng.h" -#include "netsurf/riscos/options.h" -#include "netsurf/riscos/wimp.h" -#include "netsurf/utils/log.h" -#include "netsurf/utils/messages.h" -#include "netsurf/utils/utils.h" - -#ifdef WITH_MNG - -/* We do not currently support any form of colour/gamma correction, nor do - we support dynamic MNGs. -*/ - - -static mng_bool nsmng_openstream(mng_handle mng); -static mng_bool nsmng_readdata(mng_handle mng, mng_ptr buffer, mng_uint32 size, mng_uint32 *bytesread); -static mng_bool nsmng_closestream(mng_handle mng); -static mng_bool nsmng_processheader(mng_handle mng, mng_uint32 width, mng_uint32 height); -static mng_ptr nsmng_getcanvasline(mng_handle mng, mng_uint32 line); -static mng_uint32 nsmng_gettickcount(mng_handle mng); -static mng_bool nsmng_refresh(mng_handle mng, mng_uint32 x, mng_uint32 y, mng_uint32 w, mng_uint32 h); -static mng_bool nsmng_settimer(mng_handle mng, mng_uint32 msecs); -static void nsmng_animate(void *p); -static bool nsmng_broadcast_error(struct content *c); -static mng_bool nsmng_trace(mng_handle mng, mng_int32 iFunNr, mng_int32 iFuncseq, mng_pchar zFuncname); -static mng_bool nsmng_errorproc(mng_handle mng, mng_int32 code, - mng_int8 severity, mng_chunkid chunktype, mng_uint32 chunkseq, - mng_int32 extra1, mng_int32 extra2, mng_pchar text); - -bool nsmng_create(struct content *c, const char *params[]) { - - /* Initialise the library (libmng is compiled with MNG_INTERNAL_MEMMNGMT) - */ - c->data.mng.sprite_area = NULL; - c->data.mng.handle = mng_initialize(c, MNG_NULL, MNG_NULL, MNG_NULL); - if (c->data.mng.handle == MNG_NULL) { - LOG(("Unable to initialise MNG library.")); - return nsmng_broadcast_error(c); - } - - /* We need to decode in suspension mode - */ - if (mng_set_suspensionmode(c->data.mng.handle, MNG_TRUE) != MNG_NOERROR) { - LOG(("Unable to set suspension mode.")); - return nsmng_broadcast_error(c); - } - - /* We need to register our callbacks - */ - if (mng_setcb_openstream(c->data.mng.handle, nsmng_openstream) != MNG_NOERROR) { - LOG(("Unable to set openstream callback.")); - return nsmng_broadcast_error(c); - } - if (mng_setcb_readdata(c->data.mng.handle, nsmng_readdata) != MNG_NOERROR) { - LOG(("Unable to set readdata callback.")); - return nsmng_broadcast_error(c); - } - if (mng_setcb_closestream(c->data.mng.handle, nsmng_closestream) != MNG_NOERROR) { - LOG(("Unable to set closestream callback.")); - return nsmng_broadcast_error(c); - } - if (mng_setcb_processheader(c->data.mng.handle, nsmng_processheader) != MNG_NOERROR) { - LOG(("Unable to set processheader callback.")); - return nsmng_broadcast_error(c); - } - - /* Register our callbacks for displaying - */ - if (mng_setcb_getcanvasline(c->data.mng.handle, nsmng_getcanvasline) != MNG_NOERROR) { - LOG(("Unable to set getcanvasline callback.")); - return nsmng_broadcast_error(c); - } - if (mng_setcb_refresh(c->data.mng.handle, nsmng_refresh) != MNG_NOERROR) { - LOG(("Unable to set refresh callback.")); - return nsmng_broadcast_error(c); - } - if (mng_setcb_gettickcount(c->data.mng.handle, nsmng_gettickcount) != MNG_NOERROR) { - LOG(("Unable to set gettickcount callback.")); - return nsmng_broadcast_error(c); - } - if (mng_setcb_settimer(c->data.mng.handle, nsmng_settimer) != MNG_NOERROR) { - LOG(("Unable to set settimer callback.")); - return nsmng_broadcast_error(c); - } - - /* register error handling function */ - if (mng_setcb_errorproc(c->data.mng.handle, nsmng_errorproc) != MNG_NOERROR) { - LOG(("Unable to set errorproc")); - return nsmng_broadcast_error(c); - } - - /* Initialise the reading - */ - c->data.mng.read_start = true; - c->data.mng.read_resume = false; - c->data.mng.read_size = 0; - c->data.mng.waiting = false; - return true; -} - - -/* START OF CALLBACKS REQUIRED FOR READING -*/ - - -mng_bool nsmng_openstream(mng_handle mng) { - return MNG_TRUE; -} - -mng_bool nsmng_readdata(mng_handle mng, mng_ptr buffer, mng_uint32 size, mng_uint32 *bytesread) { - struct content *c; - - /* Get our content back - */ - c = (struct content *)mng_get_userdata(mng); - - /* Copy any data we have (maximum of 'size') - */ - *bytesread = ((c->source_size - c->data.mng.read_size) < size) ? - (c->source_size - c->data.mng.read_size) : size; - - LOG(("Read %d, processing %p", *bytesread, mng)); - - if ((*bytesread) > 0) { - memcpy(buffer, c->source_data + c->data.mng.read_size, *bytesread); - c->data.mng.read_size += *bytesread; - } - - /* Return success - */ - return MNG_TRUE; -} - -mng_bool nsmng_closestream(mng_handle mng) { - return MNG_TRUE; -} - -mng_bool nsmng_processheader(mng_handle mng, mng_uint32 width, mng_uint32 height) { - struct content *c; - int sprite_size; - osspriteop_area *sprite_area; - osspriteop_header *sprite_header; - union content_msg_data msg_data; - - /* This function is called when the header has been read and we know - the dimensions of the canvas. - */ - c = (struct content *)mng_get_userdata(mng); - sprite_size = width * height * 4 + sizeof(osspriteop_header) + sizeof(osspriteop_area); - c->data.mng.sprite_area = (osspriteop_area *)malloc(sprite_size); - if (!(c->data.mng.sprite_area)) { - msg_data.error = messages_get("NoMemory"); - content_broadcast(c, CONTENT_MSG_ERROR, msg_data); - LOG(("Insufficient memory to create canvas.")); - return MNG_FALSE; - } - - /* Initialise the content size - */ - c->width = width; - c->height = height; - - /* Initialise the sprite area - */ - sprite_area = c->data.mng.sprite_area; - sprite_area->size = sprite_size; - sprite_area->sprite_count = 1; - sprite_area->first = sizeof(osspriteop_area); - sprite_area->used = sprite_size; - - /* Initialise the sprite header - */ - sprite_header = (osspriteop_header *)(sprite_area + 1); - sprite_header->size = sprite_size - sizeof(osspriteop_area); - memset(sprite_header->name, 0x00, 12); - strcpy(sprite_header->name, "mng"); - sprite_header->width = width - 1; - sprite_header->height = height - 1; - sprite_header->left_bit = 0; - sprite_header->right_bit = 31; - sprite_header->mask = sprite_header->image = sizeof(osspriteop_header); - sprite_header->mode = (os_mode) 0x301680b5; - - /* Set the canvas style - */ - if (mng_set_canvasstyle(mng, MNG_CANVAS_RGBA8) != MNG_NOERROR) { - LOG(("Error setting canvas style.")); - } - - /* Return success - */ - return MNG_TRUE; -} - - -/* END OF CALLBACKS REQUIRED FOR READING -*/ - - -bool nsmng_process_data(struct content *c, char *data, unsigned int size) { - mng_retcode status; - - /* We only need to do any processing if we're starting/resuming reading. - */ - if ((!c->data.mng.read_resume) && (!c->data.mng.read_start)) return true; - - /* Try to start processing, or process some more data - */ - if (c->data.mng.read_start) { - status = mng_read(c->data.mng.handle); - c->data.mng.read_start = false; - } else { - status = mng_read_resume(c->data.mng.handle); - } - c->data.mng.read_resume = (status == MNG_NEEDMOREDATA); - if ((status != MNG_NOERROR) && (status != MNG_NEEDMOREDATA)) { - LOG(("Failed to start/continue reading (%i).", status)); - return nsmng_broadcast_error(c); - } - - /* Continue onwards - */ - return true; -} - - -bool nsmng_convert(struct content *c, int width, int height) { - mng_retcode status; - - LOG(("Converting")); - - /* Set the title - */ - c->title = malloc(100); - if (c->title) { - if (c->type == CONTENT_MNG) { - snprintf(c->title, 100, messages_get("MNGTitle"), - c->width, c->height, c->source_size); - } else if (c->type == CONTENT_PNG) { - snprintf(c->title, 100, messages_get("PNGTitle"), - c->width, c->height, c->source_size); - } else { - snprintf(c->title, 100, messages_get("JNGTitle"), - c->width, c->height, c->source_size); - } - } - c->size += (c->width * c->height * 4) + sizeof(osspriteop_header) + sizeof(osspriteop_area) + 100; - c->status = CONTENT_STATUS_DONE; - - - /* Start displaying - */ - status = mng_display(c->data.mng.handle); - if ((status != MNG_NOERROR) && (status != MNG_NEEDTIMERWAIT)) { - LOG(("Unable to start display (%i)", status)); - return nsmng_broadcast_error(c); - } - return true; -} - - -/* START OF CALLBACKS REQUIRED FOR DISPLAYING -*/ - - -mng_ptr nsmng_getcanvasline(mng_handle mng, mng_uint32 line) { - char *base; - struct content *c; - - /* Get our content back - */ - c = (struct content *)mng_get_userdata(mng); - - /* Calculate the address - */ - base = ((char *) c->data.mng.sprite_area + c->data.mng.sprite_area->first); - base += sizeof(osspriteop_header); - return base + (c->width * 4) * line; -} - - -mng_uint32 nsmng_gettickcount(mng_handle mng) { - os_t time; - - /* Get the time in centiseconds and return in milliseconds - */ - xos_read_monotonic_time(&time); - return (time * 10); -} - -mng_bool nsmng_refresh(mng_handle mng, mng_uint32 x, mng_uint32 y, mng_uint32 w, mng_uint32 h) { - union content_msg_data data; - struct content *c; - - /* Get our content back - */ - c = (struct content *)mng_get_userdata(mng); - - /* Set the minimum redraw area - */ - data.redraw.x = x; - data.redraw.y = y; - data.redraw.width = w; - data.redraw.height = h; - - /* Set the redraw area to the whole canvas to ensure that if we can redraw something - to trigger animation later then we do - */ -/* data.redraw.x = 0; - data.redraw.y = 0; - data.redraw.width = c->width; - data.redraw.height = c->height; -*/ - /* Always redraw everything - */ - data.redraw.full_redraw = true; - - /* Set the object characteristics - */ - data.redraw.object = c; - data.redraw.object_x = 0; - data.redraw.object_y = 0; - data.redraw.object_width = c->width; - data.redraw.object_height = c->height; - - content_broadcast(c, CONTENT_MSG_REDRAW, data); - return MNG_TRUE; -} - -mng_bool nsmng_settimer(mng_handle mng, mng_uint32 msecs) { - struct content *c; - - /* Get our content back - */ - c = (struct content *)mng_get_userdata(mng); - - /* Perform the scheduling - */ - schedule(msecs / 10, nsmng_animate, c); - return MNG_TRUE; -} - - -/* END OF CALLBACKS REQUIRED FOR DISPLAYING -*/ - - -void nsmng_destroy(struct content *c) { - /* Cleanup the MNG structure and release the canvas memory - */ - schedule_remove(nsmng_animate, c); - mng_cleanup(&c->data.mng.handle); - if (c->data.mng.sprite_area) { - free(c->data.mng.sprite_area); - c->data.mng.sprite_area = NULL; - } - free(c->title); -} - - -bool nsmng_redraw(struct content *c, int x, int y, - int width, int height, - int clip_x0, int clip_y0, int clip_x1, int clip_y1, - float scale, unsigned long background_colour) -{ - bool ret; - - ret = image_redraw(c->data.mng.sprite_area, x, y, width, height, - c->width * 2, c->height * 2, background_colour, - false, false, IMAGE_PLOT_TINCT_ALPHA); - - /* Check if we need to restart the animation - */ - if (c->data.mng.waiting) nsmng_animate(c); - - return ret; -} - -/** - * Animates to the next frame - */ -void nsmng_animate(void *p) { - struct content *c = p; - - /* If we used the last animation we advance, if not we try again later - */ - if (c->user_list->next == NULL) { - c->data.mng.waiting = true; - } else { - c->data.mng.waiting = false; - mng_display_resume(c->data.mng.handle); - } -} - - - -/** - * Broadcasts an error message and returns false - * - * \param c the content to broadcast for - * \return false - */ -bool nsmng_broadcast_error(struct content *c) { - union content_msg_data msg_data; - if (c->type == CONTENT_MNG) { - msg_data.error = messages_get("MNGError"); - } else if (c->type == CONTENT_PNG) { - msg_data.error = messages_get("PNGError"); - } else { - msg_data.error = messages_get("JNGError"); - } - content_broadcast(c, CONTENT_MSG_ERROR, msg_data); - return false; - -} - -mng_bool nsmng_trace(mng_handle mng, mng_int32 iFunNr, mng_int32 iFuncseq, mng_pchar zFuncname) -{ - LOG(("In %s(%d,%d), processing: %p", zFuncname, iFunNr, iFuncseq, mng)); - return MNG_TRUE; -} - -mng_bool nsmng_errorproc(mng_handle mng, mng_int32 code, - mng_int8 severity, - mng_chunkid chunktype, mng_uint32 chunkseq, - mng_int32 extra1, mng_int32 extra2, mng_pchar text) -{ - struct content *c; - char chunk[5]; - - c = (struct content *)mng_get_userdata(mng); - - chunk[0] = (char)((chunktype >> 24) & 0xFF); - chunk[1] = (char)((chunktype >> 16) & 0xFF); - chunk[2] = (char)((chunktype >> 8) & 0xFF); - chunk[3] = (char)((chunktype ) & 0xFF); - chunk[4] = '\0'; - - LOG(("error playing '%s' chunk %s (%d):", c->url, chunk, chunkseq)); - LOG(("code %d severity %d extra1 %d extra2 %d text:'%s'", code, - severity, extra1, extra2, text)); - - return (0); -} -#endif diff --git a/riscos/mng.h b/riscos/mng.h deleted file mode 100644 index d5ba0ea2e..000000000 --- a/riscos/mng.h +++ /dev/null @@ -1,33 +0,0 @@ -/* - * This file is part of NetSurf, http://netsurf.sourceforge.net/ - * Licensed under the GNU General Public License, - * http://www.opensource.org/licenses/gpl-license - * Copyright 2004 Richard Wilson - */ - -#ifndef _NETSURF_RISCOS_MNG_H_ -#define _NETSURF_RISCOS_MNG_H_ - -#include "libmng/libmng.h" -#include "oslib/osspriteop.h" - -struct content; - -struct content_mng_data { - bool read_start; - bool read_resume; - int read_size; - bool waiting; - mng_handle handle; - osspriteop_area *sprite_area; -}; - -bool nsmng_create(struct content *c, const char *params[]); -bool nsmng_process_data(struct content *c, char *data, unsigned int size); -bool nsmng_convert(struct content *c, int width, int height); -void nsmng_destroy(struct content *c); -bool nsmng_redraw(struct content *c, int x, int y, - int width, int height, - int clip_x0, int clip_y0, int clip_x1, int clip_y1, - float scale, unsigned long background_colour); -#endif diff --git a/riscos/save.c b/riscos/save.c index 1fafee589..6b0c49e35 100644 --- a/riscos/save.c +++ b/riscos/save.c @@ -430,18 +430,18 @@ void ro_gui_save_object_native(struct content *c, char *path) switch (c->type) { #ifdef WITH_JPEG case CONTENT_JPEG: - error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.jpeg.sprite_area, path); + bitmap_save(c->bitmap, path); break; #endif #ifdef WITH_PNG case CONTENT_PNG: - error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.png.sprite_area, path); - break; +/* error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.png.sprite_area, path); + break;*/ #endif #ifdef WITH_MNG case CONTENT_JNG: case CONTENT_MNG: - error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.mng.sprite_area, path); + bitmap_save(c->bitmap, path); break; #endif #ifdef WITH_GIF diff --git a/riscos/save_draw.c b/riscos/save_draw.c index 469d5a3d5..e00ad3350 100644 --- a/riscos/save_draw.c +++ b/riscos/save_draw.c @@ -703,17 +703,18 @@ static bool add_graphic(struct content *content, struct box *box, /* cast-tastic... */ switch (content->type) { case CONTENT_JPEG: - sprite_length = ((osspriteop_header*)((char*)content->data.jpeg.sprite_area+content->data.jpeg.sprite_area->first))->size; + return true; + /*sprite_length = ((osspriteop_header*)((char*)content->data.jpeg.sprite_area+content->data.jpeg.sprite_area->first))->size;*/ break; #ifdef WITH_PNG case CONTENT_PNG: - sprite_length = ((osspriteop_header*)((char*)content->data.png.sprite_area+content->data.png.sprite_area->first))->size; + /*sprite_length = ((osspriteop_header*)((char*)content->data.png.sprite_area+content->data.png.sprite_area->first))->size;*/ break; #endif #ifdef WITH_MNG case CONTENT_JNG: case CONTENT_MNG: - sprite_length = ((osspriteop_header*)((char*)content->data.mng.sprite_area+content->data.mng.sprite_area->first))->size; + /*sprite_length = ((osspriteop_header*)((char*)content->data.mng.sprite_area+content->data.mng.sprite_area->first))->size;*/ break; #endif case CONTENT_GIF: @@ -742,17 +743,17 @@ static bool add_graphic(struct content *content, struct box *box, switch (content->type) { case CONTENT_JPEG: - memcpy((char*)ds+16, (char*)content->data.jpeg.sprite_area+content->data.jpeg.sprite_area->first, (unsigned)sprite_length); + /*memcpy((char*)ds+16, (char*)content->data.jpeg.sprite_area+content->data.jpeg.sprite_area->first, (unsigned)sprite_length);*/ break; #ifdef WITH_PNG case CONTENT_PNG: - memcpy((char*)ds+16, (char*)content->data.png.sprite_area+content->data.png.sprite_area->first, (unsigned)sprite_length); + /*memcpy((char*)ds+16, (char*)content->data.png.sprite_area+content->data.png.sprite_area->first, (unsigned)sprite_length);*/ break; #endif #ifdef WITH_MNG case CONTENT_JNG: case CONTENT_MNG: - memcpy((char*)ds+16, (char*)content->data.mng.sprite_area+content->data.mng.sprite_area->first, (unsigned)sprite_length); + /*memcpy((char*)ds+16, (char*)content->data.mng.sprite_area+content->data.mng.sprite_area->first, (unsigned)sprite_length);*/ break; #endif case CONTENT_GIF: -- cgit v1.2.3