|
|
|
|
@ -1145,18 +1145,32 @@ void LineElement::drawTo(OneBitBufferInterface* imageBuffer, std::size_t animati |
|
|
|
|
std::int32_t dy = static_cast<std::int32_t>(m_targetY) - static_cast<std::int32_t>(m_originY); |
|
|
|
|
bool value = true; |
|
|
|
|
|
|
|
|
|
std::uint16_t originX = m_originX; |
|
|
|
|
std::uint16_t originY = m_originY; |
|
|
|
|
std::uint16_t targetX = m_targetX; |
|
|
|
|
std::uint16_t targetY = m_targetY; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (dx == 0) { |
|
|
|
|
if (dy < 0) { |
|
|
|
|
std::swap(originY, targetY); |
|
|
|
|
dy = -dy; |
|
|
|
|
} |
|
|
|
|
for (std::int32_t i = 0; i <= dy; ++i) { |
|
|
|
|
imageBuffer->setPixel(m_originX, m_originY + i, value); |
|
|
|
|
imageBuffer->setPixel(originX, originY + i, value); |
|
|
|
|
} |
|
|
|
|
} else if (dy == 0) { |
|
|
|
|
if (dx < 0) { |
|
|
|
|
std::swap(originX, targetX); |
|
|
|
|
dx = -dx; |
|
|
|
|
} |
|
|
|
|
for (std::int32_t i = 0; i <= dx; ++i) { |
|
|
|
|
imageBuffer->setPixel(m_originX + i, m_originY, value); |
|
|
|
|
imageBuffer->setPixel(originX + i, originY, value); |
|
|
|
|
} |
|
|
|
|
} else { |
|
|
|
|
for (std::int32_t i = 0; i <= dx; ++i) { |
|
|
|
|
std::int32_t x = m_originX + i; |
|
|
|
|
std::int32_t y = i * dy / dx + m_originY; |
|
|
|
|
std::int32_t x = originX + i; |
|
|
|
|
std::int32_t y = i * dy / dx + originY; |
|
|
|
|
imageBuffer->setPixel(static_cast<std::uint16_t>(x), static_cast<std::uint16_t>(y), value); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|