/
ImageFile.h
62 lines (44 loc) · 1.68 KB
/
ImageFile.h
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
#pragma once
#include <string>
#include <iostream>
// La clase base de las imagenes. Es abstracta
class ImageFile
{
public:
// Tipos:
// - R8_G8_B8 significa RGB con 8 bits por canal
// - R8_G8_B8_A8 significa RGBA con 8 bits por canal
enum EspacioColores{R8_G8_B8, R8_G8_B8_A8};
protected:
//El arreglo de colores de la imagen. Esta en el espacio de colores especificado por m_EspacioColores y sin padding.
//Cada canal del espacio de colores tiene una profundidad de 8 bits.
unsigned char* m_ArregloColores;
//El ancho de la imagen en pixeles
unsigned int m_Width;
//El ancho de la imagen en pixeles
unsigned int m_Height;
//El espacio de colores de la imagen
EspacioColores m_EspacioColores;
virtual void _Load(std::istream& Stream) =0;//Carga la imagen del stream de dato, sea cual sea la fuente de este
public:
ImageFile();
virtual ~ImageFile();
//Carga la imagen desde un archivo en disco
//Parametros:
// - nombre El nombre del archivo a cargar(debe tener la extension correcta)
virtual void LoadFromFile(std::string nombre);
//Carga la imagen desde la memoria
//Parametros:
// - pMemoryBuffer La direcion de memoria donde comienza la imagen
virtual void LoadFromFile(char* pMemoryBuffer);
//Devuelve el arreglo de colores en formato RGB/A segun diga GetEspacioColores()
//El arreglo tiene alineacion de 1 byte(ie sin padding). La profundidad de color por cada canal es 8 bits.
//Almacenando cada valor en un unsigned char
unsigned char* GetColores();
//Devuelve ancho de la imagen en pixeles
int GetWidth();
//Devuelve alto de la imagen en pixeles
int GetHeight();
//Devuelve espacio de colores de la imagen
EspacioColores GetEspacioColores();
};