ScummVM API documentation
Image.h
1/* ScummVM - Graphic Adventure Engine
2 *
3 * ScummVM is the legal property of its developers, whose names
4 * are too numerous to list here. Please refer to the COPYRIGHT
5 * file distributed with this source distribution.
6 *
7 * This program is free software: you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation, either version 3 of the License, or
10 * (at your option) any later version.
11 *
12 * This program is distributed in the hope that it will be useful,
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 * GNU General Public License for more details.
16 *
17 * You should have received a copy of the GNU General Public License
18 * along with this program. If not, see <http://www.gnu.org/licenses/>.
19 *
20 */
21
22/*
23 * This code is based on the CRAB engine
24 *
25 * Copyright (c) Arvind Raja Yadav
26 *
27 * Licensed under MIT
28 *
29 */
30
31#ifndef CRAB_IMAGE_H
32#define CRAB_IMAGE_H
33
34#include "crab/Rectangle.h"
35#include "crab/rapidxml/rapidxml.hpp"
36
37namespace Graphics {
38class ManagedSurface;
39struct Surface;
40} // End of namespace Graphics
41
42namespace Common {
43struct Rect;
44} // End of namespace Common
45
46namespace Crab {
47
48namespace pyrodactyl {
49namespace image {
50// Image data used in Asset Manager
51class Image {
52 // The dimensions of the image
53 int _w, _h;
54
55 enum ImageRotateDegrees {
56 kImageRotateBy90,
57 kImageRotateBy180,
58 kImageRotateBy270
59 };
60
61public:
63
64 Image() : _texture(nullptr), _w(0), _h(0) {}
65 ~Image() {}
66
67 Graphics::Surface* rotate(const Graphics::ManagedSurface &src, ImageRotateDegrees rotation);
68
69 // Set color modulation
70 void color(const uint8 &r, const uint8 &g, const uint8 &b) {
71#if 0
72 SDL_SetTextureColorMod(texture, r, g, b);
73#endif
74 warning("Setting color modulation for texture: %d %d %d", r, g, b);
75 }
76
77 // Set blending
78#if 0
79 void BlendMode(const SDL_BlendMode &mode) { SDL_SetTextureBlendMode(texture, mode); }
80#endif
81
82 // Set alpha modulation
83 int alpha(const uint8 &alpha) {
84#if 0
85 return SDL_SetTextureAlphaMod(texture, alpha);
86#endif
87 debug(5, "Setting alpha modulation for texture: %d ", alpha);
88 return 0;
89 }
90
91 // Get alpha modulation
92 uint8 alpha() {
93 uint8 res = 255;
94#if 0
95 SDL_GetTextureAlphaMod(texture, &res);
96#endif
97 return res;
98 }
99
100 // Load the image
101 bool load(const Common::Path &path);
102 bool load(rapidxml::xml_node<char> *node, const char *name);
103 bool load(Graphics::ManagedSurface *surface);
104
105
106 // Draw the texture
107 void draw(const int &x, const int &y, Common::Rect *clip = nullptr, const TextureFlipType &flip = FLIP_NONE);
108 void draw(const int &x, const int &y, Rect *clip, const TextureFlipType &flip = FLIP_NONE, Graphics::ManagedSurface *surf = nullptr);
109 void fastDraw(const int &x, const int &y, Rect *clip = nullptr);
110
111 // Delete the texture
112 void deleteImage();
113
114 int w() {
115 return _w;
116 }
117
118 int h() {
119 return _h;
120 }
121
122 bool valid() {
123 return _texture != nullptr;
124 }
125};
126} // End of namespace image
127} // End of namespace pyrodactyl
128
129} // End of namespace Crab
130
131#endif // CRAB_IMAGE_H
Definition: path.h:52
Definition: Image.h:51
Definition: managed_surface.h:51
void debug(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
void warning(MSVC_PRINTF const char *s,...) GCC_PRINTF(1
Definition: algorithm.h:29
Definition: formatinfo.h:28
Definition: rect.h:536
Definition: Rectangle.h:42
Definition: surface.h:67