Make cursors and select tools visible without special blend modes

This commit is contained in:
Yousef Khadadeh 2026-04-15 20:58:25 +03:00
parent bd4d662dd9
commit c85fb11636
8 changed files with 39 additions and 48 deletions

View file

@ -2,37 +2,10 @@
#include "DrawingProgram/DrawingProgram.hpp"
#include <Helpers/HsvRgb.hpp>
#include "MainProgram.hpp"
#include "Helpers/Networking/NetLibrary.hpp"
#include "World.hpp"
using namespace NetworkingObjects;
const char* visibleBlendModeCode = R"V(
vec4 main(vec4 src, vec4 dst) {
float value = max(max(dst.x, dst.y), dst.z) / dst.a;
vec4 actualSrc;
if(value > 0.6)
actualSrc = vec4(vec3(0.0), src.a);
else
actualSrc = vec4(src.a);
return actualSrc + (1.0 - actualSrc.a) * dst;
}
)V";
sk_sp<SkBlender> CanvasTheme::get_visible_blend_mode() {
static sk_sp<SkBlender> blender = nullptr;
if(!blender) {
auto effect = SkRuntimeEffect::MakeForBlender(SkString(visibleBlendModeCode));
if(!effect.effect) {
std::cout << "[CanvasTheme::get_visible_blend_mode] " << " blender construction error\n";
std::cout << effect.errorText.c_str() << std::endl;
throw std::runtime_error("Shader Compile Failure");
}
blender = effect.effect->makeBlender(nullptr);
}
return blender;
}
CanvasTheme::CanvasTheme(World& w):
world(w)
{}