34 lines
831 B
C++
34 lines
831 B
C++
|
|
|
|
#pragma once
|
|
|
|
#include "fx/2d/blend.h"
|
|
#include "fx/2d/wave.h"
|
|
#include "fx/fx2d.h"
|
|
#include "fl/raster.h"
|
|
|
|
using namespace fl;
|
|
|
|
struct WaveEffect {
|
|
WaveFxPtr wave_fx_low;
|
|
WaveFxPtr wave_fx_high;
|
|
Blend2dPtr blend_stack;
|
|
void draw(Fx::DrawContext context) { blend_stack->draw(context); }
|
|
void addf(size_t x, size_t y, float value) {
|
|
wave_fx_low->addf(x, y, value);
|
|
wave_fx_high->addf(x, y, value);
|
|
}
|
|
};
|
|
|
|
struct DrawRasterToWaveSimulator {
|
|
DrawRasterToWaveSimulator(WaveEffect* wave_fx) : mWaveFx(wave_fx) {}
|
|
void draw(const vec2<int> &pt, uint32_t index, uint8_t value) {
|
|
float valuef = value / 255.0f;
|
|
int xx = pt.x;
|
|
int yy = pt.y;
|
|
mWaveFx->addf(xx, yy, valuef);
|
|
}
|
|
WaveEffect* mWaveFx;
|
|
};
|
|
|
|
WaveEffect NewWaveSimulation2D(const XYMap xymap);
|