blob: 7e6f23540c567cbaeb2c0a37dc0195f3f56a82a7 [file] [log] [blame]
Derek Sollenberger4fb83e62009-07-27 16:40:13 -04001/*
2 * Copyright 2009, The Android Open Source Project
3 *
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions
6 * are met:
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 *
13 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS ``AS IS'' AND ANY
14 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16 * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17 * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18 * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19 * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20 * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21 * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23 * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
24 */
25
26#include "PluginObject.h"
27#include <stdio.h>
28
29#ifndef paintPlugin__DEFINED
30#define paintPlugin__DEFINED
31
32class PaintPlugin : public SubPlugin {
33public:
34 PaintPlugin(NPP inst);
35 virtual ~PaintPlugin();
36 virtual bool supportsDrawingModel(ANPDrawingModel);
37 virtual int16 handleEvent(const ANPEvent* evt);
38private:
39 void drawCleanPlugin(ANPCanvas* canvas = NULL);
40 ANPCanvas* getCanvas(ANPRectI* dirtyRect = NULL);
41 ANPCanvas* getCanvas(ANPRectF* dirtyRect);
42 const char* getColorText();
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040043 void paintMouse(int x, int y);
44 void paintTouch();
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040045 void releaseCanvas(ANPCanvas*);
46 void toggleInputMethod();
47 void togglePaintColor();
48 ANPRectF* validTouch(int x, int y);
49
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040050 bool m_isTouchActive;
51 bool m_isTouchCurrentInput;
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040052 bool m_surfaceReady;
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040053
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040054 ANPSurface* m_surface;
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040055 ANPPath* m_touchPath;
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040056
57 ANPRectF m_drawingSurface;
58 ANPRectF m_inputToggle;
59 ANPRectF m_colorToggle;
60 ANPRectF m_clearSurface;
61
62 ANPPaint* m_paintSurface;
63 ANPPaint* m_paintButton;
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040064
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040065 ANPColor m_activePaintColor;
66 static const ANPColor s_redColor = 0xFFFF0000;
67 static const ANPColor s_greenColor = 0xFF00FF00;
68 static const ANPColor s_blueColor = 0xFF0000FF;
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040069};
70
71#endif // paintPlugin__DEFINED