/* Affiche tous les pixels dans la liste des lignes horizontales en mode 13h, le mode 320x200 en 256 couleurs du VGA. Utilise memset pour remplir chaque ligne ce qui est plus rapide que d'utiliser DrawPixel mais nécessite l'emploi d'un modèle de données large (compact, large, ou très grand) lors de l'exécution en mode réel ou en mode protégé sur 286. Testé avec Borland C++. #include #include #include "polygon.h" #define SCREEN-WIDTH 320 #define SCREEN-SEGMENT 0XA000 void DrawHorizontalLineList(struct HLineList * HlineListPtr int Color) struct HLine *HLinePtr; int Length, Width; unsigned char far *ScreenPtr: /* Pointe sur début de la première ligne d'affichage */ ScreenPtr = MK_FP(SCREEN_SEGMENT, HLineListPtr->YStart * SCREEN-WIDTH); /* Pointe sur le descripteur XStart/XEnd de la première ligne horizontale(en haut)*/ HlinePtr = HlineListPtr->HlinePtr /*Affiche chaque ligne horizontale, en commençant par celle du haut et en avançant ligne par ligne */ Length = HLineListPtr->Length; while (Length-- > 0) ( /* Affiche toutes les lignes horizontales si la largeur est positive */ if ((Width = HLinePtr->XEnd - HLinePtr->XStart + 1) > 0) memset(ScreenPtr + HLinePtr->XStart, Color, Width); HLinePtr++; /* pointe sur l'info en X de la prochaine ligne d'affichage */ ScreenPtr +- SCREEN_WIDTH: /* pointe sur le début de la prochaine ligne d'affichage */ } }