summaryrefslogtreecommitdiff
path: root/riscos
diff options
context:
space:
mode:
authorRichard Wilson <rjw@netsurf-browser.org>2004-07-16 19:47:03 +0000
committerRichard Wilson <rjw@netsurf-browser.org>2004-07-16 19:47:03 +0000
commitb7bb766e95a3ffb552784ae40bac76db4651d5d9 (patch)
tree726222bd6eca51886b00faa128e97afbe667bf8a /riscos
parent8b0aaef01d786375543c7439a66a6ab58162fc5c (diff)
downloadnetsurf-b7bb766e95a3ffb552784ae40bac76db4651d5d9.tar.gz
netsurf-b7bb766e95a3ffb552784ae40bac76db4651d5d9.tar.bz2
[project @ 2004-07-16 19:47:02 by rjw]
Fix for hotlist menu selection. Interface for MNG/JNG display. svn path=/import/netsurf/; revision=1083
Diffstat (limited to 'riscos')
-rw-r--r--riscos/filetype.c4
-rw-r--r--riscos/htmlredraw.c9
-rw-r--r--riscos/menus.c7
-rw-r--r--riscos/mng.c73
-rw-r--r--riscos/mng.h28
-rw-r--r--riscos/save.c4
-rw-r--r--riscos/save_draw.c16
7 files changed, 139 insertions, 2 deletions
diff --git a/riscos/filetype.c b/riscos/filetype.c
index c5bd20a1b..479b3acdc 100644
--- a/riscos/filetype.c
+++ b/riscos/filetype.c
@@ -26,6 +26,8 @@ static const struct type_entry type_map[] = {
{0x695, "image/gif"},
{0xaff, "image/x-drawfile"},
{0xb60, "image/png"},
+ {0x251, "image/jng"}, /* currently in user space */
+ {0x252, "image/mng"}, /* currently in user space */
{0xc85, "image/jpeg"},
{0xf79, "text/css"},
{0xfaf, "text/html"},
@@ -125,6 +127,8 @@ int ro_content_filetype(struct content *content)
case CONTENT_CSS: return 0xf79;
case CONTENT_JPEG: return 0xc85;
case CONTENT_PNG: return 0xb60;
+ case CONTENT_JNG: return 0x251; /* currently in user space */
+ case CONTENT_MNG: return 0x252; /* currently in user space */
case CONTENT_GIF: return 0x695;
case CONTENT_SPRITE: return 0xff9;
case CONTENT_DRAW: return 0xaff;
diff --git a/riscos/htmlredraw.c b/riscos/htmlredraw.c
index dbe27b372..2c4da8a28 100644
--- a/riscos/htmlredraw.c
+++ b/riscos/htmlredraw.c
@@ -739,6 +739,15 @@ void html_redraw_background(long xi, long yi, int width, int height,
tinct_options);
break;
#endif
+#ifdef WITH_PNG
+ case CONTENT_JNG:
+ case CONTENT_MNG:
+ _swix(Tinct_PlotScaledAlpha, _IN(2) | _IN(3) | _IN(4) | _IN(5) | _IN(6) | _IN(7),
+ ((char*) box->background->data.mng.sprite_area + box->background->data.mng.sprite_area->first),
+ x, y - image_height, image_width, image_height,
+ tinct_options);
+ break;
+#endif
#ifdef WITH_JPEG
case CONTENT_JPEG:
_swix(Tinct_PlotScaled, _IN(2) | _IN(3) | _IN(4) | _IN(5) | _IN(6) | _IN(7),
diff --git a/riscos/menus.c b/riscos/menus.c
index fb5bc65ad..a2c223706 100644
--- a/riscos/menus.c
+++ b/riscos/menus.c
@@ -582,10 +582,12 @@ void ro_gui_menu_selection(wimp_selection *selection)
}
break;
case 2: /* Select all */
- ro_gui_hotlist_keypress(1); /* CTRL+A */
+ ro_gui_hotlist_set_selected(true);
+ ro_gui_menu_prepare_hotlist();
break;
case 3: /* Clear */
- ro_gui_hotlist_keypress(26); /* CTRL+Z */
+ ro_gui_hotlist_set_selected(false);
+ ro_gui_menu_prepare_hotlist();
break;
}
} else if (current_menu == browser_menu) {
@@ -1387,6 +1389,7 @@ void ro_gui_menu_objectinfo(wimp_message_menu_warning *warning)
if (box->object->mime_type) mime = box->object->mime_type;
}
else if (c->type == CONTENT_JPEG || c->type == CONTENT_PNG ||
+ c->type == CONTENT_JNG || c->type == CONTENT_MNG ||
c->type == CONTENT_GIF || c->type == CONTENT_SPRITE ||
c->type == CONTENT_DRAW) {
sprintf(icon_buf, "file_%x", ro_content_filetype(c));
diff --git a/riscos/mng.c b/riscos/mng.c
new file mode 100644
index 000000000..c5c124ed0
--- /dev/null
+++ b/riscos/mng.c
@@ -0,0 +1,73 @@
+/*
+ * 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 <not_ginger_matt@users.sourceforge.net>
+ */
+
+#include <assert.h>
+#include <stdbool.h>
+#include <string.h>
+#include <stdlib.h>
+#include <swis.h>
+#include "oslib/osspriteop.h"
+#include "netsurf/utils/config.h"
+#include "netsurf/content/content.h"
+#include "netsurf/riscos/gui.h"
+#include "netsurf/riscos/options.h"
+#include "netsurf/riscos/mng.h"
+#include "netsurf/riscos/tinct.h"
+#include "netsurf/utils/log.h"
+#include "netsurf/utils/messages.h"
+#include "netsurf/utils/utils.h"
+
+#ifdef WITH_MNG
+
+bool nsmng_create(struct content *c, const char *params[]) {
+ return false;
+}
+
+
+bool nsmng_process_data(struct content *c, char *data, unsigned int size) {
+ return true;
+}
+
+
+bool nsmng_convert(struct content *c, int width, int height) {
+ return true;
+}
+
+
+void nsmng_destroy(struct content *c) {
+}
+
+
+void 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 int tinct_options;
+
+ /* If we have a gui_window then we work from there, if not we use the global
+ settings as we are drawing a thumbnail.
+ */
+ if (ro_gui_current_redraw_gui) {
+ tinct_options = (ro_gui_current_redraw_gui->option_filter_sprites?tinct_BILINEAR_FILTER:0) |
+ (ro_gui_current_redraw_gui->option_dither_sprites?tinct_DITHER:0);
+ } else {
+ tinct_options = (option_filter_sprites?tinct_BILINEAR_FILTER:0) |
+ (option_dither_sprites?tinct_DITHER:0);
+ }
+
+ /* Tinct currently only handles 32bpp sprites that have an embedded alpha mask. Any
+ sprites not matching the required specifications are ignored. See the Tinct
+ documentation for further information.
+ */
+/* _swix(Tinct_PlotScaledAlpha, _IN(2) | _IN(3) | _IN(4) | _IN(5) | _IN(6) | _IN(7),
+ ((char *) c->data.mng.sprite_area + c->data.mng.sprite_area->first),
+ x, y - height,
+ width, height,
+ tinct_options);
+*/
+}
+#endif
diff --git a/riscos/mng.h b/riscos/mng.h
new file mode 100644
index 000000000..41a09403a
--- /dev/null
+++ b/riscos/mng.h
@@ -0,0 +1,28 @@
+/*
+ * 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 <not_ginger_matt@users.sourceforge.net>
+ */
+
+#ifndef _NETSURF_RISCOS_MNG_H_
+#define _NETSURF_RISCOS_MNG_H_
+
+#include "oslib/osspriteop.h"
+
+struct content;
+
+struct content_mng_data {
+ osspriteop_area *sprite_area;
+ char *sprite_image;
+};
+
+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);
+void 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);
+#endif
diff --git a/riscos/save.c b/riscos/save.c
index 4a1d70580..14564f727 100644
--- a/riscos/save.c
+++ b/riscos/save.c
@@ -429,6 +429,10 @@ void ro_gui_save_object_native(struct content *c, char *path)
case CONTENT_PNG:
error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.png.sprite_area, path);
break;
+ case CONTENT_JNG:
+ case CONTENT_MNG:
+ error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.mng.sprite_area, path);
+ break;
case CONTENT_GIF:
/* create sprite area */
temp = calloc(c->data.gif.gif->frame_image->size+16,
diff --git a/riscos/save_draw.c b/riscos/save_draw.c
index ae70318d1..a9c49f82a 100644
--- a/riscos/save_draw.c
+++ b/riscos/save_draw.c
@@ -597,6 +597,10 @@ static bool add_box(struct box *box, colour cbc, int x, int y)
#ifdef WITH_PNG
case CONTENT_PNG:
#endif
+#ifdef WITH_MNG
+ case CONTENT_JNG:
+ case CONTENT_MNG:
+#endif
case CONTENT_GIF:
#ifdef WITH_SPRITE
case CONTENT_SPRITE:
@@ -704,6 +708,12 @@ static bool add_graphic(struct content *content, struct box *box,
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;
+ break;
+#endif
case CONTENT_GIF:
sprite_length = content->data.gif.gif->frame_image->size;
break;
@@ -737,6 +747,12 @@ static bool add_graphic(struct content *content, struct box *box,
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);
+ break;
+#endif
case CONTENT_GIF:
memcpy((char*)ds+16, (char*)content->data.gif.gif->frame_image, (unsigned)sprite_length);
break;