diff --git a/reactos/boot/bootdata/packages/reactos.dff b/reactos/boot/bootdata/packages/reactos.dff index 6f5ef910014..e5810bbfdc5 100644 --- a/reactos/boot/bootdata/packages/reactos.dff +++ b/reactos/boot/bootdata/packages/reactos.dff @@ -101,7 +101,7 @@ base\system\smss\smss.exe 1 ; Dynamic Link Libraries dll\3rdparty\freetype\freetype.dll 1 dll\3rdparty\mesa32\mesa32.dll 1 -dll\3rdparty\dxtn.dll 1 optional +dll\3rdparty\dxtn\dxtn.dll 1 optional dll\cpl\access\access.cpl 1 dll\cpl\appwiz\appwiz.cpl 1 diff --git a/reactos/dll/3rdparty/dxtn/Makefile b/reactos/dll/3rdparty/dxtn/Makefile deleted file mode 100644 index f93271c442d..00000000000 --- a/reactos/dll/3rdparty/dxtn/Makefile +++ /dev/null @@ -1,69 +0,0 @@ -# Texture compression Linux makefile -# Version: 1.1 -# -# Copyright (C) 2004 Daniel Borca All Rights Reserved. -# -# this is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# this is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Make; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - - -# -# Available options: -# -# Environment variables: -# -# Targets: -# all: build dynamic module -# clean: remove object files -# realclean: remove all generated files -# - - -.PHONY: all clean realclean - -DLLNAME = libdxtn.so - -CC = gcc -CFLAGS = -Wall -W -pedantic -ansi -CFLAGS += -O2 -ffast-math -funroll-loops -#CFLAGS += -fomit-frame-pointer -fexpensive-optimizations -CFLAGS += -fPIC -DPIC - -LD = gcc -LDFLAGS = -shared -LDLIBS = - -SOURCES = \ - fxt1.c \ - dxtn.c \ - wrapper.c \ - texstore.c - -OBJECTS = $(SOURCES:.c=.o) - -.c.o: - $(CC) -o $@ $(CFLAGS) -c $< - -all: $(DLLNAME) - -$(DLLNAME): $(OBJECTS) - $(LD) -o $@ $(LDFLAGS) $^ $(LDLIBS) - -clean: - -$(RM) $(OBJECTS) - -realclean: clean - -$(RM) $(DLLNAME) - --include depend diff --git a/reactos/dll/3rdparty/dxtn/Makefile.DJ b/reactos/dll/3rdparty/dxtn/Makefile.DJ deleted file mode 100644 index 7a2527ac5e1..00000000000 --- a/reactos/dll/3rdparty/dxtn/Makefile.DJ +++ /dev/null @@ -1,69 +0,0 @@ -# Texture compression DJGPP makefile -# Version: 1.1 -# -# Copyright (C) 2004 Daniel Borca All Rights Reserved. -# -# this is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# this is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Make; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - - -# -# Available options: -# -# Environment variables: -# -# Targets: -# all: build dynamic module -# clean: remove object files -# realclean: remove all generated files -# - - -.PHONY: all clean realclean - -DLLNAME = libdxtn.a - -CC = gcc -CFLAGS = -Wall -W -pedantic -ansi -CFLAGS += -O2 -ffast-math -funroll-loops -#CFLAGS += -fomit-frame-pointer -fexpensive-optimizations - -AR = ar -ARFLAGS = crus - -RM = del - -SOURCES = \ - fxt1.c \ - dxtn.c \ - wrapper.c \ - texstore.c - -OBJECTS = $(SOURCES:.c=.o) - -.c.o: - $(CC) -o $@ $(CFLAGS) -c $< - -all: $(DLLNAME) - -$(DLLNAME): $(OBJECTS) - $(AR) $(ARFLAGS) $@ $^ - -clean: - -$(RM) $(OBJECTS) - -realclean: clean - -$(RM) $(DLLNAME) - --include depend diff --git a/reactos/dll/3rdparty/dxtn/Makefile.mgw b/reactos/dll/3rdparty/dxtn/Makefile.mgw deleted file mode 100644 index 5dc7b52d88a..00000000000 --- a/reactos/dll/3rdparty/dxtn/Makefile.mgw +++ /dev/null @@ -1,70 +0,0 @@ -# Texture compression MinGW makefile -# Version: 1.1 -# -# Copyright (C) 2004 Daniel Borca All Rights Reserved. -# -# this is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# this is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Make; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - - -# -# Available options: -# -# Environment variables: -# -# Targets: -# all: build dynamic module -# clean: remove object files -# realclean: remove all generated files -# - - -.PHONY: all clean realclean - -DLLNAME = dxtn.dll - -CC = mingw32-gcc -CFLAGS = -Wall -W -pedantic -ansi -CFLAGS += -O2 -ffast-math -funroll-loops -#CFLAGS += -fomit-frame-pointer -fexpensive-optimizations - -LD = mingw32-gcc -LDFLAGS = -shared -LDLIBS = - -RM = del - -SOURCES = \ - fxt1.c \ - dxtn.c \ - wrapper.c \ - texstore.c - -OBJECTS = $(SOURCES:.c=.o) - -.c.o: - $(CC) -o $@ $(CFLAGS) -c $< - -all: $(DLLNAME) - -$(DLLNAME): $(OBJECTS) - $(LD) -o $@ $(LDFLAGS) $^ $(LDLIBS) - -clean: - -$(RM) *.o - -realclean: clean - -$(RM) $(DLLNAME) - --include depend diff --git a/reactos/dll/3rdparty/dxtn/Makefile.vc b/reactos/dll/3rdparty/dxtn/Makefile.vc deleted file mode 100644 index 30535608bd4..00000000000 --- a/reactos/dll/3rdparty/dxtn/Makefile.vc +++ /dev/null @@ -1,69 +0,0 @@ -# Texture compression VisualC(++) makefile -# Version: 1.1 -# -# Copyright (C) 2004 Daniel Borca All Rights Reserved. -# -# this is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# this is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Make; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - - -# -# Available options: -# -# Environment variables: -# -# Targets: -# all: build dynamic module -# clean: remove object files -# realclean: remove all generated files -# - - -.PHONY: all clean realclean - -DLLNAME = dxtn.dll - -CC = cl -CFLAGS = -nologo -W3 -WX -D__MSC__=1 -D__WIN32__ -CFLAGS += -DNDEBUG -G6 -O2 - -LD = link -LDFLAGS = -nologo -dll -opt:WIN98 -machine:IX86 -LDLIBS = - -RM = del - -SOURCES = \ - fxt1.c \ - dxtn.c \ - wrapper.c \ - texstore.c - -OBJECTS = $(SOURCES:.c=.o) - -.c.o: - $(CC) -Fo$@ $(CFLAGS) -c $< - -all: $(DLLNAME) - -$(DLLNAME): $(OBJECTS) - $(LD) -out:$@ $(LDFLAGS) $^ $(LDLIBS) - -clean: - -$(RM) *.o - -realclean: clean - -$(RM) $(DLLNAME) - --include depend diff --git a/reactos/dll/3rdparty/dxtn/Makefile.wat b/reactos/dll/3rdparty/dxtn/Makefile.wat deleted file mode 100644 index d45ddfe3af2..00000000000 --- a/reactos/dll/3rdparty/dxtn/Makefile.wat +++ /dev/null @@ -1,71 +0,0 @@ -# Texture compression OpenWatcom makefile -# Version: 1.1 -# -# Copyright (C) 2004 Daniel Borca All Rights Reserved. -# -# this is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# this is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Make; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - - -# -# Available options: -# -# Environment variables: -# -# Targets: -# all: build dynamic module -# clean: remove object files -# realclean: remove all generated files -# - - -.PHONY: all clean realclean -.SUFFIXES: .c .obj - -DLLNAME = dxtn.dll - -CC = wcl386 -CFLAGS = -wx -zq -CFLAGS += -ox -6s - -LD = wcl386 -LDFLAGS = -zq -bd -LDLIBS = - -RM = del - -SOURCES = \ - fxt1.c \ - dxtn.c \ - wrapper.c \ - texstore.c - -OBJECTS = $(SOURCES:.c=.obj) - -.c.obj: - $(CC) -fo=$@ $(CFLAGS) -c $< - -all: $(DLLNAME) - -$(DLLNAME): $(OBJECTS) - $(LD) -fe=$@ $(LDFLAGS) $^ $(LDLIBS) - -clean: - $(RM) *.obj - $(RM) *.err - -realclean: clean - $(RM) $(DLLNAME) - --include depend diff --git a/reactos/dll/3rdparty/dxtn/docs/README b/reactos/dll/3rdparty/dxtn/docs/README deleted file mode 100644 index b03b01e0db8..00000000000 --- a/reactos/dll/3rdparty/dxtn/docs/README +++ /dev/null @@ -1,49 +0,0 @@ -This is a working codec for FXT1 and DXTn texture compression. -It has a balanced speed/quality ratio, and is very tweakable. - -Both FXT1 and DXTn use vector quantization for lossy encoding. -The decoder is rather trivial, at the expense of the encoder -complexity. This means that applications heavily relying on -texture compression should provide precompressed textures, for -several obvious reasons: -1) the encoding phase can be done "off-line" with hi-quality - encoders -2) if the graphic driver does not support precompressed textures, - it's still cheap to decode "on-line" application-side -3) the distributed package gets smaller - -The FXT1 and DXTn codecs were written using documentation freely -available on the world-wide-web, including, but not limited to: -3DFX_texture_compression_FXT1 and EXT_texture_compression_s3tc -from http://oss.sgi.com/projects/ogl-sample/registry/ -I just translated the human readable spec into ANSI C. There are -NO binaries available, as I am NOT using this code! Therefore, -THE RESPONSIBILITY OF USING THE CODE IS ENTIRELY WITH YOU! - -The implementation per-se is made available under GPL, which -does not necessarily apply to the abstract content (texture -compression algorithms): -FXT1 is subject to "3DFX FXT1 Source Code General Public License" - -DXTn is basically the S3TC texture compression, a license to the - "S3TC Intellectual Property" may be required prior to any use. - - There is significant IP associated with the S3TC format. - Existing users probably have executed licenses directly - with S3 or its successors (Sonic Blue, S3 Graphics). - - The current ownership of the S3TC IP is unknown to me. It is - known that when S3 exited the graphics hardware business, part of - their operations were sold to ATI and part were spun off to a joint - Taiwanese venture with Via Technologies, called S3 Graphics. - -I, DANIEL BORCA, AM NOT AWARE OF ANY LEGAL ISSUE CAUSED BY RELEASING -THIS CODE. Prior to commencement of legal action, the Plaintiff should -make an informal demand to Cease and Desist. In deference to the -regulations of the Federal Communications Commission, which requires -notice prior to filing an action, and in the spirit of cooperation, -all complaints, issues and concerns should first be directed to me -in an effort to resolve them amicably and promptly. FCC s2250. - -Daniel Borca -dborca 'at' yahoo 'dot' com diff --git a/reactos/dll/3rdparty/dxtn/docs/fxt1license.txt b/reactos/dll/3rdparty/dxtn/docs/fxt1license.txt deleted file mode 100644 index 234c6c6bebc..00000000000 --- a/reactos/dll/3rdparty/dxtn/docs/fxt1license.txt +++ /dev/null @@ -1,244 +0,0 @@ -3DFX FXT1 Source Code General Public License - - -1. PREAMBLE - - This license is for software that provides texture compression and - decompression, particularly in the context of video games. The license - is intended to offer terms similar to some standard General Public - Licenses designed to foster open standards and unrestricted - accessibility to source code. Some of these licenses require that, as - a condition of the license of the software, any derivative works - (that is, new software which is a work containing the original program - or a portion of it) must be available for general use, without - restriction other than for a minor transfer fee, and that the source - code for such derivative works must likewise be made available. The - only restriction is that such derivative works must be subject to - the same General Public License terms as the original work. - - This 3dfx FXT1 Source Code General Public License differs from the - standard licenses of this type in that it does not require the entire - derivative work to be made available under the terms of this license - nor is the recipient required to make available the source code for - the entire derivative work. Rather, the license is limited to only the - identifiable portion of the derivative work that is derived from the - licensed software. The precise terms and conditions for copying, - distribution and modification follow. - - -2. DEFINITIONS - - 2.1 This License applies to any program (or other "work") which - contains a notice placed by the copyright holder saying it may be - distributed under the terms of this 3dfx FXT1 Source Code General - Public License. - - 2.2 The term "Program" as used in this Agreement refers to 3DFX's - FXT1 source code and object code and any Derivative Work. - - 2.3 "Derivative Work" means, for the purpose of the License, that - portion of any work that contains the Program or the identifiable - portion of a work that is derived from the Program, either verbatim or - with modifications and/or translated into another language, and that - performs texture compression and decompression. It does not include - any other portions of a work. - - 2.4 "Modifications of the Program" means any work, which includes a - Derivative Work, and includes the whole of such work. - - 2.5 "License" means this 3dfx FXT1 Source Code General Public License. - - 2.6 The "Source Code" for a work means the preferred form of the work - for making modifications to it. For an executable work, complete source - code means all the source code for all modules it contains, any - associated interface definition files, and the scripts used to control - compilation and installation of the executable work. - - 2.7 "3dfx" means 3dfx Interactive, Inc. - - -3. LICENSED ACTIVITIES - - 3.1 COPYING - You may copy and distribute verbatim copies of the - Program's Source Code as you receive it, in any medium, subject to the - provision of section 3.3 and provided also that: - - (a) you conspicuously and appropriately publish on each copy - an appropriate copyright notice (3dfx Interactive, Inc. 1999), a notice - that recipients who wish to copy, distribute or modify the Program can - only do so subject to this License, and a disclaimer of warranty as - set forth in section 5; - - (b) keep intact all the notices that refer to this License and - to the absence of any warranty; and - - (c) give all recipients of the Program a copy of this License - along with the Program or instructions on how to easily receive a copy - of this License. - - - 3.2 MODIFICATION OF THE PROGRAM/DERIVATIVE WORKS - You may modify your - copy or copies of the Program or any portion of it, and copy and - distribute such modifications subject to the provisions of section 3.3 - and provided that you also meet all of the following conditions: - - (a) you conspicuously and appropriately publish on each copy - of a Derivative Work an appropriate copyright notice, a notice that - recipients who wish to copy, distribute or modify the Derivative Work - can only do so subject to this License, and a disclaimer of warranty - as set forth in section 5; - - (b) keep intact all the notices that refer to this License and - to the absence of any warranty; and - - (c) give all recipients of the Derivative Work a copy of this - License along with the Derivative Work or instructions on how to easily - receive a copy of this License. - - (d) You must cause the modified files of the Derivative Work - to carry prominent notices stating that you changed the files and the - date of any change. - - (e) You must cause any Derivative Work that you distribute or - publish to be licensed at no charge to all third parties under the - terms of this License. - - (f) If the Derivative Work normally reads commands - interactively when run, you must cause it, when started running for - such interactive use, to print or display an announcement as follows: - - "COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED THIS - SOFTWARE IS FREE AND PROVIDED "AS IS," WITHOUT WARRANTY OF ANY KIND, - EITHER EXPRESSED OR IMPLIED. SEE THE 3DFX FXT1 GENERAL PUBLIC LICENSE - FOR A FULL TEXT OF THE DISTRIBUTION AND NON-WARRANTY PROVISIONS - (REQUEST COPY FROM INFO@3DFX.COM)." - - (g) The requirements of this section 3.2 do not apply to the - modified work as a whole but only to the Derivative Work. It is not - the intent of this License to claim rights or contest your rights to - work written entirely by you; rather, the intent is to exercise the - right to control the distribution of Derivative Works. - - - 3.3 DISTRIBUTION - - (a) All copies of the Program or Derivative Works which are - distributed must include in the file headers the following language - verbatim: - - "THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED - ONLY PURSUANT TO THE 3DFX FXT1 GENERAL PUBLIC LICENSE. A COPY OF THIS - LICENSE MAY BE OBTAINED FROM THE DISTRIBUTOR OR BY CONTACTING 3DFX - INTERACTIVE INC (info@3dfx.com). THIS PROGRAM. IS PROVIDED "AS IS" - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED. SEE THE - 3DFX FXT1 GENERAL PUBLIC LICENSE FOR A FULL TEXT OF THE NON-WARRANTY - PROVISIONS. - - USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO - RESTRICTIONS AS SET FORTH IN SUBDIVISION (C)(1)(II) OF THE RIGHTS - IN TECHNICAL DATA AND COMPUTER SOFTWARE CLAUSE AT DFARS 252.227-7013, - AND/OR IN SIMILAR OR SUCCESSOR CLAUSES IN THE FAR, DOD OR NASA FAR - SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF - THE UNITED STATES. - - COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED" - - (b) You may distribute the Program or a Derivative Work in - object code or executable form under the terms of Sections 3.1 and 3.2 - provided that you also do one of the following: - - (1) Accompany it with the complete corresponding - machine-readable source code, which must be distributed under the - terms of Sections 3.1 and 3.2; or, - - (2) Accompany it with a written offer, valid for at - least three years, to give any third party, for a charge no more than - your cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 3.1 and 3.2 on a medium - customarily used for software interchange; or, - - (3) Accompany it with the information you received as - to the offer to distribute corresponding source code. (This alternative - is allowed only for noncommercial distribution and only if you received - the program in object code or executable form with such an offer, in - accord with Subsection 3.3(b)(2) above.) - - (c) The source code distributed need not include anything - that is normally distributed (in either source or binary form) with - the major components (compiler, kernel, and so on) of the operating - system on which the executable runs, unless that component itself - accompanies the executable code. - - (d) If distribution of executable code or object code is made - by offering access to copy from a designated place, then offering - equivalent access to copy the source code from the same place counts - as distribution of the source code, even though third parties are not - compelled to copy the source along with the object code. - - (e) Each time you redistribute the Program or any Derivative - Work, the recipient automatically receives a license from 3dfx and - successor licensors to copy, distribute or modify the Program and - Derivative Works subject to the terms and conditions of the License. - You may not impose any further restrictions on the recipients' - exercise of the rights granted herein. You are not responsible for - enforcing compliance by third parties to this License. - - (f) You may not copy, modify, sublicense, or distribute the - Program or any Derivative Works except as expressly provided under - this License. Any attempt otherwise to copy, modify, sublicense or - distribute the Program or any Derivative Works is void, and will - automatically terminate your rights under this License. However, - parties who have received copies, or rights, from you under this - License will not have their licenses terminated so long as such - parties remain in full compliance. - - -4. MISCELLANEOUS - - 4.1 Acceptance of this License is voluntary. By using, modifying or - distributing the Program or any Derivative Work, you indicate your - acceptance of this License to do so, and all its terms and conditions - for copying, distributing or modifying the Program or works based on - it. Nothing else grants you permission to modify or distribute the - Program or Derivative Works and doing so without acceptance of this - License is in violation of the U.S. and international copyright laws. - - 4.2 If the distribution and/or use of the Program or Derivative Works - is restricted in certain countries either by patents or by copyrighted - interfaces, the original copyright holder who places the Program under - this License may add an explicit geographical distribution limitation - excluding those countries, so that distribution is permitted only in - or among countries not thus excluded. In such case, this License - incorporates the limitation as if written in the body of this License. - - 4.3 This License is to be construed according to the laws of the - State of California and you consent to personal jurisdiction in the - State of California in the event it is necessary to enforce the - provisions of this License. - - -5. NO WARRANTIES - - 5.1 TO THE EXTENT PERMITTED BY APPLICABLE LAW, THERE IS NO WARRANTY - FOR THE PROGRAM. OR DERIVATIVE WORKS THE COPYRIGHT HOLDERS AND/OR - OTHER PARTIES PROVIDE THE PROGRAM AND ANY DERIVATIVE WORKS"AS IS" - WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, - BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND - FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY - AND PERFORMANCE OF THE PROGRAM AND ANY DERIVATIVE WORK IS WITH YOU. - SHOULD THE PROGRAM OR ANY DERIVATIVE WORK PROVE DEFECTIVE, YOU ASSUME - THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION. - - 5.2 IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW WILL 3DFX - INTERACTIVE, INC., OR ANY OTHER COPYRIGHT HOLDER, OR ANY OTHER PARTY - WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM OR DERIVATIVE WORKS AS - PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, - SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR - INABILITY TO USE THE PROGRAM OR DERIVATIVE WORKS (INCLUDING BUT NOT - LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES - SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM OR - DERIVATIVE WORKS TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH - HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH - DAMAGES. - diff --git a/reactos/dll/3rdparty/dxtn/docs/tc.html b/reactos/dll/3rdparty/dxtn/docs/tc.html deleted file mode 100644 index 95425763c84..00000000000 --- a/reactos/dll/3rdparty/dxtn/docs/tc.html +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - Texture compression - - - - - -

Texture compression

-
- -

tc-1.1.tar.gz is a working codec for FXT1 and DXTn texture compression. - It has a balanced speed/quality ratio, and is very tweakable.

-

Both FXT1 and DXTn use vector quantization for lossy encoding. - The decoder is rather trivial, at the expense of the encoder - complexity. This means that applications heavily relying on - texture compression should provide precompressed textures, for - several obvious reasons:

-
    -
  1. the encoding phase can be done "off-line" with hi-quality - encoders
  2. -
  3. if the graphic driver does not support precompressed textures, - it's still cheap to decode "on-line" application-side
  4. -
  5. the distributed package gets smaller
  6. -
-

The FXT1 and DXTn codecs were written using documentation freely - available on the world-wide-web, including, but not limited to: - 3DFX_texture_compression_FXT1 and EXT_texture_compression_s3tc - from http://oss.sgi.com/projects/ogl-sample/registry/
- I just translated the human readable spec into ANSI C. There are - NO binaries available, as I am NOT using this code! Therefore, - THE RESPONSIBILITY OF USING THE CODE IS ENTIRELY WITH YOU!

-

The implementation per-se is made available under GPL, which - does not necessarily apply to the abstract content (texture - compression algorithms):

-

FXT1 is subject to "3DFX FXT1 Source Code General Public License"

-

DXTn is basically the S3TC texture compression, a license to the - "S3TC Intellectual Property" may be required prior to any use.

- -

There is significant IP associated with the S3TC format. - Existing users probably have executed licenses directly - with S3 or its successors (Sonic Blue, S3 Graphics).

- -

The current ownership of the S3TC IP is unknown to me. It is - known that when S3 exited the graphics hardware business, part of - their operations were sold to ATI and part were spun off to a joint - Taiwanese venture with Via Technologies, called S3 Graphics.

-
-

I, DANIEL BORCA, AM NOT AWARE OF ANY LEGAL ISSUE CAUSED BY RELEASING - THIS CODE. Prior to commencement of legal action, the Plaintiff should - make an informal demand to Cease and Desist. In deference to the - regulations of the Federal Communications Commission, which requires - notice prior to filing an action, and in the spirit of cooperation, - all complaints, issues and concerns should first be directed to me - in an effort to resolve them amicably and promptly. FCC s2250.

-

Daniel Borca
- dborca 'at' yahoo 'dot' com - - - diff --git a/reactos/dll/3rdparty/dxtn/docs/texture_compression_FXT1.txt b/reactos/dll/3rdparty/dxtn/docs/texture_compression_FXT1.txt deleted file mode 100644 index 034e6a57eca..00000000000 --- a/reactos/dll/3rdparty/dxtn/docs/texture_compression_FXT1.txt +++ /dev/null @@ -1,619 +0,0 @@ -Name - - 3DFX_texture_compression_FXT1 - -Name Strings - - GL_3DFX_texture_compression_FXT1 - -Contact - - Don Mullis, 3dfx Interactive (dwm 'at' 3dfx.com) - -Status - - CANDIDATE FOR FINAL DRAFT -- NOT YET COMPLETE - -Version - - Draft 0.4, 12 Apr 2000 - -Number - - 206 - -Dependencies - - OpenGL 1.1 is required. - GL_ARB_texture_compression is required. - This extension is written against the OpenGL 1.2.1 Specification. - -Overview - - This extension additional texture compression functionality 's FXT1 - format, specific to 3dfxsubject to all the requirements and - limitations described by the extension GL_ARB_texture_compression. - The FXT1 texture format supports only 2D and 3D images without - borders. - - Because 3dfx expects to make continual improvement to its FXT1 - compressor implementation, 3dfx recommends that to achieve best - visual quality applications adopt the following procedure with - respect to reuse of textures compressed by the GL: - - 1) Save the RENDERER and VERSION strings along with images - compressed by the GL; - 2) Before reuse of the textures, compare the stored strings with - strings newly returned from the current GL; - 3) If out-of-date, repeat the compression and storage steps. - -IP Status - - A royalty-free license is available from 3dfx Interactive - (http://www.3dfx.com/). - -Issues - - (1) Two or only one internalformat tokens: - GL_COMPRESSED_RGBA_FXT1_3DFX and GL_COMPRESSED_RGB_FXT1_3DFX, or - GL_COMPRESSED_RGBA_FXT1_3DFX only. These names are placeholders, - the point in question is whether there should be separate tokens - reflecting extrinsic knowledge of whether the image contains any - non-unity alpha values. This arises because the FXT1 image - format distinguishes non-unity alpha only at the level of an - individual 8x4 compression block. If there are two distinct - tokens, passing GL_COMPRESSED_RGB_FXT1_3DFX to - CompressedTexImage with an image that contained non-unity-alpha - blocks would be an error. - - RESOLVED. Two distinct tokens specified. This is largely to - follow the usual usage by apps of non-compressed tokens. - - (2) Support for borders. - - RESOLVED. Not supported. - - (3) Support for TexSubImage at a level more general than that - guaranteed by ARB_texture_compression. - - RESOLVED. Not supported; See issue (5) of the - GL_ARB_texture_compression spec. - -New Procedures and Functions - - None - -New Tokens - - Accepted by the parameter of TexImage2D, - CopyTexImage2D, TexImage3D, CopyTexImage3D, and by the - and parameters of - CompressedTexImage2D_ARB, CompressedTexSubImage2D_ARB, - CompressedTexImage3D_ARB, CompressedTexSubImage3D_ARB: - - COMPRESSED_RGB_FXT1_3DFX 0x86B0 - COMPRESSED_RGBA_FXT1_3DFX 0x86B1 - -Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation) - - None. - -Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization) - - Add Table 3.16.1: Specific Compressed Internal Formats - - Compressed Internal Format Base Internal Format - ========================== ==================== - COMPRESSED_RGB_FXT1_3DFX RGB - COMPRESSED_RGBA_FXT1_3DFX RGBA - - Add to Section 3.8.2, Alternate Image Specification (adding to the - end of the CompressedTexImage section introduced by the - ARB_texture_compression spec) - - If is COMPRESSED_RGB_FXT1_3DFX, - COMPRESSED_RGBA_FXT1_3DFX, the compressed texture is stored using - one of several FXT1 compressed texture image formats. FXT1 texture - compression supports only 2D images without borders. - CompressedTexImage1DARB and CompressedTexImage3DARB produce an - INVALID_ENUM error if is an FXT1 format. - CompressedTexImage2DARB will produce an INVALID_OPERATION error if - is non-zero. - - - Add to Section 3.8.2, Alternate Image Specification (adding to the - end of the CompressedTexSubImage section introduced by the - ARB_texture_compression spec) - - If the internal format of the texture image being modified is - COMPRESSED_RGB_FXT1_3DFX, COMPRESSED_RGBA_FXT1_3DFX, the texture is - stored using one of the several FXT1 compressed texture image - formats. Since the FXT1 texture compression algorithm supports only - 2D images, CompressedTexSubImage1DARB and CompressedTexSubImage3DARB - produce an INVALID_ENUM error if is an FXT1 format. - -Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment -Operations and the Frame Buffer) - - None. - -Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions) - - None. - -Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and -State Requests) - - None. - -Additions to Appendix A of the OpenGL 1.2.1 Specification (Invariance) - - None. - -Additions to the AGL/GLX/WGL Specifications - - None. - -GLX Protocol - - None. - -Errors - - INVALID_ENUM is generated by CompressedTexImage1DARB if - is GL_COMPRESSED_RGB_FXT1_3DFX or - GL_COMPRESSED_RGBA_FXT1_3DFX. - - INVALID_OPERATION is generated by CompressedTexImage2DARB or - CompressedTexImage3DARB if is - GL_COMPRESSED_RGB_FXT1_3DFX or GL_COMPRESSED_RGBA_FXT1_3DFX and - is not equal to zero. - - INVALID_ENUM is generated by CompressedTexSubImage1DARB if - is GL_COMPRESSED_RGB_FXT1_3DFX or GL_COMPRESSED_RGBA_FXT1_3DFX. - -Appendix - - FXT1 comprises four different compressed texture formats. Each of - the formats compress an 8x4 texel blocks into 128 bits. During the - compression phase, the encoder selects one of the four formats for - each block based on which encoding scheme results in best overall - visual quality. Unused pixel locations along the right or bottom - edges within a block should contain a repetition of the values in - used locations. The total size of an image is ceil(width/8) * - ceil(height/4) * 16 bytes. - - In each compression format, the 32 texels of the 8x4 block are - partitioned into two 4x4 sub-blocks according to the following - diagram: - - t0 t1 t2 t3 t16 t17 t18 t19 - t4 t5 t6 t7 t20 t21 t22 t23 - t8 t9 t10 t11 t24 t25 t26 t27 - t12 t13 t14 t15 t28 t29 t30 t31 - - In the following bit-level descriptions, bits of increasing index - are stored in bytes at likewise increasing offsets, i.e. the order - is "little-endian". - - - 1. FXT1 Compressed Texture Format CC_HI: - - (rgb555) (3-bit/texel) - mode[1:0] color1 color0 texel 31 to 16 texel 15 to 0 - 2 15 15 48 48 - - - [127:126] mode[1:0] - [125:121] red of color1 - [120:116] green of color1 - [115:111] blue of color1 - [110:106] red of color0 - [105:101] green of color0 - [100:96] blue of color0 - [95:93] texel 31 - ... - [50:48] texel 16 - [47:45] texel 15 - ... - [2:0] texel 0 - - In CC_HI format, mode = 00b, the 15-bit color1 (RGB555 format) and - color0 (RGB555 format) colors are converted into 24-bit RGB888 - colors by duplicating the upper 3 bits for the 3 LSBs. The 24-bit - converted color1 and color0 are then used to linearly interpolate 5 - more levels of color to create seven total levels of colors and 1 - alpha (transparent) color. The first seven colors always have - alpha=ffh (opaque), while the eighth color is defined to be - transparent black (r,g,b=00h, alpha=00h). - - These eight 32-bit colors are used as the contents of an 8-entry (3 - bit index) lookup table. For all 32 texels in the block, each - texel's 3-bit index value is used to index the lookup table, the - output from the lookup table representing the 32-bit color - (ARGB8888) for that texel. - - Generating RGB888 from RGB555: - - Color1 (red) = {[125:121], [125:123]} - Color1 (green) = {[120:116], [120:118]} - Color1 (blue) = {[115:111], [115:113]} - - Color0 (red) = {[110:106], [110:108]} - Color0 (green) = {[105:101], [105:103]} - Color0 (blue) = {[100:96], [100:98]} - - Creating seven ARGB8888 colors from two RGB888 colors (operations - performed individually for each color channel): - - Color[0] = color0[r,g,b], alpha[0] = ffh - Color[1] = (5*color0[r,g,b] + color1[r,g,b] +3 )/6 alpha[1] = ffh - Color[2] = (4*color0[r,g,b] + 2*color1[r,g,b] +3 )/6 alpha[2] = ffh - Color[3] = (3*color0[r,g,b] + 3*color1[r,g,b] +3 )/6 alpha[3] = ffh - Color[4] = (2*color0[r,g,b] + 4*color1[r,g,b] +3 )/6 alpha[4] = ffh - Color[5] = (color0[r,g,b] + 5*color1[r,g,b] +3 )/6 alpha[5] = ffh - Color[6] = color1[r,g,b], alpha[6] = ffh - Color[7] = where r,g,b = 00h, alpha[7]=00h - - Table Lookup: - 3-bit index of Color for texel 31 to texel 0 - texel31 to texel0 (ARGB8888) - - 0 color[0] => {a[7:0], r[7:0], g[7:0], b[7:0]} - 1 color[1] - 2 color[2] - 3 color[3] - 4 color[4] - 5 color[5] - 6 color[6] - 7 color[7] - - - 2. FXT1 Compressed Texture Format CC_CHROMA: - - (rgb555) (2-bit/texel) - Mode[2:0] unused color3 color2 color1 color0 texel 31 to 16 texel 15 to 0 - 3 1 15 15 15 15 32 32 - - [127:125] mode[2:0] - [124] unused - [123:119] color3(r5) - [118:114] color3(g5) - [113:109] color3(b5) - [108:104] color2(r5) - [103:99] color2(g5) - [98:94] color2(b5) - [93:89] color1(r5) - [88:84] color1(g5) - [83:79] color1(b5) - [78:74] color0(r5) - [73:69] color0(g5) - [68:64] color0(b5) - [63:62] texel 31 - ... - [33:32] texel 16 - [31:30] texel 15 - ... - [1:0] texel 0 - - In CC_CHROMA format, mode=010b, the 15-bit colors color[3:0] - (RGB555) are converted into 24-bit RGB888 colors exactly the same as - in the CC_HI format via bit replication. Color3 to Color0 are used - as they are (after conversion to RGB888 format), but without - interpolation. The 24-bit converted colors color3, color2, color1, - and color0 are used as the contents of a 4-entry (2-bit index) - lookup table. The Alpha channel of the output of the lookup table is - always opaque(ffh), regardless of the 2-bit index value. The 32-bit - (ARGB8888) color value for each texel is obtained by performing - table lookup using that texel's 2-bit index. - - Table Lookup: - - 2-bit index of Color for texel 31 to texel 0 - texel 31 to texel 0 (ARGB8888) - - 0 color0, alpha = ffh - 1 color1, alpha = ffh - 2 color2, alpha = ffh - 3 color3, alpha = ffh - - - 3. FXT1 Compressed Texture Format CC_MIXED: - - (rgb555) (2-bit/texel) - mode[0] glsb[1:0] alpha[0] color3 color2 color1 color0 texel 31to16 texel 15to0 - 1 2 1 15 15 15 15 32 32 - - - [127] mode[0] - [126:125] glsb[1:0] (lsbs of green for color 1 & color 3) - [124] alpha[0] - [123:119] color3(r5) - [118:114] color3(g5) - [113:109] color3(b5) - [108:104] color2(r5) - [103:99] color2(g5) - [98:94] color2(b5) - [93:89] color1(r5) - [88:84] color1(g5) - [83:79] color1(b5) - [78:74] color0(r5) - [73:69] color0(g5) - [68:64] color0(b5) - [63:62] texel 31 - ... - [33:32] texel 16 - [31:30] texel 15 - ... - [1:0] texel 0 - - In CC_MIXED format, mode[0]=1 (only one bit), color2 and color3 are - used for texels 31 to 16, and color0 and color1 are used for texels - 15 to 0. When alpha[0] = 0, the two pairs of colors (colors 0 and 1 - for texels 15 to 0 and colors 2 and 3 for texels 31 to 16) are - interpreted as 16-bit RGB565 colors. For color1 and color3, the LSB - (bit 0) of the green channel comes from the glsb bits - (color1.green[0] = bit 125, color3.green[0] = bit 126). For color0 - and color2, the LSB (bit 0) of the green channel comes from the - upper select bit for texel 0 and texel 16, respectively - (color0.green[0] = bit 1 xor bit 125, color2.green[0] = bit 33 xor - bit 126). The two 16-bit colors are then expanded to a 24-bit RGB888 - format by bit replication (most significant bits replicated in the - least significant bits), and are then used to create 2 more levels - of color in between the color0/2 and color1/3 values through linear - interpolation. A total of 4 colors are therefore available for 2-bit - index per texel selection. - - When alpha[0]=1, color0 and color2 are interpreted as 15-bit RGB555 - colors, and color 1 and color3 are interpreted as RGB565 colors. For - color0 and color2, the 15-bit RGB555 colors are expanded to 24-bit - RGB888 colors by bit replication. For color1 and color3, the LSB - (bit 0) of the green channel comes from the glsb bits - (color1.green[0] = bit 125, color3.green[0] = bit 126), and then bit - replication is used to convert from the 16-bit RGB565 format to a - 24-bit RGB888 format. A third color is created by linear - interpolation (interpolating between the converted 24-bit RGB888 - color0 and color1 for texels 15 to 0, and interpolating between the - converted 24-bit RGB888 color2 and color3 for texels 31 to 16). - Finally, a fourth color (texel index 0x3) is defined to be - transparent black (r,g,b=00h, alpha=00h). A total of 4 colors are - therefore available for 2-bit index per texel selection. The 32-bit - (ARGB8888) color value for all texels is obtained by performing - table lookup using each texel's 2-bit index. - - Creating the 24-bit (RGB888) base colors color3 and color2: - - Color3(red) = {[123:119], [123:121]} - Color3(green) = {[118:114], [126], [118:117]} - Color3(blue) = {[113:109], [113:111]} - Color2(red) = {[108:104], [108:106]} - Color2(green) = (alpha[0]=1) ? {[103:99],[103:101]} - : {[103:99],[33]^[126],[103:102]} - Color2(blue) = {[98:94], [98:96]} - - Creating the 24-bit (RGB888) base colors color1 and color0: - - Color1(red) = {[93:89], [93:91]} - Color1(green) = {[88:84], [125], [88:87]} - Color1(blue) = {[83:79], [83:81]} - Color0(red) = {[78:74], [78:76]} - Color0(green) = (alpha[0]=1) ? {[73:69, [73:71]} - : {[73:69], [1]^[125], [73:72]} - Color0(blue) = {[68:64], [68:66]} - - When alpha[0]=0, because one of the texel select bits is used to - determine a bit of color0 and color2, the software encoder must - perform some very tricky operations. The method below describes how - to generate color0 and color1 and the associated select bits (the - same method applies to determining the lsb of green for color2 and - color3): - - 1. Determine the 16-bit RGB565 color values for color0 & color1. - - 2. Determine the select bits for each pixel in the 4x4 sub-block. - - 3. If (pixel[0].select[1] != color0.green[0]^color1.green[0]) then - swap color0 &color1, and invert all the select bits. - - Below is a snippet of psuedo-C code to generate bits 0-31, bits - 64-93 & bit 125 based on the initial color0, color1 and pixel - indices: - - struct RGB565 {Byte red; Byte green; Byte blue}; - - struct CSels {Byte index[16]}; - - // cc_mixed_right_half derives bits[93:64] of the 128 bit data word of a - // CC_MIXED non-alpha compression block and returns them in 'bits_64_to_31'. - // Plus, as a bonus, you will receive bit 125, containing the lsb of - // the green channel of color1, and bits_0_to_31, containing all of the pixel indices. - void - cc_mixed_right_half( RGB565 color0, RGB565 color1, - CSels pix, - Dword &bits_0_to_31, - Dword &bits_64_to_93, - Bit &bit125) - { - RGB565 o_color0; - RGB565 o_color1; - - // Determine if we need to switch color0 & color1 - if (((pix.index[0] >> 1) & 1) != ((color0.green ^ color1.green) & 1)) { - o_color1 = color0; - o_color0 = color1; - - for (int i=0; i<16; i++) - pix.index[i] = ~pix.index[i] & 3; - } else { - o_color0 = color0; - o_color1 = color1; - } - - // Save lsb of color1.green in bit125 - bit125 = o_color1.green & 1; - - // Convert color0 & color1 to RGB555, and then munge into bits 64 to 93 - o_color0.green >>= 1; - o_color1.green >>= 1; - - bits_64_to_93 = ( (o_color1.red<<25) | (o_color1.green<<20) | (o_color1.blue<<15) - | (o_color0.red<<10) | (o_color0.green<<5) | (o_color0.blue) ); - - // Munge the pixel indices into bits 0 to 31 - bits_0_to_31 = 0; - - for (int i=0; i<16; i++) - bits_0_to_31 |= pix.index[i]<<(i*2); - } - - - Generating the 4-entry lookup table for texels 31 to 16: - - If alpha[0]=0, - Color[0] = color2[r,g,b] , alpha=ffh - Color[1] = (2 * color2[r,g,b] + color3[r,g,b] + 1) / 3, alpha=ffh - Color[2] = (color2[r,g,b] + 2 * color3[r,g,b] +1) / 3, alpha=ffh - Color[3] = color3[r,g,b], alpha=ffh - - If alpha[0]=1, - Color[0] = color2[r,g,b], alpha=ffh - Color[1] = (color2[r,g,b] + color3[r,g,b]) / 2, alpha=ffh - Color[2] = color3[r,g,b], alpha=ffh - Color[3] = [a,r,g,b] = 00h - - Generating the 4-entry lookup table for texels 15 to 0: - - If alpha[0]=0, - Color[0] = color0[r,g,b] , alpha=ffh - Color[1] = (2 * color0[r,g,b] + color1[r,g,b] + 1) / 3, alpha=ffh - Color[2] = (color0[r,g,b] + 2 * color1[r,g,b] + 1) / 3, alpha=ffh - Color[3] = color1[r,g,b], alpha=ffh - - If alpha[0]=1, - Color[0] = color0[r,g,b], alpha=ffh - Color[1] = (color0[r,g,b] + color1[r,g,b]) / 2, alpha=ffh - Color[2] = color1[r,g,b], alpha=ffh - Color[3] = [a,r,g,b] = 00h - - Table Lookup: - 2-bit index of Color for texel 31 to texel 0 - texel 31 to texel 0 ARGB8888 - - 0 color[0], {a[7:0], r[7:0], g[7:0], b[7:0]} - 1 color[1] - 2 color[2] - 3 color[3] - - - 4. FXT1 Compressed Texture format CC_ALPHA: - - (argb5555) (2-bit/texel) - mode[2:0] lerp alpha2 alpha1 alpha0 color2 color1 color0 texel 31 to 16 texel 15 to 0 - 3 1 5 5 5 15 15 15 32 32 - - [127:125] mode[2:0] - [124] lerp - [123:119] color2(a5) - [118:114] color1(a5) - [113:109] color0(a5) - [108:104] color2(r5) - [103:99] color2(g5) - [98:94] color2(b5) - [93:89] color1(r5) - [88:84] color1(g5) - [83:79] color1(b5) - [78:74] color0(r5) - [73:69] color0(g5) - [68:64] color0(b5) - [63:62] texel 31 - ... - [33:32] texel 16 - [31:30] texel 15 - ... - [1:0] texel 0 - - In CC_ALPHA format, mode[2:0]=011b, three 20-bit colors color2, - color1 and color0 (ARGB5555) are converted to a 32-bit (ARGB8888) - format by duplicating the upper 3-bits for the 3 LSBs (all the color - channels and the alpha channel are converted from 5-bit formats to - 8-bit formats using this bit duplication). - - Creating the 32-bit (RGB8888) base colors color2, color1, and color0: - - Color2(alpha) = {[123:119], [123:121]} - Color2(red) = {[108:104], [108:106]} - Color2(green) = {[103:99], [103:101]} - Color2(blue) = {[98:94], [98:96]} - Color1(alpha) = {[118:114], [118:116]} - Color1(red) = {[93:89], [93:91]} - Color1(green) = {[88:84], [88:86]} - Color1(blue) = {[83:79], [83:81]} - Color0(alpha) = {[113:109], [113:111]} - Color0(red) = {[78:74], [78:76]} - Color0(green) = {[73:69], [73:71]} - Color0(blue) = {[68:64], [68:66]} - - When lerp = 0 (bit 124 = 0), the converted 32-bit colors color2, - color1, and color0 are used directly as the first 3 entries in the - 4-entry lookup table. The last entry in the 4-entry lookup table, - accessed with index=3, is defined to be transparent black (rgb=00h, - alpha=00h). A total of 4 colors are therefore available for 2-bit - index per texel selection, and the 32-bit (ARGB8888) color value for - all texels is obtained by performing table lookup using each texel's - 2-bit index. - - Table Lookup (when lerp = 0): - - Index of texel 31 to 0 Color for texel 31 to texel 0 - (ARGB8888) - - 0 Color[0] = color0 alpha = alpha0 - 1 Color[1] = color1 alpha = alpha1 - 2 Color[2] = color2 alpha = alpha2 - 3 Color[3] = 000000h alpha = 00h - - When lerp = 1 (bit 124 = 1), the converted 32-bit colors color2 and - color1 are used as the 32-bit base colors for texels 31 to 16, and - the converted 32-bit colors color1 and color0 are used as the base - colors for texels 15 to 0. The 32-bit base colors are then used to - create 2 more levels of color through linear interpolation. A total - of 4 colors are therefore available for 2-bit index per texel - selection, and the 32-bit (ARGB8888) color value for all texels is - obtained by performing table lookup using each texel's 2-bit index. - - Creating the 4 colors used in the 4-entry lookup table from the - 32-bit base colors (when lerp = 1): - - For texel 31 to texel 16 - Color[0] = color2[a,r,g,b] - Color[1] = (2 * color2[a,r,g,b] + color1[a,r,g,b] + 1) / 3 - Color[2] = (color2[a,r,g,b] + 2 * color1[a,r,g,b] +1) / 3 - Color[3] = color1[a,r,g,b] - - For texel 15 to texel 0 - Color[0] = color0[a,r,g,b] - Color[1] = (2 * color0[a,r,g,b] + color1[a,r,g,b] +1) / 3 - Color[2] = (color0[a,r,g,b] + 2 * color1[a,r,g,b] +1) / 3 - Color[3] = color1[a,r,g,b] - - Table Lookup (when lerp = 1): - - Index of texel 31 to 0 Color for texel 31 to texel 0 - (ARGB8888) - - 0 color[0] - 1 color[1] - 2 color[2] - 3 color[3] - -Revision History - - 0.1, 01/12/00 dwm: Initial revision. - 0.2, 02/09/00 dwm: Respond to feedback from Intel. - 0.3, 02/23/00 dwm: Respond to feedback from Intel. - 0.4, 04/12/00 dwm: Updated to reflect final version of the - ARB_texture_compression extension. - - -Copyright 1999-2000, 3dfx Interactive, Inc. -All rights reserved. diff --git a/reactos/dll/3rdparty/dxtn/docs/texture_compression_s3tc.txt b/reactos/dll/3rdparty/dxtn/docs/texture_compression_s3tc.txt deleted file mode 100644 index b81085221cc..00000000000 --- a/reactos/dll/3rdparty/dxtn/docs/texture_compression_s3tc.txt +++ /dev/null @@ -1,477 +0,0 @@ -Name - - EXT_texture_compression_s3tc - -Name Strings - - GL_EXT_texture_compression_s3tc - -Contact - - Pat Brown, Intel Corporation (patrick.r.brown 'at' intel.com) - -Status - - CANDIDATE FOR FINAL DRAFT -- NOT YET COMPLETE - -Version - - Draft 0.7, 11 April 2000 - -Number - - 198 - -Dependencies - - OpenGL 1.1 is required. - - GL_ARB_texture_compression is required. - - This extension is written against the OpenGL 1.2.1 Specification. - -Overview - - This extension provides additional texture compression functionality - specific to S3's S3TC format (called DXTC in Microsoft's DirectX API), - subject to all the requirements and limitations described by the extension - GL_ARB_texture_compression. - - This extension supports DXT1, DXT3, and DXT5 texture compression formats. - For the DXT1 image format, this specification supports an RGB-only mode - and a special RGBA mode with single-bit "transparent" alpha. - -IP Status - - Contact S3 Incorporated (http://www.s3.com) regarding any intellectual - property issues associated with implementing this extension. - - WARNING: Vendors able to support S3TC texture compression in Direct3D - drivers do not necessarily have the right to use the same functionality in - OpenGL. - -Issues - - (1) Should DXT2 and DXT4 (premultiplied alpha) formats be supported? - - RESOLVED: No -- insufficient interest. Supporting DXT2 and DXT4 - would require some rework to the TexEnv definition (maybe add a new - base internal format RGBA_PREMULTIPLIED_ALPHA) for these formats. - Note that the EXT_texture_env_combine extension (which extends normal - TexEnv modes) can be used to support textures with premultipled alpha. - - (2) Should generic "RGB_S3TC_EXT" and "RGBA_S3TC_EXT" enums be supported - or should we use only the DXT enums? - - RESOLVED: No. A generic RGBA_S3TC_EXT is problematic because DXT3 - and DXT5 are both nominally RGBA (and DXT1 with the 1-bit alpha is - also) yet one format must be chosen up front. - - (3) Should TexSubImage support all block-aligned edits or just the minimal - functionality required by the the ARB_texture_compression extension? - - RESOLVED: Allow all valid block-aligned edits. - - (4) A pre-compressed image with a DXT1 format can be used as either an - RGB_S3TC_DXT1 or an RGBA_S3TC_DXT1 image. If the image has - transparent texels, how are they treated in each format? - - RESOLVED: The renderer has to make sure that an RGB_S3TC_DXT1 format - is decoded as RGB (where alpha is effectively one for all texels), - while RGBA_S3TC_DXT1 is decoded as RGBA (where alpha is zero for all - texels with "transparent" encodings). Otherwise, the formats are - identical. - - (5) Is the encoding of the RGB components for DXT1 formats correct in this - spec? MSDN documentation does not specify an RGB color for the - "transparent" encoding. Is it really black? - - RESOLVED: Yes. The specification for the DXT1 format initially - required black, but later changed that requirement to a - recommendation. All vendors involved in the definition of this - specification support black. In addition, specifying black has a - useful behavior. - - When blending multiple texels (GL_LINEAR filtering), mixing opaque and - transparent samples is problematic. Defining a black color on - transparent texels achieves a sensible result that works like a - texture with premultiplied alpha. For example, if three opaque white - and one transparent sample is being averaged, the result would be a - 75% intensity gray (with an alpha of 75%). This is the same result on - the color channels as would be obtained using a white color, 75% - alpha, and a SRC_ALPHA blend factor. - - (6) Is the encoding of the RGB components for DXT3 and DXT5 formats - correct in this spec? MSDN documentation suggests that the RGB blocks - for DXT3 and DXT5 are decoded as described the the DXT1 format. - - RESOLVED: Yes -- this appears to be a bug in the MSDN documentation. - The specification for the DXT2-DXT5 formats require decoding using the - opaque block encoding, regardless of the relative values of "color0" - and "color1". - -New Procedures and Functions - - None. - -New Tokens - - Accepted by the parameter of TexImage2D, CopyTexImage2D, - and CompressedTexImage2DARB and the parameter of - CompressedTexSubImage2DARB: - - COMPRESSED_RGB_S3TC_DXT1_EXT 0x83F0 - COMPRESSED_RGBA_S3TC_DXT1_EXT 0x83F1 - COMPRESSED_RGBA_S3TC_DXT3_EXT 0x83F2 - COMPRESSED_RGBA_S3TC_DXT5_EXT 0x83F3 - -Additions to Chapter 2 of the OpenGL 1.2.1 Specification (OpenGL Operation) - - None. - -Additions to Chapter 3 of the OpenGL 1.2.1 Specification (Rasterization) - - Add to Table 3.16.1: Specific Compressed Internal Formats - - Compressed Internal Format Base Internal Format - ========================== ==================== - COMPRESSED_RGB_S3TC_DXT1_EXT RGB - COMPRESSED_RGBA_S3TC_DXT1_EXT RGBA - COMPRESSED_RGBA_S3TC_DXT3_EXT RGBA - COMPRESSED_RGBA_S3TC_DXT5_EXT RGBA - - - Modify Section 3.8.2, Alternate Image Specification - - (add to end of TexSubImage discussion, p.123 -- after edit from the - ARB_texture_compression spec) - - If the internal format of the texture image being modified is - COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT3_EXT, or COMPRESSED_RGBA_S3TC_DXT5_EXT, the - texture is stored using one of the several S3TC compressed texture image - formats. Such images are easily edited along 4x4 texel boundaries, so the - limitations on TexSubImage2D or CopyTexSubImage2D parameters are relaxed. - TexSubImage2D and CopyTexSubImage2D will result in an INVALID_OPERATION - error only if one of the following conditions occurs: - - * is not a multiple of four or equal to TEXTURE_WIDTH. - * is not a multiple of four or equal to TEXTURE_HEIGHT. - * or is not a multiple of four. - - - Add to Section 3.8.2, Alternate Image Specification (adding to the end of - the CompressedTexImage section introduced by the ARB_texture_compression - spec) - - If is COMPRESSED_RGB_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or - COMPRESSED_RGBA_S3TC_DXT5_EXT, the compressed texture is stored using one - of several S3TC compressed texture image formats. The S3TC texture - compression algorithm supports only 2D images without borders. - CompressedTexImage1DARB and CompressedTexImage3DARB produce an - INVALID_ENUM error if is an S3TC format. - CompressedTexImage2DARB will produce an INVALID_OPERATION error if - is non-zero. - - - Add to Section 3.8.2, Alternate Image Specification (adding to the end of - the CompressedTexSubImage section introduced by the - ARB_texture_compression spec) - - If the internal format of the texture image being modified is - COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT3_EXT, or COMPRESSED_RGBA_S3TC_DXT5_EXT, the - texture is stored using one of the several S3TC compressed texture image - formats. Since the S3TC texture compression algorithm supports only 2D - images, CompressedTexSubImage1DARB and CompressedTexSubImage3DARB produce - an INVALID_ENUM error if is an S3TC format. Since S3TC images - are easily edited along 4x4 texel boundaries, the limitations on - CompressedTexSubImage2D are relaxed. CompressedTexSubImage2D will result - in an INVALID_OPERATION error only if one of the following conditions - occurs: - - * is not a multiple of four or equal to TEXTURE_WIDTH. - * is not a multiple of four or equal to TEXTURE_HEIGHT. - * or is not a multiple of four. - - -Additions to Chapter 4 of the OpenGL 1.2.1 Specification (Per-Fragment -Operations and the Frame Buffer) - - None. - -Additions to Chapter 5 of the OpenGL 1.2.1 Specification (Special Functions) - - None. - -Additions to Chapter 6 of the OpenGL 1.2.1 Specification (State and -State Requests) - - None. - -Additions to Appendix A of the OpenGL 1.2.1 Specification (Invariance) - - None. - -Additions to the AGL/GLX/WGL Specifications - - None. - -GLX Protocol - - None. - -Errors - - INVALID_ENUM is generated by CompressedTexImage1DARB or - CompressedTexImage3DARB if is - COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT3_EXT, or COMPRESSED_RGBA_S3TC_DXT5_EXT. - - INVALID_OPERATION is generated by CompressedTexImage2DARB if if - is COMPRESSED_RGB_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or - COMPRESSED_RGBA_S3TC_DXT5_EXT and is not equal to zero. - - INVALID_ENUM is generated by CompressedTexSubImage1DARB or - CompressedTexSubImage3DARB if is COMPRESSED_RGB_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT3_EXT, or - COMPRESSED_RGBA_S3TC_DXT5_EXT. - - INVALID_OPERATION is generated by TexSubImage2D CopyTexSubImage2D, or - CompressedTexSubImage2D if INTERNAL_FORMAT is - COMPRESSED_RGB_S3TC_DXT1_EXT, COMPRESSED_RGBA_S3TC_DXT1_EXT, - COMPRESSED_RGBA_S3TC_DXT3_EXT, or COMPRESSED_RGBA_S3TC_DXT5_EXT and any of - the following apply: is not a multiple of four or equal to - TEXTURE_WIDTH; is not a multiple of four or equal to - TEXTURE_HEIGHT; or is not a multiple of four. - - - The following restrictions from the ARB_texture_compression specification - do not apply to S3TC texture formats, since subimage modification is - straightforward as long as the subimage is properly aligned. - - DELETE: INVALID_OPERATION is generated by TexSubImage1D, TexSubImage2D, - DELETE: TexSubImage3D, CopyTexSubImage1D, CopyTexSubImage2D, or - DELETE: CopyTexSubImage3D if the internal format of the texture image is - DELETE: compressed and , , or does not equal - DELETE: -b, where b is value of TEXTURE_BORDER. - - DELETE: INVALID_VALUE is generated by CompressedTexSubImage1DARB, - DELETE: CompressedTexSubImage2DARB, or CompressedTexSubImage3DARB if the - DELETE: entire texture image is not being edited: if , - DELETE: , or is greater than -b, + is - DELETE: less than w+b, + is less than h+b, or - DELETE: + is less than d+b, where b is the value of - DELETE: TEXTURE_BORDER, w is the value of TEXTURE_WIDTH, h is the value of - DELETE: TEXTURE_HEIGHT, and d is the value of TEXTURE_DEPTH. - - See also errors in the GL_ARB_texture_compression specification. - -New State - - None. - -Appendix - - S3TC Compressed Texture Image Formats - - Compressed texture images stored using the S3TC compressed image formats - are represented as a collection of 4x4 texel blocks, where each block - contains 64 or 128 bits of texel data. The image is encoded as a normal - 2D raster image in which each 4x4 block is treated as a single pixel. If - an S3TC image has a width or height less than four, the data corresponding - to texels outside the image are irrelevant and undefined. - - When an S3TC image with a width of , height of , and block size of - (8 or 16 bytes) is decoded, the corresponding image size (in - bytes) is: - - ceil(/4) * ceil(/4) * blocksize. - - When decoding an S3TC image, the block containing the texel at offset - (, ) begins at an offset (in bytes) relative to the beginning of the - image of: - - blocksize * (ceil(/4) * floor(/4) + floor(/4)). - - - There are four distinct S3TC image formats: - - COMPRESSED_RGB_S3TC_DXT1_EXT: Each 4x4 block of texels consists of 64 - bits of RGB image data. - - Each RGB image data block is encoded as a sequence of 8 bytes, called (in - order of increasing address): - - c0_lo, c0_hi, c1_lo, c1_hi, bits_0, bits_1, bits_2, bits_3 - - The 8 bytes of the block are decoded into three quantities: - - color0 = c0_lo + c0_hi * 256 - color1 = c1_lo + c1_hi * 256 - bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * bits_3)) - - color0 and color1 are 16-bit unsigned integers that are unpacked to - RGB colors RGB0 and RGB1 as though they were 16-bit packed pixels with - a of RGB and a type of UNSIGNED_SHORT_5_6_5. - - bits is a 32-bit unsigned integer, from which a two-bit control code - is extracted for a texel at location (x,y) in the block using: - - code(x,y) = bits[2*(4*y+x)+1..2*(4*y+x)+0] - - where bit 31 is the most significant and bit 0 is the least - significant bit. - - The RGB color for a texel at location (x,y) in the block is given by: - - RGB0, if color0 > color1 and code(x,y) == 0 - RGB1, if color0 > color1 and code(x,y) == 1 - (2*RGB0+RGB1)/3, if color0 > color1 and code(x,y) == 2 - (RGB0+2*RGB1)/3, if color0 > color1 and code(x,y) == 3 - - RGB0, if color0 <= color1 and code(x,y) == 0 - RGB1, if color0 <= color1 and code(x,y) == 1 - (RGB0+RGB1)/2, if color0 <= color1 and code(x,y) == 2 - BLACK, if color0 <= color1 and code(x,y) == 3 - - Arithmetic operations are done per component, and BLACK refers to an - RGB color where red, green, and blue are all zero. - - Since this image has an RGB format, there is no alpha component and the - image is considered fully opaque. - - - COMPRESSED_RGBA_S3TC_DXT1_EXT: Each 4x4 block of texels consists of 64 - bits of RGB image data and minimal alpha information. The RGB components - of a texel are extracted in the same way as COMPRESSED_RGB_S3TC_DXT1_EXT. - - The alpha component for a texel at location (x,y) in the block is - given by: - - 0.0, if color0 <= color1 and code(x,y) == 3 - 1.0, otherwise - - IMPORTANT: When encoding an RGBA image into a format using 1-bit - alpha, any texels with an alpha component less than 0.5 end up with an - alpha of 0.0 and any texels with an alpha component greater than or - equal to 0.5 end up with an alpha of 1.0. When encoding an RGBA image - into the COMPRESSED_RGBA_S3TC_DXT1_EXT format, the resulting red, - green, and blue components of any texels with a final alpha of 0.0 - will automatically be zero (black). If this behavior is not desired - by an application, it should not use COMPRESSED_RGBA_S3TC_DXT1_EXT. - This format will never be used when a generic compressed internal - format (Table 3.16.2) is specified, although the nearly identical - format COMPRESSED_RGB_S3TC_DXT1_EXT (above) may be. - - - COMPRESSED_RGBA_S3TC_DXT3_EXT: Each 4x4 block of texels consists of 64 - bits of uncompressed alpha image data followed by 64 bits of RGB image - data. - - Each RGB image data block is encoded according to the - COMPRESSED_RGB_S3TC_DXT1_EXT format, with the exception that the two code - bits always use the non-transparent encodings. In other words, they are - treated as though color0 > color1, regardless of the actual values of - color0 and color1. - - Each alpha image data block is encoded as a sequence of 8 bytes, called - (in order of increasing address): - - a0, a1, a2, a3, a4, a5, a6, a7 - - The 8 bytes of the block are decoded into one 64-bit integer: - - alpha = a0 + 256 * (a1 + 256 * (a2 + 256 * (a3 + 256 * (a4 + - 256 * (a5 + 256 * (a6 + 256 * a7)))))) - - alpha is a 64-bit unsigned integer, from which a four-bit alpha value - is extracted for a texel at location (x,y) in the block using: - - alpha(x,y) = bits[4*(4*y+x)+3..4*(4*y+x)+0] - - where bit 63 is the most significant and bit 0 is the least - significant bit. - - The alpha component for a texel at location (x,y) in the block is - given by alpha(x,y) / 15. - - - COMPRESSED_RGBA_S3TC_DXT5_EXT: Each 4x4 block of texels consists of 64 - bits of compressed alpha image data followed by 64 bits of RGB image data. - - Each RGB image data block is encoded according to the - COMPRESSED_RGB_S3TC_DXT1_EXT format, with the exception that the two code - bits always use the non-transparent encodings. In other words, they are - treated as though color0 > color1, regardless of the actual values of - color0 and color1. - - Each alpha image data block is encoded as a sequence of 8 bytes, called - (in order of increasing address): - - alpha0, alpha1, bits_0, bits_1, bits_2, bits_3, bits_4, bits_5 - - The alpha0 and alpha1 are 8-bit unsigned bytesw converted to alpha - components by multiplying by 1/255. - - The 6 "bits" bytes of the block are decoded into one 48-bit integer: - - bits = bits_0 + 256 * (bits_1 + 256 * (bits_2 + 256 * (bits_3 + - 256 * (bits_4 + 256 * bits_5)))) - - bits is a 48-bit unsigned integer, from which a three-bit control code - is extracted for a texel at location (x,y) in the block using: - - code(x,y) = bits[3*(4*y+x)+1..3*(4*y+x)+0] - - where bit 47 is the most significant and bit 0 is the least - significant bit. - - The alpha component for a texel at location (x,y) in the block is - given by: - - alpha0, code(x,y) == 0 - alpha1, code(x,y) == 1 - - (6*alpha0 + 1*alpha1)/7, alpha0 > alpha1 and code(x,y) == 2 - (5*alpha0 + 2*alpha1)/7, alpha0 > alpha1 and code(x,y) == 3 - (4*alpha0 + 3*alpha1)/7, alpha0 > alpha1 and code(x,y) == 4 - (3*alpha0 + 4*alpha1)/7, alpha0 > alpha1 and code(x,y) == 5 - (2*alpha0 + 5*alpha1)/7, alpha0 > alpha1 and code(x,y) == 6 - (1*alpha0 + 6*alpha1)/7, alpha0 > alpha1 and code(x,y) == 7 - - (4*alpha0 + 1*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 2 - (3*alpha0 + 2*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 3 - (2*alpha0 + 3*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 4 - (1*alpha0 + 4*alpha1)/5, alpha0 <= alpha1 and code(x,y) == 5 - 0.0, alpha0 <= alpha1 and code(x,y) == 6 - 1.0, alpha0 <= alpha1 and code(x,y) == 7 - - -Revision History - - 0.7, 04/11/00 prbrown1: Added issues on DXT1, DXT3, and DXT5 encodings - where the MSDN documentation doesn't match what - is really done. Added enum values from the - extension registry. - - 0.4, 03/28/00 prbrown1: Updated to reflect final version of the - ARB_texture_compression extension. Allowed - block-aligned TexSubImage calls. - - 0.3, 03/07/00 prbrown1: Resolved issues pertaining to the format of RGB - blocks in the DXT3 and DXT5 formats (they don't - ever use the "transparent" encoding). Fixed - decoding of DXT1 blocks. Pointed out issue of - "transparent" texels in DXT1 encodings having - different behaviors for RGB and RGBA internal - formats. - - 0.2, 02/23/00 prbrown1: Minor revisions; added several issues. - - 0.11, 02/17/00 prbrown1: Slight modification to error semantics - (INVALID_ENUM instead of INVALID_OPERATION). - - 0.1, 02/15/00 prbrown1: Initial revision. diff --git a/reactos/dll/3rdparty/dxtn/docs/vmath.txt b/reactos/dll/3rdparty/dxtn/docs/vmath.txt deleted file mode 100644 index c60109c4ea4..00000000000 --- a/reactos/dll/3rdparty/dxtn/docs/vmath.txt +++ /dev/null @@ -1,92 +0,0 @@ -/* - * FXT1 codec - * Version: 1.0 - * - * Copyright (C) 2004 Daniel Borca All Rights Reserved. - * - * this is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * this is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -Problem: -~~~~~~~~ -having 3 points P1(x1, y1), P2(x2, y2) and P3(x3, y3), we need to find -a point P(x, y) on the P1-P2 line, so that distance form P3 to that P is -minimal. we shall use the oblong squared distance function: - d(P1, P2) = (X*(x2 - x1))^ + (Y*(y2 - y1))^ - -Solution: -~~~~~~~~~ -analytical equation of P1-P2 line: - x - x1 y - y1 - ------- = ------- = t - x2 - x1 y2 - y1 - - or - - x = t * (x2 - x1) + x1 - y = t * (y2 - y1) + y1 - - where - - x1 <= x <= x2 ==> 0 <= t <= 1 - -thus d(P3, P) will be: - d = (X*(x3 - x))^ + (Y*(y3 - y))^ - = (X*(x3 - (t * (x2 - x1) + x1)))^ + (Y*(y3 - (t * (x2 - x1) + x1)))^ - = X^*(x3 - x1)^ + Y^*(y3 - y1)^ - - 2 * t * (X^*(x3 - x1)*dx + Y^*(y3 - y1)*dy) - + t^ * (X^*dx^ + Y^*dy^) - - where dx = (x2 - x1) and dy = (y2 - y1) - -given the function f = C + Bt + At^, we can find its extrema by using the -first derivative: - (f' = 2At + B) = 0 when t = -B / 2A - -having that said, d will have a minimum at: - X^*(x3 - x1)*dx + Y^*(y3 - y1)*dy - tmin = --------------------------------- - X^*dx^ + Y^*dy^ - - X^*dx Y^*dy x1*X^*dx + y1*Y^*dy - = x3 * --------------- + y3 * --------------- - ------------------- - X^*dx^ + Y^*dy^ X^*dx^ + Y^*dy^ X^*dx^ + Y^*dy^ - -we can note: - X^*dx Y^*dy - ivec = ( ---------------, --------------- ) - X^*dx^ + Y^*dy^ X^*dx^ + Y^*dy^ - - x1*X^*dx + y1*Y^*dy - base = - ------------------- - X^*dx^ + Y^*dy^ - - tmin = ivecx * x3 + ivecy * y3 + base - -discretizing the line with N equidistant points, we scale: - N * X^*dx N * Y^*dy - iv = ( ---------------, --------------- ) - X^*dx^ + Y^*dy^ X^*dx^ + Y^*dy^ - - x1*X^*dx + y1*Y^*dy - b = - N * ------------------- - X^*dx^ + Y^*dy^ - - n = (iv . P3) + b - - Note1: this formula stands for n-component vector - Note2: (int)n = {0, 1, ... N}, because 0 <= t <= 1 - Note3: when X=Y=1, d is squared euclidean distance! diff --git a/reactos/dll/3rdparty/dxtn/test/Makefile b/reactos/dll/3rdparty/dxtn/test/Makefile deleted file mode 100644 index 3a6e6b53d2d..00000000000 --- a/reactos/dll/3rdparty/dxtn/test/Makefile +++ /dev/null @@ -1,72 +0,0 @@ -# Texture compression -# Version: 1.1 -# -# Copyright (C) 2004 Daniel Borca All Rights Reserved. -# -# this is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2, or (at your option) -# any later version. -# -# this is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with GNU Make; see the file COPYING. If not, write to -# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - - -# -# Available options: -# -# Environment variables: -# -# Targets: -# all: build codec -# clean: remove object files -# realclean: remove all generated files -# - - -.PHONY: all clean realclean - -EXENAME = codec - -CC = gcc -CFLAGS = -Wall -W -pedantic -ansi -CFLAGS += -O2 -ffast-math -funroll-loops -#CFLAGS += -fomit-frame-pointer -fexpensive-optimizations -CFLAGS += -DVERBOSE=1 - -LD = gcc -LDFLAGS = -s -LDLIBS = - -SOURCES = \ - main.c \ - tga.c \ - util.c - -SOURCES += \ - ../fxt1.c \ - ../dxtn.c \ - ../wrapper.c \ - ../texstore.c - -OBJECTS = $(SOURCES:.c=.o) - -.c.o: - $(CC) -o $@ $(CFLAGS) -c $< - -all: $(EXENAME) - -$(EXENAME): $(OBJECTS) - $(LD) -o $@ $(LDFLAGS) $^ - -clean: - -$(RM) $(OBJECTS) - -realclean: clean - -$(RM) $(EXENAME) diff --git a/reactos/dll/3rdparty/dxtn/test/main.c b/reactos/dll/3rdparty/dxtn/test/main.c deleted file mode 100644 index 3a315ef637c..00000000000 --- a/reactos/dll/3rdparty/dxtn/test/main.c +++ /dev/null @@ -1,356 +0,0 @@ -/* - * Texture compression - * Version: 1.1 - * - * Copyright (C) 2004 Daniel Borca All Rights Reserved. - * - * this is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * this is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#include -#include -#include - -#include - -#include "tga.h" -#include "util.h" -#include "../types.h" -#include "../internal.h" -#include "../fxt1.h" -#include "../dxtn.h" - - -#if VERBOSE -int cc_chroma = 0; -int cc_alpha = 0; -int cc_high = 0; -int cc_mixed = 0; -#endif - - -typedef int (*encoder) (int width, int height, int comps, - const void *source, int srcRowStride, - void *dest, int destRowStride); -typedef void (*decoder) (const void *texture, int stride, - int i, int j, unsigned char *rgba); - - -static struct { - const char *name; - int type; - encoder enc; - decoder dec; - int wround, hround; -} *q = NULL, tc[] = { - { "fxt1rgba", GL_COMPRESSED_RGBA_FXT1_3DFX, fxt1_encode, fxt1_decode_1, 7, 3 }, - { "fxt1rgb", GL_COMPRESSED_RGB_FXT1_3DFX, fxt1_encode, fxt1_decode_1, 7, 3 }, - { "dxt1rgb", GL_COMPRESSED_RGB_S3TC_DXT1_EXT, dxt1_rgb_encode, dxt1_rgb_decode_1, 3, 3 }, - { "dxt1rgba", GL_COMPRESSED_RGBA_S3TC_DXT1_EXT, dxt1_rgba_encode, dxt1_rgba_decode_1, 3, 3 }, - { "dxt3", GL_COMPRESSED_RGBA_S3TC_DXT3_EXT, dxt3_rgba_encode, dxt3_rgba_decode_1, 3, 3 }, - { "dxt5", GL_COMPRESSED_RGBA_S3TC_DXT5_EXT, dxt5_rgba_encode, dxt5_rgba_decode_1, 3, 3 }, - { NULL, -1, NULL, NULL, 0, 0 } -}; - - -int -main (int argc, char **argv) -{ - const char *myself = argv[0]; - const char *inf = NULL, *outf = NULL, *cmpf = NULL, *a0 = NULL, *a1 = NULL; - - int i, j; - int width, height; - void *input, *output; - unsigned char *rgba; -#if VERBOSE - t_type t0; -#endif - - /* user options */ - while (--argc) { - char *p = *++argv; - if (!strcmp(p, "-h") || !strcmp(p, "--help")) { - fprintf(stderr, "usage: %s [type] infile [-o outfile] [-k cfile] [-a0 inalpha] [-a1 outalpha]\n", myself); - fprintf(stderr, " infile must be a 24/32bpp TGA\n"); - fprintf(stderr, " outfile will be a 32bpp TGA\n"); - fprintf(stderr, " cfile will be the compressed file\n"); - fprintf(stderr, " inalpha will be original alpha 32bpp TGA\n"); - fprintf(stderr, " outalpha will be output alpha 32bpp TGA\n"); - fprintf(stderr, " type can be one of the following:\n"); - for (i = 0; tc[i].name != NULL; i++) { - fprintf(stderr, " -%s%s\n", tc[i].name, (i == 0) ? " (default)" : ""); - } - return 0; - } /*else*/ if (!strcmp(p, "-o")) { - if (argc > 1) { - argc--; - outf = *++argv; - continue; - } else { - fprintf(stderr, "%s: argument to `%s' is missing\n", myself, p); - return -1; - } - } else if (!strcmp(p, "-k")) { - if (argc > 1) { - argc--; - cmpf = *++argv; - continue; - } else { - fprintf(stderr, "%s: argument to `%s' is missing\n", myself, p); - return -1; - } - } else if (!strcmp(p, "-a0")) { - if (argc > 1) { - argc--; - a0 = *++argv; - continue; - } else { - fprintf(stderr, "%s: argument to `%s' is missing\n", myself, p); - return -1; - } - } else if (!strcmp(p, "-a1")) { - if (argc > 1) { - argc--; - a1 = *++argv; - continue; - } else { - fprintf(stderr, "%s: argument to `%s' is missing\n", myself, p); - return -1; - } - } else if (*p == '-') { - for (q = tc; q->name != NULL; q++) { - if (!strcmp(p + 1, q->name)) { - break; - } - } - if (q->name != NULL) { - continue; - } - fprintf(stderr, "%s: bad option `%s'\n", myself, p); - return -1; - } else if (inf == NULL) { - inf = p; - continue; - } - fprintf(stderr, "%s: too many input files\n", myself); - return -1; - } - if (inf == NULL) { - fprintf(stderr, "%s: no input files\n", myself); - return -1; - } - if (outf == NULL) { - outf = "aout.tga"; - } - if ((q == NULL) || (q->name == NULL)) { - q = tc; - } - - /* get input data */ -#if 1 - if (tga_read_32(inf, &width, &height, &input)) { - fprintf(stderr, "%s: cannot read `%s'\n", myself, inf); - return -1; - } -#elif 0 - { - static char pattern[8 * 32 + 1] = { "\ - \ - MMM EEEE SSS AAA \ - M M M E S S A A \ - M M M EEEE SS A A \ - M M M E SS AAAAA \ - M M E S S A A \ - M M EEEE SSS A A \ - " }; - - unsigned char (*texture)[8 * 32][4]; - width = 32; - height = 8; - input = malloc(width * height * 4); - texture = (unsigned char (*)[8 * 32][4])input; - for (i = 0; i < sizeof(pattern) - 1; i++) { - switch (pattern[i]) { - default: - case ' ': - (*texture)[i][0] = 255; - (*texture)[i][1] = 255; - (*texture)[i][2] = 255; - (*texture)[i][3] = 64; - break; - case 'M': - (*texture)[i][0] = 255; - (*texture)[i][1] = 0; - (*texture)[i][2] = 0; - (*texture)[i][3] = 255; - break; - case 'E': - (*texture)[i][0] = 0; - (*texture)[i][1] = 255; - (*texture)[i][2] = 0; - (*texture)[i][3] = 255; - break; - case 'S': - (*texture)[i][0] = 0; - (*texture)[i][1] = 0; - (*texture)[i][2] = 255; - (*texture)[i][3] = 255; - break; - case 'A': - (*texture)[i][0] = 255; - (*texture)[i][1] = 255; - (*texture)[i][2] = 0; - (*texture)[i][3] = 255; - break; - } - } - } -#else - { - unsigned char (*texture)[4 * 8][4]; - width = 8; - height = 4; - input = malloc(width * height * 4); - texture = (unsigned char (*)[4 * 8][4])input; - for (i = 0; i < 4 * 8; i++) { - (*texture)[i][0] = - (*texture)[i][1] = - (*texture)[i][2] = 255 * i / 31; - (*texture)[i][3] = 255; - } - } -#endif - - /* make alpha tga (input values) */ - if (a0 != NULL) { - unsigned long *alpha0 = malloc(width * height * 4); - if (alpha0) { - unsigned long *ap = alpha0; - for (j = 0; j < height; j++) { - for (i = 0; i < width; i++) { - unsigned char alp = ((unsigned char *)input)[(j * width + i) * 4 + 3]; - *ap++ = alp | (alp << 8) | (alp << 16) | (alp << 24); - } - } - if (tga_write(a0, width, height, alpha0, 32) != 0) { - fprintf(stderr, "%s: cannot write `%s'\n", myself, a0); - } - free(alpha0); - } - } - - /* allocate compressed output storage */ - output = malloc(tc_size(width, height, q->type)); - if (output == NULL) { - free(input); - fprintf(stderr, "%s: out of memory\n", myself); - return -1; - } - - /* encode */ -#if VERBOSE - T_START(t0); -#endif - q->enc(width, height, 4, input, width * 4, output, tc_stride(q->type, width)); -#if VERBOSE - T_STOP(t0); - fprintf(stderr, "ENC(%s): %lu ticks\n", q->name, T_DELTA(t0)); -#endif - - /* free raw input data, make encoded data as input */ - free(input); - input = output; - - /* allocate uncompressed output storage */ - width = (width + q->wround) & ~q->wround; - height = (height + q->hround) & ~q->hround; - output = malloc(width * height * 4); - if (output == NULL) { - free(input); - fprintf(stderr, "%s: out of memory\n", myself); - return -1; - } - - /* decode */ - rgba = output; -#if VERBOSE - T_START(t0); -#endif - for (j = 0; j < height; j++) { - for (i = 0; i < width; i++) { - q->dec(input, width, i, j, rgba); - rgba += 4; - } - } -#if VERBOSE - T_STOP(t0); -#endif - - /* write encoded block */ - if (cmpf != NULL) { - FILE *eff = fopen(cmpf, "wb"); - if (eff) { - if (!fwrite(input, tc_size(width, height, q->type), 1, eff)) { - fprintf(stderr, "%s: cannot write compressed data\n", myself); - } - fclose(eff); - } else { - fprintf(stderr, "%s: cannot create `%s'\n", cmpf, myself); - } - } - - /* free encoded block */ - free(input); - - /* write decoded block */ - if (tga_write(outf, width, height, output, 32) != 0) { - fprintf(stderr, "%s: cannot write `%s'\n", myself, outf); - return -1; - } - - /* make alpha tga (output values) */ - if (a1 != NULL) { - unsigned long *alpha1 = malloc(width * height * 4); - if (alpha1) { - unsigned long *ap = alpha1; - for (j = 0; j < height; j++) { - for (i = 0; i < width; i++) { - unsigned char alp = ((unsigned char *)output)[(j * width + i) * 4 + 3]; - *ap++ = alp | (alp << 8) | (alp << 16) | (alp << 24); - } - } - if (tga_write(a1, width, height, alpha1, 32) != 0) { - fprintf(stderr, "%s: cannot write `%s'\n", myself, a1); - } - free(alpha1); - } - } - - /* free decoded block */ - free(output); - - /* final stats */ -#if VERBOSE - fprintf(stderr, "CHROMA = %d\n", cc_chroma); - fprintf(stderr, "ALPHA = %d\n", cc_alpha); - fprintf(stderr, "HIGH = %d\n", cc_high); - fprintf(stderr, "MIXED = %d\n", cc_mixed); - fprintf(stderr, "DEC(%s): %lu ticks\n", q->name, T_DELTA(t0)); -#endif - - return 0; -} diff --git a/reactos/dll/3rdparty/dxtn/test/tga.c b/reactos/dll/3rdparty/dxtn/test/tga.c deleted file mode 100644 index 24ce9ab83d0..00000000000 --- a/reactos/dll/3rdparty/dxtn/test/tga.c +++ /dev/null @@ -1,165 +0,0 @@ -/* - * TGA file handling - * Version: 1.1 - * - * Copyright (C) 2004 Daniel Borca All Rights Reserved. - * - * this is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * this is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#include -#include -#include -#include - -#include "tga.h" - - -int -tga_read_32 (const char *filename, int *w, int *h, void **p) -{ - FILE *f; - void *img; - unsigned char header[18]; - unsigned int skip_cmap_size; - unsigned int type, width, height, tga_bpp; - unsigned int raw_image_size; - unsigned char *raw_image; - unsigned int i, j, k; - - if ((f = fopen(filename, "rb")) == NULL) { - return TGA_ERR_OPEN; - } - - if (!fread(header, 18, 1, f)) { - fclose(f); - return TGA_ERR_READ; - } - - type = header[2]; - if (type != 2) { - fclose(f); - return TGA_ERR_FORMAT; - } - width = ((short *)header)[6]; - height = ((short *)header)[7]; - tga_bpp = header[16]; - - if (header[1]) { - skip_cmap_size = *(short *)&header[5] * header[7] >> 3; - } else { - skip_cmap_size = 0; - } - fseek(f, skip_cmap_size + header[0], SEEK_CUR); - - raw_image_size = width * height; - switch (tga_bpp) { - case 16: - raw_image_size *= 2; - break; - case 24: - raw_image_size *= 3; - break; - case 32: - raw_image_size *= 4; - break; - default: - fclose(f); - return TGA_ERR_FORMAT; - } - - if ((img = malloc(width * height * 4)) == NULL) { - fclose(f); - return TGA_ERR_MEM; - } - - if ((raw_image = malloc(raw_image_size)) == NULL) { - free(img); - fclose(f); - return TGA_ERR_MEM; - } - - if (!fread(raw_image, raw_image_size, 1, f)) { - free(raw_image); - free(img); - fclose(f); - return TGA_ERR_READ; - } - - k = 0; - for (i = 0; i < height; i++) { - unsigned long decoded; - int l = (header[17] & 0x20) ? i : (height - i - 1); - unsigned char *bmp_line = (unsigned char *)img + l * width * 4; - for (j = 0; j < width; j++) { - switch (tga_bpp) { - case 16: - assert(0); - k += 2; - break; - case 24: - decoded = (*(unsigned long *)&raw_image[k]) | 0xff000000UL; - k += 3; - break; - case 32: - decoded = *(unsigned long *)&raw_image[k]; - k += 4; - break; - default: - decoded = 0; - } - ((unsigned long *)bmp_line)[j] = decoded; - } - } - - free(raw_image); - fclose(f); - - *p = img; - *w = width; - *h = height; - return TGA_OK; -} - - -int -tga_write (const char *filename, int width, int height, void *data, int bpp) -{ - int len; - char header[18]; - FILE *f = fopen(filename, "wb"); - - if (f == NULL) { - return TGA_ERR_CREATE; - } - - memset(header, 0, sizeof(header)); - header[2] = 2; - ((unsigned short *)header)[6] = width; - ((unsigned short *)header)[7] = height; - header[16] = bpp; - header[17] |= 0x20; - - len = width * height * ((header[16] + 7) / 8); - - if (!fwrite(header, sizeof(header), 1, f) || !fwrite(data, len, 1, f)) { - return TGA_ERR_WRITE; - } - - fclose(f); - - return TGA_OK; -} diff --git a/reactos/dll/3rdparty/dxtn/test/tga.h b/reactos/dll/3rdparty/dxtn/test/tga.h deleted file mode 100644 index 93668407a3d..00000000000 --- a/reactos/dll/3rdparty/dxtn/test/tga.h +++ /dev/null @@ -1,37 +0,0 @@ -/* - * TGA file handling - * Version: 1.1 - * - * Copyright (C) 2004 Daniel Borca All Rights Reserved. - * - * this is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * this is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#ifndef TGA_H_included -#define TGA_H_included - -#define TGA_OK 0 -#define TGA_ERR_MEM -2 -#define TGA_ERR_CREATE -3 -#define TGA_ERR_OPEN -4 -#define TGA_ERR_READ -5 -#define TGA_ERR_WRITE -6 -#define TGA_ERR_FORMAT -7 - -int tga_read_32 (const char *filename, int *w, int *h, void **p); -int tga_write (const char *filename, int width, int height, void *data, int bpp); - -#endif diff --git a/reactos/dll/3rdparty/dxtn/test/util.c b/reactos/dll/3rdparty/dxtn/test/util.c deleted file mode 100644 index cf6f6dac405..00000000000 --- a/reactos/dll/3rdparty/dxtn/test/util.c +++ /dev/null @@ -1,175 +0,0 @@ -/* - * Texture compression - * Version: 1.1 - * - * Copyright (C) 2004 Daniel Borca All Rights Reserved. - * - * this is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * this is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#include -#include -#include - -#include - -#include "util.h" - - -#define GL_RGB_S3TC 0x83A0 -#define GL_RGB4_S3TC 0x83A1 -#define GL_RGBA_S3TC 0x83A2 -#define GL_RGBA4_S3TC 0x83A3 - - -int -tc_stride (int format, unsigned int width) -{ - int stride; - - switch (format) { - case GL_COMPRESSED_RGB_FXT1_3DFX: - case GL_COMPRESSED_RGBA_FXT1_3DFX: - stride = ((width + 7) / 8) * 16; /* 16 bytes per 8x4 tile */ - break; - case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - case GL_RGB_S3TC: - case GL_RGB4_S3TC: - stride = ((width + 3) / 4) * 8; /* 8 bytes per 4x4 tile */ - break; - case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - case GL_RGBA_S3TC: - case GL_RGBA4_S3TC: - stride = ((width + 3) / 4) * 16; /* 16 bytes per 4x4 tile */ - break; - default: - return 0; - } - - return stride; -} - - -unsigned int -tc_size (unsigned int width, unsigned int height, int format) -{ - unsigned int size; - - switch (format) { - case GL_COMPRESSED_RGB_FXT1_3DFX: - case GL_COMPRESSED_RGBA_FXT1_3DFX: - /* round up width to next multiple of 8, height to next multiple of 4 */ - width = (width + 7) & ~7; - height = (height + 3) & ~3; - /* 16 bytes per 8x4 tile of RGB[A] texels */ - size = width * height / 2; - /* Textures smaller than 8x4 will effectively be made into 8x4 and - * take 16 bytes. - */ - if (size < 16) - size = 16; - return size; - case GL_COMPRESSED_RGB_S3TC_DXT1_EXT: - case GL_COMPRESSED_RGBA_S3TC_DXT1_EXT: - case GL_RGB_S3TC: - case GL_RGB4_S3TC: - /* round up width, height to next multiple of 4 */ - width = (width + 3) & ~3; - height = (height + 3) & ~3; - /* 8 bytes per 4x4 tile of RGB[A] texels */ - size = width * height / 2; - /* Textures smaller than 4x4 will effectively be made into 4x4 and - * take 8 bytes. - */ - if (size < 8) - size = 8; - return size; - case GL_COMPRESSED_RGBA_S3TC_DXT3_EXT: - case GL_COMPRESSED_RGBA_S3TC_DXT5_EXT: - case GL_RGBA_S3TC: - case GL_RGBA4_S3TC: - /* round up width, height to next multiple of 4 */ - width = (width + 3) & ~3; - height = (height + 3) & ~3; - /* 16 bytes per 4x4 tile of RGBA texels */ - size = width * height; /* simple! */ - /* Textures smaller than 4x4 will effectively be made into 4x4 and - * take 16 bytes. - */ - if (size < 16) - size = 16; - return size; - default: - return 0; - } -} - - -void * -txs_read_fxt1 (const char *filename, int *width, int *height) -{ - FILE *f; - void *data; - - char cookie[5]; - float version; - int format; - int levels; - unsigned int offset; - - int rv; - - f = fopen(filename, "rb"); - if (f == NULL) { - fprintf(stderr, "txs_read_fxt1: cannot open `%s'\n", filename); - return NULL; - } - - if ((fscanf(f, "%4s %f %d %d %d %d %8x", cookie, &version, - &format, width, height, &levels, - &offset) != 7) || - strcmp(cookie, "TXSF") || - (version != 1.0) || - (format != 17) || - (*width & 7) || - (*height & 4) || - (levels != 1)) { - fclose(f); - fprintf(stderr, "txs_read_fxt1: bad TXS file %s\n", filename); - return NULL; - } - - rv = tc_size(*width, *height, GL_COMPRESSED_RGBA_FXT1_3DFX); - data = malloc(rv); - if (data == NULL) { - fclose(f); - fprintf(stderr, "txs_read_fxt1: out of memory\n"); - return NULL; - } - - fseek(f, offset, SEEK_SET); - rv = fread(data, rv, 1, f); - fclose(f); - - if (!rv) { - free(data); - data = NULL; - } - - return data; -} diff --git a/reactos/dll/3rdparty/dxtn/test/util.h b/reactos/dll/3rdparty/dxtn/test/util.h deleted file mode 100644 index 650db518c42..00000000000 --- a/reactos/dll/3rdparty/dxtn/test/util.h +++ /dev/null @@ -1,69 +0,0 @@ -/* - * Texture compression - * Version: 1.1 - * - * Copyright (C) 2004 Daniel Borca All Rights Reserved. - * - * this is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2, or (at your option) - * any later version. - * - * this is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNU Make; see the file COPYING. If not, write to - * the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA. - */ - - -#ifndef UTIL_H_included - - -/* - * timer stuff - */ -#ifdef __DJGPP__ - -typedef unsigned long long t_type; -extern unsigned long long _rdtsc(void); -#define T_START(t) do { t = _rdtsc(); } while (0) -#define T_STOP(t) do { t = _rdtsc() - t; } while (0) -#define T_DELTA(t) (unsigned long)(t & 0xffffffff) - -#elif defined(__linux__) - -#include - -typedef clock_t t_type; -#define T_START(t) do { t = clock(); } while (0) -#define T_STOP(t) do { t = clock() - t; } while (0) -#define T_DELTA(t) t - -#else /* !__linux__ */ - -typedef int t_type; -#define T_START(t) do { t = 0; } while (0) -#define T_STOP(t) do { t = 0 - t; } while (0) -#define T_DELTA(t) t - -#endif /* !__linux__ */ - - -/* - * compressed texture stuff - */ -int tc_stride (int format, unsigned int width); -unsigned int tc_size (unsigned int width, unsigned int height, int format); - - -/* - * specific stuff - */ -void *txs_read_fxt1 (const char *filename, int *width, int *height); - - -#endif /* UTIL_H_included */