📄 nsplugindefs.h
字号:
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- *//* ***** BEGIN LICENSE BLOCK ***** * Version: MPL 1.1/GPL 2.0/LGPL 2.1 * * The contents of this file are subject to the Mozilla Public License Version * 1.1 (the "License"); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" basis, * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License * for the specific language governing rights and limitations under the * License. * * The Original Code is mozilla.org code. * * The Initial Developer of the Original Code is * Netscape Communications Corporation. * Portions created by the Initial Developer are Copyright (C) 1998 * the Initial Developer. All Rights Reserved. * * Contributor(s): * * Alternatively, the contents of this file may be used under the terms of * either the GNU General Public License Version 2 or later (the "GPL"), or * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"), * in which case the provisions of the GPL or the LGPL are applicable instead * of those above. If you wish to allow use of your version of this file only * under the terms of either the GPL or the LGPL, and not to allow others to * use your version of this file under the terms of the MPL, indicate your * decision by deleting the provisions above and replace them with the notice * and other provisions required by the GPL or the LGPL. If you do not delete * the provisions above, a recipient may use your version of this file under * the terms of any one of the MPL, the GPL or the LGPL. * * ***** END LICENSE BLOCK ***** */#ifndef nsplugindefs_h___#define nsplugindefs_h___#if defined(XP_OS2) || defined(__OS2__)#define INCL_BASE#define INCL_PM#include <os2.h>#pragma pack(1)#endif#ifndef prtypes_h___#include "prtypes.h"#endif#if defined(XP_MAC) || defined(XP_MACOSX)# include <Quickdraw.h># include <Events.h># include <MacWindows.h>#endif#if defined(XP_UNIX) && defined(MOZ_X11)# include <X11/Xlib.h># include <X11/Xutil.h>#endif#if defined(XP_WIN)# include <windef.h>#endif/////////////////////////////////////////////////////////////////////////////////* The OS/2 version of Netscape uses RC_DATA to define the mime types, file extensions, etc that are required. Use a vertical bar to separate types, end types with \0. FileVersion and ProductVersion are 32bit ints, all other entries are strings the MUST be terminated wwith a \0.AN EXAMPLE:RCDATA NS_INFO_ProductVersion { 1,0,0,1,}RCDATA NS_INFO_MIMEType { "video/x-video|", "video/x-flick\0" }RCDATA NS_INFO_FileExtents { "avi|", "flc\0" }RCDATA NS_INFO_FileOpenName{ "MMOS2 video player(*.avi)|", "MMOS2 Flc/Fli player(*.flc)\0" }RCDATA NS_INFO_FileVersion { 1,0,0,1 }RCDATA NS_INFO_CompanyName { "Netscape Communications\0" }RCDATA NS_INFO_FileDescription { "NPAVI32 Extension DLL\0"RCDATA NS_INFO_InternalName { "NPAVI32\0" )RCDATA NS_INFO_LegalCopyright { "Copyright Netscape Communications \251 1996\0"RCDATA NS_INFO_OriginalFilename { "NVAPI32.DLL" }RCDATA NS_INFO_ProductName { "NPAVI32 Dynamic Link Library\0" }*//* RC_DATA types for version info - required */#define NS_INFO_ProductVersion 1#define NS_INFO_MIMEType 2#define NS_INFO_FileOpenName 3#define NS_INFO_FileExtents 4/* RC_DATA types for version info - used if found */#define NS_INFO_FileDescription 5#define NS_INFO_ProductName 6/* RC_DATA types for version info - optional */#define NS_INFO_CompanyName 7#define NS_INFO_FileVersion 8#define NS_INFO_InternalName 9#define NS_INFO_LegalCopyright 10#define NS_INFO_OriginalFilename 11#ifndef RC_INVOKED////////////////////////////////////////////////////////////////////////////////// Structures and definitions#ifdef XP_MAC#pragma options align=mac68k#endiftypedef const char* nsMIMEType;struct nsByteRange { PRInt32 offset; /* negative offset means from the end */ PRUint32 length; struct nsByteRange* next;};struct nsPluginRect { PRUint16 top; PRUint16 left; PRUint16 bottom; PRUint16 right;};////////////////////////////////////////////////////////////////////////////////// Unix specific structures and definitions#ifdef XP_UNIX#include <stdio.h>/* * Callback Structures. * * These are used to pass additional platform specific information. */enum nsPluginCallbackType { nsPluginCallbackType_SetWindow = 1, nsPluginCallbackType_Print};struct nsPluginAnyCallbackStruct { PRInt32 type;};#ifdef MOZ_X11struct nsPluginSetWindowCallbackStruct { PRInt32 type; Display* display; Visual* visual; Colormap colormap; PRUint32 depth;};#elsestruct nsPluginSetWindowCallbackStruct { PRInt32 type;};#endifstruct nsPluginPrintCallbackStruct { PRInt32 type; FILE* fp;};#endif /* XP_UNIX */////////////////////////////////////////////////////////////////////////////////// List of variables which should be implmented by the pluginenum nsPluginVariable { nsPluginVariable_NameString = 1, nsPluginVariable_DescriptionString = 2};enum nsPluginManagerVariable { nsPluginManagerVariable_XDisplay = 1, nsPluginManagerVariable_XtAppContext = 2, nsPluginManagerVariable_SupportsXEmbed = 14};enum nsPluginInstancePeerVariable { nsPluginInstancePeerVariable_NetscapeWindow = 3// nsPluginInstancePeerVariable_JavaClass = 5,// nsPluginInstancePeerVariable_TimerInterval = 7};enum nsPluginInstanceVariable { nsPluginInstanceVariable_WindowlessBool = 3, nsPluginInstanceVariable_TransparentBool = 4, nsPluginInstanceVariable_DoCacheBool = 5, nsPluginInstanceVariable_CallSetWindowAfterDestroyBool = 6, nsPluginInstanceVariable_ScriptableInstance = 10, nsPluginInstanceVariable_ScriptableIID = 11, nsPluginInstanceVariable_NeedsXEmbed = 14};////////////////////////////////////////////////////////////////////////////////enum nsPluginMode { nsPluginMode_Embedded = 1, nsPluginMode_Full};// XXX this can go away nowenum nsPluginStreamType { nsPluginStreamType_Normal = 1, nsPluginStreamType_Seek, nsPluginStreamType_AsFile, nsPluginStreamType_AsFileOnly};/* * The type of a nsPluginWindow - it specifies the type of the data structure * returned in the window field. */enum nsPluginWindowType { nsPluginWindowType_Window = 1, nsPluginWindowType_Drawable};#if defined(XP_MAC) || defined(XP_MACOSX)struct nsPluginPort { CGrafPtr port; /* Grafport */ PRInt32 portx; /* position inside the topmost window */ PRInt32 porty;};typedef RgnHandle nsPluginRegion;typedef WindowRef nsPluginPlatformWindowRef;#elif defined(XP_WIN) || defined(XP_OS2)struct nsPluginPort;typedef HRGN nsPluginRegion;typedef HWND nsPluginPlatformWindowRef;#elif defined(XP_UNIX) && defined(MOZ_X11)struct nsPluginPort;typedef Region nsPluginRegion;typedef Drawable nsPluginPlatformWindowRef;#elsestruct nsPluginPort;typedef void* nsPluginRegion;typedef void* nsPluginPlatformWindowRef;#endifstruct nsPluginWindow { nsPluginPort* window; /* Platform specific window handle */ /* OS/2: x - Position of bottom left corner */ /* OS/2: y - relative to visible netscape window */ PRInt32 x; /* Position of top left corner relative */ PRInt32 y; /* to a netscape page. */ PRUint32 width; /* Maximum window size */ PRUint32 height; nsPluginRect clipRect; /* Clipping rectangle in port coordinates */ /* Used by MAC only. */#if defined(XP_UNIX) && !defined(XP_MACOSX) void* ws_info; /* Platform-dependent additonal data */#endif /* XP_UNIX */ nsPluginWindowType type; /* Is this a window or a drawable? */};struct nsPluginFullPrint { PRBool pluginPrinted; /* Set TRUE if plugin handled fullscreen */ /* printing */ PRBool printOne; /* TRUE if plugin should print one copy */ /* to default printer */ void* platformPrint; /* Platform-specific printing info */};struct nsPluginEmbedPrint { nsPluginWindow window; void* platformPrint; /* Platform-specific printing info */};struct nsPluginPrint { PRUint16 mode; /* nsPluginMode_Full or nsPluginMode_Embedded */ union { nsPluginFullPrint fullPrint; /* if mode is nsPluginMode_Full */ nsPluginEmbedPrint embedPrint; /* if mode is nsPluginMode_Embedded */ } print;};struct nsPluginEvent {#if defined(XP_MAC) || defined(XP_MACOSX) EventRecord* event; nsPluginPlatformWindowRef window;#elif defined(XP_OS2) uint32 event; uint32 wParam; uint32 lParam;#elif defined(XP_WIN) uint16 event; uint32 wParam; uint32 lParam;#elif defined(XP_UNIX) && defined(MOZ_X11) XEvent event;#else void *event;#endif};/* * Non-standard event types that can be passed to HandleEvent * (These need to be kept in sync with the events defined in npapi.h.) */enum nsPluginEventType {#if defined(XP_MAC) || defined(XP_MACOSX) nsPluginEventType_GetFocusEvent = (osEvt + 16), nsPluginEventType_LoseFocusEvent, nsPluginEventType_AdjustCursorEvent, nsPluginEventType_MenuCommandEvent, nsPluginEventType_ClippingChangedEvent, nsPluginEventType_ScrollingBeginsEvent, nsPluginEventType_ScrollingEndsEvent,#endif /* XP_MAC || XP_MACOSX */ nsPluginEventType_Idle = 0};////////////////////////////////////////////////////////////////////////////////enum nsPluginReason { nsPluginReason_Base = 0, nsPluginReason_Done = 0, nsPluginReason_NetworkErr, nsPluginReason_UserBreak, nsPluginReason_NoReason};////////////////////////////////////////////////////////////////////////////////// Version Numbers for Structs// These version number are for structures whose fields may evolve over time.// When fields are added to the end of the struct, the minor version will be// incremented. When the struct changes in an incompatible way the major version// will be incremented. #define nsMajorVersion(v) (((PRInt32)(v) >> 16) & 0xffff)#define nsMinorVersion(v) ((PRInt32)(v) & 0xffff)#define nsVersionOK(suppliedV, requiredV) \ (nsMajorVersion(suppliedV) == nsMajorVersion(requiredV) \ && nsMinorVersion(suppliedV) >= nsMinorVersion(requiredV))////////////////////////////////////////////////////////////////////////////////// Classes////////////////////////////////////////////////////////////////////////////////// Classes that must be implemented by the plugin DLL:class nsIPlugin; // plugin class (MIME-type handler)class nsIEventHandler; // event handler interfaceclass nsIPluginInstance; // plugin instance// Classes that are implemented by the browser:class nsIPluginManager; // minimum browser requirementsclass nsIFileUtilities; // file utilities (accessible from nsIPluginManager)class nsIPluginInstancePeer; // parts of nsIPluginInstance implemented by the browserclass nsIWindowlessPluginInstancePeer; // subclass of nsIPluginInstancePeer for windowless pluginsclass nsIPluginTagInfo; // describes html tag (accessible from nsIPluginInstancePeer)////////////////////////////////////////////////////////////////////////////////#ifdef XP_MAC#pragma options align=reset#endif#endif /* RC_INVOKED */#ifdef __OS2__#pragma pack()#endif#endif // nsplugindefs_h___
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -