pixel based brush size, Photoshop slider curve, improve abr import
This commit is contained in:
26
src/abr.h
26
src/abr.h
@@ -360,7 +360,7 @@ class ABR : private BinaryStream
|
||||
std::vector<Channel> channels;
|
||||
VMArray() = default;
|
||||
VMArray(uint32_t version, const Rectangle& rect) : version(version), rect(rect) { }
|
||||
std::shared_ptr<Image> image(bool grayscale) const
|
||||
std::shared_ptr<Image> image(bool grayscale, bool invert) const
|
||||
{
|
||||
int nc = channels.size();
|
||||
auto pixels = (channels[0].depth >> 3) * rect.area();
|
||||
@@ -375,8 +375,16 @@ class ABR : private BinaryStream
|
||||
if (grayscale)
|
||||
{
|
||||
auto const& raw = channels[0].data;
|
||||
for (int i = 0; i < raw.size(); i++)
|
||||
out[i] = glm::u8vec4(glm::u8vec3(255 - raw[i]), 255);
|
||||
if (invert)
|
||||
{
|
||||
for (int i = 0; i < raw.size(); i++)
|
||||
out[i] = glm::u8vec4(glm::u8vec3(255 - raw[i]), 255);
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < raw.size(); i++)
|
||||
out[i] = glm::u8vec4(glm::u8vec3(raw[i]), 255);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -384,8 +392,16 @@ class ABR : private BinaryStream
|
||||
for (int ch = 0; ch < std::min(nc, 3); ch++)
|
||||
{
|
||||
auto const& raw = channels[ch].data;
|
||||
for (int i = 0; i < raw.size(); i++)
|
||||
out[i][ch] = 255 - raw[i];
|
||||
if (invert)
|
||||
{
|
||||
for (int i = 0; i < raw.size(); i++)
|
||||
out[i][ch] = 255 - raw[i];
|
||||
}
|
||||
else
|
||||
{
|
||||
for (int i = 0; i < raw.size(); i++)
|
||||
out[i][ch] = raw[i];
|
||||
}
|
||||
}
|
||||
}
|
||||
return img;
|
||||
|
||||
Reference in New Issue
Block a user