From e97395ee575a22df78bc317fff36d86de89245e5 Mon Sep 17 00:00:00 2001 From: "peterlubczynski%netscape.com" Date: Wed, 17 Oct 2001 23:37:52 +0000 Subject: [PATCH] Plugin SDK basic plugin port for Mac initial check-in. not part of the build git-svn-id: svn://10.0.0.236/trunk@105650 18797224-902f-48f8-a5cc-f745e15eee43 --- .../tools/sdk/samples/basic/mac/Simple.rsrc | Bin 0 -> 677 bytes .../tools/sdk/samples/basic/mac/npbasic.mcp | Bin 0 -> 155281 bytes .../tools/sdk/samples/basic/mac/plugin.cpp | 259 ++++++++++++++++++ .../tools/sdk/samples/basic/mac/plugin.h | 68 +++++ .../sdk/samples/basic/mac/pluginDebugPrefix.h | 26 ++ .../sdk/samples/basic/mac/pluginPrefix.h | 25 ++ 6 files changed, 378 insertions(+) create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/Simple.rsrc create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/npbasic.mcp create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.cpp create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginDebugPrefix.h create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginPrefix.h diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/Simple.rsrc b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/Simple.rsrc new file mode 100644 index 0000000000000000000000000000000000000000..f59b800f34dfe563674548729cf1a769a7f9e992 GIT binary patch literal 677 zcmZQz6=PsvV!#Bdm6P;ij5OMYoOBg20n0199c z0g1wZf%_WfPr(o#6dfe8H5Z#-ZS>5|Ch~>chaI;Kq}|z|3xz zrsA}UK}JK1K`22?pT%$2Jq9fXuhxkET$bBFaRnC*0k4*{XBu8AK?+=H$H4j-7}n_t z>AL^_qvoaIo*?0ruFs>-t)V$SF}3U|>>k0tqX)RwRP_uMhy1R!GY)Qt-{M%FM}0H7Cfh#;Ij`D zK&S#SBG|=y7u2@mU64@U<(rtCnOBluoUx06%P}W48RU%IBnC!92IP2w84rqlM9c>J z2Zb;)F*Gp9FvKx128RSG15=Gqa&~44P?;G+-T(gz3=GO(z4c&rIGEi4W`mhPy&#Y- cV->B!7f_U+m6}`v^uJ4DNg`%404s$P0G8dQ1ONa4 literal 0 HcmV?d00001 diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/npbasic.mcp b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/npbasic.mcp new file mode 100644 index 0000000000000000000000000000000000000000..d326b3e74059c169b0ccebe3214a63d00c11aa2f GIT binary patch literal 155281 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 literal 0 HcmV?d00001 diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.cpp b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.cpp new file mode 100644 index 00000000000..98ae1b88758 --- /dev/null +++ b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.cpp @@ -0,0 +1,259 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: NPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 NPL, 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 NPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + + +#include +#include "plugin.h" + + +////////////////////////////////////// +// +// general initialization and shutdown +// +NPError NS_PluginInitialize() +{ + return NPERR_NO_ERROR; +} + +void NS_PluginShutdown() +{ +} + +///////////////////////////////////////////////////////////// +// +// construction and destruction of our plugin instance object +// +nsPluginInstanceBase * NS_NewPluginInstance(NPP aInstance) +{ + nsPluginInstance * plugin = new nsPluginInstance(aInstance); + return plugin; +} + +void NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin) +{ + if(aPlugin) + delete aPlugin; +} + +//////////////////////////////////////// +// +// nsPluginInstance class implementation +// +nsPluginInstance::nsPluginInstance(NPP aInstance) : nsPluginInstanceBase(), + mInstance(aInstance), + mInitialized(FALSE) +{ + mWindow = NULL; +} + +nsPluginInstance::~nsPluginInstance() +{ +} + +NPBool nsPluginInstance::init(NPWindow* aWindow) +{ + if(aWindow == NULL) + return FALSE; + + mWindow = aWindow; + mInitialized = TRUE; + return TRUE; +} + +void nsPluginInstance::shut() +{ + mWindow = NULL; + mInitialized = FALSE; +} + +NPBool nsPluginInstance::isInitialized() +{ + return mInitialized; +} + +const char * nsPluginInstance::getVersion() +{ + return NPN_UserAgent(mInstance); +} + +CGrafPort gSavePort; +CGrafPtr gOldPort; + +/*+++++++++++++++++++++++++++++++++++++++++++++++++ + * DoDraw + +++++++++++++++++++++++++++++++++++++++++++++++++*/ +void +nsPluginInstance::DoDraw(void) +{ + Rect drawRect; + SInt32 height = mWindow->height; + SInt32 width = mWindow->width; + SInt32 centerX = (width) >> 1; + SInt32 centerY = (height) >> 1; + + const char * ua = getVersion(); + char* pascalString = (char*) NPN_MemAlloc(strlen(ua) + 1); + strcpy(pascalString, ua); + + drawRect.top = 0; + drawRect.left = 0; + drawRect.bottom = drawRect.top + height; + drawRect.right = drawRect.left + width; + + EraseRect(&drawRect); + FrameRect(&drawRect); + MoveTo( centerX - 0.5 * StringWidth(c2pstr(pascalString)), centerY ); + DrawString(c2pstr(pascalString)); +} + +/*+++++++++++++++++++++++++++++++++++++++++++++++++ + * PlatformSetWindow + * + * Perform platform-specific window operations + +++++++++++++++++++++++++++++++++++++++++++++++++*/ +NPError +nsPluginInstance::SetWindow(NPWindow* window) +{ + mWindow = window; + if( StartDraw(window) ) { + DoDraw(); + EndDraw(window); + } + return NPERR_NO_ERROR; +} + +/*+++++++++++++++++++++++++++++++++++++++++++++++++ + * PlatformHandleEvent + * + * Handle platform-specific events. + +++++++++++++++++++++++++++++++++++++++++++++++++*/ +uint16 +nsPluginInstance::HandleEvent(void* event) +{ + int16 eventHandled = FALSE; + + EventRecord* ev = (EventRecord*) event; + if (event != NULL) + { + switch (ev->what) + { + /* + * Draw ourselves on update events + */ + case updateEvt: + if( StartDraw(mWindow) ) { + DoDraw(); + EndDraw(mWindow); + } + eventHandled = true; + break; + + default: + break; + } + } + return eventHandled; +} + +/*+++++++++++++++++++++++++++++++++++++++++++++++++ + * StartDraw + +++++++++++++++++++++++++++++++++++++++++++++++++*/ +NPBool +nsPluginInstance::StartDraw(NPWindow* window) +{ + NP_Port* port; + Rect clipRect; + RGBColor col; + + if (window == NULL) + return FALSE; + port = (NP_Port*) window->window; + if (window->clipRect.left < window->clipRect.right) + { + /* Preserve the old port */ + GetPort((GrafPtr*)&gOldPort); + SetPort((GrafPtr)port->port); + /* Preserve the old drawing environment */ + gSavePort.portRect = port->port->portRect; + gSavePort.txFont = port->port->txFont; + gSavePort.txFace = port->port->txFace; + gSavePort.txMode = port->port->txMode; + gSavePort.rgbFgColor = port->port->rgbFgColor; + gSavePort.rgbBkColor = port->port->rgbBkColor; + GetClip(gSavePort.clipRgn); + /* Setup our drawing environment */ + clipRect.top = window->clipRect.top + port->porty; + clipRect.left = window->clipRect.left + port->portx; + clipRect.bottom = window->clipRect.bottom + port->porty; + clipRect.right = window->clipRect.right + port->portx; + SetOrigin(port->portx,port->porty); + ClipRect(&clipRect); + clipRect.top = clipRect.left = 0; + TextSize(12); + TextFont(20); + TextMode(srcCopy); + col.red = col.green = col.blue = 0; + RGBForeColor(&col); + col.red = col.green = col.blue = 65000; + RGBBackColor(&col); + return TRUE; + } + else + return FALSE; +} + +/*+++++++++++++++++++++++++++++++++++++++++++++++++ + * EndDraw + +++++++++++++++++++++++++++++++++++++++++++++++++*/ +void +nsPluginInstance::EndDraw(NPWindow* window) +{ + CGrafPtr myPort; + NP_Port* port = (NP_Port*) window->window; + SetOrigin(gSavePort.portRect.left, gSavePort.portRect.top); + SetClip(gSavePort.clipRgn); + GetPort((GrafPtr*)&myPort); + myPort->txFont = gSavePort.txFont; + myPort->txFace = gSavePort.txFace; + myPort->txMode = gSavePort.txMode; + RGBForeColor(&gSavePort.rgbFgColor); + RGBBackColor(&gSavePort.rgbBkColor); + SetPort((GrafPtr)gOldPort); +} + + + diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h new file mode 100644 index 00000000000..b55c2845e72 --- /dev/null +++ b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h @@ -0,0 +1,68 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ +/* ***** BEGIN LICENSE BLOCK ***** + * Version: NPL 1.1/GPL 2.0/LGPL 2.1 + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 NPL, 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 NPL, the GPL or the LGPL. + * + * ***** END LICENSE BLOCK ***** */ + +#ifndef __PLUGIN_H__ +#define __PLUGIN_H__ + +#include "pluginbase.h" + +class nsPluginInstance : public nsPluginInstanceBase +{ +public: + nsPluginInstance(NPP aInstance); + ~nsPluginInstance(); + + NPBool init(NPWindow* aWindow); + void shut(); + NPBool isInitialized(); + NPError SetWindow(NPWindow* pNPWindow); + uint16 HandleEvent(void* event); + + // locals + const char * getVersion(); + void DoDraw(); + NPWindow * mWindow; + +private: + NPBool StartDraw(NPWindow* window); + void EndDraw(NPWindow* window); + + NPP mInstance; + NPBool mInitialized; +}; + +#endif // __PLUGIN_H__ diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginDebugPrefix.h b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginDebugPrefix.h new file mode 100644 index 00000000000..0507fa31db8 --- /dev/null +++ b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginDebugPrefix.h @@ -0,0 +1,26 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ + +// #include "MacSharedPrefix_debug.h" + +#define XP_MAC 1 + diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginPrefix.h b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginPrefix.h new file mode 100644 index 00000000000..0afe657027b --- /dev/null +++ b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginPrefix.h @@ -0,0 +1,25 @@ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- + * + * The contents of this file are subject to the Netscape 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/NPL/ + * + * 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 Netscape are + * Copyright (C) 1998 Netscape Communications Corporation. All + * Rights Reserved. + * + * Contributor(s): + */ + +// #include "MacSharedPrefix.h" + +#define XP_MAC 1