source: abuse/trunk/src/imlib/transimage.h @ 579

Last change on this file since 579 was 579, checked in by Sam Hocevar, 8 years ago

imlib: refactor the Filter and ColorFilter? classes.

  • Property svn:keywords set to Id
File size: 2.3 KB
Line 
1/*
2 *  Abuse - dark 2D side-scrolling platform game
3 *  Copyright (c) 1995 Crack dot Com
4 *  Copyright (c) 2005-2011 Sam Hocevar <sam@hocevar.net>
5 *
6 *  This software was released into the Public Domain. As with most public
7 *  domain software, no warranty is made or implied by Crack dot Com, by
8 *  Jonathan Clark, or by Sam Hocevar.
9 */
10
11#ifndef __TIMAGE_HPP__
12#define __TIMAGE_HPP__
13
14#include "image.h"
15#include "palette.h"
16#include "filter.h"
17
18/*  Data is stored in the following format:
19 *
20 *   uint8_t skip;       // transparent pixel count
21 *   uint8_t size;       // solid pixel count
22 *   uint8_t data[size]; // solid pixel values
23 *   ...
24 *   (no scan line wraps allowed, there can be a last skip value)
25 */
26
27class TransImage
28{
29public:
30    TransImage(image *im, char const *name);
31    ~TransImage();
32
33    inline vec2i Size() { return m_size; }
34    inline uint8_t *Data() { return m_data; }
35
36    image *ToImage();
37
38    void PutImage(image *screen, vec2i pos);
39    void PutRemap(image *screen, vec2i pos, uint8_t *map);
40    void PutDoubleRemap(image *screen, vec2i pos, uint8_t *map, uint8_t *map2);
41    void PutFade(image *screen, vec2i pos, int amount, int nframes,
42                 ColorFilter *f, palette *pal);
43    void PutFadeTint(image *screen, vec2i pos, int amount, int nframes,
44                     uint8_t *tint, ColorFilter *f, palette *pal);
45    void PutColor(image *screen, vec2i pos, uint8_t color);
46    void PutFilled(image *screen, vec2i pos, uint8_t color);
47    void PutPredator(image *screen, vec2i pos);
48    void PutBlend(image *screen, vec2i pos, image *blend, vec2i bpos,
49                  int blend_amount, ColorFilter *f, palette *pal);
50    void PutScanLine(image *screen, vec2i pos, int line);
51
52    size_t DiskUsage();
53
54private:
55    uint8_t *ClipToLine(image *screen, vec2i pos1, vec2i pos2,
56                        vec2i &posy, int &ysteps);
57
58    enum PutMode { NORMAL, REMAP, REMAP2, FADE, FADE_TINT, COLOR,
59                   FILLED, PREDATOR, BLEND, SCANLINE };
60    template<int N>
61    void PutImageGeneric(image *dest, vec2i pos, uint8_t color,
62                         image *blend, vec2i bpos,
63                         uint8_t *map1, uint8_t *map2, int amount,
64                         int nframes, uint8_t *tint,
65                         ColorFilter *f, palette *pal);
66
67    vec2i m_size;
68    uint8_t *m_data;
69};
70
71#endif
72
Note: See TracBrowser for help on using the repository browser.