22#ifndef ULTIMA4_GFX_IMAGE_H
23#define ULTIMA4_GFX_IMAGE_H
25#include "ultima/ultima4/core/types.h"
26#include "ultima/ultima4/gfx/textcolor.h"
27#include "graphics/managed_surface.h"
34#define DARK_GRAY_HALO RGBA(14,15,16,255)
37 RGBA(
int red,
int green,
int blue,
int alpha) : r(red), g(green), b(blue), a(alpha) {}
38 RGBA() : r(0), g(0), b(0), a(255) {}
41 operator uint32()
const {
42 return r | (g << 8) | (b << 16) | (0xff << 24);
45bool operator==(
const RGBA &lhs,
const RGBA &rhs);
54#define IM_OPAQUE (uint) 255
55#define IM_TRANSPARENT 0
68 DisposeAfterUse::Flag _disposeAfterUse;
70 RGBA _backgroundColor;
79 uint getColor(
byte r,
byte g,
byte b,
byte a);
120 bool getTransparentIndex(uint &index)
const;
121 void performTransparencyHack(uint colorValue, uint numFrames, uint currentFrameIndex, uint haloWidth, uint haloOpacityIncrementByPixelDistance);
122 void setTransparentIndex(uint index);
149 RGBA setColor(uint8 r, uint8 g, uint8 b, uint8 a = IM_OPAQUE);
153 bool isAlphaOn()
const;
159 void initializeToBackgroundColor(
RGBA backgroundColor = DARK_GRAY_HALO);
161 void makeBackgroundColorTransparent(
int haloSize = 0,
int shadowOpacity = 255);
171 void putPixel(
int x,
int y,
int r,
int g,
int b,
int a);
183 void fillRect(
int x,
int y,
int w,
int h,
int r,
int g,
int b,
int a = IM_OPAQUE);
191 void getPixel(
int x,
int y, uint &r, uint &g, uint &b, uint &a)
const;
204 void draw(
int x,
int y)
const {
213 void drawSubRect(
int x,
int y,
int rx,
int ry,
int rw,
int rh)
const {
251 bool isIndexed()
const {
254 BackendSurface getSurface() {
258 void drawHighlighted();
Definition: managed_surface.h:51
int16 & w
Definition: managed_surface.h:134
int16 & h
Definition: managed_surface.h:135
PixelFormat & format
Definition: managed_surface.h:137
void draw(int x, int y) const
Definition: image.h:204
void drawSubRect(int x, int y, int rx, int ry, int rw, int rh) const
Definition: image.h:213
bool setFontColor(ColorFG fg, ColorBG bg)
void drawOn(Image *d, int x, int y) const
static Image * create(int w, int h, const Graphics::PixelFormat &format)
void drawSubRectInvertedOn(Image *d, int x, int y, int rx, int ry, int rw, int rh) const
void drawSubRectOn(Image *d, int x, int y, int rx, int ry, int rw, int rh) const
bool setFontColorFG(ColorFG fg)
void drawSubRectInverted(int x, int y, int rx, int ry, int rw, int rh) const
Definition: image.h:222
bool setPaletteIndex(uint index, uint8 r, uint8 g, uint8 b)
static Image * create(int w, int h)
void setPalette(const byte *colors, unsigned n_colors)
void setPaletteFromImage(const Image *src)
bool setFontColorBG(ColorBG bg)
void getPixel(int x, int y, uint &r, uint &g, uint &b, uint &a) const
void putPixel(int x, int y, int r, int g, int b, int a)
void fillRect(int x, int y, int w, int h, int r, int g, int b, int a=(uint) 255)
RGBA getPaletteColor(int index)
void putPixelIndex(int x, int y, uint index)
static Image * createScreenImage()
static Image * duplicate(Image *image, const Graphics::PixelFormat &format)
void getPixelIndex(int x, int y, uint &index) const