File: Bitmap.h

package info (click to toggle)
enigma 1.20-dfsg.1-2
  • links: PTS
  • area: main
  • in suites: jessie, jessie-kfreebsd
  • size: 64,620 kB
  • ctags: 16,428
  • sloc: xml: 153,614; cpp: 63,581; ansic: 31,088; sh: 4,825; makefile: 1,858; yacc: 288; perl: 84; sed: 16
file content (97 lines) | stat: -rw-r--r-- 2,498 bytes parent folder | download | duplicates (6)
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
85
86
87
88
89
90
91
92
93
94
95
96
97
// Copyright 2003 Jeremy Sawicki
//
// This file is part of OxydLib.
//
// OxydLib 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.
//
// OxydLib 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 OxydLib; if not, write to the Free Software
// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA

#ifndef BITMAP_H
#define BITMAP_H

#include "VecUtils.h"
#include <string>

namespace OxydLib {

using std::string;

class Palette
{
public:
  Palette();
  ~Palette();

  int getNumColors() const;
  void setNumColors(int numColors);

  void getColor(int nColor,
                unsigned int *pRed,
                unsigned int *pGreen,
                unsigned int *pBlue) const;
  void setColor(int nColor,
                unsigned int red,
                unsigned int green,
                unsigned int blue);

private:
  std::vector<unsigned int> m_colors;
};

class Bitmap
{
public:
  Bitmap();
  ~Bitmap();

  void clear();

  int getBitDepth() const { return m_bitDepth; }
  void setBitDepth(int bitDepth) { m_bitDepth = bitDepth; }

  unsigned char getPixel(int x, int y) const;
  void setPixel(int x, int y, unsigned char pixelVal);

  int getBit(int x, int y, int bitNum) const;
  void setBit(int x, int y, int bitNum, int bitVal);

private:
  int m_bitDepth;
  ByteVec m_pixels;
};

// Both parseBitmap and unparseBitmap work with 16-color palettes,
// regardless of the bit depth of the bitmap.

bool parseBitmap(const ByteVec &in,
                 Bitmap *pBitmap,
                 Palette *pPalette,
                 string *pMsg = 0);
bool unparseBitmap(const Bitmap &bitmap,
                   const Palette &palette,
                   ByteVec *pOut,
                   string *pMsg = 0);

// The palette passed to bitmapToPPM should have 2^(bit depth of bitmap)
// colors.

void bitmapToPPM(const Bitmap &bitmap,
                 const Palette &palette,
                 ByteVec *pOut);
void bitPlaneToPPM(const Bitmap &bitmap,
                   int nBitPlane,
                   ByteVec *pOut);

}

#endif