r5231 chris_y - in /trunk/netsurf/amiga: iff_cset.h options.h utf8.c utf8.h

netsurf at semichrome.net netsurf at semichrome.net
Wed Sep 3 23:10:31 BST 2008


Author: chris_y
Date: Wed Sep  3 17:10:30 2008
New Revision: 5231

URL: http://source.netsurf-browser.org?rev=5231&view=rev
Log:
Added support code to allow CSET chunks to be read from clipboard IFF FTXT and
converted as necessary.  Added option to write UTF-8 direct to clipboard, setting CSET
appropriately.  Copying and pasting to/from webpages that are not in local charset and
to/from other applications that set CSET when not using local charset, should now work
correctly if clipboard_write_utf8 is set in the options.  If not set, NetSurf will
still convert from the charset specified in the clipboard when pasting, but will
convert text to local charset and not write a CSET chunk for copy operations.


Added:
    trunk/netsurf/amiga/iff_cset.h   (with props)
Modified:
    trunk/netsurf/amiga/options.h
    trunk/netsurf/amiga/utf8.c
    trunk/netsurf/amiga/utf8.h

Added: trunk/netsurf/amiga/iff_cset.h
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/iff_cset.h?rev=5231&view=auto
==============================================================================
--- trunk/netsurf/amiga/iff_cset.h (added)
+++ trunk/netsurf/amiga/iff_cset.h Wed Sep  3 17:10:30 2008
@@ -1,0 +1,32 @@
+/*
+ * Copyright 2008 Chris Young <chris at unsatisfactorysoftware.co.uk>
+ *
+ * This file is part of NetSurf, http://www.netsurf-browser.org/
+ *
+ * NetSurf is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; version 2 of the License.
+ *
+ * NetSurf is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program.  If not, see <http://www.gnu.org/licenses/>.
+ */
+
+#ifndef AMIGA_IFF_CSET_H
+#define AMIGA_IFF_CSET_H
+
+/* This structure is for the IFF CSET chunk, registered by Martin Taillefer */
+
+struct CSet {
+	LONG	CodeSet;	/* 0=ECMA Latin 1 (std Amiga charset) */
+	/* CBM will define additional values  */
+	LONG	Reserved[7];
+	};
+
+#define ID_CSET  MAKE_ID('C','S','E','T')
+
+#endif

Propchange: trunk/netsurf/amiga/iff_cset.h
------------------------------------------------------------------------------
    amiga:protection = ----rwed ---- ----

Propchange: trunk/netsurf/amiga/iff_cset.h
------------------------------------------------------------------------------
    svn:executable = *

Modified: trunk/netsurf/amiga/options.h
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/options.h?rev=5231&r1=5230&r2=5231&view=diff
==============================================================================
--- trunk/netsurf/amiga/options.h (original)
+++ trunk/netsurf/amiga/options.h Wed Sep  3 17:10:30 2008
@@ -27,6 +27,7 @@
 extern int option_modeid;
 extern char *option_toolbar_images;
 extern bool option_no_iframes;
+extern bool option_utf8_clipboard;
 
 #define EXTRA_OPTION_DEFINE \
 bool option_verbose_log = false; \
@@ -36,6 +37,7 @@
 int option_modeid = 0; \
 char *option_toolbar_images = 0; \
 bool option_no_iframes = false; \
+bool option_utf8_clipboard = false; \
 
 #define EXTRA_OPTION_TABLE \
 { "verbose_log",	OPTION_BOOL,	&option_verbose_log}, \
@@ -44,5 +46,6 @@
 { "use_workbench",	OPTION_BOOL,	&option_use_wb}, \
 { "screen_modeid",	OPTION_INTEGER,	&option_modeid}, \
 { "toolbar_images",		OPTION_STRING,	&option_toolbar_images }, \
-{ "no_iframes",	OPTION_BOOL,	&option_no_iframes},
+{ "no_iframes",	OPTION_BOOL,	&option_no_iframes}, \
+{ "clipboard_write_utf8",	OPTION_BOOL,	&option_utf8_clipboard},
 #endif

Modified: trunk/netsurf/amiga/utf8.c
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/utf8.c?rev=5231&r1=5230&r2=5231&view=diff
==============================================================================
--- trunk/netsurf/amiga/utf8.c (original)
+++ trunk/netsurf/amiga/utf8.c Wed Sep  3 17:10:30 2008
@@ -53,3 +53,29 @@
 		return NULL;
 	}
 }
+
+char *ami_to_utf8_easy(char *string)
+{
+	char *localtext;
+
+	if(utf8_from_local_encoding(string,strlen(string),&localtext) == UTF8_CONVERT_OK)
+	{
+		return localtext;
+	}
+	else
+	{
+		return NULL;
+	}
+}
+
+utf8_convert_ret utf8_from_local_encoding(const char *string, size_t len,
+	char **result)
+{
+	ULONG *charset;
+	char *encname;
+
+	charset = GetDiskFontCtrl(DFCTRL_CHARSET);
+	encname = parserutils_charset_mibenum_to_name(charset);
+	
+	return utf8_from_enc(string,encname,len,result);
+}

Modified: trunk/netsurf/amiga/utf8.h
URL: http://source.netsurf-browser.org/trunk/netsurf/amiga/utf8.h?rev=5231&r1=5230&r2=5231&view=diff
==============================================================================
--- trunk/netsurf/amiga/utf8.h (original)
+++ trunk/netsurf/amiga/utf8.h Wed Sep  3 17:10:30 2008
@@ -20,4 +20,5 @@
 #define AMIGA_UTF8_H
 char *ami_utf8_easy(char *string);
 void ami_utf8_free(char *ptr);
+char *ami_to_utf8_easy(char *string);
 #endif




More information about the netsurf-commits mailing list