updating the sample plugin to reflect the latest changes in android_npapi.h
This commit is contained in:
@@ -35,7 +35,6 @@ LOCAL_SRC_FILES := \
|
|||||||
background/BackgroundPlugin.cpp \
|
background/BackgroundPlugin.cpp \
|
||||||
form/FormPlugin.cpp \
|
form/FormPlugin.cpp \
|
||||||
paint/PaintPlugin.cpp \
|
paint/PaintPlugin.cpp \
|
||||||
surface/SurfacePlugin.cpp \
|
|
||||||
|
|
||||||
LOCAL_C_INCLUDES += \
|
LOCAL_C_INCLUDES += \
|
||||||
$(LOCAL_PATH) \
|
$(LOCAL_PATH) \
|
||||||
@@ -44,7 +43,6 @@ LOCAL_C_INCLUDES += \
|
|||||||
$(LOCAL_PATH)/background \
|
$(LOCAL_PATH)/background \
|
||||||
$(LOCAL_PATH)/form \
|
$(LOCAL_PATH)/form \
|
||||||
$(LOCAL_PATH)/paint \
|
$(LOCAL_PATH)/paint \
|
||||||
$(LOCAL_PATH)/surface \
|
|
||||||
external/webkit/WebCore/bridge \
|
external/webkit/WebCore/bridge \
|
||||||
external/webkit/WebCore/plugins \
|
external/webkit/WebCore/plugins \
|
||||||
external/webkit/WebCore/platform/android/JavaVM \
|
external/webkit/WebCore/platform/android/JavaVM \
|
||||||
|
|||||||
@@ -56,7 +56,6 @@ enum PluginTypes {
|
|||||||
kForm_PluginType = 4,
|
kForm_PluginType = 4,
|
||||||
kText_PluginType = 5,
|
kText_PluginType = 5,
|
||||||
kPaint_PluginType = 6,
|
kPaint_PluginType = 6,
|
||||||
kSurface_PluginType = 7,
|
|
||||||
};
|
};
|
||||||
typedef uint32_t PluginType;
|
typedef uint32_t PluginType;
|
||||||
|
|
||||||
|
|||||||
@@ -34,10 +34,10 @@
|
|||||||
|
|
||||||
extern NPNetscapeFuncs* browser;
|
extern NPNetscapeFuncs* browser;
|
||||||
extern ANPBitmapInterfaceV0 gBitmapI;
|
extern ANPBitmapInterfaceV0 gBitmapI;
|
||||||
extern ANPLogInterfaceV0 gLogI;
|
|
||||||
extern ANPCanvasInterfaceV0 gCanvasI;
|
extern ANPCanvasInterfaceV0 gCanvasI;
|
||||||
|
extern ANPLogInterfaceV0 gLogI;
|
||||||
extern ANPPaintInterfaceV0 gPaintI;
|
extern ANPPaintInterfaceV0 gPaintI;
|
||||||
extern ANPPathInterfaceV0 gPathI;
|
extern ANPSurfaceInterfaceV0 gSurfaceI;
|
||||||
extern ANPTypefaceInterfaceV0 gTypefaceI;
|
extern ANPTypefaceInterfaceV0 gTypefaceI;
|
||||||
|
|
||||||
extern uint32_t getMSecs();
|
extern uint32_t getMSecs();
|
||||||
@@ -50,16 +50,13 @@ extern uint32_t getMSecs();
|
|||||||
|
|
||||||
BackgroundPlugin::BackgroundPlugin(NPP inst) : SubPlugin(inst) {
|
BackgroundPlugin::BackgroundPlugin(NPP inst) : SubPlugin(inst) {
|
||||||
|
|
||||||
m_paint = gPaintI.newPaint();
|
// initialize the drawing surface
|
||||||
gPaintI.setFlags(m_paint, gPaintI.getFlags(m_paint) | kAntiAlias_ANPPaintFlag);
|
m_surfaceReady = false;
|
||||||
gPaintI.setColor(m_paint, 0xFFFF0000);
|
m_surface = gSurfaceI.newSurface(inst, kRGBA_ANPSurfaceType, false);
|
||||||
gPaintI.setTextSize(m_paint, 16);
|
if(!m_surface)
|
||||||
|
gLogI.log(inst, kError_ANPLogType, "----%p Unable to create RGBA surface", inst);
|
||||||
|
|
||||||
ANPTypeface* tf = gTypefaceI.createFromName("serif", kItalic_ANPTypefaceStyle);
|
//initialize bitmap transparency variables
|
||||||
gPaintI.setTypeface(m_paint, tf);
|
|
||||||
gTypefaceI.unref(tf);
|
|
||||||
|
|
||||||
//initialize variables
|
|
||||||
mFinishedStageOne = false;
|
mFinishedStageOne = false;
|
||||||
mFinishedStageTwo = false;
|
mFinishedStageTwo = false;
|
||||||
mFinishedStageThree = false;
|
mFinishedStageThree = false;
|
||||||
@@ -73,55 +70,97 @@ BackgroundPlugin::BackgroundPlugin(NPP inst) : SubPlugin(inst) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
BackgroundPlugin::~BackgroundPlugin() {
|
BackgroundPlugin::~BackgroundPlugin() {
|
||||||
|
gSurfaceI.deleteSurface(m_surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool BackgroundPlugin::supportsDrawingModel(ANPDrawingModel model) {
|
bool BackgroundPlugin::supportsDrawingModel(ANPDrawingModel model) {
|
||||||
return (model == kBitmap_ANPDrawingModel);
|
return (model == kSurface_ANPDrawingModel);
|
||||||
}
|
}
|
||||||
|
|
||||||
void BackgroundPlugin::drawPlugin(const ANPBitmap& bitmap, const ANPRectI& clip) {
|
void BackgroundPlugin::drawPlugin(int surfaceWidth, int surfaceHeight) {
|
||||||
|
|
||||||
|
// get the plugin's dimensions according to the DOM
|
||||||
|
PluginObject *obj = (PluginObject*) inst()->pdata;
|
||||||
|
const int W = obj->window->width;
|
||||||
|
const int H = obj->window->height;
|
||||||
|
|
||||||
|
// compute the current zoom level
|
||||||
|
const float zoomFactorW = static_cast<float>(surfaceWidth) / W;
|
||||||
|
const float zoomFactorH = static_cast<float>(surfaceHeight) / H;
|
||||||
|
|
||||||
|
// check to make sure the zoom level is uniform
|
||||||
|
if (zoomFactorW + .01 < zoomFactorH && zoomFactorW - .01 > zoomFactorH)
|
||||||
|
gLogI.log(inst(), kError_ANPLogType, " ------ %p zoom is out of sync (%f,%f)",
|
||||||
|
inst(), zoomFactorW, zoomFactorH);
|
||||||
|
|
||||||
|
// scale the variables based on the zoom level
|
||||||
|
const int fontSize = (int)(zoomFactorW * 16);
|
||||||
|
const int leftMargin = (int)(zoomFactorW * 10);
|
||||||
|
|
||||||
|
// lock the surface
|
||||||
|
ANPBitmap bitmap;
|
||||||
|
if (!m_surfaceReady || !gSurfaceI.lock(m_surface, &bitmap, NULL)) {
|
||||||
|
gLogI.log(inst(), kError_ANPLogType, " ------ %p unable to lock the plugin", inst());
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// create a canvas
|
||||||
ANPCanvas* canvas = gCanvasI.newCanvas(&bitmap);
|
ANPCanvas* canvas = gCanvasI.newCanvas(&bitmap);
|
||||||
|
|
||||||
ANPRectF clipR;
|
|
||||||
clipR.left = clip.left;
|
|
||||||
clipR.top = clip.top;
|
|
||||||
clipR.right = clip.right;
|
|
||||||
clipR.bottom = clip.bottom;
|
|
||||||
gCanvasI.clipRect(canvas, &clipR);
|
|
||||||
|
|
||||||
draw(canvas);
|
|
||||||
gCanvasI.deleteCanvas(canvas);
|
|
||||||
}
|
|
||||||
|
|
||||||
void BackgroundPlugin::draw(ANPCanvas* canvas) {
|
|
||||||
|
|
||||||
gCanvasI.drawColor(canvas, 0xFFFFFFFF);
|
gCanvasI.drawColor(canvas, 0xFFFFFFFF);
|
||||||
|
|
||||||
ANPFontMetrics fm;
|
ANPPaint* paint = gPaintI.newPaint();
|
||||||
gPaintI.getFontMetrics(m_paint, &fm);
|
gPaintI.setFlags(paint, gPaintI.getFlags(paint) | kAntiAlias_ANPPaintFlag);
|
||||||
|
gPaintI.setColor(paint, 0xFFFF0000);
|
||||||
|
gPaintI.setTextSize(paint, fontSize);
|
||||||
|
|
||||||
gPaintI.setColor(m_paint, 0xFF0000FF);
|
ANPTypeface* tf = gTypefaceI.createFromName("serif", kItalic_ANPTypefaceStyle);
|
||||||
|
gPaintI.setTypeface(paint, tf);
|
||||||
|
gTypefaceI.unref(tf);
|
||||||
|
|
||||||
|
ANPFontMetrics fm;
|
||||||
|
gPaintI.getFontMetrics(paint, &fm);
|
||||||
|
|
||||||
|
gPaintI.setColor(paint, 0xFF0000FF);
|
||||||
const char c[] = "This is a background plugin.";
|
const char c[] = "This is a background plugin.";
|
||||||
gCanvasI.drawText(canvas, c, sizeof(c)-1, 10, -fm.fTop, m_paint);
|
gCanvasI.drawText(canvas, c, sizeof(c)-1, leftMargin, -fm.fTop, paint);
|
||||||
|
|
||||||
|
// clean up variables and unlock the surface
|
||||||
|
gPaintI.deletePaint(paint);
|
||||||
|
gCanvasI.deleteCanvas(canvas);
|
||||||
|
gSurfaceI.unlock(m_surface);
|
||||||
}
|
}
|
||||||
|
|
||||||
int16 BackgroundPlugin::handleEvent(const ANPEvent* evt) {
|
int16 BackgroundPlugin::handleEvent(const ANPEvent* evt) {
|
||||||
NPP instance = this->inst();
|
|
||||||
|
|
||||||
switch (evt->eventType) {
|
switch (evt->eventType) {
|
||||||
case kDraw_ANPEventType:
|
case kDraw_ANPEventType:
|
||||||
switch (evt->data.draw.model) {
|
gLogI.log(inst(), kError_ANPLogType, " ------ %p the plugin did not request draw events", inst());
|
||||||
case kBitmap_ANPDrawingModel:
|
break;
|
||||||
test_bitmap_transparency(evt);
|
case kSurface_ANPEventType:
|
||||||
drawPlugin(evt->data.draw.data.bitmap, evt->data.draw.clip);
|
switch (evt->data.surface.action) {
|
||||||
|
case kCreated_ANPSurfaceAction:
|
||||||
|
m_surfaceReady = true;
|
||||||
|
return 1;
|
||||||
|
case kDestroyed_ANPSurfaceAction:
|
||||||
|
m_surfaceReady = false;
|
||||||
|
return 1;
|
||||||
|
case kChanged_ANPSurfaceAction:
|
||||||
|
drawPlugin(evt->data.surface.data.changed.width,
|
||||||
|
evt->data.surface.data.changed.height);
|
||||||
return 1;
|
return 1;
|
||||||
default:
|
|
||||||
break; // unknown drawing model
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
|
case kLifecycle_ANPEventType:
|
||||||
|
if (evt->data.lifecycle.action == kOnLoad_ANPLifecycleAction) {
|
||||||
|
gLogI.log(inst(), kDebug_ANPLogType, " ------ %p the plugin received an onLoad event", inst());
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
break;
|
||||||
case kTouch_ANPEventType:
|
case kTouch_ANPEventType:
|
||||||
gLogI.log(instance, kError_ANPLogType, " ------ %p the plugin did not request touch events", instance);
|
gLogI.log(inst(), kError_ANPLogType, " ------ %p the plugin did not request touch events", inst());
|
||||||
|
break;
|
||||||
case kKey_ANPEventType:
|
case kKey_ANPEventType:
|
||||||
gLogI.log(instance, kError_ANPLogType, " ------ %p the plugin did not request key events", instance);
|
gLogI.log(inst(), kError_ANPLogType, " ------ %p the plugin did not request key events", inst());
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -48,10 +48,10 @@ public:
|
|||||||
bool mFinishedStageThree; // check opaque
|
bool mFinishedStageThree; // check opaque
|
||||||
|
|
||||||
private:
|
private:
|
||||||
void draw(ANPCanvas*);
|
void drawPlugin(int surfaceWidth, int surfaceHeight);
|
||||||
void drawPlugin(const ANPBitmap& bitmap, const ANPRectI& clip);
|
|
||||||
|
|
||||||
ANPPaint* m_paint;
|
bool m_surfaceReady;
|
||||||
|
ANPSurface* m_surface;
|
||||||
|
|
||||||
void test_logging();
|
void test_logging();
|
||||||
void test_timers();
|
void test_timers();
|
||||||
|
|||||||
@@ -303,6 +303,7 @@ bool FormPlugin::handleNavigation(ANPKeyCode keyCode) {
|
|||||||
gLogI.log(instance, kDebug_ANPLogType, "----%p Recvd Nav Key %d", instance, keyCode);
|
gLogI.log(instance, kDebug_ANPLogType, "----%p Recvd Nav Key %d", instance, keyCode);
|
||||||
|
|
||||||
if (!m_activeInput) {
|
if (!m_activeInput) {
|
||||||
|
gWindowI.showKeyboard(instance, true);
|
||||||
switchActiveInput(&m_usernameInput);
|
switchActiveInput(&m_usernameInput);
|
||||||
}
|
}
|
||||||
else if (m_activeInput == &m_usernameInput) {
|
else if (m_activeInput == &m_usernameInput) {
|
||||||
|
|||||||
@@ -33,7 +33,6 @@
|
|||||||
#include "BackgroundPlugin.h"
|
#include "BackgroundPlugin.h"
|
||||||
#include "FormPlugin.h"
|
#include "FormPlugin.h"
|
||||||
#include "PaintPlugin.h"
|
#include "PaintPlugin.h"
|
||||||
#include "SurfacePlugin.h"
|
|
||||||
#include "android_npapi.h"
|
#include "android_npapi.h"
|
||||||
|
|
||||||
NPNetscapeFuncs* browser;
|
NPNetscapeFuncs* browser;
|
||||||
@@ -213,10 +212,6 @@ NPError NPP_New(NPMIMEType pluginType, NPP instance, uint16 mode, int16 argc,
|
|||||||
obj->pluginType = kPaint_PluginType;
|
obj->pluginType = kPaint_PluginType;
|
||||||
obj->activePlugin = new PaintPlugin(instance);
|
obj->activePlugin = new PaintPlugin(instance);
|
||||||
}
|
}
|
||||||
else if (!strcmp(argv[i], "RGBA_Surface")) {
|
|
||||||
obj->pluginType = kSurface_PluginType;
|
|
||||||
obj->activePlugin = new SurfacePlugin(instance, kRGBA_ANPSurfaceType);
|
|
||||||
}
|
|
||||||
gLogI.log(instance, kDebug_ANPLogType, "------ %p PluginType is %d", instance, obj->pluginType);
|
gLogI.log(instance, kDebug_ANPLogType, "------ %p PluginType is %d", instance, obj->pluginType);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ PaintPlugin::PaintPlugin(NPP inst) : SubPlugin(inst) {
|
|||||||
|
|
||||||
// initialize the drawing surface
|
// initialize the drawing surface
|
||||||
m_surfaceReady = false;
|
m_surfaceReady = false;
|
||||||
m_surface = gSurfaceI.newSurface(inst, kRGBA_ANPSurfaceType);
|
m_surface = gSurfaceI.newSurface(inst, kRGBA_ANPSurfaceType, true);
|
||||||
if(!m_surface)
|
if(!m_surface)
|
||||||
gLogI.log(inst, kError_ANPLogType, "----%p Unable to create RGBA surface", inst);
|
gLogI.log(inst, kError_ANPLogType, "----%p Unable to create RGBA surface", inst);
|
||||||
|
|
||||||
@@ -219,6 +219,19 @@ int16 PaintPlugin::handleEvent(const ANPEvent* evt) {
|
|||||||
case kDestroyed_ANPSurfaceAction:
|
case kDestroyed_ANPSurfaceAction:
|
||||||
m_surfaceReady = false;
|
m_surfaceReady = false;
|
||||||
return 1;
|
return 1;
|
||||||
|
case kChanged_ANPSurfaceAction:
|
||||||
|
// get the plugin's dimensions according to the DOM
|
||||||
|
PluginObject *obj = (PluginObject*) inst()->pdata;
|
||||||
|
const int pW = obj->window->width;
|
||||||
|
const int pH = obj->window->height;
|
||||||
|
// get the plugin's surface dimensions
|
||||||
|
const int sW = evt->data.surface.data.changed.width;
|
||||||
|
const int sH = evt->data.surface.data.changed.height;
|
||||||
|
if (pW != sW || pH != sH)
|
||||||
|
gLogI.log(inst(), kError_ANPLogType,
|
||||||
|
"----%p Invalid Surface Dimensions (%d,%d):(%d,%d)",
|
||||||
|
inst(), pW, pH, sW, sH);
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
|||||||
@@ -1,88 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2009, The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "SurfacePlugin.h"
|
|
||||||
|
|
||||||
#include <stdio.h>
|
|
||||||
#include <sys/time.h>
|
|
||||||
#include <time.h>
|
|
||||||
#include <math.h>
|
|
||||||
#include <string.h>
|
|
||||||
|
|
||||||
extern NPNetscapeFuncs* browser;
|
|
||||||
extern ANPLogInterfaceV0 gLogI;
|
|
||||||
extern ANPPaintInterfaceV0 gPaintI;
|
|
||||||
extern ANPSurfaceInterfaceV0 gSurfaceI;
|
|
||||||
extern ANPTypefaceInterfaceV0 gTypefaceI;
|
|
||||||
extern ANPWindowInterfaceV0 gWindowI;
|
|
||||||
|
|
||||||
///////////////////////////////////////////////////////////////////////////////
|
|
||||||
|
|
||||||
SurfacePlugin::SurfacePlugin(NPP inst, ANPSurfaceType surfaceType) : SubPlugin(inst) {
|
|
||||||
|
|
||||||
m_surface = gSurfaceI.newSurface(inst, surfaceType);
|
|
||||||
|
|
||||||
if(!m_surface)
|
|
||||||
gLogI.log(inst, kError_ANPLogType, "----%p Unable to create surface (%d)", inst, surfaceType);
|
|
||||||
}
|
|
||||||
|
|
||||||
SurfacePlugin::~SurfacePlugin() {
|
|
||||||
if (m_surface)
|
|
||||||
gSurfaceI.deleteSurface(m_surface);
|
|
||||||
}
|
|
||||||
|
|
||||||
bool SurfacePlugin::supportsDrawingModel(ANPDrawingModel model) {
|
|
||||||
return (model == kSurface_ANPDrawingModel);
|
|
||||||
}
|
|
||||||
|
|
||||||
void SurfacePlugin::draw() {
|
|
||||||
NPP instance = this->inst();
|
|
||||||
PluginObject *obj = (PluginObject*) instance->pdata;
|
|
||||||
|
|
||||||
ANPBitmap bitmap;
|
|
||||||
|
|
||||||
bool value = gSurfaceI.lock(m_surface, &bitmap, NULL);
|
|
||||||
gLogI.log(instance, kDebug_ANPLogType, "----%p locking: %b", instance, value);
|
|
||||||
gSurfaceI.unlock(m_surface);
|
|
||||||
}
|
|
||||||
|
|
||||||
int16 SurfacePlugin::handleEvent(const ANPEvent* evt) {
|
|
||||||
NPP instance = this->inst();
|
|
||||||
|
|
||||||
switch (evt->eventType) {
|
|
||||||
case kDraw_ANPEventType:
|
|
||||||
switch (evt->data.draw.model) {
|
|
||||||
case kSurface_ANPDrawingModel:
|
|
||||||
if (m_surface)
|
|
||||||
draw();
|
|
||||||
return 1;
|
|
||||||
default:
|
|
||||||
break; // unknown drawing model
|
|
||||||
}
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return 0; // unknown or unhandled event
|
|
||||||
}
|
|
||||||
@@ -1,42 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright 2009, The Android Open Source Project
|
|
||||||
*
|
|
||||||
* Redistribution and use in source and binary forms, with or without
|
|
||||||
* modification, are permitted provided that the following conditions
|
|
||||||
* are met:
|
|
||||||
* * Redistributions of source code must retain the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer.
|
|
||||||
* * Redistributions in binary form must reproduce the above copyright
|
|
||||||
* notice, this list of conditions and the following disclaimer in the
|
|
||||||
* documentation and/or other materials provided with the distribution.
|
|
||||||
*
|
|
||||||
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
|
|
||||||
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
|
|
||||||
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
|
|
||||||
* PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
|
|
||||||
* CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
|
|
||||||
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
|
|
||||||
* PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
|
|
||||||
* PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
|
|
||||||
* OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
|
||||||
* (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
|
||||||
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
|
||||||
*/
|
|
||||||
|
|
||||||
#include "PluginObject.h"
|
|
||||||
|
|
||||||
#ifndef surfacePlugin__DEFINED
|
|
||||||
#define surfacePlugin__DEFINED
|
|
||||||
|
|
||||||
class SurfacePlugin : public SubPlugin {
|
|
||||||
public:
|
|
||||||
SurfacePlugin(NPP inst, ANPSurfaceType surfaceType);
|
|
||||||
virtual ~SurfacePlugin();
|
|
||||||
virtual bool supportsDrawingModel(ANPDrawingModel);
|
|
||||||
virtual int16 handleEvent(const ANPEvent* evt);
|
|
||||||
private:
|
|
||||||
void draw();
|
|
||||||
ANPSurface* m_surface;
|
|
||||||
|
|
||||||
};
|
|
||||||
#endif // surfacePlugin__DEFINED
|
|
||||||
Reference in New Issue
Block a user