summaryrefslogtreecommitdiffstats
path: root/languages/cpp/app_templates/noatunvisual/plugin_impl.h
blob: 2a7de7b1552b095c1d6ccf9cd17cebc244668e79 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77

#ifndef %{APPNAMEUC}_IMPL_H
#define %{APPNAMEUC}_IMPL_H

struct SDL_Surface;

/**
 * @short This class is used for painting and supports some effects.
 * Note: This is used in Blurscope. Feel free to remove this and
 *       implement your own drawing routines!
 */
template<class Pixel> class Bitmap
{
public:
    int width, height, extra;
    Pixel *data;

    Bitmap(int e=0) : extra(e), data(0) { }
    ~Bitmap() { delete[] data; }

    inline void addPixel(int x, int y, int bright1, int bright2);
    void addVertLine(int x, int y, int y2, int br1, int br2);
    
    void fadeStar();
    
    void size(int w,int h)
    {
        delete[] data;
        width = w;
        height = h;
        data = new Pixel[w*h+extra];
        clear();
    }

    void clear()
    {
        memset(data,0,sizeof(Pixel)*(width*height+extra));
    }
};

/**
 * @short This class does:
 * o set up view
 * o drawing routines.
 */
class %{APPNAME}View
{
public:
    %{APPNAME}View(int in);
    ~%{APPNAME}View();
    
protected:
    /** Screen initialization with SDL. Note, that you can initialize OpenGL with SDL!  */
    void startVideo();
    /** SDL event queue  */
    void checkInput();
    /** Used in Blurscope. Feel free to implement your own drawing routines!  */
    void setupPalette(double dummy=0.0);

    /** Draw everything.  */
    void repaint();

private:
    /** used for pipelining  */
    int mFd;

    /** SDL screen surface  */
    SDL_Surface *surface;
    Bitmap<unsigned short> outputBmp;
    
    bool fullscreen;
    int width;
    int height;
};

#endif // %{APPNAMEUC}_IMPL_H