blob: 4867a706abcda004e48f4329ff0218470029d4c0 [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
Derek Sollenberger08581f12009-09-08 18:36:29 -040032class PaintPlugin : public SurfaceSubPlugin {
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040033public:
34 PaintPlugin(NPP inst);
35 virtual ~PaintPlugin();
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040036 virtual int16 handleEvent(const ANPEvent* evt);
Derek Sollenbergerd53b56d2010-01-11 12:31:49 -050037 virtual jobject getSurface();
Derek Sollenberger08581f12009-09-08 18:36:29 -040038
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040039private:
40 void drawCleanPlugin(ANPCanvas* canvas = NULL);
41 ANPCanvas* getCanvas(ANPRectI* dirtyRect = NULL);
42 ANPCanvas* getCanvas(ANPRectF* dirtyRect);
43 const char* getColorText();
Derek Sollenbergerd53b56d2010-01-11 12:31:49 -050044 void destroySurface();
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040045 void paintMouse(int x, int y);
46 void paintTouch();
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040047 void releaseCanvas(ANPCanvas*);
48 void toggleInputMethod();
49 void togglePaintColor();
50 ANPRectF* validTouch(int x, int y);
51
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040052 bool m_isTouchActive;
53 bool m_isTouchCurrentInput;
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040054
Derek Sollenberger08581f12009-09-08 18:36:29 -040055 jobject m_surface;
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040056 ANPPath* m_touchPath;
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040057
58 ANPRectF m_drawingSurface;
59 ANPRectF m_inputToggle;
60 ANPRectF m_colorToggle;
61 ANPRectF m_clearSurface;
62
63 ANPPaint* m_paintSurface;
64 ANPPaint* m_paintButton;
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040065
Derek Sollenbergerb6f5cd22009-07-28 14:09:50 -040066 ANPColor m_activePaintColor;
67 static const ANPColor s_redColor = 0xFFFF0000;
68 static const ANPColor s_greenColor = 0xFF00FF00;
69 static const ANPColor s_blueColor = 0xFF0000FF;
Derek Sollenberger4fb83e62009-07-27 16:40:13 -040070};
71
72#endif // paintPlugin__DEFINED