Free the lizard
git-svn-id: svn://10.0.0.236/trunk@10 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
457
mozilla/include/structs.h
Normal file
457
mozilla/include/structs.h
Normal file
@@ -0,0 +1,457 @@
|
||||
/* -*- 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.
|
||||
*/
|
||||
|
||||
|
||||
/*
|
||||
* This file is included by client.h
|
||||
*
|
||||
* It can be included by hand after mcom.h
|
||||
*
|
||||
* All intermodule data structures (i.e. MWContext, etc) should be included
|
||||
* in this file
|
||||
*/
|
||||
#ifndef _STRUCTS_H_
|
||||
#define _STRUCTS_H_
|
||||
|
||||
#include "ntypes.h"
|
||||
#include "xp_mcom.h"
|
||||
|
||||
#include "il_types.h"
|
||||
#include "lo_ele.h"
|
||||
#include "shistele.h"
|
||||
#include "edttypes.h"
|
||||
|
||||
#ifdef JAVA
|
||||
#include "prlong.h"
|
||||
#include "prclist.h"
|
||||
#endif /* JAVA */
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* ============= Typedefs for the global context structure ================ */
|
||||
|
||||
/* will come out of the ctxtfunc.h file eventually
|
||||
*/
|
||||
typedef struct _ContextFuncs ContextFuncs;
|
||||
/*
|
||||
* This stuff is front end specific. Add whatever you need.
|
||||
*/
|
||||
#if defined(OSF1) && defined(__cplusplus)
|
||||
struct fe_ContextData;
|
||||
#endif
|
||||
|
||||
#if defined(XP_MAC) && defined(__cplusplus)
|
||||
class NetscapeContext;
|
||||
class CHyperView;
|
||||
|
||||
class CNSContext;
|
||||
class CHTMLView;
|
||||
#endif
|
||||
|
||||
#if ( defined(XP_WIN) || defined(XP_OS2) ) && defined(__cplusplus)
|
||||
class CAbstractCX;
|
||||
class CEditView;
|
||||
class CSaveProgress;
|
||||
#endif
|
||||
|
||||
typedef struct FEstruct_ {
|
||||
#ifndef MOZILLA_CLIENT
|
||||
void * generic_data;
|
||||
#elif defined(XP_WIN) || defined(XP_OS2)
|
||||
#ifdef __cplusplus
|
||||
CAbstractCX *cx;
|
||||
#else
|
||||
void *cx;
|
||||
#endif
|
||||
#elif defined(XP_TEXT)
|
||||
int doc_cols;
|
||||
int doc_lines;
|
||||
int cur_top_line;
|
||||
int num_anchors;
|
||||
int cur_anchor;
|
||||
|
||||
#elif defined(XP_UNIX)
|
||||
struct fe_ContextData *data;
|
||||
#elif defined(XP_MAC)
|
||||
#ifdef __cplusplus
|
||||
class NetscapeContext* realContext;
|
||||
class CHyperView* view;
|
||||
|
||||
class CNSContext* newContext;
|
||||
class CHTMLView* newView;
|
||||
#else
|
||||
void* realContext;
|
||||
void* view;
|
||||
|
||||
void* newContext;
|
||||
void* newView;
|
||||
#endif
|
||||
|
||||
/*
|
||||
** These members are only used by the EDITOR... However, if they
|
||||
** are removed for non-editor builds the MWContext structure
|
||||
** becomes skewed for java (and the rest of DIST)...
|
||||
*/
|
||||
#ifdef __cplusplus
|
||||
class CEditView* editview;
|
||||
class CSaveProgress* savedialog;
|
||||
#else
|
||||
void* editview;
|
||||
void* savedialog;
|
||||
#endif
|
||||
|
||||
#endif
|
||||
} FEstruct;
|
||||
|
||||
#define FEUNITS_X(x,context) ((int32) ((MWContext *)context)->convertPixX * (x))
|
||||
#define FEUNITS_Y(y,context) ((int32) ((MWContext *)context)->convertPixY * (y))
|
||||
|
||||
struct MessageCopyInfo;
|
||||
|
||||
/*
|
||||
This is a generic context structure. There should be one context
|
||||
per document window. The context will allow assorted modules to
|
||||
pull out things like the URL of the current document as well as
|
||||
giving them a place to hand their window specific stuff.
|
||||
|
||||
*/
|
||||
|
||||
#if defined (OSF1)
|
||||
/* Forward declaration to make compiler happy on OSF1 */
|
||||
struct MSG_SearchFrame;
|
||||
#ifdef XP_CPLUSPLUS
|
||||
class MSG_IMAPFolderInfoMail;
|
||||
class MSG_Master;
|
||||
class MSG_Pane;
|
||||
class TImapServerState;
|
||||
#endif
|
||||
#endif
|
||||
|
||||
struct MWContext_ {
|
||||
MWContextType type;
|
||||
|
||||
char *url; /* URL of current document */
|
||||
char * name; /* name of this context */
|
||||
History hist; /* Info needed for the window history module */
|
||||
FEstruct fe; /* Front end specific stuff */
|
||||
PRPackedBool fancyFTP; /* use fancy ftp ? */
|
||||
PRPackedBool fancyNews; /* use fancy news ? */
|
||||
PRPackedBool intrupt; /* the user just interrupted things */
|
||||
PRPackedBool graphProgress; /* should the user get visual feedback */
|
||||
PRPackedBool waitingMode; /* Has a transfer been initiated? Once a */
|
||||
/* transfer is started, the user cannot select another */
|
||||
/* anchor until either the transfer is aborted, has */
|
||||
/* started to layout, or has been recognized as a */
|
||||
/* separate document handled through an external stream/viewer */
|
||||
PRPackedBool reSize; /* the user wants to resize the window once the */
|
||||
/* current transfer is over */
|
||||
int fileSort; /* file sorting method */
|
||||
char * save_as_name; /* name to save current file as */
|
||||
char * title; /* title (if supplied) of current document */
|
||||
Bool is_grid_cell; /* Is this a grid cell */
|
||||
struct MWContext_ *grid_parent; /* pointer to parent of grid cell */
|
||||
XP_List * grid_children; /* grid children of this context */
|
||||
int convertPixX; /* convert from pixels to fe-specific coords */
|
||||
int convertPixY; /* convert from pixels to fe-specific coords */
|
||||
ContextFuncs * funcs; /* function table of display routines */
|
||||
PrintSetup *prSetup; /* Info about print job */
|
||||
PrintInfo *prInfo; /* State information for printing process */
|
||||
|
||||
/* XXXM12N Stuff for the new, modular Image Library. *********************/
|
||||
IL_GroupContext *img_cx; /* Created by Front Ends. Passed into Image
|
||||
Library function calls. */
|
||||
IL_ColorSpace *color_space; /* Colorspace information for images. This
|
||||
should become a part of the FE's display
|
||||
context when MWContext goes away. */
|
||||
IL_IRGB *transparent_pixel; /* Background color to be passed into
|
||||
IL_GetImage. Set by Front Ends (?) */
|
||||
/*************************************************************************/
|
||||
|
||||
int32 images; /* # of distinct images on this page */
|
||||
|
||||
/* ! do not use these ! */
|
||||
/* ! these are going away soon ! */
|
||||
/* instead see intl_csi.h for the i18n accessor functions */
|
||||
int16 do_not_use_win_csid; /* code set ID of current window */
|
||||
int16 do_not_use_doc_csid; /* code set ID of current document */
|
||||
int16 do_not_use_relayout; /* tell conversion to treat relayout case */
|
||||
char *do_not_use_mime_charset; /* MIME charset from URL */
|
||||
|
||||
struct MSG_CompositionFrame *msg_cframe; /* ditto. */
|
||||
struct MSG_SearchFrame *msg_searchFrame; /*state for search, for search contexts*/
|
||||
struct MSG_BiffFrame *biff_frame; /* Biff info for this context, if any. */
|
||||
struct BM_Frame *bmframe; /* Bookmarks info for this context, if any. */
|
||||
|
||||
/* for now, add IMAP mail stuff here */
|
||||
#ifdef XP_CPLUSPLUS
|
||||
class MSG_IMAPFolderInfoMail *currentIMAPfolder;
|
||||
class MSG_Pane *imapURLPane; /* used when updated folders */
|
||||
class MSG_Master *mailMaster;
|
||||
class TNavigatorImapConnection *imapConnection;
|
||||
#else
|
||||
struct MSG_IMAPFolderInfoMail *currentIMAPfolder;
|
||||
struct MSG_Pane *imapURLPane; /* used when updated folders */
|
||||
struct MSG_Master *mailMaster;
|
||||
struct TNavigatorImapConnection *imapConnection;
|
||||
#endif
|
||||
|
||||
/* for now, add message copy info stuff here */
|
||||
struct MessageCopyInfo *msgCopyInfo;
|
||||
|
||||
NPEmbeddedApp *pluginList; /* plugins on this page */
|
||||
void *pluginReconnect; /* yet another full screen hack */
|
||||
|
||||
struct MimeDisplayData *mime_data; /* opaque data used by MIME message
|
||||
parser (not Mail/News specific,
|
||||
since MIME objects can show up
|
||||
in Browser windows too.) */
|
||||
/* Also overloaded by progress module to hold private crap! */
|
||||
|
||||
#ifdef MOCHA
|
||||
struct JSContext *mocha_context; /* opaque handle to Mocha state */
|
||||
uint32 event_bit; /* sum of all event capturing objects */
|
||||
XP_Bool js_drag_enabled; /* indicates JS drag enabled */
|
||||
int8 js_dragging; /* indicates which button has JS drag in process */
|
||||
XP_List * js_dependent_list; /* lifetime-linked children of this context */
|
||||
MWContext *js_parent;
|
||||
int32 js_timeouts_pending; /* Number of pending JavaScript timeouts */
|
||||
|
||||
#endif
|
||||
XP_Bool restricted_target; /* TRUE if window is off-limits for opening links into
|
||||
from mail or other window-grabbing functions.*/
|
||||
|
||||
NPEmbeddedApp *pEmbeddedApp; /* yet another full screen hack */
|
||||
char * defaultStatus; /* What string to show in the status area
|
||||
whenever there's nothing better to show.
|
||||
FE's should implement FE_Progress so that
|
||||
if it is passed NULL or "" it will instead
|
||||
display this string. libmsg changes this
|
||||
string all the time for mail and news
|
||||
contexts. */
|
||||
#ifdef LAYERS
|
||||
CL_Compositor *compositor; /* The compositor associated with this context */
|
||||
XP_Bool blink_hidden; /* State of blink layers */
|
||||
void *blink_timeout; /* Timeout used for blink hiding/unhiding */
|
||||
#endif /* LAYERS */
|
||||
|
||||
int32 doc_id; /* unique identifier for generated documents */
|
||||
int32 context_id; /* unique identifier for context */
|
||||
|
||||
void *pHelpInfo; /* pointer to additional help information;
|
||||
see ns/lib/libnet/mkhelp.c [EA] */
|
||||
|
||||
#ifdef JAVA
|
||||
/* See ns/sun-java/netscape/net/netStubs.c for the next 2 items: */
|
||||
|
||||
/*
|
||||
** This mysterious list is used in two ways: (1) If you're a real
|
||||
** window context, it's a list of all dummy java contexts that were
|
||||
** created for java's network connections. (2) If you're a dummy java
|
||||
** context, it's where you're linked into the list of connections for
|
||||
** the real context:
|
||||
*/
|
||||
PRCList javaContexts;
|
||||
|
||||
/*
|
||||
** Second, if you're a dummy java context, you'll need a pointer to
|
||||
** the stream data so that you can shut down the netlib connection:
|
||||
*/
|
||||
struct nsn_JavaStreamData* javaContextStreamData;
|
||||
|
||||
/*
|
||||
** Stuff for GraphProgress. See lj_embed.c
|
||||
*/
|
||||
Bool displayingMeteors;
|
||||
int64 timeOfFirstMeteorShower;
|
||||
int16 numberOfSimultaneousShowers;
|
||||
|
||||
#endif /* JAVA */
|
||||
|
||||
/*
|
||||
** Put the editor stuff at the end so that people can still use the
|
||||
** the Java DLL from the 2.0 dist build with Navigator Gold.
|
||||
*/
|
||||
PRPackedBool is_editor; /* differentiates between Editor and Browser modes */
|
||||
PRPackedBool is_new_document; /* quick access to new doc state (unsaved-no file yet)*/
|
||||
PRPackedBool display_paragraph_marks; /* True if we should display paragraph and hard-return symbols. */
|
||||
PRPackedBool display_table_borders; /* True if we should display dotted lines around tables with invisible borders. */
|
||||
PRPackedBool edit_view_source_hack;
|
||||
PRPackedBool edit_loading_url; /* Hack to let us run the net while in a modal dialog */
|
||||
PRPackedBool edit_saving_url; /* " */
|
||||
PRPackedBool edit_has_backup; /* Editor has made a session backup */
|
||||
PRPackedBool bIsComposeWindow; /* Editor is a compose window */
|
||||
|
||||
/*
|
||||
* Webfonts that were loaded by this context
|
||||
*/
|
||||
void *webfontsList;
|
||||
|
||||
/* web font stuff */
|
||||
/* On Windows, they are initialized to 0 in cxdc.cpp */
|
||||
int16 WebFontDownLoadCount; /* # of download for this doc( one download can have multiple fonts) */
|
||||
int16 MissedFontFace; /* have we missed any font? */
|
||||
|
||||
/* number of pixels per point-size */
|
||||
double XpixelsPerPoint;
|
||||
double YpixelsPerPoint;
|
||||
|
||||
Bool bJavaScriptCalling;
|
||||
/* Allow JavaScript in certain internally generated contexts even
|
||||
* when the "enable javascript" pref is turned off.
|
||||
* This flag will also be inherited by child grid cells.
|
||||
*/
|
||||
PRPackedBool forceJSEnabled;
|
||||
|
||||
/* For increase and decrease font */
|
||||
double fontScalingPercentage;
|
||||
|
||||
int INTL_tag; /* used to tell that we have a valid INTL_CSIInfo */
|
||||
INTL_CharSetInfo INTL_CSIInfo; /* new home of private i18n data */
|
||||
|
||||
/* the current tab focused data */
|
||||
LO_TabFocusData *tab_focus_data;
|
||||
|
||||
void *ncast_channel_context;
|
||||
};
|
||||
|
||||
|
||||
/* This tells libmime.a whether it has the mime_data slot in MWContext
|
||||
(which should always be true eventually, but having this #define here
|
||||
makes life easier for me today.) -- jwz */
|
||||
#define HAVE_MIME_DATA_SLOT
|
||||
|
||||
|
||||
/* this is avialible even in non GOLD builds. */
|
||||
#define EDT_IS_EDITOR(context) (context != NULL && context->is_editor)
|
||||
#define EDT_DISPLAY_PARAGRAPH_MARKS(context) (context && context->is_editor && context->display_paragraph_marks)
|
||||
#define EDT_DISPLAY_TABLE_BORDERS(context) (context && context->is_editor && context->display_table_borders)
|
||||
#define EDT_RELAYOUT_FLAG (0x2)
|
||||
#define EDT_IN_RELAYOUT(context) (context != NULL && ((context->is_editor & EDT_RELAYOUT_FLAG) != 0))
|
||||
|
||||
#ifdef JAVA
|
||||
|
||||
/*
|
||||
** This macro is used to recover the MWContext* from the javaContexts
|
||||
** list pointer:
|
||||
*/
|
||||
#define MWCONTEXT_PTR(context) \
|
||||
((MWContext*) ((char*) (context) - offsetof(MWContext,javaContexts)))
|
||||
|
||||
#endif /* JAVA */
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* ====================== NASTY UGLY SHORT TERM HACKS ===================== */
|
||||
|
||||
#define XP_CONTEXTID(ctxt) ((ctxt)->context_id)
|
||||
#define XP_DOCID(ctxt) ((ctxt)->doc_id)
|
||||
#define XP_SET_DOCID(ctxt, id) ((ctxt)->doc_id = (id))
|
||||
|
||||
/* ------------------------------------------------------------------------ */
|
||||
/* ============= Typedefs for the parser module structures ================ */
|
||||
|
||||
/*
|
||||
* I *think* (but am unsure) that these should be forked off into a
|
||||
* parser specific client level include file
|
||||
*
|
||||
*/
|
||||
|
||||
typedef int8 TagType;
|
||||
|
||||
struct PA_Tag_struct {
|
||||
TagType type;
|
||||
PRPackedBool is_end;
|
||||
uint16 newline_count;
|
||||
#if defined(XP_WIN) || defined(XP_OS2)
|
||||
union { /* use an anonymous union for debugging purposes*/
|
||||
PA_Block data;
|
||||
char* data_str;
|
||||
};
|
||||
#else
|
||||
PA_Block data;
|
||||
#endif
|
||||
int32 data_len;
|
||||
int32 true_len;
|
||||
void *lo_data;
|
||||
struct PA_Tag_struct *next;
|
||||
ED_Element *edit_element;
|
||||
};
|
||||
|
||||
#define PA_HAS_PDATA( tag ) (tag->pVoid != 0 )
|
||||
|
||||
#ifdef XP_UNIX
|
||||
typedef char *PAAllocate (intn byte_cnt);
|
||||
typedef void PAFree (char *ptr);
|
||||
#else
|
||||
typedef void *PAAllocate (unsigned int byte_cnt);
|
||||
typedef void PAFree (void *ptr);
|
||||
#endif
|
||||
typedef intn PA_OutputFunction (void *data_object, PA_Tag *tags, intn status);
|
||||
|
||||
struct _PA_Functions {
|
||||
PAAllocate *mem_allocate;
|
||||
PAFree *mem_free;
|
||||
PA_OutputFunction *PA_ParsedTag;
|
||||
};
|
||||
|
||||
typedef struct PA_InitData_struct {
|
||||
PA_OutputFunction *output_func;
|
||||
} PA_InitData;
|
||||
|
||||
/* Structure that defines the characteristics of a new window.
|
||||
* Each entry should be structured so that 0 should be the
|
||||
* default normal value. Currently all 0 values
|
||||
* bring up a chromeless MWContextBrowser type window of
|
||||
* arbitrary size.
|
||||
*/
|
||||
struct _Chrome {
|
||||
MWContextType type; /* Must be set to the correct type you want,
|
||||
* if doesn't exist, define one!!!
|
||||
*/
|
||||
Bool show_button_bar; /* TRUE to display button bar */
|
||||
Bool show_url_bar; /* TRUE to show URL entry area */
|
||||
Bool show_directory_buttons; /* TRUE to show directory buttons */
|
||||
Bool show_bottom_status_bar; /* TRUE to show bottom status bar */
|
||||
Bool show_menu; /* TRUE to show menu bar */
|
||||
Bool show_security_bar; /* TRUE to show security bar */
|
||||
Bool hide_title_bar; /* TRUE to hide title bar and window controls */
|
||||
int32 w_hint, h_hint; /* hints for width and height */
|
||||
int32 outw_hint, outh_hint; /* hints for outer window width and height */
|
||||
int32 l_hint, t_hint; /* hints for left and top window positioning */
|
||||
Bool topmost; /* TRUE for window alwaysOnTop */
|
||||
Bool bottommost; /* TRUE for 'desktop' window */
|
||||
Bool z_lock; /* TRUE for window which cannot move within z-order */
|
||||
Bool is_modal; /* TRUE to make window be modal */
|
||||
Bool show_scrollbar; /* TRUE to show scrollbars on window */
|
||||
Bool location_is_chrome; /* TRUE if top or left is specified */
|
||||
Bool allow_resize; /* TRUE to allow resize of windows */
|
||||
Bool allow_close; /* TRUE to allow window to be closed */
|
||||
Bool copy_history; /* TRUE to copy history of prototype context*/
|
||||
Bool dependent; /* TRUE if this window is to be closed with its parent*/
|
||||
Bool disable_commands; /* TRUE if user has set hot-keys / menus off */
|
||||
Bool restricted_target; /* TRUE if window is off-limits for opening links into
|
||||
from mail or other window-grabbing functions.*/
|
||||
void (* close_callback)(void *close_arg); /* called on window close */
|
||||
void *close_arg; /* passed to close_callback */
|
||||
};
|
||||
|
||||
|
||||
#endif /* _STRUCTS_H_ */
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user