_________ __ __
/ _____// |_____________ _/ |______ ____ __ __ ______
\_____ \\ __\_ __ \__ \\ __\__ \ / ___\| | \/ ___/
/ \| | | | \// __ \| | / __ \_/ /_/ > | /\___ \
/_______ /|__| |__| (____ /__| (____ /\___ /|____//____ >
\/ \/ \//_____/ \/
______________________ ______________________
T H E W A R B E G I N S
Stratagus - A free fantasy real time strategy game engine
Go to the documentation of this file.
30 #ifndef __FOW_UTILS_H__
31 #define __FOW_UTILS_H__
50 void Init(
const uint16_t width,
const uint16_t height,
const uint8_t numOfSteps);
54 void PushNext(
const bool forcedShowNext =
false);
55 void DrawRegion(uint8_t *target,
const uint16_t trgWidth,
const uint16_t x0,
const uint16_t y0,
const SDL_Rect &srcRect);
56 uint8_t
GetPixel(
const uint16_t x,
const uint16_t y);
58 bool isFullyEased()
const {
return CurrentStep == EasingStepsNum ? true :
false; }
59 void Ease() {
if (CurrentStep < EasingStepsNum) CurrentStep++; }
62 uint8_t *
GetNext() {
return Frames[Next].data(); }
68 void SwapFrames() {
const uint8_t swap = Prev; Prev = Curr; Curr = Next; Next = swap; }
71 uint8_t CurrentStep {0};
72 uint8_t EasingStepsNum {0};
75 size_t TextureSize {0};
77 std::vector<uint8_t> Frames[3];
82 std::vector<int16_t> Deltas;
89 void Init(
const uint16_t textureWidth,
const uint16_t textureHeight,
const float radius,
const int numOfIterations);
93 void Blur(uint8_t *
const texture);
95 void ProceedIteration(uint8_t *source, uint8_t *target,
const uint8_t radius);
99 uint8_t NumOfIterations {3};
102 std::vector<uint8_t> HalfBoxes;
103 std::vector<uint8_t> WorkingTexture;
104 uint16_t TextureWidth {0};
105 uint16_t TextureHeight {0};
111 const size_t textureIndex = y * Width + x;
113 if (CurrentStep == 0 || CurrentStep == EasingStepsNum) {
114 const uint8_t currFrame = CurrentStep ? Curr : Prev;
115 const uint8_t *curr = Frames[currFrame].data();
117 return curr[textureIndex];
120 const uint8_t *prev = Frames[Prev].data();
121 const int16_t *deltas = Deltas.data();
123 return prev[textureIndex] + deltas[textureIndex] * CurrentStep;
128 #endif // !__FOW_UTILS_H__
bool isFullyEased() const
Definition: fow_utils.h:58
void Clean()
Definition: fow_utils.cpp:89
void DrawRegion(uint8_t *target, const uint16_t trgWidth, const uint16_t x0, const uint16_t y0, const SDL_Rect &srcRect)
Definition: fow_utils.cpp:139
void SetNumOfSteps(const uint8_t num)
Definition: fow_utils.cpp:110
void Ease()
Definition: fow_utils.h:59
Definition: viewport.h:63
void Init(const uint16_t textureWidth, const uint16_t textureHeight, const float radius, const int numOfIterations)
Definition: fow_utils.cpp:198
Definition: fow_utils.h:47
uint8_t * GetCurrent()
Definition: fow_utils.h:61
void Init(const uint16_t width, const uint16_t height, const uint8_t numOfSteps)
Definition: fow_utils.cpp:64
uint8_t * GetNext()
Definition: fow_utils.h:62
uint8_t GetPixel(const uint16_t x, const uint16_t y)
returns pixel value for current frame
Definition: fow_utils.h:109
void Blur(uint8_t *const texture)
Definition: fow_utils.cpp:258
uint16_t GetWidth() const
Definition: fow_utils.h:63
Class for box blur algorithm. Used to blur 4x4 upscaled FOW texture.
Definition: fow_utils.h:86
void PushNext(const bool forcedShowNext=false)
Definition: fow_utils.cpp:122
void PrecalcParameters(const float radius, const int numOfIterations)
Definition: fow_utils.cpp:215
uint16_t GetHeight() const
Definition: fow_utils.h:64
void Clean()
Definition: fow_utils.cpp:243
(C) Copyright 1998-2012 by The Stratagus Project under the GNU General Public License.
All trademarks and copyrights on this page are owned by their respective owners.