mirror of
https://github.com/netsurf-browser/netsurf
synced 2024-12-22 20:16:54 +03:00
[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
This commit is contained in:
parent
fb5082605c
commit
3371a27391
@ -22,17 +22,15 @@
|
|||||||
#include "netsurf/content/fetch.h"
|
#include "netsurf/content/fetch.h"
|
||||||
#include "netsurf/content/fetchcache.h"
|
#include "netsurf/content/fetchcache.h"
|
||||||
#include "netsurf/css/css.h"
|
#include "netsurf/css/css.h"
|
||||||
|
#include "netsurf/image/bitmap.h"
|
||||||
#include "netsurf/desktop/options.h"
|
#include "netsurf/desktop/options.h"
|
||||||
#include "netsurf/render/html.h"
|
#include "netsurf/render/html.h"
|
||||||
#include "netsurf/render/textplain.h"
|
#include "netsurf/render/textplain.h"
|
||||||
#ifdef WITH_JPEG
|
#ifdef WITH_JPEG
|
||||||
#include "netsurf/riscos/jpeg.h"
|
#include "netsurf/image/jpeg.h"
|
||||||
#endif
|
|
||||||
#ifdef WITH_PNG
|
|
||||||
#include "netsurf/riscos/png.h"
|
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
#include "netsurf/riscos/mng.h"
|
#include "netsurf/image/mng.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
#include "netsurf/riscos/gif.h"
|
#include "netsurf/riscos/gif.h"
|
||||||
@ -82,7 +80,7 @@ static const struct mime_entry mime_map[] = {
|
|||||||
#ifdef WITH_JPEG
|
#ifdef WITH_JPEG
|
||||||
{"image/pjpeg", CONTENT_JPEG},
|
{"image/pjpeg", CONTENT_JPEG},
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PNG
|
#ifdef WITH_MNG
|
||||||
{"image/png", CONTENT_PNG},
|
{"image/png", CONTENT_PNG},
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_DRAW
|
#ifdef WITH_DRAW
|
||||||
@ -115,10 +113,8 @@ const char *content_type_name[] = {
|
|||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
"GIF",
|
"GIF",
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PNG
|
|
||||||
"PNG",
|
|
||||||
#endif
|
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
|
"PNG",
|
||||||
"JNG",
|
"JNG",
|
||||||
"MNG",
|
"MNG",
|
||||||
#endif
|
#endif
|
||||||
@ -173,18 +169,16 @@ static const struct handler_entry handler_map[] = {
|
|||||||
0, 0, 0, 0, 0, 0, true},
|
0, 0, 0, 0, 0, 0, true},
|
||||||
{0, 0, css_convert, 0, css_destroy, 0, 0, 0, 0, false},
|
{0, 0, css_convert, 0, css_destroy, 0, 0, 0, 0, false},
|
||||||
#ifdef WITH_JPEG
|
#ifdef WITH_JPEG
|
||||||
{nsjpeg_create, 0, nsjpeg_convert,
|
{0, 0, nsjpeg_convert,
|
||||||
0, nsjpeg_destroy, 0, nsjpeg_redraw, 0, 0, false},
|
0, nsjpeg_destroy, 0, bitmap_redraw, 0, 0, false},
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
{nsgif_create, 0, nsgif_convert,
|
{nsgif_create, 0, nsgif_convert,
|
||||||
0, nsgif_destroy, 0, nsgif_redraw, 0, 0, false},
|
0, nsgif_destroy, 0, nsgif_redraw, 0, 0, false},
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PNG
|
#ifdef WITH_MNG
|
||||||
{nsmng_create, nsmng_process_data, nsmng_convert,
|
{nsmng_create, nsmng_process_data, nsmng_convert,
|
||||||
0, nsmng_destroy, 0, nsmng_redraw, 0, 0, false},
|
0, nsmng_destroy, 0, nsmng_redraw, 0, 0, false},
|
||||||
#endif
|
|
||||||
#ifdef WITH_MNG
|
|
||||||
{nsmng_create, nsmng_process_data, nsmng_convert,
|
{nsmng_create, nsmng_process_data, nsmng_convert,
|
||||||
0, nsmng_destroy, 0, nsmng_redraw, 0, 0, false},
|
0, nsmng_destroy, 0, nsmng_redraw, 0, 0, false},
|
||||||
{nsmng_create, nsmng_process_data, nsmng_convert,
|
{nsmng_create, nsmng_process_data, nsmng_convert,
|
||||||
@ -270,6 +264,7 @@ struct content * content_create(const char *url)
|
|||||||
c->width = 0;
|
c->width = 0;
|
||||||
c->height = 0;
|
c->height = 0;
|
||||||
c->available_width = 0;
|
c->available_width = 0;
|
||||||
|
c->bitmap = 0;
|
||||||
c->fresh = false;
|
c->fresh = false;
|
||||||
c->size = sizeof(struct content);
|
c->size = sizeof(struct content);
|
||||||
c->title = 0;
|
c->title = 0;
|
||||||
|
@ -102,7 +102,7 @@
|
|||||||
#include "netsurf/css/css.h"
|
#include "netsurf/css/css.h"
|
||||||
#include "netsurf/render/html.h"
|
#include "netsurf/render/html.h"
|
||||||
#ifdef WITH_JPEG
|
#ifdef WITH_JPEG
|
||||||
#include "netsurf/riscos/jpeg.h"
|
#include "netsurf/image/jpeg.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
#include "netsurf/riscos/gif.h"
|
#include "netsurf/riscos/gif.h"
|
||||||
@ -110,11 +110,8 @@
|
|||||||
#ifdef WITH_PLUGIN
|
#ifdef WITH_PLUGIN
|
||||||
#include "netsurf/riscos/plugin.h"
|
#include "netsurf/riscos/plugin.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PNG
|
|
||||||
#include "netsurf/riscos/png.h"
|
|
||||||
#endif
|
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
#include "netsurf/riscos/mng.h"
|
#include "netsurf/image/mng.h"
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_SPRITE
|
#ifdef WITH_SPRITE
|
||||||
#include "netsurf/riscos/sprite.h"
|
#include "netsurf/riscos/sprite.h"
|
||||||
@ -124,6 +121,7 @@
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
struct bitmap;
|
||||||
struct box;
|
struct box;
|
||||||
struct browser_window;
|
struct browser_window;
|
||||||
struct content;
|
struct content;
|
||||||
@ -208,9 +206,6 @@ struct content {
|
|||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
struct content_gif_data gif;
|
struct content_gif_data gif;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PNG
|
|
||||||
struct content_png_data png;
|
|
||||||
#endif
|
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
struct content_mng_data mng;
|
struct content_mng_data mng;
|
||||||
#endif
|
#endif
|
||||||
@ -225,6 +220,9 @@ struct content {
|
|||||||
#endif
|
#endif
|
||||||
} data;
|
} data;
|
||||||
|
|
||||||
|
/** Bitmap, for various image contents. */
|
||||||
|
struct bitmap *bitmap;
|
||||||
|
|
||||||
/** This content may be given to new users. Indicates that the content
|
/** This content may be given to new users. Indicates that the content
|
||||||
* was fetched using a simple GET, has not expired, and may be
|
* was fetched using a simple GET, has not expired, and may be
|
||||||
* shared between users. */
|
* shared between users. */
|
||||||
|
@ -28,10 +28,8 @@ typedef enum {
|
|||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
CONTENT_GIF,
|
CONTENT_GIF,
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PNG
|
|
||||||
CONTENT_PNG,
|
|
||||||
#endif
|
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
|
CONTENT_PNG,
|
||||||
CONTENT_JNG,
|
CONTENT_JNG,
|
||||||
CONTENT_MNG,
|
CONTENT_MNG,
|
||||||
#endif
|
#endif
|
||||||
|
@ -100,4 +100,9 @@ void history_forward(struct browser_window *bw, struct history *history);
|
|||||||
bool history_back_available(struct history *history);
|
bool history_back_available(struct history *history);
|
||||||
bool history_forward_available(struct history *history);
|
bool history_forward_available(struct history *history);
|
||||||
|
|
||||||
|
/* In platform specific schedule.c. */
|
||||||
|
void schedule(int t, void (*callback)(void *p), void *p);
|
||||||
|
void schedule_remove(void (*callback)(void *p), void *p);
|
||||||
|
void schedule_run(void);
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
131
gtk/gtk_bitmap.c
Normal file
131
gtk/gtk_bitmap.c
Normal file
@ -0,0 +1,131 @@
|
|||||||
|
/*
|
||||||
|
* 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 <bursa@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
* Generic bitmap handling (GDK / GTK+ implementation).
|
||||||
|
*
|
||||||
|
* This implements the interface given by desktop/bitmap.h using GdkPixbufs.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <assert.h>
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <string.h>
|
||||||
|
#include <gdk/gdk.h>
|
||||||
|
#include <gdk-pixbuf/gdk-pixbuf.h>
|
||||||
|
#include "netsurf/content/content.h"
|
||||||
|
#include "netsurf/image/bitmap.h"
|
||||||
|
|
||||||
|
|
||||||
|
extern GdkDrawable *current_drawable;
|
||||||
|
extern GdkGC *current_gc;
|
||||||
|
|
||||||
|
|
||||||
|
struct bitmap;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Create a bitmap.
|
||||||
|
*
|
||||||
|
* \param width width of image in pixels
|
||||||
|
* \param height width of image in pixels
|
||||||
|
* \return an opaque struct bitmap, or NULL on memory exhaustion
|
||||||
|
*/
|
||||||
|
|
||||||
|
struct bitmap *bitmap_create(int width, int height)
|
||||||
|
{
|
||||||
|
GdkPixbuf *pixbuf = gdk_pixbuf_new(GDK_COLORSPACE_RGB, true, 8,
|
||||||
|
width, height);
|
||||||
|
return (struct bitmap *) pixbuf;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Return a pointer to the pixel data in a bitmap.
|
||||||
|
*
|
||||||
|
* \param bitmap a bitmap, as returned by bitmap_create()
|
||||||
|
* \return pointer to the pixel buffer
|
||||||
|
*
|
||||||
|
* The pixel data is packed as BITMAP_FORMAT, possibly with padding at the end
|
||||||
|
* of rows. The width of a row in bytes is given by bitmap_get_rowstride().
|
||||||
|
*/
|
||||||
|
|
||||||
|
char *bitmap_get_buffer(struct bitmap *bitmap)
|
||||||
|
{
|
||||||
|
assert(bitmap);
|
||||||
|
return gdk_pixbuf_get_pixels((GdkPixbuf *) bitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Find the width of a pixel row in bytes.
|
||||||
|
*
|
||||||
|
* \param bitmap a bitmap, as returned by bitmap_create()
|
||||||
|
* \return width of a pixel row in the bitmap
|
||||||
|
*/
|
||||||
|
|
||||||
|
size_t bitmap_get_rowstride(struct bitmap *bitmap)
|
||||||
|
{
|
||||||
|
assert(bitmap);
|
||||||
|
return gdk_pixbuf_get_rowstride((GdkPixbuf *) bitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Free a bitmap.
|
||||||
|
*
|
||||||
|
* \param bitmap a bitmap, as returned by bitmap_create()
|
||||||
|
*/
|
||||||
|
|
||||||
|
void bitmap_destroy(struct bitmap *bitmap)
|
||||||
|
{
|
||||||
|
assert(bitmap);
|
||||||
|
g_object_unref((GdkPixbuf *) bitmap);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Render a bitmap.
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool bitmap_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)
|
||||||
|
{
|
||||||
|
GdkPixbuf *scaled;
|
||||||
|
|
||||||
|
scaled = gdk_pixbuf_scale_simple((GdkPixbuf *) c->bitmap,
|
||||||
|
width, height,
|
||||||
|
GDK_INTERP_BILINEAR);
|
||||||
|
if (!scaled)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
gdk_draw_pixbuf(current_drawable, current_gc,
|
||||||
|
scaled,
|
||||||
|
0, 0,
|
||||||
|
x, y,
|
||||||
|
width, height,
|
||||||
|
GDK_RGB_DITHER_NORMAL, 0, 0);
|
||||||
|
|
||||||
|
g_object_unref(scaled);
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Save a bitmap in the platform's native format.
|
||||||
|
*
|
||||||
|
* \param bitmap a bitmap, as returned by bitmap_create()
|
||||||
|
* \param path pathname for file
|
||||||
|
* \return true on success, false on error and error reported
|
||||||
|
*/
|
||||||
|
|
||||||
|
bool bitmap_save(struct bitmap *bitmap, const char *path)
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
@ -121,3 +121,7 @@ void history_forward(struct browser_window *bw, struct history *history) {}
|
|||||||
|
|
||||||
void gui_401login_open(struct browser_window *bw, struct content *c,
|
void gui_401login_open(struct browser_window *bw, struct content *c,
|
||||||
char *realm) {}
|
char *realm) {}
|
||||||
|
|
||||||
|
void schedule(int t, void (*callback)(void *p), void *p) {}
|
||||||
|
void schedule_remove(void (*callback)(void *p), void *p) {}
|
||||||
|
void schedule_run(void) {}
|
||||||
|
@ -34,8 +34,8 @@ struct gui_window {
|
|||||||
struct browser_window *bw;
|
struct browser_window *bw;
|
||||||
};
|
};
|
||||||
static GtkWidget *current_widget;
|
static GtkWidget *current_widget;
|
||||||
static GdkDrawable *current_drawable;
|
GdkDrawable *current_drawable;
|
||||||
static GdkGC *current_gc;
|
GdkGC *current_gc;
|
||||||
|
|
||||||
|
|
||||||
static gboolean gui_window_expose_event(GtkWidget *widget,
|
static gboolean gui_window_expose_event(GtkWidget *widget,
|
||||||
|
38
image/bitmap.h
Normal file
38
image/bitmap.h
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
/*
|
||||||
|
* 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 <bursa@users.sourceforge.net>
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
* Generic bitmap handling (interface).
|
||||||
|
*
|
||||||
|
* This interface wraps the native platform-specific image format, so that
|
||||||
|
* portable image convertors can be written.
|
||||||
|
*
|
||||||
|
* The bitmap format is either RGBA.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef _NETSURF_IMAGE_BITMAP_H_
|
||||||
|
#define _NETSURF_IMAGE_BITMAP_H_
|
||||||
|
|
||||||
|
#include <stdbool.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
|
||||||
|
struct content;
|
||||||
|
|
||||||
|
/** An opaque image. */
|
||||||
|
struct bitmap;
|
||||||
|
|
||||||
|
struct bitmap *bitmap_create(int width, int height);
|
||||||
|
char *bitmap_get_buffer(struct bitmap *bitmap);
|
||||||
|
size_t bitmap_get_rowstride(struct bitmap *bitmap);
|
||||||
|
void bitmap_destroy(struct bitmap *bitmap);
|
||||||
|
bool bitmap_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 bitmap_save(struct bitmap *bitmap, const char *path);
|
||||||
|
|
||||||
|
#endif
|
@ -13,27 +13,25 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
|
#include <setjmp.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#define JPEG_INTERNAL_OPTIONS
|
#define JPEG_INTERNAL_OPTIONS
|
||||||
#include "libjpeg/jpeglib.h"
|
#include "libjpeg/jpeglib.h"
|
||||||
#include "oslib/osspriteop.h"
|
|
||||||
#include "netsurf/utils/config.h"
|
#include "netsurf/utils/config.h"
|
||||||
#include "netsurf/content/content.h"
|
#include "netsurf/content/content.h"
|
||||||
#include "netsurf/riscos/gui.h"
|
#include "netsurf/image/bitmap.h"
|
||||||
#include "netsurf/riscos/image.h"
|
#include "netsurf/image/jpeg.h"
|
||||||
#include "netsurf/riscos/jpeg.h"
|
|
||||||
#include "netsurf/riscos/options.h"
|
|
||||||
#include "netsurf/utils/log.h"
|
#include "netsurf/utils/log.h"
|
||||||
#include "netsurf/utils/messages.h"
|
#include "netsurf/utils/messages.h"
|
||||||
#include "netsurf/utils/utils.h"
|
#include "netsurf/utils/utils.h"
|
||||||
|
|
||||||
|
|
||||||
/* We require a the library to be configured with these options to save
|
/* We prefer the library to be configured with these options to save
|
||||||
* copying data during decoding. */
|
* copying data during decoding. */
|
||||||
#if RGB_RED != 0 || RGB_GREEN != 1 || RGB_BLUE != 2 || RGB_PIXELSIZE != 4
|
#if RGB_RED != 0 || RGB_GREEN != 1 || RGB_BLUE != 2 || RGB_PIXELSIZE != 4
|
||||||
#error JPEG library incorrectly configured.
|
#warning JPEG library not optimally configured. Decoding will be slower.
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
|
||||||
@ -53,17 +51,6 @@ static void nsjpeg_skip_input_data(j_decompress_ptr cinfo, long num_bytes);
|
|||||||
static void nsjpeg_term_source(j_decompress_ptr cinfo);
|
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.
|
* Convert a CONTENT_JPEG for display.
|
||||||
*/
|
*/
|
||||||
@ -78,16 +65,17 @@ bool nsjpeg_convert(struct content *c, int w, int h)
|
|||||||
nsjpeg_term_source };
|
nsjpeg_term_source };
|
||||||
unsigned int height;
|
unsigned int height;
|
||||||
unsigned int width;
|
unsigned int width;
|
||||||
unsigned int area_size;
|
struct bitmap *bitmap = NULL;
|
||||||
osspriteop_area *sprite_area = 0;
|
char *pixels;
|
||||||
osspriteop_header *sprite;
|
size_t rowstride;
|
||||||
union content_msg_data msg_data;
|
union content_msg_data msg_data;
|
||||||
|
|
||||||
cinfo.err = jpeg_std_error(&jerr.pub);
|
cinfo.err = jpeg_std_error(&jerr.pub);
|
||||||
jerr.pub.error_exit = nsjpeg_error_exit;
|
jerr.pub.error_exit = nsjpeg_error_exit;
|
||||||
if (setjmp(jerr.setjmp_buffer)) {
|
if (setjmp(jerr.setjmp_buffer)) {
|
||||||
jpeg_destroy_decompress(&cinfo);
|
jpeg_destroy_decompress(&cinfo);
|
||||||
free(sprite_area);
|
if (bitmap)
|
||||||
|
bitmap_destroy(bitmap);
|
||||||
|
|
||||||
msg_data.error = nsjpeg_error_buffer;
|
msg_data.error = nsjpeg_error_buffer;
|
||||||
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
|
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
|
||||||
@ -105,10 +93,8 @@ bool nsjpeg_convert(struct content *c, int w, int h)
|
|||||||
width = cinfo.output_width;
|
width = cinfo.output_width;
|
||||||
height = cinfo.output_height;
|
height = cinfo.output_height;
|
||||||
|
|
||||||
area_size = 16 + 44 + width * height * 4;
|
bitmap = bitmap_create(width, height);
|
||||||
sprite_area = malloc(area_size);
|
if (!bitmap) {
|
||||||
if (!sprite_area) {
|
|
||||||
LOG(("malloc failed"));
|
|
||||||
jpeg_destroy_decompress(&cinfo);
|
jpeg_destroy_decompress(&cinfo);
|
||||||
|
|
||||||
msg_data.error = messages_get("NoMemory");
|
msg_data.error = messages_get("NoMemory");
|
||||||
@ -117,45 +103,40 @@ bool nsjpeg_convert(struct content *c, int w, int h)
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* area control block */
|
pixels = bitmap_get_buffer(bitmap);
|
||||||
sprite_area->size = area_size;
|
rowstride = bitmap_get_rowstride(bitmap);
|
||||||
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 {
|
do {
|
||||||
JSAMPROW scanlines[1];
|
JSAMPROW scanlines[1];
|
||||||
scanlines[0] = (JSAMPROW) ((char *) sprite + 44 +
|
scanlines[0] = (JSAMPROW) (pixels +
|
||||||
width * cinfo.output_scanline * 4);
|
rowstride * cinfo.output_scanline);
|
||||||
jpeg_read_scanlines(&cinfo, scanlines, 1);
|
jpeg_read_scanlines(&cinfo, scanlines, 1);
|
||||||
|
|
||||||
|
#if RGB_RED != 0 || RGB_GREEN != 1 || RGB_BLUE != 2 || RGB_PIXELSIZE != 4
|
||||||
|
/* expand to RGBA */
|
||||||
|
for (int i = width - 1; 0 <= i; i--) {
|
||||||
|
int r = scanlines[0][i * RGB_PIXELSIZE + RGB_RED];
|
||||||
|
int g = scanlines[0][i * RGB_PIXELSIZE + RGB_GREEN];
|
||||||
|
int b = scanlines[0][i * RGB_PIXELSIZE + RGB_BLUE];
|
||||||
|
scanlines[0][i * 4 + 0] = r;
|
||||||
|
scanlines[0][i * 4 + 1] = g;
|
||||||
|
scanlines[0][i * 4 + 2] = b;
|
||||||
|
scanlines[0][i * 4 + 3] = 0xff;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
} while (cinfo.output_scanline != cinfo.output_height);
|
} while (cinfo.output_scanline != cinfo.output_height);
|
||||||
|
|
||||||
jpeg_finish_decompress(&cinfo);
|
jpeg_finish_decompress(&cinfo);
|
||||||
jpeg_destroy_decompress(&cinfo);
|
jpeg_destroy_decompress(&cinfo);
|
||||||
|
|
||||||
/*xosspriteop_save_sprite_file(osspriteop_USER_AREA,
|
|
||||||
sprite_area, "jpeg");*/
|
|
||||||
|
|
||||||
c->width = width;
|
c->width = width;
|
||||||
c->height = height;
|
c->height = height;
|
||||||
c->data.jpeg.sprite_area = sprite_area;
|
c->bitmap = bitmap;
|
||||||
c->title = malloc(100);
|
c->title = malloc(100);
|
||||||
if (c->title)
|
if (c->title)
|
||||||
snprintf(c->title, 100, messages_get("JPEGTitle"),
|
snprintf(c->title, 100, messages_get("JPEGTitle"),
|
||||||
width, height, c->source_size);
|
width, height, c->source_size);
|
||||||
c->size += area_size + 100;
|
c->size += height * rowstride + 100;
|
||||||
c->status = CONTENT_STATUS_DONE;
|
c->status = CONTENT_STATUS_DONE;
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
@ -232,21 +213,7 @@ void nsjpeg_term_source(j_decompress_ptr cinfo)
|
|||||||
|
|
||||||
void nsjpeg_destroy(struct content *c)
|
void nsjpeg_destroy(struct content *c)
|
||||||
{
|
{
|
||||||
free(c->data.jpeg.sprite_area);
|
if (c->bitmap)
|
||||||
|
bitmap_destroy(c->bitmap);
|
||||||
free(c->title);
|
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);
|
|
||||||
}
|
|
@ -5,23 +5,20 @@
|
|||||||
* Copyright 2004 James Bursa <bursa@users.sourceforge.net>
|
* Copyright 2004 James Bursa <bursa@users.sourceforge.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _NETSURF_RISCOS_JPEG_H_
|
/** \file
|
||||||
#define _NETSURF_RISCOS_JPEG_H_
|
* Content for image/jpeg (interface).
|
||||||
|
*/
|
||||||
|
|
||||||
#include "oslib/osspriteop.h"
|
#ifndef _NETSURF_IMAGE_JPEG_H_
|
||||||
|
#define _NETSURF_IMAGE_JPEG_H_
|
||||||
|
|
||||||
|
struct bitmap;
|
||||||
struct content;
|
struct content;
|
||||||
|
|
||||||
struct content_jpeg_data {
|
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);
|
bool nsjpeg_convert(struct content *c, int width, int height);
|
||||||
void nsjpeg_destroy(struct content *c);
|
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
|
#endif
|
@ -5,20 +5,22 @@
|
|||||||
* Copyright 2004 Richard Wilson <not_ginger_matt@users.sourceforge.net>
|
* Copyright 2004 Richard Wilson <not_ginger_matt@users.sourceforge.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/** \file
|
||||||
|
* Content for image/mng, image/png, and image/jng (implementation).
|
||||||
|
*/
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include "libmng/libmng.h"
|
#include <sys/time.h>
|
||||||
#include "oslib/os.h"
|
#include <time.h>
|
||||||
#include "oslib/osspriteop.h"
|
#include "libmng.h"
|
||||||
#include "netsurf/utils/config.h"
|
#include "netsurf/utils/config.h"
|
||||||
#include "netsurf/content/content.h"
|
#include "netsurf/content/content.h"
|
||||||
#include "netsurf/riscos/gui.h"
|
#include "netsurf/desktop/browser.h"
|
||||||
#include "netsurf/riscos/image.h"
|
#include "netsurf/image/bitmap.h"
|
||||||
#include "netsurf/riscos/mng.h"
|
#include "netsurf/image/mng.h"
|
||||||
#include "netsurf/riscos/options.h"
|
|
||||||
#include "netsurf/riscos/wimp.h"
|
|
||||||
#include "netsurf/utils/log.h"
|
#include "netsurf/utils/log.h"
|
||||||
#include "netsurf/utils/messages.h"
|
#include "netsurf/utils/messages.h"
|
||||||
#include "netsurf/utils/utils.h"
|
#include "netsurf/utils/utils.h"
|
||||||
@ -44,13 +46,21 @@ static mng_bool nsmng_trace(mng_handle mng, mng_int32 iFunNr, mng_int32 iFuncseq
|
|||||||
static mng_bool nsmng_errorproc(mng_handle mng, mng_int32 code,
|
static mng_bool nsmng_errorproc(mng_handle mng, mng_int32 code,
|
||||||
mng_int8 severity, mng_chunkid chunktype, mng_uint32 chunkseq,
|
mng_int8 severity, mng_chunkid chunktype, mng_uint32 chunkseq,
|
||||||
mng_int32 extra1, mng_int32 extra2, mng_pchar text);
|
mng_int32 extra1, mng_int32 extra2, mng_pchar text);
|
||||||
|
#ifndef MNG_INTERNAL_MEMMNGMT
|
||||||
|
static mng_ptr nsmng_alloc(mng_size_t n);
|
||||||
|
static void nsmng_free(mng_ptr p, mng_size_t n);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
bool nsmng_create(struct content *c, const char *params[]) {
|
bool nsmng_create(struct content *c, const char *params[]) {
|
||||||
|
|
||||||
/* Initialise the library (libmng is compiled with MNG_INTERNAL_MEMMNGMT)
|
/* Initialise the library
|
||||||
*/
|
*/
|
||||||
c->data.mng.sprite_area = NULL;
|
#ifdef MNG_INTERNAL_MEMMNGMT
|
||||||
c->data.mng.handle = mng_initialize(c, MNG_NULL, MNG_NULL, MNG_NULL);
|
c->data.mng.handle = mng_initialize(c, MNG_NULL, MNG_NULL, MNG_NULL);
|
||||||
|
#else
|
||||||
|
c->data.mng.handle = mng_initialize(c, nsmng_alloc, nsmng_free, MNG_NULL);
|
||||||
|
#endif
|
||||||
if (c->data.mng.handle == MNG_NULL) {
|
if (c->data.mng.handle == MNG_NULL) {
|
||||||
LOG(("Unable to initialise MNG library."));
|
LOG(("Unable to initialise MNG library."));
|
||||||
return nsmng_broadcast_error(c);
|
return nsmng_broadcast_error(c);
|
||||||
@ -155,18 +165,14 @@ mng_bool nsmng_closestream(mng_handle mng) {
|
|||||||
|
|
||||||
mng_bool nsmng_processheader(mng_handle mng, mng_uint32 width, mng_uint32 height) {
|
mng_bool nsmng_processheader(mng_handle mng, mng_uint32 width, mng_uint32 height) {
|
||||||
struct content *c;
|
struct content *c;
|
||||||
int sprite_size;
|
|
||||||
osspriteop_area *sprite_area;
|
|
||||||
osspriteop_header *sprite_header;
|
|
||||||
union content_msg_data msg_data;
|
union content_msg_data msg_data;
|
||||||
|
|
||||||
/* This function is called when the header has been read and we know
|
/* This function is called when the header has been read and we know
|
||||||
the dimensions of the canvas.
|
the dimensions of the canvas.
|
||||||
*/
|
*/
|
||||||
c = (struct content *)mng_get_userdata(mng);
|
c = (struct content *)mng_get_userdata(mng);
|
||||||
sprite_size = width * height * 4 + sizeof(osspriteop_header) + sizeof(osspriteop_area);
|
c->bitmap = bitmap_create(width, height);
|
||||||
c->data.mng.sprite_area = (osspriteop_area *)malloc(sprite_size);
|
if (!c->bitmap) {
|
||||||
if (!(c->data.mng.sprite_area)) {
|
|
||||||
msg_data.error = messages_get("NoMemory");
|
msg_data.error = messages_get("NoMemory");
|
||||||
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
|
content_broadcast(c, CONTENT_MSG_ERROR, msg_data);
|
||||||
LOG(("Insufficient memory to create canvas."));
|
LOG(("Insufficient memory to create canvas."));
|
||||||
@ -178,27 +184,6 @@ mng_bool nsmng_processheader(mng_handle mng, mng_uint32 width, mng_uint32 height
|
|||||||
c->width = width;
|
c->width = width;
|
||||||
c->height = height;
|
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
|
/* Set the canvas style
|
||||||
*/
|
*/
|
||||||
if (mng_set_canvasstyle(mng, MNG_CANVAS_RGBA8) != MNG_NOERROR) {
|
if (mng_set_canvasstyle(mng, MNG_CANVAS_RGBA8) != MNG_NOERROR) {
|
||||||
@ -262,7 +247,7 @@ bool nsmng_convert(struct content *c, int width, int height) {
|
|||||||
c->width, c->height, c->source_size);
|
c->width, c->height, c->source_size);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
c->size += (c->width * c->height * 4) + sizeof(osspriteop_header) + sizeof(osspriteop_area) + 100;
|
c->size += c->width * c->height * 4 + 100;
|
||||||
c->status = CONTENT_STATUS_DONE;
|
c->status = CONTENT_STATUS_DONE;
|
||||||
|
|
||||||
|
|
||||||
@ -282,7 +267,6 @@ bool nsmng_convert(struct content *c, int width, int height) {
|
|||||||
|
|
||||||
|
|
||||||
mng_ptr nsmng_getcanvasline(mng_handle mng, mng_uint32 line) {
|
mng_ptr nsmng_getcanvasline(mng_handle mng, mng_uint32 line) {
|
||||||
char *base;
|
|
||||||
struct content *c;
|
struct content *c;
|
||||||
|
|
||||||
/* Get our content back
|
/* Get our content back
|
||||||
@ -291,21 +275,31 @@ mng_ptr nsmng_getcanvasline(mng_handle mng, mng_uint32 line) {
|
|||||||
|
|
||||||
/* Calculate the address
|
/* Calculate the address
|
||||||
*/
|
*/
|
||||||
base = ((char *) c->data.mng.sprite_area + c->data.mng.sprite_area->first);
|
return bitmap_get_buffer(c->bitmap) +
|
||||||
base += sizeof(osspriteop_header);
|
bitmap_get_rowstride(c->bitmap) * line;
|
||||||
return base + (c->width * 4) * line;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get the wall-clock time in milliseconds since some fixed time.
|
||||||
|
*/
|
||||||
|
|
||||||
mng_uint32 nsmng_gettickcount(mng_handle mng) {
|
mng_uint32 nsmng_gettickcount(mng_handle mng) {
|
||||||
os_t time;
|
static bool start = true;
|
||||||
|
static time_t t0;
|
||||||
|
struct timeval tv;
|
||||||
|
struct timezone tz;
|
||||||
|
|
||||||
/* Get the time in centiseconds and return in milliseconds
|
gettimeofday(&tv, &tz);
|
||||||
*/
|
if (start) {
|
||||||
xos_read_monotonic_time(&time);
|
t0 = tv.tv_sec;
|
||||||
return (time * 10);
|
start = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (tv.tv_sec - t0) * 1000 + tv.tv_usec / 1000;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
mng_bool nsmng_refresh(mng_handle mng, mng_uint32 x, mng_uint32 y, mng_uint32 w, mng_uint32 h) {
|
mng_bool nsmng_refresh(mng_handle mng, mng_uint32 x, mng_uint32 y, mng_uint32 w, mng_uint32 h) {
|
||||||
union content_msg_data data;
|
union content_msg_data data;
|
||||||
struct content *c;
|
struct content *c;
|
||||||
@ -368,10 +362,8 @@ void nsmng_destroy(struct content *c) {
|
|||||||
*/
|
*/
|
||||||
schedule_remove(nsmng_animate, c);
|
schedule_remove(nsmng_animate, c);
|
||||||
mng_cleanup(&c->data.mng.handle);
|
mng_cleanup(&c->data.mng.handle);
|
||||||
if (c->data.mng.sprite_area) {
|
if (c->bitmap)
|
||||||
free(c->data.mng.sprite_area);
|
bitmap_destroy(c->bitmap);
|
||||||
c->data.mng.sprite_area = NULL;
|
|
||||||
}
|
|
||||||
free(c->title);
|
free(c->title);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -383,9 +375,9 @@ bool nsmng_redraw(struct content *c, int x, int y,
|
|||||||
{
|
{
|
||||||
bool ret;
|
bool ret;
|
||||||
|
|
||||||
ret = image_redraw(c->data.mng.sprite_area, x, y, width, height,
|
ret = bitmap_redraw(c, x, y, width, height,
|
||||||
c->width * 2, c->height * 2, background_colour,
|
clip_x0, clip_y0, clip_x1, clip_y1,
|
||||||
false, false, IMAGE_PLOT_TINCT_ALPHA);
|
scale, background_colour);
|
||||||
|
|
||||||
/* Check if we need to restart the animation
|
/* Check if we need to restart the animation
|
||||||
*/
|
*/
|
||||||
@ -460,4 +452,29 @@ mng_bool nsmng_errorproc(mng_handle mng, mng_int32 code,
|
|||||||
|
|
||||||
return (0);
|
return (0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
#ifndef MNG_INTERNAL_MEMMNGMT
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Memory allocation callback for libmng.
|
||||||
|
*/
|
||||||
|
|
||||||
|
mng_ptr nsmng_alloc(mng_size_t n)
|
||||||
|
{
|
||||||
|
return calloc(1, n);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Memory free callback for libmng.
|
||||||
|
*/
|
||||||
|
|
||||||
|
void nsmng_free(mng_ptr p, mng_size_t n)
|
||||||
|
{
|
||||||
|
free(p);
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -5,11 +5,14 @@
|
|||||||
* Copyright 2004 Richard Wilson <not_ginger_matt@users.sourceforge.net>
|
* Copyright 2004 Richard Wilson <not_ginger_matt@users.sourceforge.net>
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef _NETSURF_RISCOS_MNG_H_
|
/** \file
|
||||||
#define _NETSURF_RISCOS_MNG_H_
|
* Content for image/mng, image/png, and image/jng (interface).
|
||||||
|
*/
|
||||||
|
|
||||||
#include "libmng/libmng.h"
|
#ifndef _NETSURF_IMAGE_MNG_H_
|
||||||
#include "oslib/osspriteop.h"
|
#define _NETSURF_IMAGE_MNG_H_
|
||||||
|
|
||||||
|
#include "libmng.h"
|
||||||
|
|
||||||
struct content;
|
struct content;
|
||||||
|
|
||||||
@ -19,7 +22,6 @@ struct content_mng_data {
|
|||||||
int read_size;
|
int read_size;
|
||||||
bool waiting;
|
bool waiting;
|
||||||
mng_handle handle;
|
mng_handle handle;
|
||||||
osspriteop_area *sprite_area;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
bool nsmng_create(struct content *c, const char *params[]);
|
bool nsmng_create(struct content *c, const char *params[]);
|
26
makefile
26
makefile
@ -23,12 +23,14 @@ OBJECTS_COMMON += box.o form.o html.o layout.o textplain.o # render/
|
|||||||
OBJECTS_COMMON += messages.o pool.o translit.o url.o utils.o # utils/
|
OBJECTS_COMMON += messages.o pool.o translit.o url.o utils.o # utils/
|
||||||
OBJECTS_COMMON += imagemap.o loginlist.o options.o # desktop/
|
OBJECTS_COMMON += imagemap.o loginlist.o options.o # desktop/
|
||||||
|
|
||||||
OBJECTS_RISCOS = $(OBJECTS_COMMON)
|
OBJECTS_IMAGE = jpeg.o mng.o # image/
|
||||||
|
|
||||||
|
OBJECTS_RISCOS = $(OBJECTS_COMMON) $(OBJECTS_IMAGE)
|
||||||
OBJECTS_RISCOS += browser.o netsurf.o version.o # desktop/
|
OBJECTS_RISCOS += browser.o netsurf.o version.o # desktop/
|
||||||
OBJECTS_RISCOS += 401login.o debugwin.o \
|
OBJECTS_RISCOS += 401login.o bitmap.o debugwin.o \
|
||||||
buffer.o dialog.o download.o draw.o filetype.o font.o gif.o \
|
buffer.o dialog.o download.o draw.o filetype.o font.o gif.o \
|
||||||
gifread.o gui.o help.o history.o hotlist.o htmlredraw.o image.o \
|
gifread.o gui.o help.o history.o hotlist.o htmlredraw.o image.o \
|
||||||
jpeg.o menus.o mng.o mouseactions.o plugin.o print.o \
|
menus.o mouseactions.o plugin.o print.o \
|
||||||
save.o save_complete.o save_draw.o save_text.o \
|
save.o save_complete.o save_draw.o save_text.o \
|
||||||
schedule.o search.o sprite.o textselection.o theme.o thumbnail.o \
|
schedule.o search.o sprite.o textselection.o theme.o thumbnail.o \
|
||||||
ufont.o uri.o url_protocol.o wimp.o window.o # riscos/
|
ufont.o uri.o url_protocol.o wimp.o window.o # riscos/
|
||||||
@ -36,22 +38,22 @@ OBJECTS_RISCOS += 401login.o debugwin.o \
|
|||||||
|
|
||||||
OBJECTS_NCOS = $(OBJECTS_RISCOS)
|
OBJECTS_NCOS = $(OBJECTS_RISCOS)
|
||||||
|
|
||||||
OBJECTS_DEBUG = $(OBJECTS_COMMON)
|
OBJECTS_DEBUG = $(OBJECTS_COMMON) $(OBJECTS_IMAGE)
|
||||||
OBJECTS_DEBUG += filetyped.o fontd.o netsurfd.o # debug/
|
OBJECTS_DEBUG += debug_bitmap.o filetyped.o fontd.o netsurfd.o # debug/
|
||||||
OBJECTS_DEBUG += gif.o gifread.o jpeg.o mng.o save_complete.o \
|
OBJECTS_DEBUG += gif.o gifread.o save_complete.o \
|
||||||
schedule.o # riscos/
|
schedule.o # riscos/
|
||||||
|
|
||||||
OBJECTS_DEBUGRO = $(OBJECTS_COMMON)
|
OBJECTS_DEBUGRO = $(OBJECTS_COMMON) $(OBJECTS_IMAGE)
|
||||||
OBJECTS_DEBUGRO += netsurfd.o # debug/
|
OBJECTS_DEBUGRO += netsurfd.o # debug/
|
||||||
OBJECTS_DEBUGRO += version.o # desktop/
|
OBJECTS_DEBUGRO += version.o # desktop/
|
||||||
OBJECTS_DEBUGRO += draw.o filetype.o font.o \
|
OBJECTS_DEBUGRO += bitmap.o draw.o filetype.o font.o \
|
||||||
gif.o gifread.o image.o jpeg.o mng.o save_complete.o \
|
gif.o gifread.o image.o jpeg.o save_complete.o \
|
||||||
schedule.o sprite.o ufont.o # riscos/
|
schedule.o sprite.o ufont.o # riscos/
|
||||||
|
|
||||||
OBJECTS_GTK = $(OBJECTS_COMMON)
|
OBJECTS_GTK = $(OBJECTS_COMMON) $(OBJECTS_IMAGE)
|
||||||
OBJECTS_GTK += filetyped.o # debug/
|
OBJECTS_GTK += filetyped.o # debug/
|
||||||
OBJECTS_GTK += browser.o netsurf.o version.o # desktop/
|
OBJECTS_GTK += browser.o netsurf.o version.o # desktop/
|
||||||
OBJECTS_GTK += font_pango.o gtk_gui.o gtk_window.o # gtk/
|
OBJECTS_GTK += font_pango.o gtk_bitmap.o gtk_gui.o gtk_window.o # gtk/
|
||||||
|
|
||||||
|
|
||||||
OBJDIR_RISCOS = $(shell $(CC) -dumpmachine)
|
OBJDIR_RISCOS = $(shell $(CC) -dumpmachine)
|
||||||
@ -82,7 +84,7 @@ else
|
|||||||
include posix.mk
|
include posix.mk
|
||||||
endif
|
endif
|
||||||
|
|
||||||
VPATH = content:css:desktop:render:riscos:utils:debug:gtk
|
VPATH = content:css:desktop:image:render:riscos:utils:debug:gtk
|
||||||
|
|
||||||
WARNFLAGS = -W -Wall -Wundef -Wpointer-arith -Wcast-qual \
|
WARNFLAGS = -W -Wall -Wundef -Wpointer-arith -Wcast-qual \
|
||||||
-Wcast-align -Wwrite-strings -Wstrict-prototypes \
|
-Wcast-align -Wwrite-strings -Wstrict-prototypes \
|
||||||
|
@ -230,9 +230,6 @@ int ro_content_filetype(struct content *content);
|
|||||||
/* in schedule.c */
|
/* in schedule.c */
|
||||||
extern bool sched_active;
|
extern bool sched_active;
|
||||||
extern os_t sched_time;
|
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 */
|
/* in debugwin.c */
|
||||||
void ro_gui_debugwin_open(void);
|
void ro_gui_debugwin_open(void);
|
||||||
|
@ -1010,30 +1010,30 @@ bool html_redraw_background(int xi, int yi, int width, int height,
|
|||||||
/* and plot the image */
|
/* and plot the image */
|
||||||
switch (box->background->type) {
|
switch (box->background->type) {
|
||||||
#ifdef WITH_PNG
|
#ifdef WITH_PNG
|
||||||
case CONTENT_PNG:
|
case CONTENT_PNG:/*
|
||||||
image_redraw(box->background->data.png.sprite_area,
|
image_redraw(box->background->data.png.sprite_area,
|
||||||
x, y, image_width, image_height,
|
x, y, image_width, image_height,
|
||||||
box->background->width * 2,
|
box->background->width * 2,
|
||||||
box->background->height * 2,
|
box->background->height * 2,
|
||||||
background_colour,
|
background_colour,
|
||||||
repeat_x, repeat_y,
|
repeat_x, repeat_y,
|
||||||
IMAGE_PLOT_TINCT_ALPHA);
|
IMAGE_PLOT_TINCT_ALPHA);*/
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
case CONTENT_JNG:
|
case CONTENT_JNG:
|
||||||
case CONTENT_MNG:
|
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,
|
x, y, image_width, image_height,
|
||||||
box->background->width * 2,
|
box->background->width * 2,
|
||||||
box->background->height * 2,
|
box->background->height * 2,
|
||||||
background_colour,
|
background_colour,
|
||||||
repeat_x, repeat_y,
|
repeat_x, repeat_y,
|
||||||
IMAGE_PLOT_TINCT_ALPHA);
|
IMAGE_PLOT_TINCT_ALPHA);*/
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_JPEG
|
#ifdef WITH_JPEG
|
||||||
case CONTENT_JPEG:
|
case CONTENT_JPEG:/*
|
||||||
image_redraw(box->background->data.jpeg.sprite_area,
|
image_redraw(box->background->data.jpeg.sprite_area,
|
||||||
x, y, image_width, image_height,
|
x, y, image_width, image_height,
|
||||||
box->background->width * 2,
|
box->background->width * 2,
|
||||||
@ -1041,7 +1041,7 @@ bool html_redraw_background(int xi, int yi, int width, int height,
|
|||||||
background_colour,
|
background_colour,
|
||||||
repeat_x, repeat_y,
|
repeat_x, repeat_y,
|
||||||
IMAGE_PLOT_TINCT_OPAQUE);
|
IMAGE_PLOT_TINCT_OPAQUE);
|
||||||
break;
|
*/break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
case CONTENT_GIF:
|
case CONTENT_GIF:
|
||||||
|
@ -430,18 +430,18 @@ void ro_gui_save_object_native(struct content *c, char *path)
|
|||||||
switch (c->type) {
|
switch (c->type) {
|
||||||
#ifdef WITH_JPEG
|
#ifdef WITH_JPEG
|
||||||
case CONTENT_JPEG:
|
case CONTENT_JPEG:
|
||||||
error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.jpeg.sprite_area, path);
|
bitmap_save(c->bitmap, path);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_PNG
|
#ifdef WITH_PNG
|
||||||
case CONTENT_PNG:
|
case CONTENT_PNG:
|
||||||
error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.png.sprite_area, path);
|
/* error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.png.sprite_area, path);
|
||||||
break;
|
break;*/
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
case CONTENT_JNG:
|
case CONTENT_JNG:
|
||||||
case CONTENT_MNG:
|
case CONTENT_MNG:
|
||||||
error = xosspriteop_save_sprite_file(osspriteop_USER_AREA, c->data.mng.sprite_area, path);
|
bitmap_save(c->bitmap, path);
|
||||||
break;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_GIF
|
#ifdef WITH_GIF
|
||||||
|
@ -703,17 +703,18 @@ static bool add_graphic(struct content *content, struct box *box,
|
|||||||
/* cast-tastic... */
|
/* cast-tastic... */
|
||||||
switch (content->type) {
|
switch (content->type) {
|
||||||
case CONTENT_JPEG:
|
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;
|
break;
|
||||||
#ifdef WITH_PNG
|
#ifdef WITH_PNG
|
||||||
case CONTENT_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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
case CONTENT_JNG:
|
case CONTENT_JNG:
|
||||||
case CONTENT_MNG:
|
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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case CONTENT_GIF:
|
case CONTENT_GIF:
|
||||||
@ -742,17 +743,17 @@ static bool add_graphic(struct content *content, struct box *box,
|
|||||||
|
|
||||||
switch (content->type) {
|
switch (content->type) {
|
||||||
case CONTENT_JPEG:
|
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;
|
break;
|
||||||
#ifdef WITH_PNG
|
#ifdef WITH_PNG
|
||||||
case CONTENT_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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
#ifdef WITH_MNG
|
#ifdef WITH_MNG
|
||||||
case CONTENT_JNG:
|
case CONTENT_JNG:
|
||||||
case CONTENT_MNG:
|
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;
|
break;
|
||||||
#endif
|
#endif
|
||||||
case CONTENT_GIF:
|
case CONTENT_GIF:
|
||||||
|
@ -23,11 +23,11 @@
|
|||||||
#define WITH_COOKIES
|
#define WITH_COOKIES
|
||||||
|
|
||||||
/* Image renderering modules */
|
/* Image renderering modules */
|
||||||
|
#define WITH_JPEG
|
||||||
|
#define WITH_MNG
|
||||||
|
#define WITH_PNG
|
||||||
#if defined(riscos) || defined(ncos) || defined(debug)
|
#if defined(riscos) || defined(ncos) || defined(debug)
|
||||||
#define WITH_GIF
|
#define WITH_GIF
|
||||||
#define WITH_JPEG
|
|
||||||
#define WITH_PNG
|
|
||||||
#define WITH_MNG
|
|
||||||
#endif
|
#endif
|
||||||
#if defined(riscos) || defined(ncos)
|
#if defined(riscos) || defined(ncos)
|
||||||
#define WITH_DRAW
|
#define WITH_DRAW
|
||||||
|
Loading…
Reference in New Issue
Block a user