vgaline.c

来自「linux 下svgalib编的一个界面程序示例」· C语言 代码 · 共 80 行

C
80
字号
/* VGAlib version 1.2 - (c) 1993 Tommy Frandsen                    *//*                                                                 *//* This library is free software; you can redistribute it and/or   *//* modify it without any restrictions. This library is distributed *//* in the hope that it will be useful, but without any warranty.   *//* Multi-chipset support Copyright 1993 Harm Hanemaayer *//* partially copyrighted (C) 1993 by Hartmut Schirmer */#include <stdio.h>#include "vga.h"#include "libvga.h"#ifdef BACKGROUND#include "vgabg.h"#endif#define ABS(a) (((a)<0) ? -(a) : (a))int vga_drawline(int x1, int y1, int x2, int y2){    int dx = x2 - x1;    int dy = y2 - y1;    int ax = ABS(dx) << 1;    int ay = ABS(dy) << 1;    int sx = (dx >= 0) ? 1 : -1;    int sy = (dy >= 0) ? 1 : -1;    int x = x1;    int y = y1;#ifdef BACKGROUND    __svgalib_dont_switch_vt_yet();#endif    if (ax > ay) {	int d = ay - (ax >> 1);	while (x != x2) {#ifndef BACKGROUND	    vga_drawpixel(x, y);#endif#ifdef BACKGROUND            __svgalib_fast_drawpixel(x, y);#endif	    if (d > 0 || (d == 0 && sx == 1)) {		y += sy;		d -= ax;	    }	    x += sx;	    d += ay;	}    } else {	int d = ax - (ay >> 1);	while (y != y2) {#ifndef BACKGROUND	    vga_drawpixel(x, y);#endif#ifdef BACKGROUND            __svgalib_fast_drawpixel(x, y);#endif	    if (d > 0 || (d == 0 && sy == 1)) {		x += sx;		d -= ay;	    }	    y += sy;	    d += ax;	}    }#ifndef BACKGROUND    vga_drawpixel(x, y);#endif#ifdef BACKGROUND    __svgalib_fast_drawpixel(x, y);    __svgalib_is_vt_switching_needed();#endif    return 0;}

⌨️ 快捷键说明

复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?