mirror of
https://github.com/netsurf-browser/netsurf
synced 2025-03-04 06:11:33 +03:00
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. svn path=/trunk/netsurf/; revision=5231
This commit is contained in:
parent
eb67a135d1
commit
4750d11a6b
32
amiga/iff_cset.h
Executable file
32
amiga/iff_cset.h
Executable file
@ -0,0 +1,32 @@
|
||||
/*
|
||||
* Copyright 2008 Chris Young <chris@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
|
@ -27,6 +27,7 @@ extern bool option_use_wb;
|
||||
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 @@ bool option_use_wb = false; \
|
||||
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 @@ bool option_no_iframes = false; \
|
||||
{ "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
|
||||
|
26
amiga/utf8.c
26
amiga/utf8.c
@ -53,3 +53,29 @@ char *ami_utf8_easy(char *string)
|
||||
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);
|
||||
}
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user