mirror of
https://github.com/mozilla/gecko-dev.git
synced 2024-11-01 14:45:29 +00:00
370 lines
10 KiB
C
370 lines
10 KiB
C
|
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
|
||
|
*
|
||
|
* The contents of this file are subject to the Netscape Public License
|
||
|
* Version 1.0 (the "NPL"); you may not use this file except in
|
||
|
* compliance with the NPL. You may obtain a copy of the NPL at
|
||
|
* http://www.mozilla.org/NPL/
|
||
|
*
|
||
|
* Software distributed under the NPL is distributed on an "AS IS" basis,
|
||
|
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
|
||
|
* for the specific language governing rights and limitations under the
|
||
|
* NPL.
|
||
|
*
|
||
|
* The Initial Developer of this code under the NPL is Netscape
|
||
|
* Communications Corporation. Portions created by Netscape are
|
||
|
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
|
||
|
* Reserved.
|
||
|
*/
|
||
|
|
||
|
|
||
|
/* intl_csi.h */
|
||
|
|
||
|
#ifndef INTL_CSI_H
|
||
|
#define INTL_CSI_H
|
||
|
/*
|
||
|
Using the i18n Character-Set-Information (CSI) accessor functions:
|
||
|
1) include the header file
|
||
|
|
||
|
#include "intl_csi.h"
|
||
|
|
||
|
2) get the i18n CSI object (generally from MWContext)
|
||
|
|
||
|
INTL_CharSetInfo csi = LO_GetDocumentCharacterSetInfo(context);
|
||
|
|
||
|
3) access (read/set) the data element
|
||
|
|
||
|
int16 doc_csid = INTL_GetCSIDocCSID(csi);
|
||
|
INTL_SetCSIDocCSID(csi, new_doc_csid);
|
||
|
|
||
|
int16 win_csid = INTL_GetCSIWinCSID(csi);
|
||
|
INTL_SetCSIWinCSID(csi, new_win_csid);
|
||
|
|
||
|
char *mime_name = INTL_GetCSIMimeCharset(csi);
|
||
|
INTL_SetCSIMimeCharset(csi, new_mime_charset);
|
||
|
|
||
|
int16 relayout_flag = INTL_GetCSIRelayoutFlag(csi);
|
||
|
INTL_SetCSIRelayoutFlag(csi, new_relayout_flag);
|
||
|
|
||
|
*/
|
||
|
|
||
|
XP_BEGIN_PROTOS
|
||
|
|
||
|
#include "ntypes.h"
|
||
|
#include "libi18n.h"
|
||
|
|
||
|
/**
|
||
|
* Cookie for INTL_CSIInfo.
|
||
|
*
|
||
|
* This is a Magic Cookie to validate the pointer to INTL_CSIInfo in MWContext.
|
||
|
*
|
||
|
*/
|
||
|
#define INTL_TAG 0x494E544C
|
||
|
|
||
|
/**@name Character Set Information (CSI) */
|
||
|
/*@{*/
|
||
|
/**
|
||
|
* Allocate a new charset info object, and clear it with zeroes.
|
||
|
*
|
||
|
* @return The new charset info object
|
||
|
* @see INTL_CSIInitialize, INTL_CSIDestroy
|
||
|
*/
|
||
|
PUBLIC INTL_CharSetInfo INTL_CSICreate(void);
|
||
|
|
||
|
/**
|
||
|
* Frees the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @see INTL_CSICreate
|
||
|
*/
|
||
|
PUBLIC void INTL_CSIDestroy(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets all the charset info object fields to initial values.
|
||
|
*
|
||
|
* The override, HTTP, HTML META, document and window charset IDs are all set
|
||
|
* to CS_DEFAULT. The MIME charset is set to NULL. The relayout flag is set
|
||
|
* to METACHARSET_NONE.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @see INTL_CSIInitialize
|
||
|
*/
|
||
|
PUBLIC void INTL_CSIReset(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Initializes the charset info object.
|
||
|
*
|
||
|
* <UL>
|
||
|
* <LI>
|
||
|
* If the given is_metacharset_reload argument is FALSE, INTL_CSIReset is
|
||
|
* called, passing the given charset info object.
|
||
|
*
|
||
|
* <LI>
|
||
|
* If the given is_metacharset_reload argument is TRUE, the charset info
|
||
|
* object's relayout flag is set to METACHARSET_RELAYOUTDONE.
|
||
|
*
|
||
|
* <LI>
|
||
|
* Otherwise, if the override charset ID is previously set in this object,
|
||
|
* it is set in the document charset ID field.
|
||
|
*
|
||
|
* <LI>
|
||
|
* Otherwise, if the given HTTP charset is known, it is set in the HTTP
|
||
|
* charset field.
|
||
|
*
|
||
|
* <LI>
|
||
|
* Otherwise, the document charset ID field is set to the given
|
||
|
* defaultDocCharSetID, unless the type is mail/news, in which case CS_DEFAULT
|
||
|
* is used. This is because the META charset in mail/news is sometimes wrong.
|
||
|
*
|
||
|
* <LI>
|
||
|
* Finally, the window charset ID is set, based on the document charset ID.
|
||
|
* </UL>
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param is_metacharset_reload TRUE if it is currently reloading because
|
||
|
* the layout code found HTML META charset.
|
||
|
* FALSE otherwise.
|
||
|
* @param http_charset Specifies the charset name if it is presented in
|
||
|
* HTTP Content-Type header
|
||
|
* @param type Specifies the context type
|
||
|
* @param defaultDocCharSetID Specifies the default document charset ID.
|
||
|
* @see
|
||
|
*/
|
||
|
PUBLIC void INTL_CSIInitialize(
|
||
|
INTL_CharSetInfo obj,
|
||
|
XP_Bool is_metacharset_reload,
|
||
|
char *http_charset,
|
||
|
int type,
|
||
|
uint16 defaultDocCharSetID
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets HTML META charset info in the given charset info object.
|
||
|
*
|
||
|
* <UL>
|
||
|
* <LI>
|
||
|
* If the given charset is unknown, this function returns.
|
||
|
*
|
||
|
* <LI>
|
||
|
* If the given context type is mail or news, this function returns,
|
||
|
* since mail/news sometimes has wrong HTML META charsets.
|
||
|
*
|
||
|
* <LI>
|
||
|
* If the relayout flag is set to something other than METACHARSET_NONE, this
|
||
|
* function returns, to avoid setting the META charset more than once.
|
||
|
*
|
||
|
* <LI>
|
||
|
* Otherwise, the HTML META charset field is set, and the relayout flag is
|
||
|
* set to METACHARSET_HASCHARSET.
|
||
|
* If the previous document charset was known,
|
||
|
* and was different from the new META charset, the relayout flag is set to
|
||
|
* METACHARSET_REQUESTRELAYOUT.
|
||
|
* The window charset ID is also checked against the new one.
|
||
|
* If they are different, the relayout flag is set to
|
||
|
* METACHARSET_REQUESTRELAYOUT.
|
||
|
* </UL>
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param charset_tag Specifies the HTML META charset
|
||
|
* @param type Specifies the context type
|
||
|
* @see INTL_GetCSIMetaDocCSID, INTL_GetCSIRelayoutFlag
|
||
|
*/
|
||
|
PUBLIC void INTL_CSIReportMetaCharsetTag(
|
||
|
INTL_CharSetInfo obj,
|
||
|
char *charset_tag,
|
||
|
int type
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the context's charset info object.
|
||
|
*
|
||
|
* @param context Specifies the context
|
||
|
* @return The context's charset info object
|
||
|
* @see INTL_CSICreate
|
||
|
*/
|
||
|
PUBLIC INTL_CharSetInfo LO_GetDocumentCharacterSetInfo(
|
||
|
MWContext *context
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the document charset ID of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @return The document charset ID
|
||
|
* @see INTL_SetCSIDocCSID
|
||
|
*/
|
||
|
PUBLIC int16 INTL_GetCSIDocCSID(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets the document charset ID field of the given charset info object.
|
||
|
*
|
||
|
* The document charset ID field is only set if the higher precedence fields
|
||
|
* (override, HTTP and META) are all set to CS_DEFAULT.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param docCharSetID Specifies the document charset ID
|
||
|
* @see INTL_GetCSIDocCSID
|
||
|
*/
|
||
|
PUBLIC void INTL_SetCSIDocCSID(
|
||
|
INTL_CharSetInfo obj,
|
||
|
int16 docCharSetID
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the override document charset ID of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @return The override document charset ID
|
||
|
* @see INTL_SetCSIOverrideDocCSID
|
||
|
*/
|
||
|
PUBLIC int16 INTL_GetCSIOverrideDocCSID(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets the override document charset ID of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param overrideDocCharSetID Specifies the override document charset ID
|
||
|
* @see INTL_GetCSIOverrideDocCSID
|
||
|
*/
|
||
|
PUBLIC void INTL_SetCSIOverrideDocCSID(
|
||
|
INTL_CharSetInfo obj,
|
||
|
int16 overrideDocCharSetID
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the HTML META document charset ID of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @return The HTML META document charset ID
|
||
|
* @see INTL_SetCSIMetaDocCSID
|
||
|
*/
|
||
|
PUBLIC int16 INTL_GetCSIMetaDocCSID(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets the HTML META document charset ID of the given charset info object.
|
||
|
*
|
||
|
* The HTML META document charset ID field is only set if the higher precedence
|
||
|
* fields (override and HTTP) are all set to CS_DEFAULT.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param metaCharSetID Specifies the HTML META document charset ID
|
||
|
* @see INTL_GetCSIMetaDocCSID
|
||
|
*/
|
||
|
PUBLIC void INTL_SetCSIMetaDocCSID(
|
||
|
INTL_CharSetInfo obj,
|
||
|
int16 metaCharSetID
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the HTTP document charset ID of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @return The HTTP document charset ID
|
||
|
* @see INTL_SetCSIHTTPDocCSID
|
||
|
*/
|
||
|
PUBLIC int16 INTL_GetCSIHTTPDocCSID(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets the HTTP document charset ID of the given charset info object.
|
||
|
*
|
||
|
* The HTTP document charset ID field is only set if the higher precedence
|
||
|
* field (override) is set to CS_DEFAULT.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param httpDocCharSetID Specifies the HTTP document charset ID
|
||
|
* @see INTL_GetCSIHTTPDocCSID
|
||
|
*/
|
||
|
PUBLIC void INTL_SetCSIHTTPDocCSID(
|
||
|
INTL_CharSetInfo obj,
|
||
|
int16 httpDocCharSetID
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the window charset ID of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @return The window charset ID
|
||
|
* @see INTL_SetCSIWinCSID
|
||
|
*/
|
||
|
PUBLIC int16 INTL_GetCSIWinCSID(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets the window charset ID field of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param winCharSetID Specifies the window charset ID
|
||
|
* @see INTL_GetCSIWinCSID
|
||
|
*/
|
||
|
PUBLIC void INTL_SetCSIWinCSID(
|
||
|
INTL_CharSetInfo obj,
|
||
|
int16 winCharSetID
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the MIME charset field of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @return The MIME charset
|
||
|
* @see INTL_SetCSIMimeCharset
|
||
|
*/
|
||
|
PUBLIC char *INTL_GetCSIMimeCharset(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets the MIME charset field of the given charset info object.
|
||
|
*
|
||
|
* If the charset info object already contains a pointer to a MIME charset,
|
||
|
* that charset is freed. Then the given charset is copied, and the copy is
|
||
|
* converted to lower case. The copy is then set in the MIME charset field.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param mime_charset Specifies the MIME charset
|
||
|
* @see INTL_GetCSIMimeCharset
|
||
|
*/
|
||
|
PUBLIC void INTL_SetCSIMimeCharset(
|
||
|
INTL_CharSetInfo obj,
|
||
|
char *mime_charset
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Returns the relayout field of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @return The relayout field
|
||
|
* @see INTL_SetCSIRelayoutFlag
|
||
|
*/
|
||
|
PUBLIC int16 INTL_GetCSIRelayoutFlag(
|
||
|
INTL_CharSetInfo obj
|
||
|
);
|
||
|
|
||
|
/**
|
||
|
* Sets the relayout field of the given charset info object.
|
||
|
*
|
||
|
* @param obj Specifies the charset info object
|
||
|
* @param relayout Specifies the relayout field
|
||
|
* @see INTL_GetCSIRelayoutFlag
|
||
|
*/
|
||
|
PUBLIC void INTL_SetCSIRelayoutFlag(
|
||
|
INTL_CharSetInfo obj,
|
||
|
int16 relayout
|
||
|
);
|
||
|
/*@}*/
|
||
|
|
||
|
XP_END_PROTOS
|
||
|
|
||
|
#endif /* INTL_CSI_H */
|