From fe8031b9cdaa62cd7dd4f4b75a554aca1d481aa8 Mon Sep 17 00:00:00 2001 From: "peterlubczynski%netscape.com" Date: Tue, 27 Nov 2001 22:34:49 +0000 Subject: [PATCH] Plugin SDK changes for Mac Carbon. NOT PART OF BUILD git-svn-id: svn://10.0.0.236/trunk@109035 18797224-902f-48f8-a5cc-f745e15eee43 --- .../sdk/samples/basic/mac/Basic Plugin.mcp | Bin 0 -> 192081 bytes .../tools/sdk/samples/basic/mac/Basic.rsrc | Bin 0 -> 659 bytes .../tools/sdk/samples/basic/mac/plugin.cpp | 180 +++++++++++------- .../tools/sdk/samples/basic/mac/plugin.h | 11 +- .../samples/basic/mac/pluginCarbonPrefix.h | 24 +++ .../sdk/samples/basic/mac/pluginPrefix.h | 2 - 6 files changed, 139 insertions(+), 78 deletions(-) create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/Basic Plugin.mcp create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/Basic.rsrc create mode 100644 mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginCarbonPrefix.h diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/Basic Plugin.mcp b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/Basic Plugin.mcp new file mode 100644 index 0000000000000000000000000000000000000000..0b72c7db8de428455ee128af5ca4a979c8f91c00 GIT binary patch literal 192081 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 literal 0 HcmV?d00001 diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/Basic.rsrc b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/Basic.rsrc new file mode 100644 index 0000000000000000000000000000000000000000..9545e6663be49a3adf1bd21a104a0ee85e43d057 GIT binary patch literal 659 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}077#tF$ z3``?J$=R7HKxJkOb^re>Ffb^C_11&g;b3+Hm -#include "plugin.h" + +#if !TARGET_API_MAC_CARBON +extern QDGlobals* gQDPtr; +#endif ////////////////////////////////////// @@ -94,6 +98,7 @@ NPBool nsPluginInstance::init(NPWindow* aWindow) mWindow = aWindow; mInitialized = TRUE; + mSaveClip = NewRgn(); return TRUE; } @@ -113,16 +118,51 @@ const char * nsPluginInstance::getVersion() return NPN_UserAgent(mInstance); } -CGrafPort gSavePort; -CGrafPtr gOldPort; +///////////////////////////////////////////////////////////// +// +// DrawString +// +void +nsPluginInstance::DrawString(const unsigned char* text, + short width, + short height, + short centerX, + Rect drawRect) +{ + short length, textHeight, textWidth; + + if(text == NULL) + return; + + length = strlen((char*)text); + TextFont(1); + TextFace(bold); + TextMode(srcCopy); + TextSize(12); + + FontInfo fontInfo; + GetFontInfo(&fontInfo); -/*+++++++++++++++++++++++++++++++++++++++++++++++++ - * DoDraw - +++++++++++++++++++++++++++++++++++++++++++++++++*/ + textHeight = fontInfo.ascent + fontInfo.descent + fontInfo.leading; + textWidth = TextWidth(text, 0, length); + + if (width > textWidth && height > textHeight) + { + MoveTo(centerX - (textWidth >> 1), height >> 1); + DrawText(text, 0, length); + } +} + +///////////////////////////////////////////////////////////// +// +// DoDraw - paint +// void nsPluginInstance::DoDraw(void) { Rect drawRect; + RGBColor black = { 0x0000, 0x0000, 0x0000 }; + RGBColor white = { 0xFFFF, 0xFFFF, 0xFFFF }; SInt32 height = mWindow->height; SInt32 width = mWindow->width; SInt32 centerX = (width) >> 1; @@ -131,23 +171,32 @@ nsPluginInstance::DoDraw(void) const char * ua = getVersion(); char* pascalString = (char*) NPN_MemAlloc(strlen(ua) + 1); strcpy(pascalString, ua); - + UInt8 *pTheText = (unsigned char*) ua; + drawRect.top = 0; drawRect.left = 0; drawRect.bottom = drawRect.top + height; drawRect.right = drawRect.left + width; - - EraseRect(&drawRect); + + PenNormal(); + RGBForeColor(&black); + RGBBackColor(&white); + +#if !TARGET_API_MAC_CARBON + FillRect(&drawRect, &(gQDPtr->white)); +#else + Pattern qdWhite; + FillRect(&drawRect, GetQDGlobalsWhite(&qdWhite)); +#endif + FrameRect(&drawRect); - MoveTo( centerX - 0.5 * StringWidth(c2pstr(pascalString)), centerY ); - DrawString(c2pstr(pascalString)); + DrawString(pTheText, width, height, centerX, drawRect); } -/*+++++++++++++++++++++++++++++++++++++++++++++++++ - * PlatformSetWindow - * - * Perform platform-specific window operations - +++++++++++++++++++++++++++++++++++++++++++++++++*/ +///////////////////////////////////////////////////////////// +// +// SetWindow +// NPError nsPluginInstance::SetWindow(NPWindow* window) { @@ -159,11 +208,10 @@ nsPluginInstance::SetWindow(NPWindow* window) return NPERR_NO_ERROR; } -/*+++++++++++++++++++++++++++++++++++++++++++++++++ - * PlatformHandleEvent - * - * Handle platform-specific events. - +++++++++++++++++++++++++++++++++++++++++++++++++*/ +///////////////////////////////////////////////////////////// +// +// HandleEvent +// uint16 nsPluginInstance::HandleEvent(void* event) { @@ -192,70 +240,56 @@ nsPluginInstance::HandleEvent(void* event) return eventHandled; } -/*+++++++++++++++++++++++++++++++++++++++++++++++++ - * StartDraw - +++++++++++++++++++++++++++++++++++++++++++++++++*/ +///////////////////////////////////////////////////////////// +// +// StartDraw - setup port state +// NPBool nsPluginInstance::StartDraw(NPWindow* window) { - NP_Port* port; - Rect clipRect; - RGBColor col; + if (mWindow == NULL) + return false; + + NP_Port* npport = (NP_Port*) mWindow->window; + CGrafPtr ourPort = npport->port; - if (window == NULL) - return FALSE; - port = (NP_Port*) window->window; - if (window->clipRect.left < window->clipRect.right) + if (mWindow->clipRect.left < mWindow->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; + GetPort(&mSavePort); + SetPort((GrafPtr) ourPort); + Rect portRect; +#if !TARGET_API_MAC_CARBON + portRect = ourPort->portRect; +#else + GetPortBounds(ourPort, &portRect); +#endif + mSavePortTop = portRect.top; + mSavePortLeft = portRect.left; + GetClip(mSaveClip); + + mRevealedRect.top = mWindow->clipRect.top + npport->porty; + mRevealedRect.left = mWindow->clipRect.left + npport->portx; + mRevealedRect.bottom = mWindow->clipRect.bottom + npport->porty; + mRevealedRect.right = mWindow->clipRect.right + npport->portx; + SetOrigin(npport->portx, npport->porty); + ClipRect(&mRevealedRect); + + return true; } else - return FALSE; + return false; } -/*+++++++++++++++++++++++++++++++++++++++++++++++++ - * EndDraw - +++++++++++++++++++++++++++++++++++++++++++++++++*/ +///////////////////////////////////////////////////////////// +// +// EndDraw - restore port state +// 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); + SetOrigin(mSavePortLeft, mSavePortTop); + SetClip(mSaveClip); + SetPort(mSavePort); } diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h index b55c2845e72..9991add8dec 100644 --- a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h +++ b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/plugin.h @@ -52,17 +52,22 @@ public: NPError SetWindow(NPWindow* pNPWindow); uint16 HandleEvent(void* event); +private: // locals const char * getVersion(); void DoDraw(); - NPWindow * mWindow; - -private: NPBool StartDraw(NPWindow* window); void EndDraw(NPWindow* window); + void DrawString(const unsigned char* text, short width, short height, short centerX, Rect drawRect); + NPWindow * mWindow; NPP mInstance; NPBool mInitialized; + GrafPtr mSavePort; + RgnHandle mSaveClip; + Rect mRevealedRect; + short mSavePortTop; + short mSavePortLeft; }; #endif // __PLUGIN_H__ diff --git a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginCarbonPrefix.h b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginCarbonPrefix.h new file mode 100644 index 00000000000..d97f591353d --- /dev/null +++ b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginCarbonPrefix.h @@ -0,0 +1,24 @@ +/* -*- 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): + */ + +#define XP_MAC 1 +#define TARGET_CARBON 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 index 0afe657027b..7c398a5d7e9 100644 --- a/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginPrefix.h +++ b/mozilla/modules/plugin/tools/sdk/samples/basic/mac/pluginPrefix.h @@ -20,6 +20,4 @@ * Contributor(s): */ -// #include "MacSharedPrefix.h" - #define XP_MAC 1