File: Marker.h

package info (click to toggle)
xplanet 0.94-1
  • links: PTS
  • area: main
  • in suites: woody
  • size: 2,624 kB
  • ctags: 1,191
  • sloc: cpp: 9,466; ansic: 6,375; sh: 2,065; makefile: 380; perl: 55
file content (84 lines) | stat: -rw-r--r-- 2,257 bytes parent folder | download
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
78
79
80
81
82
83
84
/****************************************************************************
    Xplanet 0.94 - render an image of a planet into an X window
    Copyright (C) 2002 Hari Nair <hari@alumni.caltech.edu>

    This program is free software; you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation; either version 2 of the License, or
    (at your option) any later version.

    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU General Public License
    along with this program; if not, write to the Free Software
    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
****************************************************************************/

#ifndef MARKER_H
#define MARKER_H

#include <fstream>
#include <string>
using namespace std;

class Marker
{
 public:
    int x, y;
    int image_width, image_height;
    unsigned char *image_data;

    int text_x, text_y;
    int text_width, text_height;
    string text;

    bool fixed_align;
    int align;

    string color;
    string font;
    int fontsize;

    int ID;
    
    Marker(const int X, const int Y,
           const string Name, const int Align);

    ~Marker();

    bool operator < (const Marker &m);
    bool operator > (const Marker &m);
    bool operator == (const Marker &m);
    bool operator != (const Marker &m);

    bool isTransparent(const int pixel_x, const int pixel_y);
    int overlap(const Marker &m);

    void printCorners(ofstream &outfile);
    void setImage(const int width, const int height);

    void setImage(string filename);

    void setCorners(const int x1, const int y1, 
                    const int x2, const int y2);
    void setTransparency(unsigned char *pixel);

 private:
    bool transparency;
    unsigned char transparent[3];

    struct BoundingBox
    {
        int top, bottom, left, right; 
    };
        
    BoundingBox image, label;

    int overlap(const BoundingBox &b);

};

#endif