1df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger/*
2df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * Copyright 2009, The Android Open Source Project
3df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger *
4df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * Redistribution and use in source and binary forms, with or without
5df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * modification, are permitted provided that the following conditions
6df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * are met:
7df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger *  * Redistributions of source code must retain the above copyright
8df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger *    notice, this list of conditions and the following disclaimer.
9df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger *  * Redistributions in binary form must reproduce the above copyright
10df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger *    notice, this list of conditions and the following disclaimer in the
11df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger *    documentation and/or other materials provided with the distribution.
12df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger *
13df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger */
25df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
26df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger/*
27df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger IMPORTANT:  This Apple software is supplied to you by Apple Computer, Inc. ("Apple") in
28df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger consideration of your agreement to the following terms, and your use, installation,
29df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger modification or redistribution of this Apple software constitutes acceptance of these
30df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger terms.  If you do not agree with these terms, please do not use, install, modify or
31df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger redistribute this Apple software.
32df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
33df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger In consideration of your agreement to abide by the following terms, and subject to these
34df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger terms, Apple grants you a personal, non-exclusive license, under Apple�s copyrights in
35df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger this original Apple software (the "Apple Software"), to use, reproduce, modify and
36df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger redistribute the Apple Software, with or without modifications, in source and/or binary
37df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger forms; provided that if you redistribute the Apple Software in its entirety and without
38df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger modifications, you must retain this notice and the following text and disclaimers in all
39df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger such redistributions of the Apple Software.  Neither the name, trademarks, service marks
40df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger or logos of Apple Computer, Inc. may be used to endorse or promote products derived from
41df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger the Apple Software without specific prior written permission from Apple. Except as expressly
42df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger stated in this notice, no other rights or licenses, express or implied, are granted by Apple
43df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger herein, including but not limited to any patent rights that may be infringed by your
44df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger derivative works or by other works in which the Apple Software may be incorporated.
45df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
46df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger The Apple Software is provided by Apple on an "AS IS" basis.  APPLE MAKES NO WARRANTIES,
47df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION THE IMPLIED WARRANTIES OF NON-INFRINGEMENT,
48df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE, REGARDING THE APPLE SOFTWARE OR ITS
49df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger USE AND OPERATION ALONE OR IN COMBINATION WITH YOUR PRODUCTS.
50df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
51df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger IN NO EVENT SHALL APPLE BE LIABLE FOR ANY SPECIAL, INDIRECT, INCIDENTAL OR CONSEQUENTIAL
52df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
53df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger          OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) ARISING IN ANY WAY OUT OF THE USE,
54df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger REPRODUCTION, MODIFICATION AND/OR DISTRIBUTION OF THE APPLE SOFTWARE, HOWEVER CAUSED AND
55df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger WHETHER UNDER THEORY OF CONTRACT, TORT (INCLUDING NEGLIGENCE), STRICT LIABILITY OR
56df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger OTHERWISE, EVEN IF APPLE HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
57df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger */
58df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
59df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger#ifndef PluginObject__DEFINED
60df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger#define PluginObject__DEFINED
61df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
62df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger#include "main.h"
63df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
64df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenbergerclass SubPlugin {
65df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenbergerpublic:
66df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    SubPlugin(NPP inst) : m_inst(inst) {}
67df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    virtual ~SubPlugin() {}
68ccee91085913ccb486b063616afae13b53b2e92bBen Murdoch    virtual int16_t handleEvent(const ANPEvent* evt) = 0;
69df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
70df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    NPP inst() const { return m_inst; }
71df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
72df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenbergerprivate:
73df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    NPP m_inst;
74df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger};
75df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
76df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenbergertypedef struct PluginObject {
77df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    NPObject header;
78df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    NPP npp;
79df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    NPWindow* window;
80df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
81df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger    SubPlugin* subPlugin;
82df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
83df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger} PluginObject;
84df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
85df8a3f31d871db25e952972c2eb346a71186e9e3Derek SollenbergerNPClass *getPluginClass(void);
86df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger
87df8a3f31d871db25e952972c2eb346a71186e9e3Derek Sollenberger#endif // PluginObject__DEFINED
88