summaryrefslogtreecommitdiffstats
path: root/src/LYCharSets.h
blob: c0d155303b7500ff0a4643aacbd098e2f10de98b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/*
 * $LynxId: LYCharSets.h,v 1.34 2012/02/10 18:43:40 tom Exp $
 */
#ifndef LYCHARSETS_H
#define LYCHARSETS_H

#ifndef HTUTILS_H
#include <HTUtils.h>
#endif

#include <UCDefs.h>

#ifndef UCMAP_H
#include <UCMap.h>
#endif /* !UCMAP_H */

#include <HTCJK.h>

#ifdef __cplusplus
extern "C" {
#endif
    extern BOOL HTPassEightBitRaw;
    extern BOOL HTPassEightBitNum;
    extern BOOL HTPassHighCtrlRaw;
    extern BOOL HTPassHighCtrlNum;
    extern BOOLEAN LYHaveCJKCharacterSet;
    extern BOOLEAN DisplayCharsetMatchLocale;

    extern HTkcode kanji_code;

/*
 *  currently active character set (internal handler)
 */
    extern int current_char_set;
/*
 *  character set where it is safe to draw lines on boxes.
 */
    extern int linedrawing_char_set;

/*
 *  Initializer, calls initialization function for the
 *  CHARTRANS handling. - KW
 */
    extern int LYCharSetsDeclared(void);

    extern STRING2PTR LYCharSets[];
    extern const char *SevenBitApproximations[];
    extern STRING2PTR p_entity_values;
    extern const char *LYchar_set_names[];	/* Full name, not MIME */
    extern int LYlowest_eightbit[];
    extern int LYNumCharsets;
    extern LYUCcharset LYCharSet_UC[];
    extern int UCGetLYhndl_byAnyName(char *value);
    extern void HTMLSetCharacterHandling(int i);
    extern void HTMLSetUseDefaultRawMode(int i, int modeflag);
    extern void HTMLUseCharacterSet(int i);
    extern UCode_t HTMLGetEntityUCValue(const char *name);
    extern void Set_HTCJK(const char *inMIMEname, const char *outMIMEname);

    extern const char *HTMLGetEntityName(UCode_t code);

    UCode_t LYcp1252ToUnicode(UCode_t code);

/*
 * HTMLGetEntityName calls LYEntityNames for iso-8859-1 entity names only. 
 * This is an obsolete technique but widely used in the code.  Note that
 * unicode number in general may have several equivalent entity names because
 * of synonyms.
 */
    extern BOOL force_old_UCLYhndl_on_reload;
    extern int forced_UCLYhdnl;

#ifndef  USE_CHARSET_CHOICE
# define ALL_CHARSETS_IN_O_MENU_SCREEN 1
#endif

#ifdef USE_CHARSET_CHOICE
    typedef struct {
	BOOL hide_display;	/* if FALSE, show in "display-charset" menu */
	BOOL hide_assumed;	/* if FALSE, show in "assumed-charset" menu */
#ifndef ALL_CHARSETS_IN_O_MENU_SCREEN
	int assumed_idx;	/* only this field is needed */
#endif
    } charset_subset_t;

/* each element corresponds to charset in LYCharSets */
    extern charset_subset_t charset_subsets[];

/* all zeros by default - i.e., all charsets allowed */

/*
 * true if the charset choices for display charset were requested by user via
 * lynx.cfg.  It will remain FALSE if no "display_charset_choice" settings were
 * encountered in lynx.cfg
 */
    extern BOOL custom_display_charset;

/* similar to custom_display_charset */
    extern BOOL custom_assumed_doc_charset;

#ifndef ALL_CHARSETS_IN_O_MENU_SCREEN

/* this stuff is initialized after reading lynx.cfg and .lynxrc */

/*
 * These arrays map index of charset shown in menu to the index in LYCharsets[]
 */
    extern int display_charset_map[];
    extern int assumed_doc_charset_map[];

/* these arrays are NULL terminated */
    extern const char *display_charset_choices[];
    extern const char *assumed_charset_choices[];

    extern int displayed_display_charset_idx;

#endif
/* this will be called after lynx.cfg and .lynxrc are read */
    extern void init_charset_subsets(void);
#endif				/* USE_CHARSET_CHOICE */

#if !defined(NO_AUTODETECT_DISPLAY_CHARSET)
#  ifdef __EMX__
#    define CAN_AUTODETECT_DISPLAY_CHARSET
#    ifdef EXP_CHARTRANS_AUTOSWITCH
#      define CAN_SWITCH_DISPLAY_CHARSET
#    endif
#  endif
#endif

#ifdef CAN_AUTODETECT_DISPLAY_CHARSET
    extern int auto_display_charset;
#endif

#ifdef CAN_SWITCH_DISPLAY_CHARSET
    enum switch_display_charset_t {
	SWITCH_DISPLAY_CHARSET_MAYBE,
	SWITCH_DISPLAY_CHARSET_REALLY,
	SWITCH_DISPLAY_CHARSET_RESIZE
    };
    extern int Switch_Display_Charset(int ord, enum switch_display_charset_t really);
    extern int Find_Best_Display_Charset(int ord);
    extern char *charsets_directory;
    extern char *charset_switch_rules;
    extern int switch_display_charsets;
    extern int auto_other_display_charset;
    extern int codepages[2];
    extern int real_charsets[2];	/* Non "auto-" charsets for the codepages */
#endif

#ifdef __cplusplus
}
#endif
#endif				/* LYCHARSETS_H */