r13869 mono - in /trunk/netsurf/atari: bitmap.c bitmap.h
by netsurf@semichrome.net
Author: mono
Date: Sat Apr 14 06:40:57 2012
New Revision: 13869
URL: http://source.netsurf-browser.org?rev=13869&view=rev
Log:
Fix bitmap creation - JPEG where always set to opaque = false, which lead to blitter checking all pixels for transparency in an loop.
Prepare for caching of converted bitmaps.
Modified:
trunk/netsurf/atari/bitmap.c
trunk/netsurf/atari/bitmap.h
Modified: trunk/netsurf/atari/bitmap.c
URL: http://source.netsurf-browser.org/trunk/netsurf/atari/bitmap.c?rev=13869&...
==============================================================================
--- trunk/netsurf/atari/bitmap.c (original)
+++ trunk/netsurf/atari/bitmap.c Sat Apr 14 06:40:57 2012
@@ -79,7 +79,7 @@
if (bitmap->pixdata != NULL) {
bitmap->width = w;
bitmap->height = h;
- bitmap->opaque = false;
+ bitmap->opaque = (state & BITMAP_OPAQUE) ? true : false;
bitmap->bpp = bpp;
bitmap->resized = NULL;
bitmap->rowstride = rowstride;
@@ -121,7 +121,6 @@
if( state & BITMAP_CLEAR ){
memset( bitmap->pixdata, 0x00, newsize + 128 );
}
-
bitmap->width = w;
bitmap->height = h;
bitmap->bpp = bpp;
@@ -240,7 +239,7 @@
if( bm->resized != NULL ) {
bitmap_destroy(bm->resized);
}
- if( bm->native.fd_addr )
+ if( bm->converted && ( bm->native.fd_addr != bm->pixdata ) )
free( bm->native.fd_addr );
free(bm->pixdata);
free(bm);
@@ -268,11 +267,18 @@
void bitmap_modified(void *bitmap)
{
struct bitmap *bm = bitmap;
-
if( bm->resized != NULL ) {
bitmap_destroy( bm->resized );
bm->resized = NULL;
}
+ if( bm->converted ){
+ if( bm->pixdata != bm->native.fd_addr ){
+ free( bm->native.fd_addr );
+ }
+ bm->native.fd_addr = NULL;
+ bm->converted = false;
+ }
+
}
@@ -298,13 +304,13 @@
{
struct bitmap *bm = bitmap;
- if (bitmap == NULL) {
- LOG(("NULL bitmap!"));
- return;
- }
-
- LOG(("setting bitmap %p to %s", bm, opaque?"opaque":"transparent"));
- bm->opaque = opaque;
+ if (bitmap == NULL) {
+ LOG(("NULL bitmap!"));
+ return;
+ }
+
+ LOG(("setting bitmap %p to %s", bm, opaque?"opaque":"transparent"));
+ bm->opaque = opaque;
}
@@ -316,23 +322,23 @@
*/
bool bitmap_test_opaque(void *bitmap)
{
- int tst;
- struct bitmap *bm = bitmap;
-
- if (bitmap == NULL) {
- LOG(("NULL bitmap!"));
- return false;
- }
-
- tst = bm->width * bm->height;
-
- while (tst-- > 0) {
- if (bm->pixdata[(tst << 2) + 3] != 0xff) {
- LOG(("bitmap %p has transparency",bm));
- return false;
- }
- }
- LOG(("bitmap %p is opaque", bm));
+ int tst;
+ struct bitmap *bm = bitmap;
+
+ if (bitmap == NULL) {
+ LOG(("NULL bitmap!"));
+ return false;
+ }
+
+ tst = bm->width * bm->height;
+
+ while (tst-- > 0) {
+ if (bm->pixdata[(tst << 2) + 3] != 0xff) {
+ LOG(("bitmap %p has transparency",bm));
+ return false;
+ }
+ }
+ LOG(("bitmap %p is opaque", bm));
return true;
}
Modified: trunk/netsurf/atari/bitmap.h
URL: http://source.netsurf-browser.org/trunk/netsurf/atari/bitmap.h?rev=13869&...
==============================================================================
--- trunk/netsurf/atari/bitmap.h (original)
+++ trunk/netsurf/atari/bitmap.h Sat Apr 14 06:40:57 2012
@@ -32,6 +32,7 @@
size_t rowstride;
struct bitmap * resized;
MFDB native;
+ bool converted;
};
#define NS_BMP_DEFAULT_BPP 4
10 years, 11 months
r13868 vince - in /trunk/libcss/src: parse/important.c select/properties/helpers.c
by netsurf@semichrome.net
Author: vince
Date: Sat Apr 14 06:15:28 2012
New Revision: 13868
URL: http://source.netsurf-browser.org?rev=13868&view=rev
Log:
correctly apply enum casts to avoid warnings about casting between
disimmilar enumerations.
Modified:
trunk/libcss/src/parse/important.c
trunk/libcss/src/select/properties/helpers.c
Modified: trunk/libcss/src/parse/important.c
URL: http://source.netsurf-browser.org/trunk/libcss/src/parse/important.c?rev=...
==============================================================================
--- trunk/libcss/src/parse/important.c (original)
+++ trunk/libcss/src/parse/important.c Sat Apr 14 06:15:28 2012
@@ -100,10 +100,10 @@
case CSS_PROP_BORDER_LEFT_COLOR:
case CSS_PROP_BACKGROUND_COLOR:
case CSS_PROP_COLUMN_RULE_COLOR:
- assert((uint32_t)BACKGROUND_COLOR_SET ==
- (uint32_t)BORDER_COLOR_SET);
- assert((uint32_t)BACKGROUND_COLOR_SET ==
- (uint32_t)COLUMN_RULE_COLOR_SET);
+ assert(BACKGROUND_COLOR_SET ==
+ (enum op_background_color)BORDER_COLOR_SET);
+ assert(BACKGROUND_COLOR_SET ==
+ (enum op_background_color)COLUMN_RULE_COLOR_SET);
if (value == BACKGROUND_COLOR_SET)
offset++; /* colour */
@@ -113,12 +113,12 @@
case CSS_PROP_CUE_AFTER:
case CSS_PROP_CUE_BEFORE:
case CSS_PROP_LIST_STYLE_IMAGE:
- assert((uint32_t)BACKGROUND_IMAGE_URI ==
- (uint32_t)CUE_AFTER_URI);
- assert((uint32_t)BACKGROUND_IMAGE_URI ==
- (uint32_t)CUE_BEFORE_URI);
- assert((uint32_t)BACKGROUND_IMAGE_URI ==
- (uint32_t)LIST_STYLE_IMAGE_URI);
+ assert(BACKGROUND_IMAGE_URI ==
+ (enum op_background_image)CUE_AFTER_URI);
+ assert(BACKGROUND_IMAGE_URI ==
+ (enum op_background_image)CUE_BEFORE_URI);
+ assert(BACKGROUND_IMAGE_URI ==
+ (enum op_background_image)LIST_STYLE_IMAGE_URI);
if (value == BACKGROUND_IMAGE_URI)
offset++; /* string table entry */
@@ -143,10 +143,10 @@
case CSS_PROP_BORDER_LEFT_WIDTH:
case CSS_PROP_OUTLINE_WIDTH:
case CSS_PROP_COLUMN_RULE_WIDTH:
- assert((uint32_t)BORDER_WIDTH_SET ==
- (uint32_t)OUTLINE_WIDTH_SET);
- assert((uint32_t)BORDER_WIDTH_SET ==
- (uint32_t)COLUMN_RULE_WIDTH_SET);
+ assert(BORDER_WIDTH_SET ==
+ (enum op_border_width)OUTLINE_WIDTH_SET);
+ assert(BORDER_WIDTH_SET ==
+ (enum op_border_width)COLUMN_RULE_WIDTH_SET);
if (value == BORDER_WIDTH_SET)
offset += 2; /* length + units */
@@ -164,14 +164,14 @@
case CSS_PROP_WIDTH:
case CSS_PROP_COLUMN_WIDTH:
case CSS_PROP_COLUMN_GAP:
- assert((uint32_t)BOTTOM_SET == (uint32_t)LEFT_SET);
- assert((uint32_t)BOTTOM_SET == (uint32_t)RIGHT_SET);
- assert((uint32_t)BOTTOM_SET == (uint32_t)TOP_SET);
- assert((uint32_t)BOTTOM_SET == (uint32_t)HEIGHT_SET);
- assert((uint32_t)BOTTOM_SET == (uint32_t)MARGIN_SET);
- assert((uint32_t)BOTTOM_SET == (uint32_t)WIDTH_SET);
- assert((uint32_t)BOTTOM_SET == (uint32_t)COLUMN_WIDTH_SET);
- assert((uint32_t)BOTTOM_SET == (uint32_t)COLUMN_GAP_SET);
+ assert(BOTTOM_SET == (enum op_bottom)LEFT_SET);
+ assert(BOTTOM_SET == (enum op_bottom)RIGHT_SET);
+ assert(BOTTOM_SET == (enum op_bottom)TOP_SET);
+ assert(BOTTOM_SET == (enum op_bottom)HEIGHT_SET);
+ assert(BOTTOM_SET == (enum op_bottom)MARGIN_SET);
+ assert(BOTTOM_SET == (enum op_bottom)WIDTH_SET);
+ assert(BOTTOM_SET == (enum op_bottom)COLUMN_WIDTH_SET);
+ assert(BOTTOM_SET == (enum op_bottom)COLUMN_GAP_SET);
if (value == BOTTOM_SET)
offset += 2; /* length + units */
@@ -233,8 +233,8 @@
case CSS_PROP_COUNTER_INCREMENT:
case CSS_PROP_COUNTER_RESET:
- assert((uint32_t)COUNTER_INCREMENT_NONE ==
- (uint32_t)COUNTER_RESET_NONE);
+ assert(COUNTER_INCREMENT_NONE ==
+ (enum op_counter_increment)COUNTER_RESET_NONE);
while (value != COUNTER_INCREMENT_NONE) {
offset+=2; /* string + integer */
@@ -279,8 +279,8 @@
case CSS_PROP_LETTER_SPACING:
case CSS_PROP_WORD_SPACING:
- assert((uint32_t)LETTER_SPACING_SET ==
- (uint32_t)WORD_SPACING_SET);
+ assert(LETTER_SPACING_SET ==
+ (enum op_letter_spacing)WORD_SPACING_SET);
if (value == LETTER_SPACING_SET)
offset += 2; /* length + units */
@@ -300,7 +300,8 @@
case CSS_PROP_MAX_HEIGHT:
case CSS_PROP_MAX_WIDTH:
- assert((uint32_t)MAX_HEIGHT_SET == (uint32_t)MAX_WIDTH_SET);
+ assert(MAX_HEIGHT_SET ==
+ (enum op_max_height)MAX_WIDTH_SET);
if (value == MAX_HEIGHT_SET)
offset += 2; /* length + units */
@@ -315,11 +316,11 @@
case CSS_PROP_PAUSE_AFTER:
case CSS_PROP_PAUSE_BEFORE:
case CSS_PROP_TEXT_INDENT:
- assert((uint32_t)MIN_HEIGHT_SET == (uint32_t)MIN_WIDTH_SET);
- assert((uint32_t)MIN_HEIGHT_SET == (uint32_t)PADDING_SET);
- assert((uint32_t)MIN_HEIGHT_SET == (uint32_t)PAUSE_AFTER_SET);
- assert((uint32_t)MIN_HEIGHT_SET == (uint32_t)PAUSE_BEFORE_SET);
- assert((uint32_t)MIN_HEIGHT_SET == (uint32_t)TEXT_INDENT_SET);
+ assert(MIN_HEIGHT_SET == (enum op_min_height)MIN_WIDTH_SET);
+ assert(MIN_HEIGHT_SET == (enum op_min_height)PADDING_SET);
+ assert(MIN_HEIGHT_SET == (enum op_min_height)PAUSE_AFTER_SET);
+ assert(MIN_HEIGHT_SET == (enum op_min_height)PAUSE_BEFORE_SET);
+ assert(MIN_HEIGHT_SET == (enum op_min_height)TEXT_INDENT_SET);
if (value == MIN_HEIGHT_SET)
offset += 2; /* length + units */
@@ -335,10 +336,10 @@
case CSS_PROP_RICHNESS:
case CSS_PROP_STRESS:
case CSS_PROP_WIDOWS:
- assert((uint32_t)ORPHANS_SET == (uint32_t)PITCH_RANGE_SET);
- assert((uint32_t)ORPHANS_SET == (uint32_t)RICHNESS_SET);
- assert((uint32_t)ORPHANS_SET == (uint32_t)STRESS_SET);
- assert((uint32_t)ORPHANS_SET == (uint32_t)WIDOWS_SET);
+ assert(ORPHANS_SET == (enum op_orphans)PITCH_RANGE_SET);
+ assert(ORPHANS_SET == (enum op_orphans)RICHNESS_SET);
+ assert(ORPHANS_SET == (enum op_orphans)STRESS_SET);
+ assert(ORPHANS_SET == (enum op_orphans)WIDOWS_SET);
if (value == ORPHANS_SET)
offset++; /* value */
Modified: trunk/libcss/src/select/properties/helpers.c
URL: http://source.netsurf-browser.org/trunk/libcss/src/select/properties/help...
==============================================================================
--- trunk/libcss/src/select/properties/helpers.c (original)
+++ trunk/libcss/src/select/properties/helpers.c Sat Apr 14 06:15:28 2012
@@ -52,12 +52,12 @@
uint16_t value = CSS_BACKGROUND_COLOR_INHERIT;
css_color color = 0;
- assert((uint16_t)CSS_BACKGROUND_COLOR_INHERIT ==
- (uint16_t)CSS_BORDER_COLOR_INHERIT);
- assert((uint16_t)CSS_BACKGROUND_COLOR_COLOR ==
- (uint16_t)CSS_BORDER_COLOR_COLOR);
- assert((uint16_t)CSS_BACKGROUND_COLOR_CURRENT_COLOR ==
- (uint16_t)CSS_BORDER_COLOR_CURRENT_COLOR);
+ assert(CSS_BACKGROUND_COLOR_INHERIT ==
+ (enum css_background_color_e)CSS_BORDER_COLOR_INHERIT);
+ assert(CSS_BACKGROUND_COLOR_COLOR ==
+ (enum css_background_color_e)CSS_BORDER_COLOR_COLOR);
+ assert(CSS_BACKGROUND_COLOR_CURRENT_COLOR ==
+ (enum css_background_color_e)CSS_BORDER_COLOR_CURRENT_COLOR);
if (isInherit(opv) == false) {
switch (getValue(opv)) {
10 years, 11 months
r13867 mmu_man - in /branches/mmu_man/netsurf-gopher-support-v3/content: fetchers/curl.c gopher.c gopher.h
by netsurf@semichrome.net
Author: mmu_man
Date: Fri Apr 13 10:16:10 2012
New Revision: 13867
URL: http://source.netsurf-browser.org?rev=13867&view=rev
Log:
Move more gopher-specific setup to gopher.c for clarity.
Modified:
branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c
branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c
branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h
Modified: branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c
URL: http://source.netsurf-browser.org/branches/mmu_man/netsurf-gopher-support...
==============================================================================
--- branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c (original)
+++ branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c Fri Apr 13 10:16:10 2012
@@ -468,7 +468,6 @@
const char **headers)
{
struct curl_fetch_info *f;
- const char *mime;
f = fetch_curl_setup(parent_fetch, url, only_2xx, post_urlenc,
post_multipart, headers);
@@ -479,32 +478,13 @@
return NULL;
}
- if (url_gopher_type(nsurl_access(url), &f->gopher->type) != URL_FUNC_OK
- || f->gopher->type == GOPHER_TYPE_NONE) {
- f->http_code = 404;
+ f->http_code = gopher_get_http_code(f->gopher, NULL, 0);
+ if (f->http_code) {
fetch_set_http_code(f->fetch_handle, f->http_code);
LOG(("fetch %p, gopher error for '%s'", f, nsurl_access(url)));
}
- mime = gopher_type_to_mime(f->gopher->type);
- /* TODO: add a better API,
- * fetch_filetype() is wrongly assuming unknown files to be HTML.
- */
- if (mime == NULL)
- mime = fetch_filetype(nsurl_access(url));
-
- if (mime) {
- char s[80];
- fetch_msg msg;
-
- LOG(("fetch %p, gopher mime is '%s'", f, mime));
- snprintf(s, sizeof s, "Content-type: %s\r\n", mime);
- s[sizeof s - 1] = 0;
- msg.type = FETCH_HEADER;
- msg.data.header_or_data.buf = (const uint8_t *) s;
- msg.data.header_or_data.len = strlen(s);
- fetch_send_callback(&msg, f->fetch_handle);
- }
+ gopher_probe_mime(f->gopher, NULL, 0);
return f;
}
Modified: branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c
URL: http://source.netsurf-browser.org/branches/mmu_man/netsurf-gopher-support...
==============================================================================
--- branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c (original)
+++ branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c Fri Apr 13 10:16:10 2012
@@ -52,6 +52,7 @@
#include "utils/log.h"
#include "utils/messages.h"
#include "utils/utils.h"
+#include "utils/url.h"
static char *gen_nice_title(const char *path);
static bool gopher_generate_top(char *buffer, int buffer_length);
@@ -96,17 +97,22 @@
struct gopher_state *gopher_state_create(nsurl *url, struct fetch *fetch_handle)
{
- struct gopher_state *ctx;
- ctx = malloc(sizeof(struct gopher_state));
- if (ctx == NULL)
+ struct gopher_state *s;
+ s = malloc(sizeof(struct gopher_state));
+ if (s == NULL)
return NULL;
- /**/
- ctx->url = nsurl_ref(url);
- ctx->fetch_handle = fetch_handle;
- ctx->head_done = false;
- ctx->cached = 0;
- ctx->input = NULL;
- return ctx;
+
+ s->url = nsurl_ref(url);
+ s->fetch_handle = fetch_handle;
+ s->head_done = false;
+ s->cached = 0;
+ s->input = NULL;
+
+ s->type = GOPHER_TYPE_NONE;
+ url_gopher_type(nsurl_access(url), &s->type);
+ /* on error s->type is left unchanged */
+
+ return s;
}
/**
@@ -234,12 +240,20 @@
long gopher_get_http_code(struct gopher_state *s, char *data, size_t size)
{
+ if (s->type == GOPHER_TYPE_NONE)
+ /* it's really a bad request */
+ return 400;
+
+ if (size == 0)
+ /* delay until we get data */
+ return 0;
+
if (gopher_need_generate(s->type)) {
/* We didn't receive anything yet, check for error.
* type '3' items report an error
*/
/*LOG(("data[0] == 0x%02x '%c'", data[0], data[0]));*/
- if (size > 0 && data[0] == GOPHER_TYPE_ERROR) {
+ if (data[0] == GOPHER_TYPE_ERROR) {
/* TODO: try to guess better from the string ?
* like "3 '/bcd' doesn't exist!"
* XXX: it might not always be a 404
@@ -250,6 +264,42 @@
}
} else
return 200; /* TODO: handle other types better */
+}
+
+/**
+ * Probe the MIME type for the gopher handle, and send Content-type header.
+ *
+ * \return true iff MIME type was correctly guessed.
+ */
+
+bool gopher_probe_mime(struct gopher_state *s, char *data, size_t size)
+{
+ const char *mime;
+ char h[80];
+ fetch_msg msg;
+
+ mime = gopher_type_to_mime(s->type);
+
+ /* TODO: use the newer mime sniffer API,
+ * fetch_filetype() is wrongly assuming unknown files to be HTML.
+ */
+ if (mime == NULL)
+ mime = fetch_filetype(nsurl_access(s->url));
+
+ if (mime) {
+ LOG(("gopher %p mime is '%s'", s, mime));
+ snprintf(h, sizeof h, "Content-type: %s\r\n", mime);
+ h[sizeof h - 1] = 0;
+
+ msg.type = FETCH_HEADER;
+ msg.data.header_or_data.buf = (const uint8_t *) h;
+ msg.data.header_or_data.len = strlen(h);
+ fetch_send_callback(&msg, s->fetch_handle);
+
+ return true;
+ }
+
+ return false;
}
/**
Modified: branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h
URL: http://source.netsurf-browser.org/branches/mmu_man/netsurf-gopher-support...
==============================================================================
--- branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h (original)
+++ branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h Fri Apr 13 10:16:10 2012
@@ -84,6 +84,7 @@
size_t gopher_fetch_data(struct gopher_state *s, char *data, size_t size);
long gopher_get_http_code(struct gopher_state *s, char *data, size_t size);
+bool gopher_probe_mime(struct gopher_state *s, char *data, size_t size);
const char *gopher_type_to_mime(gopher_item_type type);
bool gopher_need_generate(gopher_item_type type);
10 years, 11 months
r13866 mmu_man - in /branches/mmu_man/netsurf-gopher-support-v3/content: fetchers/curl.c gopher.c gopher.h
by netsurf@semichrome.net
Author: mmu_man
Date: Fri Apr 13 09:41:25 2012
New Revision: 13866
URL: http://source.netsurf-browser.org?rev=13866&view=rev
Log:
Move HTTP code generation for gopher to gopher.c, for clarity.
Simplify the code flow, this removes some tests only used on connection start.
Modified:
branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c
branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c
branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h
Modified: branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c
URL: http://source.netsurf-browser.org/branches/mmu_man/netsurf-gopher-support...
==============================================================================
--- branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c (original)
+++ branches/mmu_man/netsurf-gopher-support-v3/content/fetchers/curl.c Fri Apr 13 09:41:25 2012
@@ -1099,32 +1099,19 @@
CURLcode code;
fetch_msg msg;
- /* gopher data receives special treatment */
- if (f->gopher && gopher_need_generate(f->gopher->type)) {
- /* We didn't receive anything yet, check for error.
- * type 3 items report an error
- */
- if (!f->http_code) {
- if (data[0] == GOPHER_TYPE_ERROR) {
- /* TODO: try to guess better from the string ?
- * like "3 '/bcd' doesn't exist!"
- * TODO: what about other file types ?
- */
- f->http_code = 404;
- } else {
- f->http_code = 200;
- }
- fetch_set_http_code(f->fetch_handle, f->http_code);
- }
- }
-
/* ensure we only have to get this information once */
if (!f->http_code)
{
- code = curl_easy_getinfo(f->curl_handle, CURLINFO_HTTP_CODE,
+ /* gopher data receives special treatment */
+ if (f->gopher)
+ f->http_code = gopher_get_http_code(f->gopher, data, size * nmemb);
+
+ if (!f->http_code) {
+ code = curl_easy_getinfo(f->curl_handle, CURLINFO_HTTP_CODE,
&f->http_code);
+ assert(code == CURLE_OK);
+ }
fetch_set_http_code(f->fetch_handle, f->http_code);
- assert(code == CURLE_OK);
}
/* ignore body if this is a 401 reply by skipping it and reset
Modified: branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c
URL: http://source.netsurf-browser.org/branches/mmu_man/netsurf-gopher-support...
==============================================================================
--- branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c (original)
+++ branches/mmu_man/netsurf-gopher-support-v3/content/gopher.c Fri Apr 13 09:41:25 2012
@@ -224,6 +224,32 @@
return size;
+}
+
+/**
+ * Return an HTTP code for the gopher connection to the cURL fetcher.
+ *
+ * \return HTTP code
+ */
+
+long gopher_get_http_code(struct gopher_state *s, char *data, size_t size)
+{
+ if (gopher_need_generate(s->type)) {
+ /* We didn't receive anything yet, check for error.
+ * type '3' items report an error
+ */
+ /*LOG(("data[0] == 0x%02x '%c'", data[0], data[0]));*/
+ if (size > 0 && data[0] == GOPHER_TYPE_ERROR) {
+ /* TODO: try to guess better from the string ?
+ * like "3 '/bcd' doesn't exist!"
+ * XXX: it might not always be a 404
+ */
+ return 404;
+ } else {
+ return 200;
+ }
+ } else
+ return 200; /* TODO: handle other types better */
}
/**
Modified: branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h
URL: http://source.netsurf-browser.org/branches/mmu_man/netsurf-gopher-support...
==============================================================================
--- branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h (original)
+++ branches/mmu_man/netsurf-gopher-support-v3/content/gopher.h Fri Apr 13 09:41:25 2012
@@ -83,6 +83,8 @@
size_t gopher_fetch_data(struct gopher_state *s, char *data, size_t size);
+long gopher_get_http_code(struct gopher_state *s, char *data, size_t size);
+
const char *gopher_type_to_mime(gopher_item_type type);
bool gopher_need_generate(gopher_item_type type);
10 years, 11 months
r13865 tlsa - /trunk/netsurf/content/fetchers/about.c
by netsurf@semichrome.net
Author: tlsa
Date: Fri Apr 13 07:29:52 2012
New Revision: 13865
URL: http://source.netsurf-browser.org?rev=13865&view=rev
Log:
Remove image cache status from user-facing listing.
Modified:
trunk/netsurf/content/fetchers/about.c
Modified: trunk/netsurf/content/fetchers/about.c
URL: http://source.netsurf-browser.org/trunk/netsurf/content/fetchers/about.c?...
==============================================================================
--- trunk/netsurf/content/fetchers/about.c (original)
+++ trunk/netsurf/content/fetchers/about.c Fri Apr 13 07:29:52 2012
@@ -551,23 +551,33 @@
int name_len;
lwc_string *lname; /**< Interned name */
fetch_about_handler handler; /* handler for the url */
- bool hidden; /* Flag indicating if entry should be show in listing */
+ bool hidden; /* Flag indicating if entry should show in listing */
};
/** List of about paths and their handlers */
struct about_handlers about_handler_list[] = {
- { "credits", SLEN("credits"), NULL, fetch_about_credits_handler, false },
- { "licence", SLEN("licence"), NULL, fetch_about_licence_handler, false },
- { "license", SLEN("license"), NULL, fetch_about_licence_handler, true },
- { "config", SLEN("config"), NULL, fetch_about_config_handler, false },
- { "Choices", SLEN("Choices"), NULL, fetch_about_choices_handler, false },
- { "testament", SLEN("testament"), NULL, fetch_about_testament_handler, false },
- { "about", SLEN("about"), NULL, fetch_about_about_handler, true },
- { "logo", SLEN("logo"), NULL, fetch_about_logo_handler, true },
- /* details about the cache */
- { "imagecache", SLEN("imagecache"), NULL, fetch_about_imagecache_handler, false },
+ { "credits", SLEN("credits"), NULL,
+ fetch_about_credits_handler, false },
+ { "licence", SLEN("licence"), NULL,
+ fetch_about_licence_handler, false },
+ { "license", SLEN("license"), NULL,
+ fetch_about_licence_handler, true },
+ { "config", SLEN("config"), NULL,
+ fetch_about_config_handler, false },
+ { "Choices", SLEN("Choices"), NULL,
+ fetch_about_choices_handler, false },
+ { "testament", SLEN("testament"), NULL,
+ fetch_about_testament_handler, false },
+ { "about", SLEN("about"), NULL,
+ fetch_about_about_handler, true },
+ { "logo", SLEN("logo"), NULL,
+ fetch_about_logo_handler, true },
+ /* details about the image cache */
+ { "imagecache", SLEN("imagecache"), NULL,
+ fetch_about_imagecache_handler, true },
/* The default blank page */
- { "blank", SLEN("blank"), NULL, fetch_about_blank_handler, true }
+ { "blank", SLEN("blank"), NULL,
+ fetch_about_blank_handler, true }
};
#define about_handler_list_len (sizeof(about_handler_list) / sizeof(struct about_handlers))
10 years, 11 months
r13864 tlsa - in /trunk/libcss: include/libcss/computed.h include/libcss/properties.h src/select/computed.c src/select/computed.h src/select/properties/orphans.c src/select/properties/windows.c src/select/propget.h src/select/propset.h
by netsurf@semichrome.net
Author: tlsa
Date: Fri Apr 13 06:43:13 2012
New Revision: 13864
URL: http://source.netsurf-browser.org?rev=13864&view=rev
Log:
Complete widows and orphans support. Thanks to James Montgomerie.
Modified:
trunk/libcss/include/libcss/computed.h
trunk/libcss/include/libcss/properties.h
trunk/libcss/src/select/computed.c
trunk/libcss/src/select/computed.h
trunk/libcss/src/select/properties/orphans.c
trunk/libcss/src/select/properties/windows.c
trunk/libcss/src/select/propget.h
trunk/libcss/src/select/propset.h
Modified: trunk/libcss/include/libcss/computed.h
URL: http://source.netsurf-browser.org/trunk/libcss/include/libcss/computed.h?...
==============================================================================
--- trunk/libcss/include/libcss/computed.h (original)
+++ trunk/libcss/include/libcss/computed.h Fri Apr 13 06:43:13 2012
@@ -388,6 +388,13 @@
uint8_t css_computed_page_break_inside(
const css_computed_style *style);
+uint8_t css_computed_orphans(
+ const css_computed_style *style,
+ int32_t *orphans);
+
+uint8_t css_computed_widows(
+ const css_computed_style *style,
+ int32_t *widows);
#ifdef __cplusplus
}
Modified: trunk/libcss/include/libcss/properties.h
URL: http://source.netsurf-browser.org/trunk/libcss/include/libcss/properties....
==============================================================================
--- trunk/libcss/include/libcss/properties.h (original)
+++ trunk/libcss/include/libcss/properties.h Fri Apr 13 06:43:13 2012
@@ -585,6 +585,11 @@
CSS_OVERFLOW_AUTO = 0x4
};
+enum css_orphans_e {
+ CSS_ORPHANS_INHERIT = 0x0,
+ CSS_ORPHANS_SET = 0x1
+};
+
enum css_padding_e {
CSS_PADDING_INHERIT = 0x0,
CSS_PADDING_SET = 0x1
@@ -718,6 +723,11 @@
CSS_WHITE_SPACE_PRE_LINE = 0x5
};
+enum css_widows_e {
+ CSS_WIDOWS_INHERIT = 0x0,
+ CSS_WIDOWS_SET = 0x1
+};
+
enum css_width_e {
CSS_WIDTH_INHERIT = 0x0,
CSS_WIDTH_SET = 0x1,
Modified: trunk/libcss/src/select/computed.c
URL: http://source.netsurf-browser.org/trunk/libcss/src/select/computed.c?rev=...
==============================================================================
--- trunk/libcss/src/select/computed.c (original)
+++ trunk/libcss/src/select/computed.c Fri Apr 13 06:43:13 2012
@@ -2223,6 +2223,59 @@
#undef CSS_PAGE_BREAK_INSIDE_SHIFT
#undef CSS_PAGE_BREAK_INSIDE_INDEX
+#define CSS_ORPHANS_INDEX 1
+#define CSS_ORPHANS_SHIFT 0
+#define CSS_ORPHANS_MASK 0x1
+uint8_t css_computed_orphans(
+ const css_computed_style *style,
+ int32_t *orphans)
+{
+ if (style->page != NULL) {
+ uint8_t bits = style->page->bits[CSS_ORPHANS_INDEX];
+ bits &= CSS_ORPHANS_MASK;
+ bits >>= CSS_ORPHANS_SHIFT;
+
+ *orphans = FIXTOINT(style->page->orphans);;
+
+ /* 1bit: type */
+ return bits;
+ }
+
+ /* Use initial value */
+ *orphans = 2;
+
+ return CSS_ORPHANS_SET;
+}
+#undef CSS_ORPHANS_MASK
+#undef CSS_ORPHANS_SHIFT
+#undef CSS_ORPHANS_INDEX
+
+#define CSS_WIDOWS_INDEX 1
+#define CSS_WIDOWS_SHIFT 1
+#define CSS_WIDOWS_MASK 0x2
+uint8_t css_computed_widows(
+ const css_computed_style *style,
+ int32_t *widows)
+{
+ if (style->page != NULL) {
+ uint8_t bits = style->page->bits[CSS_WIDOWS_INDEX];
+ bits &= CSS_WIDOWS_MASK;
+ bits >>= CSS_WIDOWS_SHIFT;
+
+ *widows = FIXTOINT(style->page->widows);
+
+ /* 1bit: type */
+ return bits;
+ }
+
+ /* Use initial value */
+ *widows = 2;
+
+ return CSS_WIDOWS_SET;
+}
+#undef CSS_WIDOWS_MASK
+#undef CSS_WIDOWS_SHIFT
+#undef CSS_WIDOWS_INDEX
/******************************************************************************
Modified: trunk/libcss/src/select/computed.h
URL: http://source.netsurf-browser.org/trunk/libcss/src/select/computed.h?rev=...
==============================================================================
--- trunk/libcss/src/select/computed.h (original)
+++ trunk/libcss/src/select/computed.h Fri Apr 13 06:43:13 2012
@@ -87,13 +87,16 @@
typedef struct css_computed_page {
/*
- * page_break_after 3
- * page_break_before 3
- * page_break_inside 2
- * ---
- * 8 bits
- */
- uint8_t bits[1];
+ * Bit allocations:
+ *
+ * 76543210
+ * 1 aaabbbii page_break_after | page_break_before | page_break_inside
+ * 2 ......wo widows | orphans
+ */
+ uint8_t bits[2];
+
+ css_fixed widows;
+ css_fixed orphans;
} css_computed_page;
struct css_computed_style {
Modified: trunk/libcss/src/select/properties/orphans.c
URL: http://source.netsurf-browser.org/trunk/libcss/src/select/properties/orph...
==============================================================================
--- trunk/libcss/src/select/properties/orphans.c (original)
+++ trunk/libcss/src/select/properties/orphans.c Fri Apr 13 06:43:13 2012
@@ -17,34 +17,31 @@
css_error css__cascade_orphans(uint32_t opv, css_style *style,
css_select_state *state)
{
- /** \todo orphans */
- return css__cascade_number(opv, style, state, NULL);
+ return css__cascade_number(opv, style, state, set_orphans);
}
css_error css__set_orphans_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_orphans(style, hint->status, hint->data.fixed);
}
css_error css__initial_orphans(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_orphans(state->computed, CSS_ORPHANS_SET, INTTOFIX(2));
}
css_error css__compose_orphans(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
-
- return CSS_OK;
+ css_fixed count = 0;
+ uint8_t type = get_orphans(child, &count);
+
+ if (type == CSS_ORPHANS_INHERIT) {
+ type = get_orphans(parent, &count);
+ }
+
+ return set_orphans(result, type, count);
}
Modified: trunk/libcss/src/select/properties/windows.c
URL: http://source.netsurf-browser.org/trunk/libcss/src/select/properties/wind...
==============================================================================
--- trunk/libcss/src/select/properties/windows.c (original)
+++ trunk/libcss/src/select/properties/windows.c Fri Apr 13 06:43:13 2012
@@ -17,34 +17,31 @@
css_error css__cascade_widows(uint32_t opv, css_style *style,
css_select_state *state)
{
- /** \todo widows */
- return css__cascade_number(opv, style, state, NULL);
+ return css__cascade_number(opv, style, state, set_widows);
}
css_error css__set_widows_from_hint(const css_hint *hint,
css_computed_style *style)
{
- UNUSED(hint);
- UNUSED(style);
-
- return CSS_OK;
+ return set_widows(style, hint->status, hint->data.fixed);
}
css_error css__initial_widows(css_select_state *state)
{
- UNUSED(state);
-
- return CSS_OK;
+ return set_widows(state->computed, CSS_WIDOWS_SET, INTTOFIX(2));
}
css_error css__compose_widows(const css_computed_style *parent,
const css_computed_style *child,
css_computed_style *result)
{
- UNUSED(parent);
- UNUSED(child);
- UNUSED(result);
-
- return CSS_OK;
+ css_fixed count = 0;
+ uint8_t type = get_widows(child, &count);
+
+ if (type == CSS_WIDOWS_INHERIT) {
+ type = get_widows(parent, &count);
+ }
+
+ return set_widows(result, type, count);
}
Modified: trunk/libcss/src/select/propget.h
URL: http://source.netsurf-browser.org/trunk/libcss/src/select/propget.h?rev=1...
==============================================================================
--- trunk/libcss/src/select/propget.h (original)
+++ trunk/libcss/src/select/propget.h Fri Apr 13 06:43:13 2012
@@ -1807,4 +1807,54 @@
#undef PAGE_BREAK_INSIDE_SHIFT
#undef PAGE_BREAK_INSIDE_INDEX
+#define ORPHANS_INDEX 1
+#define ORPHANS_SHIFT 0
+#define ORPHANS_MASK 0x1
+static inline uint8_t get_orphans(
+ const css_computed_style *style,
+ css_fixed *count)
+{
+ if (style->page != NULL) {
+ uint8_t bits = style->page->bits[ORPHANS_INDEX];
+ bits &= ORPHANS_MASK;
+ bits >>= ORPHANS_SHIFT;
+
+ *count = style->page->orphans;
+
+ /* 1bit: type */
+ return bits;
+ }
+
+ *count = INTTOFIX(2);
+ return CSS_ORPHANS_SET;
+}
+#undef ORPHANS_MASK
+#undef ORPHANS_SHIFT
+#undef ORPHANS_INDEX
+
+#define WIDOWS_INDEX 1
+#define WIDOWS_SHIFT 1
+#define WIDOWS_MASK 0x2
+static inline uint8_t get_widows(
+ const css_computed_style *style,
+ css_fixed *count)
+{
+ if (style->page != NULL) {
+ uint8_t bits = style->page->bits[WIDOWS_INDEX];
+ bits &= WIDOWS_MASK;
+ bits >>= WIDOWS_SHIFT;
+
+ *count = style->page->orphans;
+
+ /* 1bit: type */
+ return bits;
+ }
+
+ *count = INTTOFIX(2);
+ return CSS_WIDOWS_SET;
+}
+#undef WIDOWS_MASK
+#undef WIDOWS_SHIFT
+#undef WIDOWS_INDEX
+
#endif
Modified: trunk/libcss/src/select/propset.h
URL: http://source.netsurf-browser.org/trunk/libcss/src/select/propset.h?rev=1...
==============================================================================
--- trunk/libcss/src/select/propset.h (original)
+++ trunk/libcss/src/select/propset.h Fri Apr 13 06:43:13 2012
@@ -52,10 +52,15 @@
} while(0)
static const css_computed_page default_page = {
- { (CSS_PAGE_BREAK_INSIDE_AUTO << 6) |
- (CSS_PAGE_BREAK_BEFORE_AUTO << 3) |
- CSS_PAGE_BREAK_AFTER_AUTO
- }
+ {
+ (CSS_PAGE_BREAK_INSIDE_AUTO << 6) |
+ (CSS_PAGE_BREAK_BEFORE_AUTO << 3) |
+ CSS_PAGE_BREAK_AFTER_AUTO,
+ (CSS_WIDOWS_SET << 1) |
+ CSS_ORPHANS_SET
+ },
+ 2 << CSS_RADIX_POINT,
+ 2 << CSS_RADIX_POINT
};
#define ENSURE_PAGE do { \
@@ -1862,6 +1867,12 @@
{
uint8_t *bits;
+ if (style->page == NULL) {
+ if (type == CSS_PAGE_BREAK_AFTER_AUTO) {
+ return CSS_OK;
+ }
+ }
+
ENSURE_PAGE;
bits = &style->page->bits[PAGE_BREAK_AFTER_INDEX];
@@ -1884,6 +1895,12 @@
{
uint8_t *bits;
+ if (style->page == NULL) {
+ if (type == CSS_PAGE_BREAK_BEFORE_AUTO) {
+ return CSS_OK;
+ }
+ }
+
ENSURE_PAGE;
bits = &style->page->bits[PAGE_BREAK_BEFORE_INDEX];
@@ -1906,6 +1923,12 @@
{
uint8_t *bits;
+ if (style->page == NULL) {
+ if (type == CSS_PAGE_BREAK_INSIDE_AUTO) {
+ return CSS_OK;
+ }
+ }
+
ENSURE_PAGE;
bits = &style->page->bits[PAGE_BREAK_INSIDE_INDEX];
@@ -1920,4 +1943,62 @@
#undef PAGE_BREAK_INSIDE_SHIFT
#undef PAGE_BREAK_INSIDE_MASK
+#define ORPHANS_INDEX 1
+#define ORPHANS_SHIFT 0
+#define ORPHANS_MASK 0x1
+static inline css_error set_orphans(
+ css_computed_style *style, uint8_t type, css_fixed count)
+{
+ uint8_t *bits;
+
+ if (style->page == NULL) {
+ if (type == CSS_ORPHANS_SET && count == INTTOFIX(2)) {
+ return CSS_OK;
+ }
+ }
+
+ ENSURE_PAGE;
+
+ bits = &style->page->bits[ORPHANS_INDEX];
+
+ /* 1bit: type */
+ *bits = (*bits & ~ORPHANS_MASK) | ((type & 0x1) << ORPHANS_SHIFT);
+
+ style->page->orphans = count;
+
+ return CSS_OK;
+}
+#undef ORPHANS_INDEX
+#undef ORPHANS_SHIFT
+#undef ORPHANS_MASK
+
+#define WIDOWS_INDEX 1
+#define WIDOWS_SHIFT 1
+#define WIDOWS_MASK 0x2
+static inline css_error set_widows(
+ css_computed_style *style, uint8_t type, css_fixed count)
+{
+ uint8_t *bits;
+
+ if (style->page == NULL) {
+ if (type == CSS_WIDOWS_SET && count == INTTOFIX(2)) {
+ return CSS_OK;
+ }
+ }
+
+ ENSURE_PAGE;
+
+ bits = &style->page->bits[WIDOWS_INDEX];
+
+ /* 1bit: type */
+ *bits = (*bits & ~WIDOWS_MASK) | ((type & 0x1) << WIDOWS_SHIFT);
+
+ style->page->widows = count;
+
+ return CSS_OK;
+}
+#undef WIDOWS_INDEX
+#undef WIDOWS_SHIFT
+#undef WIDOWS_MASK
+
#endif
10 years, 11 months
r13862 mono - /trunk/netsurf/atari/doc/faq.txt
by netsurf@semichrome.net
Author: mono
Date: Thu Apr 12 15:38:12 2012
New Revision: 13862
URL: http://source.netsurf-browser.org?rev=13862&view=rev
Log:
Updated FAQ
Modified:
trunk/netsurf/atari/doc/faq.txt
Modified: trunk/netsurf/atari/doc/faq.txt
URL: http://source.netsurf-browser.org/trunk/netsurf/atari/doc/faq.txt?rev=138...
==============================================================================
--- trunk/netsurf/atari/doc/faq.txt (original)
+++ trunk/netsurf/atari/doc/faq.txt Thu Apr 12 15:38:12 2012
@@ -1,14 +1,15 @@
NETSURF ATARI FAQ
-Date: 15.02.2011
+Date: 12.04.2012
01.) CAN NETSURF ALSO BE RUN WITHIN AN TOS ENVIRONMENT?
02.) I DON'T HAVE AN 15 BIT GRAPHICS CARD, HOW TO RUN NETSURF ANYWAY?
03.) WHEN I WANT TO RUN NETSURF IT SAYS: "SOCKET NOT CONNECTED".
04.) I'M GETTING "INSUFFICENT MEMORY" MESSAGES WHEN RUNNING NETSURF.
-05.) A PAGE CRASHES - WHAT CAN I DO?
-06.) SSL DOES NOT WORK - WHAT'S WRONG?
+05.) SSL DOES NOT WORK - WHAT'S WRONG?
+06.) I'M GETTING THE ERROR: "BASE STYLESHEET FAILED TO LOAD" - WHAT'S WRONG?
+05.) A PAGE CRASHES - WHAT CAN I DO?
1.) Question:
CAN NETSURF ALSO BE RUN WITHIN AN TOS ENVIRONMENT?
@@ -59,4 +60,15 @@
Answer:
Try to move the shipped cabundle.crt file to the path where NetSurf
looks for the SSL certificates (Displayed within statusbar and also
- verbose log).
+ verbose log).
+
+6.) Question:
+ I'M GETTING THE ERROR: "BASE STYLESHEET FAILED TO LOAD" - WHAT'S WRONG?
+
+ Answer:
+ NetSurf checks if the base stylesheet is modified. For that - it
+ requires that the system clock is returning reasonable valid values.
+ Make your your system clock is set. (Rember empty NVRAM....)
+ If that doesn't help - make sure the netsurf package was unpacked
+ completly and that all files can be read.
+
10 years, 11 months
r13860 mono - in /trunk/netsurf/atari: toolbar.c toolbar.h
by netsurf@semichrome.net
Author: mono
Date: Thu Apr 12 15:18:53 2012
New Revision: 13860
URL: http://source.netsurf-browser.org?rev=13860&view=rev
Log:
Share a single icon instance for multiple toolbars.
Modified:
trunk/netsurf/atari/toolbar.c
trunk/netsurf/atari/toolbar.h
Modified: trunk/netsurf/atari/toolbar.c
URL: http://source.netsurf-browser.org/trunk/netsurf/atari/toolbar.c?rev=13860...
==============================================================================
--- trunk/netsurf/atari/toolbar.c (original)
+++ trunk/netsurf/atari/toolbar.c Thu Apr 12 15:18:53 2012
@@ -54,7 +54,8 @@
extern char * cfg_homepage_url;
extern short vdih;
extern void * h_gem_rsrc;
-extern GEM_PLOTTER plotter;
+extern GEM_PLOTTER plotter;
+extern struct gui_window * input_window;
static OBJECT * throbber_form = NULL;
static bool img_toolbar = false;
@@ -95,14 +96,42 @@
/* medium (default - 26 px height) */
{14, 26, 24, 1, LWHITE},
/* large ( 49 px height ) */
+ {18, 34, 64, 2, LWHITE},
+ /* custom style: */
{18, 34, 64, 2, LWHITE}
};
-static void tb_txt_request_redraw(void *data, int x, int y, int w, int h);
+static void tb_txt_request_redraw( void *data, int x, int y, int w, int h );
+static nserror toolbar_icon_callback( hlcache_handle *handle,
+ const hlcache_event *event, void *pw );
+
void toolbar_init( void )
{
+ int i=0;
+
img_toolbar = (nsoption_int( atari_image_toolbar ) > 0 ) ? true : false;
+ if( img_toolbar ){
+ while( tb_buttons[i].rsc_id != 0){
+ tb_buttons[i].index = i;
+ if( (tb_buttons[i].iconfile != NULL) ){
+ tb_buttons[i].icon = load_icon( tb_buttons[i].iconfile,
+ toolbar_icon_callback, &tb_buttons[i] );
+ }
+ i++;
+ }
+ }
+}
+
+void toolbar_exit( void )
+{
+ int i=0;
+ while( tb_buttons[i].rsc_id != 0 ) {
+ if( tb_buttons[i].icon ){
+ hlcache_handle_release( tb_buttons[i].icon );
+ }
+ i++;
+ }
}
/**
@@ -116,15 +145,30 @@
return( NSERROR_OK );
}
struct s_tb_button * bt = (struct s_tb_button *)pw;
- struct gui_window * gw = (struct gui_window *)bt->gw;
- mt_CompEvntRedraw( &app, bt->comp );
+ if( bt->gw == NULL ){
+ /* callback is for protoype */
+ /* find the instance of the button within input_window: */
+ if( input_window != NULL && input_window->root
+ && input_window->root->toolbar ){
+ if( input_window->root->toolbar->buttons ){
+ struct s_tb_button * instance =
+ &input_window->root->toolbar->buttons[bt->index];
+ /* send redraw: */
+ if( instance->comp )
+ mt_CompEvntRedraw( &app, instance->comp );
+ }
+ }
+ }
+ /* otherwise callback is for an instance */
+ /* maybe that will be used if throbber is implemented as GIF */
+
return NSERROR_OK;
}
static void __CDECL button_redraw( COMPONENT *c, long buff[8], void * data )
{
-
+
OBJECT *tree;
LGRECT work,clip;
GRECT todo,crect;
@@ -209,14 +253,12 @@
static void __CDECL button_enable( COMPONENT *c, long buff[8], void * data )
{
- printf("enb...");
struct s_tb_button * bt = (struct s_tb_button *)data;
bt->aes_object->ob_state &= ~OS_DISABLED;
}
static void __CDECL button_disable( COMPONENT *c, long buff[8], void * data )
{
- printf("dis...");
struct s_tb_button * bt = (struct s_tb_button *)data;
bt->aes_object->ob_state |= OS_DISABLED;
}
@@ -227,7 +269,7 @@
int i = 0;
struct gui_window * gw = bt->gw;
assert( gw );
- gw->root->toolbar->buttons[i].cb_click( gw );
+ gw->root->toolbar->buttons[bt->index].cb_click( gw );
}
static struct s_tb_button * find_button( struct gui_window * gw, int rsc_id )
@@ -245,29 +287,21 @@
static COMPONENT *button_init( CMP_TOOLBAR t, OBJECT * tree, int index,
struct s_tb_button * instance )
{
- instance->index = index;
- instance->gw = t->owner;
- instance->rsc_id = tb_buttons[index].rsc_id;
- instance->cb_click = tb_buttons[index].cb_click;
+ *instance = tb_buttons[index];
+ instance->gw = t->owner;
instance->comp = mt_CompCreate( &app, CLT_VERTICAL, TB_BUTTON_WIDTH, 0 );
-
assert( instance->comp );
+ instance->comp->bounds.max_width = TB_BUTTON_WIDTH;
+
if( img_toolbar == false ){
+ // FIXME: is it really required to dup the object? Can this be moved
+ // to toolbar_init() ?
OBJECT *oc = mt_ObjcNDup( &app, &tree[instance->rsc_id], NULL, 1);
oc->ob_next = oc->ob_head = oc->ob_tail = -1;
instance->aes_object = oc;
- } else {
- if( (tb_buttons[index].iconfile != NULL) ){
- /* Fixme: use one a single icon instance! */
- instance->iconfile = tb_buttons[index].iconfile;
- instance->icon = load_icon( instance->iconfile,
- toolbar_icon_callback, instance );
- }
- instance->comp->bounds.max_width = TB_BUTTON_WIDTH;
- }
-
+ }
mt_CompEvntDataAttach( &app, instance->comp, WM_REDRAW, button_redraw,
instance );
mt_CompEvntDataAttach( &app, instance->comp, WM_XBUTTON, button_click,
@@ -666,7 +700,7 @@
while( i < tb->btcnt ) {
if( tb->buttons[i].aes_object ){
mt_ObjcFree( &app, tb->buttons[i].aes_object );
- }
+ }
i++;
}
free( tb->buttons );
@@ -858,21 +892,19 @@
{
struct browser_window *bw = gw->browser->bw;
-
if( history_back_available(bw->history) )
history_back(bw, bw->history);
tb_update_buttons(gw, TOOLBAR_BT_BACK );
}
void tb_reload_click( struct gui_window * gw )
-{
+{
browser_window_reload( gw->browser->bw, true );
}
void tb_forward_click( struct gui_window * gw )
{
struct browser_window *bw = gw->browser->bw;
-
if (history_forward_available(bw->history))
history_forward(bw, bw->history);
@@ -880,14 +912,14 @@
}
void tb_home_click( struct gui_window * gw )
-{
+{
browser_window_go(gw->browser->bw, cfg_homepage_url, 0, true);
tb_update_buttons(gw, TOOLBAR_BT_HOME );
}
void tb_stop_click( struct gui_window * gw )
-{
+{
browser_window_stop( gw->browser->bw );
}
Modified: trunk/netsurf/atari/toolbar.h
URL: http://source.netsurf-browser.org/trunk/netsurf/atari/toolbar.h?rev=13860...
==============================================================================
--- trunk/netsurf/atari/toolbar.h (original)
+++ trunk/netsurf/atari/toolbar.h Thu Apr 12 15:18:53 2012
@@ -83,6 +83,8 @@
/* Must be called before any other toolbar function is called: */
void toolbar_init( void );
+/*Must be called when netsurf exits to free toolbar resources: */
+void toolbar_exit( void );
CMP_TOOLBAR tb_create( struct gui_window * gw );
void tb_destroy( CMP_TOOLBAR tb );
/* recalculate size/position of nested controls within the toolbar: */
10 years, 11 months