Index: ddraw/scalers.cpp |
— | — | @@ -1,105 +0,0 @@ |
2 | | -// DXGL
|
3 | | -// Copyright (C) 2011 William Feely
|
4 | | -
|
5 | | -// This library is free software; you can redistribute it and/or
|
6 | | -// modify it under the terms of the GNU Lesser General Public
|
7 | | -// License as published by the Free Software Foundation; either
|
8 | | -// version 2.1 of the License, or (at your option) any later version.
|
9 | | -
|
10 | | -// This library is distributed in the hope that it will be useful,
|
11 | | -// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 | | -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13 | | -// Lesser General Public License for more details.
|
14 | | -
|
15 | | -// You should have received a copy of the GNU Lesser General Public
|
16 | | -// License along with this library; if not, write to the Free Software
|
17 | | -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
18 | | -
|
19 | | -#include "common.h"
|
20 | | -#include "scalers.h"
|
21 | | -#include <WinDef.h>
|
22 | | -
|
23 | | -
|
24 | | -void ScaleNearest8(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
25 | | -{
|
26 | | - BYTE *d = (BYTE *)dest;
|
27 | | - BYTE *s = (BYTE *)src;
|
28 | | - int rx = (int)((sw<<16)/dw)+1;
|
29 | | - int ry = (int)((sh<<16)/dh)+1;
|
30 | | - int x2,y2;
|
31 | | - for(int y = 0; y < dh; y++)
|
32 | | - {
|
33 | | - int b1 = y*outpitch;
|
34 | | - y2 = ((y*ry)>>16);
|
35 | | - int b2 = y2*inpitch;
|
36 | | - for(int x = 0; x < dw; x++)
|
37 | | - {
|
38 | | - x2 = ((x*rx)>>16);
|
39 | | - y2 = ((y*ry)>>16);
|
40 | | - d[b1+x] = s[b2+x2];
|
41 | | - }
|
42 | | - }
|
43 | | -}
|
44 | | -void ScaleNearest16(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
45 | | -{
|
46 | | - WORD *d = (WORD *)dest;
|
47 | | - WORD *s = (WORD *)src;
|
48 | | - int rx = (int)((sw<<16)/dw)+1;
|
49 | | - int ry = (int)((sh<<16)/dh)+1;
|
50 | | - int x2,y2;
|
51 | | - for(int y = 0; y < dh; y++)
|
52 | | - {
|
53 | | - int b1 = y*outpitch;
|
54 | | - y2 = ((y*ry)>>16);
|
55 | | - int b2 = y2*inpitch;
|
56 | | - for(int x = 0; x < dw; x++)
|
57 | | - {
|
58 | | - x2 = ((x*rx)>>16);
|
59 | | - y2 = ((y*ry)>>16);
|
60 | | - d[b1+x] = s[b2+x2];
|
61 | | - }
|
62 | | - }
|
63 | | -}
|
64 | | -void ScaleNearest24(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
65 | | -{
|
66 | | - RGBTRIPLE *d = (RGBTRIPLE *)dest;
|
67 | | - RGBTRIPLE *s = (RGBTRIPLE *)src;
|
68 | | - char *d8 = (char*)dest;
|
69 | | - char *s8 = (char*)src;
|
70 | | - int rx = (int)((sw<<16)/dw)+1;
|
71 | | - int ry = (int)((sh<<16)/dh)+1;
|
72 | | - int x2,y2;
|
73 | | - for(int y = 0; y < dh; y++)
|
74 | | - {
|
75 | | - d8 = (y*outpitch)+(char*)dest;
|
76 | | - y2 = ((y*ry)>>16);
|
77 | | - s8 = (y2*inpitch)+(char*)src;
|
78 | | - d = (RGBTRIPLE*)d8;
|
79 | | - s = (RGBTRIPLE*)s8;
|
80 | | - for(int x = 0; x < dw; x++)
|
81 | | - {
|
82 | | - x2 = ((x*rx)>>16);
|
83 | | - y2 = ((y*ry)>>16);
|
84 | | - d[x] = s[x2];
|
85 | | - }
|
86 | | - }
|
87 | | -}
|
88 | | -void ScaleNearest32(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
89 | | -{
|
90 | | - DWORD *d = (DWORD *)dest;
|
91 | | - DWORD *s = (DWORD *)src;
|
92 | | - int rx = (int)((sw<<16)/dw)+1;
|
93 | | - int ry = (int)((sh<<16)/dh)+1;
|
94 | | - int x2,y2;
|
95 | | - for(int y = 0; y < dh; y++)
|
96 | | - {
|
97 | | - int b1 = y*outpitch;
|
98 | | - y2 = ((y*ry)>>16);
|
99 | | - int b2 = y2*inpitch;
|
100 | | - for(int x = 0; x < dw; x++)
|
101 | | - {
|
102 | | - x2 = ((x*rx)>>16);
|
103 | | - d[b1+x] = s[b2+x2];
|
104 | | - }
|
105 | | - }
|
106 | | -}
|
Index: ddraw/matrix.cpp |
— | — | @@ -1,200 +0,0 @@ |
2 | | -// DXGL
|
3 | | -// Copyright (C) 2012 William Feely
|
4 | | -
|
5 | | -// This library is free software; you can redistribute it and/or
|
6 | | -// modify it under the terms of the GNU Lesser General Public
|
7 | | -// License as published by the Free Software Foundation; either
|
8 | | -// version 2.1 of the License, or (at your option) any later version.
|
9 | | -
|
10 | | -// This library is distributed in the hope that it will be useful,
|
11 | | -// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
12 | | -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
13 | | -// Lesser General Public License for more details.
|
14 | | -
|
15 | | -// You should have received a copy of the GNU Lesser General Public
|
16 | | -// License along with this library; if not, write to the Free Software
|
17 | | -// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
18 | | -
|
19 | | -// Portions of this file are from the Mesa library, found in src/glu/sgi/libutil/project.c
|
20 | | -// project.c is licensed under the SGI Free Software License B, version 2.0.
|
21 | | -/*
|
22 | | - * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
|
23 | | - * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
|
24 | | - *
|
25 | | - * Permission is hereby granted, free of charge, to any person obtaining a
|
26 | | - * copy of this software and associated documentation files (the "Software"),
|
27 | | - * to deal in the Software without restriction, including without limitation
|
28 | | - * the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
29 | | - * and/or sell copies of the Software, and to permit persons to whom the
|
30 | | - * Software is furnished to do so, subject to the following conditions:
|
31 | | - *
|
32 | | - * The above copyright notice including the dates of first publication and
|
33 | | - * either this permission notice or a reference to
|
34 | | - * http://oss.sgi.com/projects/FreeB/
|
35 | | - * shall be included in all copies or substantial portions of the Software.
|
36 | | - *
|
37 | | - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
38 | | - * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
39 | | - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
40 | | - * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
41 | | - * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
42 | | - * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
43 | | - * SOFTWARE.
|
44 | | - *
|
45 | | - * Except as contained in this notice, the name of Silicon Graphics, Inc.
|
46 | | - * shall not be used in advertising or otherwise to promote the sale, use or
|
47 | | - * other dealings in this Software without prior written authorization from
|
48 | | - * Silicon Graphics, Inc.
|
49 | | - */
|
50 | | -#include "common.h"
|
51 | | -#include "matrix.h"
|
52 | | -
|
53 | | -// From project.c:
|
54 | | -/*
|
55 | | -** Invert 4x4 matrix.
|
56 | | -** Contributed by David Moore (See Mesa bug #6748)
|
57 | | -*/
|
58 | | -// Converted to float
|
59 | | -int __gluInvertMatrixf(const GLfloat m[16], GLfloat invOut[16])
|
60 | | -{
|
61 | | - GLfloat inv[16], det;
|
62 | | - int i;
|
63 | | -
|
64 | | - inv[0] = m[5]*m[10]*m[15] - m[5]*m[11]*m[14] - m[9]*m[6]*m[15]
|
65 | | - + m[9]*m[7]*m[14] + m[13]*m[6]*m[11] - m[13]*m[7]*m[10];
|
66 | | - inv[4] = -m[4]*m[10]*m[15] + m[4]*m[11]*m[14] + m[8]*m[6]*m[15]
|
67 | | - - m[8]*m[7]*m[14] - m[12]*m[6]*m[11] + m[12]*m[7]*m[10];
|
68 | | - inv[8] = m[4]*m[9]*m[15] - m[4]*m[11]*m[13] - m[8]*m[5]*m[15]
|
69 | | - + m[8]*m[7]*m[13] + m[12]*m[5]*m[11] - m[12]*m[7]*m[9];
|
70 | | - inv[12] = -m[4]*m[9]*m[14] + m[4]*m[10]*m[13] + m[8]*m[5]*m[14]
|
71 | | - - m[8]*m[6]*m[13] - m[12]*m[5]*m[10] + m[12]*m[6]*m[9];
|
72 | | - inv[1] = -m[1]*m[10]*m[15] + m[1]*m[11]*m[14] + m[9]*m[2]*m[15]
|
73 | | - - m[9]*m[3]*m[14] - m[13]*m[2]*m[11] + m[13]*m[3]*m[10];
|
74 | | - inv[5] = m[0]*m[10]*m[15] - m[0]*m[11]*m[14] - m[8]*m[2]*m[15]
|
75 | | - + m[8]*m[3]*m[14] + m[12]*m[2]*m[11] - m[12]*m[3]*m[10];
|
76 | | - inv[9] = -m[0]*m[9]*m[15] + m[0]*m[11]*m[13] + m[8]*m[1]*m[15]
|
77 | | - - m[8]*m[3]*m[13] - m[12]*m[1]*m[11] + m[12]*m[3]*m[9];
|
78 | | - inv[13] = m[0]*m[9]*m[14] - m[0]*m[10]*m[13] - m[8]*m[1]*m[14]
|
79 | | - + m[8]*m[2]*m[13] + m[12]*m[1]*m[10] - m[12]*m[2]*m[9];
|
80 | | - inv[2] = m[1]*m[6]*m[15] - m[1]*m[7]*m[14] - m[5]*m[2]*m[15]
|
81 | | - + m[5]*m[3]*m[14] + m[13]*m[2]*m[7] - m[13]*m[3]*m[6];
|
82 | | - inv[6] = -m[0]*m[6]*m[15] + m[0]*m[7]*m[14] + m[4]*m[2]*m[15]
|
83 | | - - m[4]*m[3]*m[14] - m[12]*m[2]*m[7] + m[12]*m[3]*m[6];
|
84 | | - inv[10] = m[0]*m[5]*m[15] - m[0]*m[7]*m[13] - m[4]*m[1]*m[15]
|
85 | | - + m[4]*m[3]*m[13] + m[12]*m[1]*m[7] - m[12]*m[3]*m[5];
|
86 | | - inv[14] = -m[0]*m[5]*m[14] + m[0]*m[6]*m[13] + m[4]*m[1]*m[14]
|
87 | | - - m[4]*m[2]*m[13] - m[12]*m[1]*m[6] + m[12]*m[2]*m[5];
|
88 | | - inv[3] = -m[1]*m[6]*m[11] + m[1]*m[7]*m[10] + m[5]*m[2]*m[11]
|
89 | | - - m[5]*m[3]*m[10] - m[9]*m[2]*m[7] + m[9]*m[3]*m[6];
|
90 | | - inv[7] = m[0]*m[6]*m[11] - m[0]*m[7]*m[10] - m[4]*m[2]*m[11]
|
91 | | - + m[4]*m[3]*m[10] + m[8]*m[2]*m[7] - m[8]*m[3]*m[6];
|
92 | | - inv[11] = -m[0]*m[5]*m[11] + m[0]*m[7]*m[9] + m[4]*m[1]*m[11]
|
93 | | - - m[4]*m[3]*m[9] - m[8]*m[1]*m[7] + m[8]*m[3]*m[5];
|
94 | | - inv[15] = m[0]*m[5]*m[10] - m[0]*m[6]*m[9] - m[4]*m[1]*m[10]
|
95 | | - + m[4]*m[2]*m[9] + m[8]*m[1]*m[6] - m[8]*m[2]*m[5];
|
96 | | -
|
97 | | - det = m[0]*inv[0] + m[1]*inv[4] + m[2]*inv[8] + m[3]*inv[12];
|
98 | | - if (det == 0)
|
99 | | - return GL_FALSE;
|
100 | | -
|
101 | | - det = 1.0f / det;
|
102 | | -
|
103 | | - for (i = 0; i < 16; i++)
|
104 | | - invOut[i] = inv[i] * det;
|
105 | | -
|
106 | | - return GL_TRUE;
|
107 | | -}
|
108 | | -
|
109 | | -void __gluMultMatricesf(const GLfloat a[16], const GLfloat b[16],
|
110 | | - GLfloat r[16])
|
111 | | -{
|
112 | | - int i, j;
|
113 | | - GLfloat out[16];
|
114 | | -
|
115 | | - for (i = 0; i < 4; i++) {
|
116 | | - for (j = 0; j < 4; j++) {
|
117 | | - out[i*4+j] =
|
118 | | - a[i*4+0]*b[0*4+j] +
|
119 | | - a[i*4+1]*b[1*4+j] +
|
120 | | - a[i*4+2]*b[2*4+j] +
|
121 | | - a[i*4+3]*b[3*4+j];
|
122 | | - }
|
123 | | - }
|
124 | | - memcpy(r, out, 16 * sizeof(GLfloat));
|
125 | | -}
|
126 | | -
|
127 | | -void __gluMakeIdentityf(GLfloat m[16])
|
128 | | -{
|
129 | | - m[0+4*0] = 1; m[0+4*1] = 0; m[0+4*2] = 0; m[0+4*3] = 0;
|
130 | | - m[1+4*0] = 0; m[1+4*1] = 1; m[1+4*2] = 0; m[1+4*3] = 0;
|
131 | | - m[2+4*0] = 0; m[2+4*1] = 0; m[2+4*2] = 1; m[2+4*3] = 0;
|
132 | | - m[3+4*0] = 0; m[3+4*1] = 0; m[3+4*2] = 0; m[3+4*3] = 1;
|
133 | | -}
|
134 | | -
|
135 | | -void __gluMultMatrixVecf(const GLfloat matrix[16], const GLfloat in[4], GLfloat out[4])
|
136 | | -{
|
137 | | - int i;
|
138 | | -
|
139 | | - for (i=0; i<4; i++) {
|
140 | | - out[i] =
|
141 | | - in[0] * matrix[0*4+i] +
|
142 | | - in[1] * matrix[1*4+i] +
|
143 | | - in[2] * matrix[2*4+i] +
|
144 | | - in[3] * matrix[3*4+i];
|
145 | | - }
|
146 | | -}
|
147 | | -
|
148 | | -
|
149 | | -// Portions of this file are from the Wine project, distributed under the
|
150 | | -// following license:
|
151 | | -/*
|
152 | | -* Copyright (c) 1998-2004 Lionel Ulmer
|
153 | | -* Copyright (c) 2002-2005 Christian Costa
|
154 | | -* Copyright (c) 2006-2009, 2011-2013 Stefan Dösinger
|
155 | | -* Copyright (c) 2008 Alexander Dorofeyev
|
156 | | -*
|
157 | | -* This library is free software; you can redistribute it and/or
|
158 | | -* modify it under the terms of the GNU Lesser General Public
|
159 | | -* License as published by the Free Software Foundation; either
|
160 | | -* version 2.1 of the License, or (at your option) any later version.
|
161 | | -*
|
162 | | -* This library is distributed in the hope that it will be useful,
|
163 | | -* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
164 | | -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
165 | | -* Lesser General Public License for more details.
|
166 | | -*
|
167 | | -* You should have received a copy of the GNU Lesser General Public
|
168 | | -* License along with this library; if not, write to the Free Software
|
169 | | -* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
170 | | -*/
|
171 | | -
|
172 | | -void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
|
173 | | - const struct wined3d_matrix *src2)
|
174 | | -{
|
175 | | - struct wined3d_matrix temp;
|
176 | | -
|
177 | | - /* Now do the multiplication 'by hand'.
|
178 | | - I know that all this could be optimised, but this will be done later :-) */
|
179 | | - temp._11 = (src1->_11 * src2->_11) + (src1->_21 * src2->_12) + (src1->_31 * src2->_13) + (src1->_41 * src2->_14);
|
180 | | - temp._21 = (src1->_11 * src2->_21) + (src1->_21 * src2->_22) + (src1->_31 * src2->_23) + (src1->_41 * src2->_24);
|
181 | | - temp._31 = (src1->_11 * src2->_31) + (src1->_21 * src2->_32) + (src1->_31 * src2->_33) + (src1->_41 * src2->_34);
|
182 | | - temp._41 = (src1->_11 * src2->_41) + (src1->_21 * src2->_42) + (src1->_31 * src2->_43) + (src1->_41 * src2->_44);
|
183 | | -
|
184 | | - temp._12 = (src1->_12 * src2->_11) + (src1->_22 * src2->_12) + (src1->_32 * src2->_13) + (src1->_42 * src2->_14);
|
185 | | - temp._22 = (src1->_12 * src2->_21) + (src1->_22 * src2->_22) + (src1->_32 * src2->_23) + (src1->_42 * src2->_24);
|
186 | | - temp._32 = (src1->_12 * src2->_31) + (src1->_22 * src2->_32) + (src1->_32 * src2->_33) + (src1->_42 * src2->_34);
|
187 | | - temp._42 = (src1->_12 * src2->_41) + (src1->_22 * src2->_42) + (src1->_32 * src2->_43) + (src1->_42 * src2->_44);
|
188 | | -
|
189 | | - temp._13 = (src1->_13 * src2->_11) + (src1->_23 * src2->_12) + (src1->_33 * src2->_13) + (src1->_43 * src2->_14);
|
190 | | - temp._23 = (src1->_13 * src2->_21) + (src1->_23 * src2->_22) + (src1->_33 * src2->_23) + (src1->_43 * src2->_24);
|
191 | | - temp._33 = (src1->_13 * src2->_31) + (src1->_23 * src2->_32) + (src1->_33 * src2->_33) + (src1->_43 * src2->_34);
|
192 | | - temp._43 = (src1->_13 * src2->_41) + (src1->_23 * src2->_42) + (src1->_33 * src2->_43) + (src1->_43 * src2->_44);
|
193 | | -
|
194 | | - temp._14 = (src1->_14 * src2->_11) + (src1->_24 * src2->_12) + (src1->_34 * src2->_13) + (src1->_44 * src2->_14);
|
195 | | - temp._24 = (src1->_14 * src2->_21) + (src1->_24 * src2->_22) + (src1->_34 * src2->_23) + (src1->_44 * src2->_24);
|
196 | | - temp._34 = (src1->_14 * src2->_31) + (src1->_24 * src2->_32) + (src1->_34 * src2->_33) + (src1->_44 * src2->_34);
|
197 | | - temp._44 = (src1->_14 * src2->_41) + (src1->_24 * src2->_42) + (src1->_34 * src2->_43) + (src1->_44 * src2->_44);
|
198 | | -
|
199 | | - /* And copy the new matrix in the good storage.. */
|
200 | | - memcpy(dest, &temp, 16 * sizeof(float));
|
201 | | -}
|
Index: ddraw/ddraw.vcxproj |
— | — | @@ -364,7 +364,14 @@ |
365 | 365 | <ClCompile Include="glRenderer.cpp" />
|
366 | 366 | <ClCompile Include="glRenderWindow.cpp" />
|
367 | 367 | <ClCompile Include="glUtil.cpp" />
|
368 | | - <ClCompile Include="matrix.cpp" />
|
| 368 | + <ClCompile Include="matrix.c">
|
| 369 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Trace|Win32'">NotUsing</PrecompiledHeader>
|
| 370 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release no DXGL|Win32'">NotUsing</PrecompiledHeader>
|
| 371 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
|
| 372 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
|
| 373 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug no DXGL|Win32'">NotUsing</PrecompiledHeader>
|
| 374 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug No MSVCRT|Win32'">NotUsing</PrecompiledHeader>
|
| 375 | + </ClCompile>
|
369 | 376 | <ClCompile Include="precomp.cpp">
|
370 | 377 | <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug no DXGL|Win32'">Create</PrecompiledHeader>
|
371 | 378 | <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
|
— | — | @@ -373,7 +380,14 @@ |
374 | 381 | <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release no DXGL|Win32'">Create</PrecompiledHeader>
|
375 | 382 | <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
|
376 | 383 | </ClCompile>
|
377 | | - <ClCompile Include="scalers.cpp" />
|
| 384 | + <ClCompile Include="scalers.c">
|
| 385 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug Trace|Win32'">NotUsing</PrecompiledHeader>
|
| 386 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release no DXGL|Win32'">NotUsing</PrecompiledHeader>
|
| 387 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
|
| 388 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
|
| 389 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug no DXGL|Win32'">NotUsing</PrecompiledHeader>
|
| 390 | + <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug No MSVCRT|Win32'">NotUsing</PrecompiledHeader>
|
| 391 | + </ClCompile>
|
378 | 392 | <ClCompile Include="ShaderGen3D.cpp" />
|
379 | 393 | <ClCompile Include="ShaderGen2D.cpp" />
|
380 | 394 | <ClCompile Include="ShaderManager.cpp" />
|
Index: ddraw/ddraw.vcxproj.filters |
— | — | @@ -160,9 +160,6 @@ |
161 | 161 | <ClCompile Include="precomp.cpp">
|
162 | 162 | <Filter>Source Files</Filter>
|
163 | 163 | </ClCompile>
|
164 | | - <ClCompile Include="scalers.cpp">
|
165 | | - <Filter>Source Files</Filter>
|
166 | | - </ClCompile>
|
167 | 164 | <ClCompile Include="glClassFactory.cpp">
|
168 | 165 | <Filter>Source Files</Filter>
|
169 | 166 | </ClCompile>
|
— | — | @@ -178,9 +175,6 @@ |
179 | 176 | <ClCompile Include="glRenderer.cpp">
|
180 | 177 | <Filter>Source Files</Filter>
|
181 | 178 | </ClCompile>
|
182 | | - <ClCompile Include="matrix.cpp">
|
183 | | - <Filter>Source Files</Filter>
|
184 | | - </ClCompile>
|
185 | 179 | <ClCompile Include="glRenderWindow.cpp">
|
186 | 180 | <Filter>Source Files</Filter>
|
187 | 181 | </ClCompile>
|
— | — | @@ -235,6 +229,12 @@ |
236 | 230 | <ClCompile Include="timer.c">
|
237 | 231 | <Filter>Source Files</Filter>
|
238 | 232 | </ClCompile>
|
| 233 | + <ClCompile Include="matrix.c">
|
| 234 | + <Filter>Source Files</Filter>
|
| 235 | + </ClCompile>
|
| 236 | + <ClCompile Include="scalers.c">
|
| 237 | + <Filter>Source Files</Filter>
|
| 238 | + </ClCompile>
|
239 | 239 | </ItemGroup>
|
240 | 240 | <ItemGroup>
|
241 | 241 | <ResourceCompile Include="ddraw.rc">
|
Index: ddraw/matrix.c |
— | — | @@ -0,0 +1,200 @@ |
| 2 | +// DXGL
|
| 3 | +// Copyright (C) 2012 William Feely
|
| 4 | +
|
| 5 | +// This library is free software; you can redistribute it and/or
|
| 6 | +// modify it under the terms of the GNU Lesser General Public
|
| 7 | +// License as published by the Free Software Foundation; either
|
| 8 | +// version 2.1 of the License, or (at your option) any later version.
|
| 9 | +
|
| 10 | +// This library is distributed in the hope that it will be useful,
|
| 11 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 12 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 13 | +// Lesser General Public License for more details.
|
| 14 | +
|
| 15 | +// You should have received a copy of the GNU Lesser General Public
|
| 16 | +// License along with this library; if not, write to the Free Software
|
| 17 | +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
| 18 | +
|
| 19 | +// Portions of this file are from the Mesa library, found in src/glu/sgi/libutil/project.c
|
| 20 | +// project.c is licensed under the SGI Free Software License B, version 2.0.
|
| 21 | +/*
|
| 22 | + * SGI FREE SOFTWARE LICENSE B (Version 2.0, Sept. 18, 2008)
|
| 23 | + * Copyright (C) 1991-2000 Silicon Graphics, Inc. All Rights Reserved.
|
| 24 | + *
|
| 25 | + * Permission is hereby granted, free of charge, to any person obtaining a
|
| 26 | + * copy of this software and associated documentation files (the "Software"),
|
| 27 | + * to deal in the Software without restriction, including without limitation
|
| 28 | + * the rights to use, copy, modify, merge, publish, distribute, sublicense,
|
| 29 | + * and/or sell copies of the Software, and to permit persons to whom the
|
| 30 | + * Software is furnished to do so, subject to the following conditions:
|
| 31 | + *
|
| 32 | + * The above copyright notice including the dates of first publication and
|
| 33 | + * either this permission notice or a reference to
|
| 34 | + * http://oss.sgi.com/projects/FreeB/
|
| 35 | + * shall be included in all copies or substantial portions of the Software.
|
| 36 | + *
|
| 37 | + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
|
| 38 | + * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
| 39 | + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
|
| 40 | + * SILICON GRAPHICS, INC. BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
| 41 | + * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
|
| 42 | + * OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
| 43 | + * SOFTWARE.
|
| 44 | + *
|
| 45 | + * Except as contained in this notice, the name of Silicon Graphics, Inc.
|
| 46 | + * shall not be used in advertising or otherwise to promote the sale, use or
|
| 47 | + * other dealings in this Software without prior written authorization from
|
| 48 | + * Silicon Graphics, Inc.
|
| 49 | + */
|
| 50 | +#include "common.h"
|
| 51 | +#include "matrix.h"
|
| 52 | +
|
| 53 | +// From project.c:
|
| 54 | +/*
|
| 55 | +** Invert 4x4 matrix.
|
| 56 | +** Contributed by David Moore (See Mesa bug #6748)
|
| 57 | +*/
|
| 58 | +// Converted to float
|
| 59 | +int __gluInvertMatrixf(const GLfloat m[16], GLfloat invOut[16])
|
| 60 | +{
|
| 61 | + GLfloat inv[16], det;
|
| 62 | + int i;
|
| 63 | +
|
| 64 | + inv[0] = m[5]*m[10]*m[15] - m[5]*m[11]*m[14] - m[9]*m[6]*m[15]
|
| 65 | + + m[9]*m[7]*m[14] + m[13]*m[6]*m[11] - m[13]*m[7]*m[10];
|
| 66 | + inv[4] = -m[4]*m[10]*m[15] + m[4]*m[11]*m[14] + m[8]*m[6]*m[15]
|
| 67 | + - m[8]*m[7]*m[14] - m[12]*m[6]*m[11] + m[12]*m[7]*m[10];
|
| 68 | + inv[8] = m[4]*m[9]*m[15] - m[4]*m[11]*m[13] - m[8]*m[5]*m[15]
|
| 69 | + + m[8]*m[7]*m[13] + m[12]*m[5]*m[11] - m[12]*m[7]*m[9];
|
| 70 | + inv[12] = -m[4]*m[9]*m[14] + m[4]*m[10]*m[13] + m[8]*m[5]*m[14]
|
| 71 | + - m[8]*m[6]*m[13] - m[12]*m[5]*m[10] + m[12]*m[6]*m[9];
|
| 72 | + inv[1] = -m[1]*m[10]*m[15] + m[1]*m[11]*m[14] + m[9]*m[2]*m[15]
|
| 73 | + - m[9]*m[3]*m[14] - m[13]*m[2]*m[11] + m[13]*m[3]*m[10];
|
| 74 | + inv[5] = m[0]*m[10]*m[15] - m[0]*m[11]*m[14] - m[8]*m[2]*m[15]
|
| 75 | + + m[8]*m[3]*m[14] + m[12]*m[2]*m[11] - m[12]*m[3]*m[10];
|
| 76 | + inv[9] = -m[0]*m[9]*m[15] + m[0]*m[11]*m[13] + m[8]*m[1]*m[15]
|
| 77 | + - m[8]*m[3]*m[13] - m[12]*m[1]*m[11] + m[12]*m[3]*m[9];
|
| 78 | + inv[13] = m[0]*m[9]*m[14] - m[0]*m[10]*m[13] - m[8]*m[1]*m[14]
|
| 79 | + + m[8]*m[2]*m[13] + m[12]*m[1]*m[10] - m[12]*m[2]*m[9];
|
| 80 | + inv[2] = m[1]*m[6]*m[15] - m[1]*m[7]*m[14] - m[5]*m[2]*m[15]
|
| 81 | + + m[5]*m[3]*m[14] + m[13]*m[2]*m[7] - m[13]*m[3]*m[6];
|
| 82 | + inv[6] = -m[0]*m[6]*m[15] + m[0]*m[7]*m[14] + m[4]*m[2]*m[15]
|
| 83 | + - m[4]*m[3]*m[14] - m[12]*m[2]*m[7] + m[12]*m[3]*m[6];
|
| 84 | + inv[10] = m[0]*m[5]*m[15] - m[0]*m[7]*m[13] - m[4]*m[1]*m[15]
|
| 85 | + + m[4]*m[3]*m[13] + m[12]*m[1]*m[7] - m[12]*m[3]*m[5];
|
| 86 | + inv[14] = -m[0]*m[5]*m[14] + m[0]*m[6]*m[13] + m[4]*m[1]*m[14]
|
| 87 | + - m[4]*m[2]*m[13] - m[12]*m[1]*m[6] + m[12]*m[2]*m[5];
|
| 88 | + inv[3] = -m[1]*m[6]*m[11] + m[1]*m[7]*m[10] + m[5]*m[2]*m[11]
|
| 89 | + - m[5]*m[3]*m[10] - m[9]*m[2]*m[7] + m[9]*m[3]*m[6];
|
| 90 | + inv[7] = m[0]*m[6]*m[11] - m[0]*m[7]*m[10] - m[4]*m[2]*m[11]
|
| 91 | + + m[4]*m[3]*m[10] + m[8]*m[2]*m[7] - m[8]*m[3]*m[6];
|
| 92 | + inv[11] = -m[0]*m[5]*m[11] + m[0]*m[7]*m[9] + m[4]*m[1]*m[11]
|
| 93 | + - m[4]*m[3]*m[9] - m[8]*m[1]*m[7] + m[8]*m[3]*m[5];
|
| 94 | + inv[15] = m[0]*m[5]*m[10] - m[0]*m[6]*m[9] - m[4]*m[1]*m[10]
|
| 95 | + + m[4]*m[2]*m[9] + m[8]*m[1]*m[6] - m[8]*m[2]*m[5];
|
| 96 | +
|
| 97 | + det = m[0]*inv[0] + m[1]*inv[4] + m[2]*inv[8] + m[3]*inv[12];
|
| 98 | + if (det == 0)
|
| 99 | + return GL_FALSE;
|
| 100 | +
|
| 101 | + det = 1.0f / det;
|
| 102 | +
|
| 103 | + for (i = 0; i < 16; i++)
|
| 104 | + invOut[i] = inv[i] * det;
|
| 105 | +
|
| 106 | + return GL_TRUE;
|
| 107 | +}
|
| 108 | +
|
| 109 | +void __gluMultMatricesf(const GLfloat a[16], const GLfloat b[16],
|
| 110 | + GLfloat r[16])
|
| 111 | +{
|
| 112 | + int i, j;
|
| 113 | + GLfloat out[16];
|
| 114 | +
|
| 115 | + for (i = 0; i < 4; i++) {
|
| 116 | + for (j = 0; j < 4; j++) {
|
| 117 | + out[i*4+j] =
|
| 118 | + a[i*4+0]*b[0*4+j] +
|
| 119 | + a[i*4+1]*b[1*4+j] +
|
| 120 | + a[i*4+2]*b[2*4+j] +
|
| 121 | + a[i*4+3]*b[3*4+j];
|
| 122 | + }
|
| 123 | + }
|
| 124 | + memcpy(r, out, 16 * sizeof(GLfloat));
|
| 125 | +}
|
| 126 | +
|
| 127 | +void __gluMakeIdentityf(GLfloat m[16])
|
| 128 | +{
|
| 129 | + m[0+4*0] = 1; m[0+4*1] = 0; m[0+4*2] = 0; m[0+4*3] = 0;
|
| 130 | + m[1+4*0] = 0; m[1+4*1] = 1; m[1+4*2] = 0; m[1+4*3] = 0;
|
| 131 | + m[2+4*0] = 0; m[2+4*1] = 0; m[2+4*2] = 1; m[2+4*3] = 0;
|
| 132 | + m[3+4*0] = 0; m[3+4*1] = 0; m[3+4*2] = 0; m[3+4*3] = 1;
|
| 133 | +}
|
| 134 | +
|
| 135 | +void __gluMultMatrixVecf(const GLfloat matrix[16], const GLfloat in[4], GLfloat out[4])
|
| 136 | +{
|
| 137 | + int i;
|
| 138 | +
|
| 139 | + for (i=0; i<4; i++) {
|
| 140 | + out[i] =
|
| 141 | + in[0] * matrix[0*4+i] +
|
| 142 | + in[1] * matrix[1*4+i] +
|
| 143 | + in[2] * matrix[2*4+i] +
|
| 144 | + in[3] * matrix[3*4+i];
|
| 145 | + }
|
| 146 | +}
|
| 147 | +
|
| 148 | +
|
| 149 | +// Portions of this file are from the Wine project, distributed under the
|
| 150 | +// following license:
|
| 151 | +/*
|
| 152 | +* Copyright (c) 1998-2004 Lionel Ulmer
|
| 153 | +* Copyright (c) 2002-2005 Christian Costa
|
| 154 | +* Copyright (c) 2006-2009, 2011-2013 Stefan Dösinger
|
| 155 | +* Copyright (c) 2008 Alexander Dorofeyev
|
| 156 | +*
|
| 157 | +* This library is free software; you can redistribute it and/or
|
| 158 | +* modify it under the terms of the GNU Lesser General Public
|
| 159 | +* License as published by the Free Software Foundation; either
|
| 160 | +* version 2.1 of the License, or (at your option) any later version.
|
| 161 | +*
|
| 162 | +* This library is distributed in the hope that it will be useful,
|
| 163 | +* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 164 | +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 165 | +* Lesser General Public License for more details.
|
| 166 | +*
|
| 167 | +* You should have received a copy of the GNU Lesser General Public
|
| 168 | +* License along with this library; if not, write to the Free Software
|
| 169 | +* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
|
| 170 | +*/
|
| 171 | +
|
| 172 | +void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
|
| 173 | + const struct wined3d_matrix *src2)
|
| 174 | +{
|
| 175 | + struct wined3d_matrix temp;
|
| 176 | +
|
| 177 | + /* Now do the multiplication 'by hand'.
|
| 178 | + I know that all this could be optimised, but this will be done later :-) */
|
| 179 | + temp._11 = (src1->_11 * src2->_11) + (src1->_21 * src2->_12) + (src1->_31 * src2->_13) + (src1->_41 * src2->_14);
|
| 180 | + temp._21 = (src1->_11 * src2->_21) + (src1->_21 * src2->_22) + (src1->_31 * src2->_23) + (src1->_41 * src2->_24);
|
| 181 | + temp._31 = (src1->_11 * src2->_31) + (src1->_21 * src2->_32) + (src1->_31 * src2->_33) + (src1->_41 * src2->_34);
|
| 182 | + temp._41 = (src1->_11 * src2->_41) + (src1->_21 * src2->_42) + (src1->_31 * src2->_43) + (src1->_41 * src2->_44);
|
| 183 | +
|
| 184 | + temp._12 = (src1->_12 * src2->_11) + (src1->_22 * src2->_12) + (src1->_32 * src2->_13) + (src1->_42 * src2->_14);
|
| 185 | + temp._22 = (src1->_12 * src2->_21) + (src1->_22 * src2->_22) + (src1->_32 * src2->_23) + (src1->_42 * src2->_24);
|
| 186 | + temp._32 = (src1->_12 * src2->_31) + (src1->_22 * src2->_32) + (src1->_32 * src2->_33) + (src1->_42 * src2->_34);
|
| 187 | + temp._42 = (src1->_12 * src2->_41) + (src1->_22 * src2->_42) + (src1->_32 * src2->_43) + (src1->_42 * src2->_44);
|
| 188 | +
|
| 189 | + temp._13 = (src1->_13 * src2->_11) + (src1->_23 * src2->_12) + (src1->_33 * src2->_13) + (src1->_43 * src2->_14);
|
| 190 | + temp._23 = (src1->_13 * src2->_21) + (src1->_23 * src2->_22) + (src1->_33 * src2->_23) + (src1->_43 * src2->_24);
|
| 191 | + temp._33 = (src1->_13 * src2->_31) + (src1->_23 * src2->_32) + (src1->_33 * src2->_33) + (src1->_43 * src2->_34);
|
| 192 | + temp._43 = (src1->_13 * src2->_41) + (src1->_23 * src2->_42) + (src1->_33 * src2->_43) + (src1->_43 * src2->_44);
|
| 193 | +
|
| 194 | + temp._14 = (src1->_14 * src2->_11) + (src1->_24 * src2->_12) + (src1->_34 * src2->_13) + (src1->_44 * src2->_14);
|
| 195 | + temp._24 = (src1->_14 * src2->_21) + (src1->_24 * src2->_22) + (src1->_34 * src2->_23) + (src1->_44 * src2->_24);
|
| 196 | + temp._34 = (src1->_14 * src2->_31) + (src1->_24 * src2->_32) + (src1->_34 * src2->_33) + (src1->_44 * src2->_34);
|
| 197 | + temp._44 = (src1->_14 * src2->_41) + (src1->_24 * src2->_42) + (src1->_34 * src2->_43) + (src1->_44 * src2->_44);
|
| 198 | +
|
| 199 | + /* And copy the new matrix in the good storage.. */
|
| 200 | + memcpy(dest, &temp, 16 * sizeof(float));
|
| 201 | +}
|
Index: ddraw/matrix.h |
— | — | @@ -50,6 +50,10 @@ |
51 | 51 | #ifndef _MATRIX_H
|
52 | 52 | #define _MATRIX_H
|
53 | 53 |
|
| 54 | +#ifdef __cplusplus
|
| 55 | +extern "C" {
|
| 56 | +#endif
|
| 57 | +
|
54 | 58 | int __gluInvertMatrixf(const GLfloat m[16], GLfloat invOut[16]);
|
55 | 59 | void __gluMultMatricesf(const GLfloat a[16], const GLfloat b[16],
|
56 | 60 | GLfloat r[16]);
|
— | — | @@ -97,4 +101,8 @@ |
98 | 102 | void multiply_matrix(struct wined3d_matrix *dest, const struct wined3d_matrix *src1,
|
99 | 103 | const struct wined3d_matrix *src2);
|
100 | 104 |
|
| 105 | +#ifdef __cplusplus
|
| 106 | +}
|
| 107 | +#endif
|
| 108 | +
|
101 | 109 | #endif //_MATRIX_H |
\ No newline at end of file |
Index: ddraw/scalers.c |
— | — | @@ -0,0 +1,112 @@ |
| 2 | +// DXGL
|
| 3 | +// Copyright (C) 2011 William Feely
|
| 4 | +
|
| 5 | +// This library is free software; you can redistribute it and/or
|
| 6 | +// modify it under the terms of the GNU Lesser General Public
|
| 7 | +// License as published by the Free Software Foundation; either
|
| 8 | +// version 2.1 of the License, or (at your option) any later version.
|
| 9 | +
|
| 10 | +// This library is distributed in the hope that it will be useful,
|
| 11 | +// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
| 12 | +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
| 13 | +// Lesser General Public License for more details.
|
| 14 | +
|
| 15 | +// You should have received a copy of the GNU Lesser General Public
|
| 16 | +// License along with this library; if not, write to the Free Software
|
| 17 | +// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
| 18 | +
|
| 19 | +#include "common.h"
|
| 20 | +#include "scalers.h"
|
| 21 | +#include <WinDef.h>
|
| 22 | +
|
| 23 | +
|
| 24 | +void ScaleNearest8(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
| 25 | +{
|
| 26 | + BYTE *d = (BYTE *)dest;
|
| 27 | + BYTE *s = (BYTE *)src;
|
| 28 | + int rx = (int)((sw<<16)/dw)+1;
|
| 29 | + int ry = (int)((sh<<16)/dh)+1;
|
| 30 | + int x,y;
|
| 31 | + int x2,y2;
|
| 32 | + int b1,b2;
|
| 33 | + for(y = 0; y < dh; y++)
|
| 34 | + {
|
| 35 | + b1 = y*outpitch;
|
| 36 | + y2 = ((y*ry)>>16);
|
| 37 | + b2 = y2*inpitch;
|
| 38 | + for(x = 0; x < dw; x++)
|
| 39 | + {
|
| 40 | + x2 = ((x*rx)>>16);
|
| 41 | + y2 = ((y*ry)>>16);
|
| 42 | + d[b1+x] = s[b2+x2];
|
| 43 | + }
|
| 44 | + }
|
| 45 | +}
|
| 46 | +void ScaleNearest16(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
| 47 | +{
|
| 48 | + WORD *d = (WORD *)dest;
|
| 49 | + WORD *s = (WORD *)src;
|
| 50 | + int rx = (int)((sw<<16)/dw)+1;
|
| 51 | + int ry = (int)((sh<<16)/dh)+1;
|
| 52 | + int x,y;
|
| 53 | + int x2,y2;
|
| 54 | + int b1,b2;
|
| 55 | + for(y = 0; y < dh; y++)
|
| 56 | + {
|
| 57 | + b1 = y*outpitch;
|
| 58 | + y2 = ((y*ry)>>16);
|
| 59 | + b2 = y2*inpitch;
|
| 60 | + for(x = 0; x < dw; x++)
|
| 61 | + {
|
| 62 | + x2 = ((x*rx)>>16);
|
| 63 | + y2 = ((y*ry)>>16);
|
| 64 | + d[b1+x] = s[b2+x2];
|
| 65 | + }
|
| 66 | + }
|
| 67 | +}
|
| 68 | +void ScaleNearest24(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
| 69 | +{
|
| 70 | + RGBTRIPLE *d = (RGBTRIPLE *)dest;
|
| 71 | + RGBTRIPLE *s = (RGBTRIPLE *)src;
|
| 72 | + char *d8 = (char*)dest;
|
| 73 | + char *s8 = (char*)src;
|
| 74 | + int rx = (int)((sw<<16)/dw)+1;
|
| 75 | + int ry = (int)((sh<<16)/dh)+1;
|
| 76 | + int x,y;
|
| 77 | + int x2,y2;
|
| 78 | + for(y = 0; y < dh; y++)
|
| 79 | + {
|
| 80 | + d8 = (y*outpitch)+(char*)dest;
|
| 81 | + y2 = ((y*ry)>>16);
|
| 82 | + s8 = (y2*inpitch)+(char*)src;
|
| 83 | + d = (RGBTRIPLE*)d8;
|
| 84 | + s = (RGBTRIPLE*)s8;
|
| 85 | + for(x = 0; x < dw; x++)
|
| 86 | + {
|
| 87 | + x2 = ((x*rx)>>16);
|
| 88 | + y2 = ((y*ry)>>16);
|
| 89 | + d[x] = s[x2];
|
| 90 | + }
|
| 91 | + }
|
| 92 | +}
|
| 93 | +void ScaleNearest32(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch)
|
| 94 | +{
|
| 95 | + DWORD *d = (DWORD *)dest;
|
| 96 | + DWORD *s = (DWORD *)src;
|
| 97 | + int rx = (int)((sw<<16)/dw)+1;
|
| 98 | + int ry = (int)((sh<<16)/dh)+1;
|
| 99 | + int x,y;
|
| 100 | + int x2,y2;
|
| 101 | + int b1,b2;
|
| 102 | + for(y = 0; y < dh; y++)
|
| 103 | + {
|
| 104 | + b1 = y*outpitch;
|
| 105 | + y2 = ((y*ry)>>16);
|
| 106 | + b2 = y2*inpitch;
|
| 107 | + for(x = 0; x < dw; x++)
|
| 108 | + {
|
| 109 | + x2 = ((x*rx)>>16);
|
| 110 | + d[b1+x] = s[b2+x2];
|
| 111 | + }
|
| 112 | + }
|
| 113 | +}
|
Index: ddraw/scalers.h |
— | — | @@ -19,10 +19,17 @@ |
20 | 20 | #ifndef _SCALERS_H
|
21 | 21 | #define _SCALERS_H
|
22 | 22 |
|
| 23 | +#ifdef __cplusplus
|
| 24 | +extern "C" {
|
| 25 | +#endif
|
| 26 | +
|
23 | 27 | void ScaleNearest8(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch);
|
24 | 28 | void ScaleNearest16(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch);
|
25 | 29 | void ScaleNearest24(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch);
|
26 | 30 | void ScaleNearest32(void *dest, void *src, int dw, int dh, int sw, int sh, int inpitch, int outpitch);
|
27 | 31 |
|
| 32 | +#ifdef __cplusplus
|
| 33 | +}
|
| 34 | +#endif
|
28 | 35 |
|
29 | 36 | #endif //_SCALERS_H |
\ No newline at end of file |