1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
void scanLine()
{
gck::vi2d p1 = gck::vi2d(border / 2, border/2); // point up left
gck::vi2d p2 = gck::vi2d(sWidth - border/2, border / 2); // point up right
gck::vi2d p3 = gck::vi2d(border / 2, sHeight - border / 2 - 1); // point down right
// scanline implementation
for (int y = p1.y; y <= p3.y; y++)
for (int x = p1.x; x <= p2.x; x++)
if (board->GetPixel(gck::vi2d(x, y)) != gck::DARK_CYAN)
sc.push_back(gck::vi2d(x, y));
// check vector
if (sc.size() > 1)
{
for (int l = 0; l < sc.size(); l++)
if (l % 2 == 0 && l + 1 < sc.size()) // odd point (because first occurence is occurence 0)
DrawLine(sc[l], sc[l + 1], gck::BLACK); // draw line
}
// fill yellow line
for (int o = 0; o < ScreenWidth(); o++)
for (int oo = 0; oo < ScreenHeight(); oo++)
if (board->GetPixel(gck::vi2d(o, oo)) == gck::YELLOW)
board->SetPixel(gck::vi2d(o, oo), gck::BLACK);
sc.clear(); // clean up vector
} |
Partager