make brushes square when imported from ABR
This commit is contained in:
@@ -116,7 +116,7 @@ std::vector<std::shared_ptr<Brush>> ABR::compute_brushes(const std::string& path
|
|||||||
b->m_tip_spacing = samp->value<UnitFloat>("Spcn") * 0.01f;
|
b->m_tip_spacing = samp->value<UnitFloat>("Spcn") * 0.01f;
|
||||||
b->m_tip_flow = .25f;
|
b->m_tip_flow = .25f;
|
||||||
b->m_tip_opacity = 1.f;
|
b->m_tip_opacity = 1.f;
|
||||||
b->m_tip_angle = glm::radians(samp->value<UnitFloat>("Angl"));
|
b->m_tip_angle = samp->value<UnitFloat>("Angl") / 360.f + 0.5f; // [-180,180] -> [0, 1]
|
||||||
//b->m_tip_mix = i.m_tip_mix;
|
//b->m_tip_mix = i.m_tip_mix;
|
||||||
//b->m_tip_stencil = i.m_tip_stencil;
|
//b->m_tip_stencil = i.m_tip_stencil;
|
||||||
b->m_tip_wet = p->value<UnitFloat>("Wtdg");
|
b->m_tip_wet = p->value<UnitFloat>("Wtdg");
|
||||||
|
|||||||
@@ -207,7 +207,7 @@ void App::initShaders()
|
|||||||
"uniform sampler2D tex;\n"
|
"uniform sampler2D tex;\n"
|
||||||
"uniform sampler2D tex_stroke;\n"
|
"uniform sampler2D tex_stroke;\n"
|
||||||
"uniform sampler2D tex_mask;\n"
|
"uniform sampler2D tex_mask;\n"
|
||||||
"uniform sampler2D tex_stencil;\n"
|
//"uniform sampler2D tex_stencil;\n"
|
||||||
"uniform mediump float alpha;\n"
|
"uniform mediump float alpha;\n"
|
||||||
"uniform mediump float stroke_alpha;\n"
|
"uniform mediump float stroke_alpha;\n"
|
||||||
"uniform mediump int blend_mode;\n"
|
"uniform mediump int blend_mode;\n"
|
||||||
|
|||||||
@@ -120,7 +120,7 @@ Image Image::resize_power2() const
|
|||||||
return resize(w, h);
|
return resize(w, h);
|
||||||
}
|
}
|
||||||
|
|
||||||
Image Image::resize_squared() const
|
Image Image::resize_squared(const glm::u8vec4& bg) const
|
||||||
{
|
{
|
||||||
Image ret;
|
Image ret;
|
||||||
if (width == height)
|
if (width == height)
|
||||||
@@ -146,7 +146,7 @@ Image Image::resize_squared() const
|
|||||||
ret.create(size, size);
|
ret.create(size, size);
|
||||||
auto ptr_src = reinterpret_cast<glm::u8vec4*>(m_data.get());
|
auto ptr_src = reinterpret_cast<glm::u8vec4*>(m_data.get());
|
||||||
auto ptr_dst = reinterpret_cast<glm::u8vec4*>(ret.m_data.get());
|
auto ptr_dst = reinterpret_cast<glm::u8vec4*>(ret.m_data.get());
|
||||||
std::fill_n(ptr_dst, size * size, glm::u8vec4(0));
|
std::fill_n(ptr_dst, size * size, bg);
|
||||||
for (int y = 0; y < height; y++)
|
for (int y = 0; y < height; y++)
|
||||||
std::copy_n(ptr_src + y * width, width, ptr_dst + pad_x + (y + pad_y) * ret.width);
|
std::copy_n(ptr_src + y * width, width, ptr_dst + pad_x + (y + pad_y) * ret.width);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,5 +36,5 @@ public:
|
|||||||
void create() { m_data = std::make_unique<uint8_t[]>(size()); }
|
void create() { m_data = std::make_unique<uint8_t[]>(size()); }
|
||||||
Image resize(int w, int h) const;
|
Image resize(int w, int h) const;
|
||||||
Image resize_power2() const;
|
Image resize_power2() const;
|
||||||
Image resize_squared() const;
|
Image resize_squared(const glm::u8vec4& bg) const;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -77,8 +77,10 @@ void NodePanelBrush::init()
|
|||||||
{
|
{
|
||||||
std::string path_high = App::I.data_path + "/brushes/" + samp.first + ".png";
|
std::string path_high = App::I.data_path + "/brushes/" + samp.first + ".png";
|
||||||
std::string path_thumb = App::I.data_path + "/brushes/thumbs/" + samp.first + ".png";
|
std::string path_thumb = App::I.data_path + "/brushes/thumbs/" + samp.first + ".png";
|
||||||
samp.second->save(path_high);
|
auto padded = samp.second->resize_squared(glm::u8vec4(255));
|
||||||
auto thumb = samp.second->resize(64, 64);
|
auto high = padded.resize_power2();
|
||||||
|
high.save(path_high);
|
||||||
|
auto thumb = padded.resize(64, 64);
|
||||||
thumb.save(path_thumb);
|
thumb.save(path_thumb);
|
||||||
|
|
||||||
async_start();
|
async_start();
|
||||||
@@ -123,7 +125,7 @@ void NodePanelBrush::init()
|
|||||||
std::string path_high = App::I.data_path + "/brushes/" + name + ".png";
|
std::string path_high = App::I.data_path + "/brushes/" + name + ".png";
|
||||||
std::string path_thumb = App::I.data_path + "/brushes/thumbs/" + name + ".png";
|
std::string path_thumb = App::I.data_path + "/brushes/thumbs/" + name + ".png";
|
||||||
|
|
||||||
img = img.resize_squared();
|
img = img.resize_squared(glm::u8vec4(255));
|
||||||
img.gayscale_alpha();
|
img.gayscale_alpha();
|
||||||
|
|
||||||
auto thumb = img.resize(64, 64);
|
auto thumb = img.resize(64, 64);
|
||||||
|
|||||||
Reference in New Issue
Block a user