mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-22 12:12:35 +03:00
[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
This commit is contained in:
parent
8b0aaef01d
commit
b7bb766e95
@ -30,6 +30,9 @@
|
||||
#ifdef WITH_PNG
|
||||
#include "netsurf/riscos/png.h"
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
#include "netsurf/riscos/mng.h"
|
||||
#endif
|
||||
#ifdef WITH_GIF
|
||||
#include "netsurf/riscos/gif.h"
|
||||
#endif
|
||||
@ -73,6 +76,14 @@ static const struct mime_entry mime_map[] = {
|
||||
#ifdef WITH_PNG
|
||||
{"image/png", CONTENT_PNG},
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
{"image/jng", CONTENT_JNG},
|
||||
{"image/x-jng", CONTENT_JNG},
|
||||
{"image/mng", CONTENT_MNG},
|
||||
{"image/x-mng", CONTENT_MNG},
|
||||
{"video/mng", CONTENT_MNG},
|
||||
{"video/x-mng", CONTENT_MNG},
|
||||
#endif
|
||||
#ifdef WITH_DRAW
|
||||
{"image/x-drawfile", CONTENT_DRAW},
|
||||
#endif
|
||||
@ -98,6 +109,9 @@ const char *content_type_name[] = {
|
||||
#ifdef WITH_PNG
|
||||
"PNG",
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
"MNG",
|
||||
#endif
|
||||
#ifdef WITH_SPRITE
|
||||
"SPRITE",
|
||||
#endif
|
||||
@ -162,6 +176,10 @@ static const struct handler_entry handler_map[] = {
|
||||
{nspng_create, nspng_process_data, nspng_convert,
|
||||
0, nspng_destroy, 0, nspng_redraw, 0, 0, 0},
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
{nsmng_create, nsmng_process_data, nsmng_convert,
|
||||
0, nsmng_destroy, 0, nsmng_redraw, 0, 0, 0},
|
||||
#endif
|
||||
#ifdef WITH_SPRITE
|
||||
{sprite_create, sprite_process_data, sprite_convert,
|
||||
0, sprite_destroy, 0, sprite_redraw, 0, 0, 0},
|
||||
|
@ -110,6 +110,9 @@
|
||||
#ifdef WITH_PNG
|
||||
#include "netsurf/riscos/png.h"
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
#include "netsurf/riscos/mng.h"
|
||||
#endif
|
||||
#ifdef WITH_SPRITE
|
||||
#include "netsurf/riscos/sprite.h"
|
||||
#endif
|
||||
@ -200,6 +203,9 @@ struct content {
|
||||
#ifdef WITH_PNG
|
||||
struct content_png_data png;
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
struct content_mng_data mng;
|
||||
#endif
|
||||
#ifdef WITH_SPRITE
|
||||
struct content_sprite_data sprite;
|
||||
#endif
|
||||
|
@ -31,6 +31,10 @@ typedef enum {
|
||||
#ifdef WITH_PNG
|
||||
CONTENT_PNG,
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
CONTENT_JNG,
|
||||
CONTENT_MNG,
|
||||
#endif
|
||||
#ifdef WITH_SPRITE
|
||||
CONTENT_SPRITE,
|
||||
#endif
|
||||
|
2
makefile
2
makefile
@ -28,7 +28,7 @@ OBJECTS_RISCOS += 401login.o debugwin.o \
|
||||
dialog.o download.o draw.o filetype.o font.o gif.o \
|
||||
gifread.o gui.o help.o history.o hotlist.o htmlinstance.o \
|
||||
htmlredraw.o jpeg.o menus.o mouseactions.o plugin.o \
|
||||
png.o save.o save_complete.o save_draw.o save_text.o \
|
||||
png.o mng.o save.o save_complete.o save_draw.o save_text.o \
|
||||
schedule.o sprite.o textselection.o theme.o thumbnail.o \
|
||||
toolbar.o ufont.o uri.o url_protocol.o wimp.o window.o # riscos/
|
||||
|
||||
|
@ -70,6 +70,10 @@ static const content_type image_types[] = {
|
||||
#ifdef WITH_PNG
|
||||
CONTENT_PNG,
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
CONTENT_JNG,
|
||||
CONTENT_MNG,
|
||||
#endif
|
||||
#ifdef WITH_SPRITE
|
||||
CONTENT_SPRITE,
|
||||
#endif
|
||||
|
@ -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;
|
||||
|
@ -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),
|
||||
|
@ -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));
|
||||
|
73
riscos/mng.c
Normal file
73
riscos/mng.c
Normal file
@ -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
|
28
riscos/mng.h
Normal file
28
riscos/mng.h
Normal file
@ -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
|
@ -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,
|
||||
|
@ -596,6 +596,10 @@ static bool add_box(struct box *box, colour cbc, int x, int y)
|
||||
case CONTENT_JPEG:
|
||||
#ifdef WITH_PNG
|
||||
case CONTENT_PNG:
|
||||
#endif
|
||||
#ifdef WITH_MNG
|
||||
case CONTENT_JNG:
|
||||
case CONTENT_MNG:
|
||||
#endif
|
||||
case CONTENT_GIF:
|
||||
#ifdef WITH_SPRITE
|
||||
@ -703,6 +707,12 @@ static bool add_graphic(struct content *content, struct box *box,
|
||||
case CONTENT_PNG:
|
||||
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;
|
||||
@ -736,6 +746,12 @@ static bool add_graphic(struct content *content, struct box *box,
|
||||
case CONTENT_PNG:
|
||||
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);
|
||||
|
@ -22,6 +22,7 @@
|
||||
#define WITH_GIF
|
||||
#define WITH_JPEG
|
||||
#define WITH_PNG
|
||||
#define WITH_MNG
|
||||
#endif
|
||||
#ifdef riscos
|
||||
#define WITH_DRAW
|
||||
|
Loading…
Reference in New Issue
Block a user