Bu sayfadaki yazılar
Sayfanın metni
Sayfa 149
/** * Name : DrawLine * Desc : Overloaded DrawLine fonksiyonu. (x1,y1) ve (x2,y2) yerine * POINT2D sınıfından iki değişken kullanılır. * Input : (POINT2D *)p2dPoint1 * (POINT2D *)p2dPoint2 * (unsigned char)color */ void DrawLine(POINT2D *p2dPoint1, POINT2D *p2dPoint2, unsigned char color) { DrawLine(p2dPoint1->getX(), p2dPoint1->getY(), p2dPoint2->getX(), p2dPoint2->getY(), color); }
/** * Name : DrawLine * Desc : Overloaded DrawLine fonksiyonu. (x1,y1) ve (x2,y2) yerine * RECT sınıfından bir değişken kullanılır. * Input : (RECT *)rctRect * (unsigned char)color */ void DrawLine(RECT *rctRect, unsigned char color) { DrawLine(rctRect->getX1(), rctRect->getY1(), rctRect->getX2(), rctRect->getY2(), color); }
/** * Name : DrawRectangle * Desc : Parametreden gelen (x1,y1)-(x2,y2) koordinatları arasına * dikdörtgen çeker. 'a ihtiyaç duymaz. * Input : (int)x1 * (int)y1 * (int)x2 * (int)y2 * (unsigned char)color */ void DrawRectangle(int x1, int y1, int x2, int y2, unsigned char color) { int x, y;
// Yatay çizgiler if(x1 < x2) { for(x = x1; x <= x2; x++) { Plot(x, y1, color); Plot(x, y2, color); } } else { for(x = x2; x <= x1; x++) { Plot(x, y1, color); Plot(x, y2, color); } }
// Dikey Çizgiler if(y1 < y2) { for(y = y1; y <= y2; y++) {
Klavyeyle gezinmek için ← ve → tuşları.
Sayfa 148
********************************/ VGAMAP[(y << 8) + (y << 6) + x] = color; }
/** * Name : Plot * Desc : Overloaded Plot fonksiyonu. (x,y) koordinatlarını POINT2D * sınıfından tek bir değişkenden alır. * Input : (POINT2D *)p2dPoint * (unsigned char)color */ void Plot(POINT2D *p2dPoint, unsigned char color) { VGAMAP[(p2dPoint->getY() << 8) + (p2dPoint->getY() << 6) + p2dPoint->getX()] = color; }
/** * Name : DrawLine * Desc : Parametreden gelen (x1,y1)-(x2,y2) koordinatları arasına * çizgi çeker. 'a ihtiyaç duymaz. * Bresenham algoritması kullanır. * Input : (int)x1 * (int)y1 * (int)x2 * (int)y2 * (unsigned char)color */ void DrawLine(int x1, int y1, int x2, int y2, unsigned char color) { int dx, dy, x, y, a = 0; dx = (x1 - x2 > 0) ? x1 - x2 : x2 - x1; // Yatay düzlemdeki genişlik dy = (y1 - y2 > 0) ? y1 - y2 : y2 - y1; // Dikey düzlemdeki uzunluk if(dx > dy) // Yatay düzlemde geniş ise { x = x1; y = y1; while(1) { Plot(x, y, color); a += dy; if(a >= dx) { a -= dx; y += (y1 > y2) ? -1 : 1; } if(x == x2) break; x += (x1 > x2) ? -1 : 1; } } else // Dikey düzlemde uzun ise { x = x1; y = y1; while(1) { Plot(x, y, color); a += dx; if(a >= dy) { a -= dy; x += (x1 > x2) ? -1 : 1; } if(y == y2) break; y += (y1 > y2) ? -1 : 1;