mirror of
https://github.com/brunoherbelin/vimix.git
synced 2025-12-13 03:09:57 +01:00
Finishing Sharpen Image filters
This commit is contained in:
@@ -824,7 +824,7 @@ void ImGuiVisitor::visit (SharpenFilter& f)
|
|||||||
oss << "Blur ";
|
oss << "Blur ";
|
||||||
|
|
||||||
// Method selection
|
// Method selection
|
||||||
if (ImGuiToolkit::IconButton(7, 16)) {
|
if (ImGuiToolkit::IconButton(2, 1)) {
|
||||||
f.setMethod( 0 );
|
f.setMethod( 0 );
|
||||||
oss << SharpenFilter::method_label[0];
|
oss << SharpenFilter::method_label[0];
|
||||||
Action::manager().store(oss.str());
|
Action::manager().store(oss.str());
|
||||||
|
|||||||
@@ -614,6 +614,15 @@ void SharpenFilter::setMethod(int method)
|
|||||||
setProgram( programs_[ (int) method_] );
|
setProgram( programs_[ (int) method_] );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SharpenFilter::draw (FrameBuffer *input)
|
||||||
|
{
|
||||||
|
// Default
|
||||||
|
if (method_ == SHARPEN_INVALID)
|
||||||
|
setMethod( SHARPEN_MASK );
|
||||||
|
|
||||||
|
ImageFilter::draw( input );
|
||||||
|
}
|
||||||
|
|
||||||
void SharpenFilter::accept (Visitor& v)
|
void SharpenFilter::accept (Visitor& v)
|
||||||
{
|
{
|
||||||
FrameBufferFilter::accept(v);
|
FrameBufferFilter::accept(v);
|
||||||
|
|||||||
@@ -157,6 +157,7 @@ public:
|
|||||||
// implementation of FrameBufferFilter
|
// implementation of FrameBufferFilter
|
||||||
Type type() const override { return FrameBufferFilter::FILTER_SHARPEN; }
|
Type type() const override { return FrameBufferFilter::FILTER_SHARPEN; }
|
||||||
|
|
||||||
|
void draw (FrameBuffer *input) override;
|
||||||
void accept (Visitor& v) override;
|
void accept (Visitor& v) override;
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|||||||
@@ -1249,6 +1249,30 @@ void SessionLoader::visit (BlurFilter& f)
|
|||||||
f.setProgramParameters(filter_params);
|
f.setProgramParameters(filter_params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SessionLoader::visit (SharpenFilter& f)
|
||||||
|
{
|
||||||
|
int m = 0;
|
||||||
|
xmlCurrent_->QueryIntAttribute("method", &m);
|
||||||
|
f.setMethod(m);
|
||||||
|
|
||||||
|
std::map< std::string, float > filter_params;
|
||||||
|
XMLElement* parameters = xmlCurrent_->FirstChildElement("parameters");
|
||||||
|
if (parameters) {
|
||||||
|
XMLElement* param = parameters->FirstChildElement("uniform");
|
||||||
|
for( ; param ; param = param->NextSiblingElement())
|
||||||
|
{
|
||||||
|
float val = 0.f;
|
||||||
|
param->QueryFloatAttribute("value", &val);
|
||||||
|
const char * name;
|
||||||
|
param->QueryStringAttribute("name", &name);
|
||||||
|
if (name)
|
||||||
|
filter_params[name] = val;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
f.setProgramParameters(filter_params);
|
||||||
|
}
|
||||||
|
|
||||||
void SessionLoader::visit (ImageFilter& f)
|
void SessionLoader::visit (ImageFilter& f)
|
||||||
{
|
{
|
||||||
const char * filter_name;
|
const char * filter_name;
|
||||||
|
|||||||
@@ -65,6 +65,7 @@ public:
|
|||||||
void visit (FrameBufferFilter&) override;
|
void visit (FrameBufferFilter&) override;
|
||||||
void visit (DelayFilter&) override;
|
void visit (DelayFilter&) override;
|
||||||
void visit (BlurFilter&) override;
|
void visit (BlurFilter&) override;
|
||||||
|
void visit (SharpenFilter&) override;
|
||||||
void visit (ImageFilter&) override;
|
void visit (ImageFilter&) override;
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
|
|||||||
@@ -710,6 +710,22 @@ void SessionVisitor::visit (BlurFilter& f)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void SessionVisitor::visit (SharpenFilter& f)
|
||||||
|
{
|
||||||
|
xmlCurrent_->SetAttribute("method", (int) f.method());
|
||||||
|
|
||||||
|
std::map< std::string, float > filter_params = f.program().parameters();
|
||||||
|
XMLElement *parameters = xmlDoc_->NewElement( "parameters" );
|
||||||
|
xmlCurrent_->InsertEndChild(parameters);
|
||||||
|
for (auto p = filter_params.begin(); p != filter_params.end(); ++p)
|
||||||
|
{
|
||||||
|
XMLElement *param = xmlDoc_->NewElement( "uniform" );
|
||||||
|
param->SetAttribute("name", p->first.c_str() );
|
||||||
|
param->SetAttribute("value", p->second );
|
||||||
|
parameters->InsertEndChild(param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void SessionVisitor::visit (ImageFilter& f)
|
void SessionVisitor::visit (ImageFilter& f)
|
||||||
{
|
{
|
||||||
xmlCurrent_->SetAttribute("name", f.program().name().c_str() );
|
xmlCurrent_->SetAttribute("name", f.program().name().c_str() );
|
||||||
|
|||||||
@@ -73,6 +73,7 @@ public:
|
|||||||
void visit (FrameBufferFilter&) override;
|
void visit (FrameBufferFilter&) override;
|
||||||
void visit (DelayFilter&) override;
|
void visit (DelayFilter&) override;
|
||||||
void visit (BlurFilter&) override;
|
void visit (BlurFilter&) override;
|
||||||
|
void visit (SharpenFilter&) override;
|
||||||
void visit (ImageFilter&) override;
|
void visit (ImageFilter&) override;
|
||||||
|
|
||||||
// callbacks
|
// callbacks
|
||||||
|
|||||||
Reference in New Issue
Block a user