xref: /haiku/src/add-ons/accelerants/neomagic/Acceleration.c (revision 01b25646004ff628ecad0281a9795e5e90f71746)
1 /*
2 	Copyright 1999, Be Incorporated.   All Rights Reserved.
3 	This file may be used under the terms of the Be Sample Code License.
4 
5 	Other authors:
6 	Rudolf Cornelissen 4/2003-
7 */
8 
9 #define MODULE_BIT 0x40000000
10 
11 #include "acc_std.h"
12 
13 void SCREEN_TO_SCREEN_BLIT(engine_token *et, blit_params *list, uint32 count) {
14 	int i;
15 
16 	/*do each blit*/
17 	i=0;
18 	while (count--)
19 	{
20 		mn_acc_blit
21 		(
22 			list[i].src_left,
23 			list[i].src_top,
24 			list[i].dest_left,
25 			list[i].dest_top,
26 			list[i].width,
27 			list[i].height
28 		);
29 		i++;
30 	}
31 }
32 
33 void SCREEN_TO_SCREEN_SCALED_FILTERED_BLIT(engine_token *et, scaled_blit_params *list, uint32 count) {
34 	int i;
35 
36 	/*do each blit*/
37 	i=0;
38 	while (count--)
39 	{
40 		mn_acc_video_blit
41 		(
42 			list[i].src_left,
43 			list[i].src_top,
44 			list[i].src_width,
45 			list[i].src_height,
46 			list[i].dest_left,
47 			list[i].dest_top,
48 			list[i].dest_width,
49 			list[i].dest_height
50 		);
51 		i++;
52 	}
53 }
54 
55 void SCREEN_TO_SCREEN_TRANSPARENT_BLIT(engine_token *et, uint32 transparent_colour, blit_params *list, uint32 count) {
56 	int i;
57 
58 	/*do each blit*/
59 	i=0;
60 	while (count--)
61 	{
62 		mn_acc_transparent_blit
63 		(
64 			list[i].src_left,
65 			list[i].src_top,
66 			list[i].dest_left,
67 			list[i].dest_top,
68 			list[i].width,
69 			list[i].height,
70 			transparent_colour
71 		);
72 		i++;
73 	}
74 }
75 
76 void FILL_RECTANGLE(engine_token *et, uint32 colorIndex, fill_rect_params *list, uint32 count) {
77 	int i;
78 
79 	/*draw each rectangle*/
80 	i=0;
81 	while (count--)
82 	{
83 		mn_acc_rectangle
84 		(
85 			list[i].left,
86 			(list[i].right)+1,
87 			list[i].top,
88 			(list[i].bottom-list[i].top)+1,
89 			colorIndex
90 		);
91 		i++;
92 	}
93 }
94 
95 void INVERT_RECTANGLE(engine_token *et, fill_rect_params *list, uint32 count) {
96 	int i;
97 
98 	/*draw each rectangle*/
99 	i=0;
100 	while (count--)
101 	{
102 		mn_acc_rectangle_invert
103 		(
104 			list[i].left,
105 			(list[i].right)+1,
106 			list[i].top,
107 			(list[i].bottom-list[i].top)+1,
108 			0
109 		);
110 		i++;
111 	}
112 }
113 
114 void FILL_SPAN(engine_token *et, uint32 colorIndex, uint16 *list, uint32 count) {
115 	int i;
116 
117 	/*draw each span*/
118 	i=0;
119 	while (count--)
120 	{
121 		mn_acc_rectangle
122 		(
123 			list[i+1],
124 			list[i+2]+1,
125 			list[i],
126 			1,
127 			colorIndex
128 		);
129 		i+=3;
130 	}
131 }
132